RE: [DQSD-Users] new mwdx search (Merriam-Webster search, results in a pop-up window)
Hi again, Here's a replacement mwd.xml that takes a /p[opup] switch -- can you try it out and see if it works for you, Glenn? XmlHttp is acting up on my machine, so I can't see if it works properly, but I've just copied and pasted your code into a separate function in mwd. Cheers, - Kim -Original Message- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Glenn Carr Sent: den 1 februari 2006 17:41 To: dqsd-users@lists.sourceforge.net Subject: [DQSD-Users] new mwdx search (Merriam-Webster search, results in a pop-up window) Hey all, Attached is a modified Merriam-Webster search that displays the results in a pop-up window. It's not perfect (for one, links don't work from the popup window), but it makes me happy :) I don't have CVS installed anywhere convenient right now, so if someone could check this in, I'd appreciate it. search function=mwd nameMerriam-Webster Dictionary/name description Search for word definitions.br/ div class=helpboxDescLabelsExamples:/div table class=helpboxDescTable trtdmwd idempotent/td/tr trtdmwd /popup idempotent/td/tr /table /description categoryReferencecategoryLanguage/category/category linkhttp://www.m-w.com//link form name=mwdf action=http://www.m-w.com/cgi-bin/dictionary; method=post input type=hidden name=book value=Dictionary/ input type=hidden name=va/ /form script![CDATA[ function mwd(q) { if( nullArgs(mwd,q) ) return false; var args = parseArgs(q, popup); if( args.switches.length 0 ) { mwdx(args.q) } else { document.mwdf.va.value = args.q; submitForm(mwdf); } } function mwdx(q) { var xmlHttp = new ActiveXObject(Microsoft.XmlHttp); xmlHttp.open(GET, http://www.m-w.com/dictionary/; + q, false); xmlHttp.send(); var sBody = xmlHttp.responseText.replace( /[\r\n]/gi, ); var re = /(Main Entry:.+)img src=\/images\/pixt\.gif.+More Information on/mig; var results = re.exec( sBody ); var windowW = 500; if ( results != null ) { var html = results[ 1 ].replace( /(src=)/gi, src=\http://www.m-w.com; ).replace( /(href=\/)/gi, href=\http://www.m-w.com/; ); html = html.replace( new RegExp( String.fromCharCode(65535), g ), '-' ); // weirdness html = html.replace( /font size=-1([^]+)\/font/gi, $1 ); } else { results = /(Suggestions for.+\/PRE)/ig.exec( sBody ); if ( results != null ) { var html = results[ 1 ].replace( /(src=)/gi, src=\http://www.m-w.com; ).replace( /(href=)/gi, href=\http://www.m-w.com; ).replace( /\/a/g, '/a\r\n' ); } else { windowW = 200; var html = 'centerb' + q + '/b not found/center'; } } var dictPopup = window.createPopup(); var dictPopupBody = dictPopup.document.body; dictPopupBody.innerHTML = 'table style=font-size: 70%; border: inset 2px height=100%trtd' + html + /td/tr/table; // dictPopup.document.head.base = http://www.m-w.com/;; dictPopup.document.body.style.border=outset 2px; dictPopup.document.body.style.padding=1px 1px; background: navy; dictPopup.document.body.style.background='menu'; dictPopup.document.body.style.overflowY='auto'; dictPopup.document.body.style.fontFamily='Verdana'; // Temporarily show the popup to determine the proper final height for the popup. dictPopup.show(0, 0, windowW, 0); var windowH = dictPopupBody.scrollHeight + 6; dictPopup.hide(); windowH = windowH window.screen.height-100 ? window.screen.height-100 : windowH; dictPopup.show((buttonalign == left ? 0 : document.body.clientWidth - windowW), -windowH, windowW, windowH, document.body); } ]]/script copyright Copyright (c) 2006 David Bau, Glenn Carr and Kim Gräsman Distributed under the terms of the GNU Public License, Version 2 (http://www.gnu.org/copyleft/gpl.txt) /copyright /search
RE: [DQSD-Users] new mwdx search (Merriam-Webster search, results in a pop-up window)
Hi Kim, ...see if it works for you... Works fine for me, however, may I suggest offering an option that can alternate the functionality of mwd through the localprefs? This code will do it (replaces line 28): if (typeof strMWDPopup == undefined) strMWDPopup = 0; if(( args.switches.length 0 ) || (strMWDPopup !== 0)) Then if someone has the strMWDPopup variable set to anything other than zero the dictionary lookups will appear in the popup, while otherwise (and default) they appear in a new window. This does not take into account situations where the user wants to default to popups but wants to visit the site, though. XmlHttp is acting up on my machine, so I can't see if it works properly... In my reading (having not tested it yet myself, in part because of this) I've seen that IE7 has some XmlHttp+JavaScript issues. The consensus from those I've seen discussing it is don't use IE7 - no workarounds are available. Regards, Shawn K. Hall http://12PointDesign.com/ --- This SF.net email is sponsored by: Splunk Inc. Do you grep through log files for problems? Stop! Download the new AJAX search engine that makes searching your log files as easy as surfing the web. DOWNLOAD SPLUNK! http://sel.as-us.falkag.net/sel?cmd=lnkkid=103432bid=230486dat=121642 ___ To unsubscribe visit: https://lists.sourceforge.net/lists/listinfo/dqsd-users DQSD-Users@lists.sourceforge.net http://sourceforge.net/mailarchive/forum.php?forum_id=8601
RE: [DQSD-Users] new mwdx search (Merriam-Webster search, results in a pop-up window)
Hi Shawn, ...see if it works for you... Works fine for me, however, may I suggest offering an option that can alternate the functionality of mwd through the localprefs? Fair enough, I can add that! XmlHttp is acting up on my machine, so I can't see if it works properly... In my reading (having not tested it yet myself, in part because of this) I've seen that IE7 has some XmlHttp+JavaScript issues. The consensus from those I've seen discussing it is don't use IE7 - no workarounds are available. Do you have any links? I'm curious to find out more about this -- I've had this problem since before IE7, and I think it's in part because I run as a non-admin. Cheers, - Kim --- This SF.net email is sponsored by: Splunk Inc. Do you grep through log files for problems? Stop! Download the new AJAX search engine that makes searching your log files as easy as surfing the web. DOWNLOAD SPLUNK! http://sel.as-us.falkag.net/sel?cmd=lnkkid=103432bid=230486dat=121642 ___ To unsubscribe visit: https://lists.sourceforge.net/lists/listinfo/dqsd-users DQSD-Users@lists.sourceforge.net http://sourceforge.net/mailarchive/forum.php?forum_id=8601
RE: [DQSD-Users] new mwdx search (Merriam-Webster search, results in a pop-up window)
I've improved it quite a bit this evening (links work, etc.). I re-installed CVS and committed it (also attached). Glenn (Woah, it's been a long time since I've committed any DQSD code.) Added to CVS! - Kim -Original Message- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Glenn Carr Sent: den 1 februari 2006 20:22 To: dqsd-users@lists.sourceforge.net Subject: RE: [DQSD-Users] new mwdx search (Merriam-Webster search, results in a pop-up window) Good idea. Works great, thanks! search function=mwd nameMerriam-Webster Dictionary/name description Search for word definitions. div class=helpboxDescLabelsSwitches:/div table class=helpboxDescTable trtd/p[opup]/tdtd - /tdtdDisplay in popup window instead of regular browser window/td/tr /table div class=helpboxDescLabelsExamples:/div table class=helpboxDescTable trtdmwd idempotent/td/tr trtdmwd /p idempotent/td/tr /table /description categoryReferencecategoryLanguage/category/category linkhttp://www.m-w.com//link form name=mwdf action=http://www.m-w.com/cgi-bin/dictionary; method=post input type=hidden name=book value=Dictionary/ input type=hidden name=va/ /form script![CDATA[ function mwd(q) { if( nullArgs(mwd,q) ) return false; var args = parseArgs(q, popup); if( args.switches.length 0 ) { mwdx(args.q) } else { document.mwdf.va.value = args.q; submitForm(mwdf); } } function mwdx(q) { var extraArgDelim = '\1'; var listOption = false; var p = q.search( extraArgDelim ); if ( p = 0 ) { postArgs = unescape( q.substr( p + 1 ) ); listOption = true; q = q.substr( 0, p ); } var xmlHttp = new ActiveXObject(Microsoft.XmlHttp); if ( listOption ) { xmlHttp.open(POST, http://www.m-w.com/cgi-bin/dictionary;, false); xmlHttp.setRequestHeader( Content-Type, application/x-www-form-urlencoded ); xmlHttp.send( postArgs ); } else { xmlHttp.open(GET, http://www.m-w.com/dictionary/; + q, false); xmlHttp.send(); } var windowW = 500; var sBody = xmlHttp.responseText.replace( /[\r\n]/gi, ); var re = /(h2.+\/h2.*([^]+)\s+entr.+found for.+Main Entry:.+)img src=\/images\/pixt\.gif.+More Information on/mig; var results = re.exec( sBody ); if ( results != null ) { var optionHtml = ''; var entriesFound = parseInt( results[ 2 ], 10 ); if ( isNaN( entriesFound ) ) entriesFound = 1; var html = results[ 1 ].replace( /(src=)/gi, src=\http://www.m-w.com; ).replace( /(href=\/)/gi, href=\http://www.m-w.com/; ); if ( entriesFound == 1 ) html = html.replace( /(Main Entry:)/, 'br/br/$1' ); else { html = html.replace( /(Main Entry:)/, 'br/$1' ); var options = /(option.*)\/select/.exec( html ); if ( options != null ) { var allFormVars = html.replace( /.*input.*name=?hdwd? value=([^]+).*input.*name=?listword? value=([^]+).*input.*name=?list? value=([^]+).*/i, listword=$2book=Dictionarylist=$3 ); options = options[ 1 ].split( 'option' ); optionHtml += 'ul style=margin-top: 0px; margin-bottom: 0px'; for ( var i = 0; i options.length; i++ ) if ( options[ i ] != ) { var words = /([^[]+)(.*)/.exec( options[ i ] ); var formVars = 'hdwd=' + options[ i ] + '' + allFormVars; optionHtml += 'lia href= onMouseUp=parent.mwdx(' + escape( words[ 1 ] ) + extraArgDelim + escape( formVars ) + ');' + options[ i ] + '/a/li'; } optionHtml += '/ul'; } html = html.replace( /(To select an entry, click on it\..*)form/, '$1' + optionHtml + 'form' ); } html = html.replace( /For more results.*click here\/a\./gi, '' ); html = html.replace( /h2/i, 'h2 style=font-size: 16px' ); html = html.replace( new RegExp( String.fromCharCode(65535), g ), '-' ); // weirdness html = html.replace( /font size=-1([^]+)\/font/gi, $1 ); html = html.replace( /form.*\/form/ig, '' ); html = html.replace( /(a\s+)href=(http:\/\/www.m-w.com\/dictionary\/([^]+))([^]*)/gi, $1 href=\\ onMouseUp=parent.mwdx(\$3\); $4 ); html = html.replace( /a href=javascript:popWin\('\/cgi-bin\/(audio.pl[^']+)'\)/gi, 'a href= onMouseUp=parent.openSearchWindow(\http://www.m-w.com/cgi-bin/$1\;);' ); } else { results = /(Suggestions for.+\/PRE)/ig.exec( sBody ); if ( results != null ) { var html = results[ 1 ].replace( /href=[^]+va=([^]+)/gi, 'href= onMouseUp=parent.mwdx($1
RE: [DQSD-Users] new mwdx search (Merriam-Webster search, results in a pop-up window)
Hi Glenn, I'm just now readaing some of these emails, and I missed your suggestion. I went ahead and added mwdDisplayInPopup as the preference variable. Hey, I already did that! :-) I called mine mwdPopup, so your name is definitely better, I'll see if I can remove the duplication before you wake up again. - Kim --- This SF.net email is sponsored by: Splunk Inc. Do you grep through log files for problems? Stop! Download the new AJAX search engine that makes searching your log files as easy as surfing the web. DOWNLOAD SPLUNK! http://sel.as-us.falkag.net/sel?cmd=lnkkid=103432bid=230486dat=121642 ___ To unsubscribe visit: https://lists.sourceforge.net/lists/listinfo/dqsd-users DQSD-Users@lists.sourceforge.net http://sourceforge.net/mailarchive/forum.php?forum_id=8601