Kipcool has submitted this change and it was merged. Change subject: jquery-ification of suggest dropdown comboboxes. ......................................................................
jquery-ification of suggest dropdown comboboxes. Change-Id: Ide21c3ef2c979acb61a1fb598222ac7ba1acddbd --- M OmegaWiki/OmegaWikiEditors.php M OmegaWiki/forms.php M OmegaWiki/resources/suggest.css M OmegaWiki/resources/suggest.js 4 files changed, 319 insertions(+), 326 deletions(-) Approvals: Kipcool: Verified; Looks good to me, approved diff --git a/OmegaWiki/OmegaWikiEditors.php b/OmegaWiki/OmegaWikiEditors.php index 6990d30..a5f1ae9 100644 --- a/OmegaWiki/OmegaWikiEditors.php +++ b/OmegaWiki/OmegaWikiEditors.php @@ -983,10 +983,7 @@ $result = createTableViewer( $attribute ); $result->setHideEmptyColumns( false ); $result->setRowHTMLAttributes( array( - "class" => "suggestion-row", - "onclick" => "suggestRowClicked(event, this)", - "onmouseover" => "mouseOverRow(this)", - "onmouseout" => "mouseOutRow(this)" + "class" => "suggestion-row" ) ); return $result; diff --git a/OmegaWiki/forms.php b/OmegaWiki/forms.php index ac0a41c..0f28a03 100644 --- a/OmegaWiki/forms.php +++ b/OmegaWiki/forms.php @@ -46,7 +46,7 @@ } } -function getCheckBoxWithOnClick( $name, $isChecked, $onClick, $disabled = false ) { +function getCheckBoxWithClass( $name, $isChecked, $class, $disabled = false ) { if ( $disabled ) { if ( $isChecked ) { return '<input disabled="disabled" type="checkbox" name="' . $name . '"' . checkBoxCheckAttribute( $isChecked ) . '"/><input type="hidden" name="' . $name . '" value="1"/>'; @@ -54,7 +54,7 @@ return '<input disabled="disabled" type="checkbox" name="' . $name . '"' . checkBoxCheckAttribute( $isChecked ) . '"/>'; } } else { - return '<input type="checkbox" name="' . $name . '"' . checkBoxCheckAttribute( $isChecked ) . ' onclick="' . $onClick . '"/>'; + return '<input type="checkbox" name="' . $name . '"' . checkBoxCheckAttribute( $isChecked ) . ' class="' . $class . '"/>'; } } @@ -65,7 +65,7 @@ // do not print the checkbox return ''; } else { - return getCheckBoxWithOnClick( $name, false, "removeClicked(this);" ); + return getCheckBoxWithClass( $name, false, "remove-checkbox" ); } } @@ -138,45 +138,30 @@ '<input type="hidden" id="' . $name . '-suggest-parameter-' . $parameter . '" name="' . $parameter . '" value="' . $parameterValue . '"/>'; $result .= - '<a id="' . $name . '-suggest-link" class="suggest-link" onclick="suggestLinkClicked(event, this);" title="' . wfMsgSc( "SuggestHint" ) . '">' . $label . '</a>' . + '<a id="' . $name . '-suggest-link" class="suggest-link" title="' . wfMsgSc( "SuggestHint" ) . '">' . $label . '</a>' . '</span>'; - if ( $wgLang->isRTL() ) { - $result .= - '<div class="suggest-drop-down" style="position: relative"><div id="' . $name . '-suggest-div" style="position: absolute; right: 0px; top: 0px; border: 1px solid #000000; display: none; background-color: white; padding: 4px">' . - '<div><table>' . - '<tr>' . - '<td><input type="text" id="' . $name . '-suggest-text" autocomplete="off" onkeyup="suggestTextChanged(this)" style="width: 300px"></input></td>' . - '<td><a id="' . $name . '-suggest-clear" href="javascript:void(0)" onclick="suggestClearClicked(event, this)">' . wfMsg( 'ow_suggest_clear' ) . '</a></td>' . - '<td style="white-space: nowrap"><a id="' . $name . '-suggest-previous" href="javascript:void(0)" class="suggest-previous" onclick="suggestPreviousClicked(event, this)"><img src="' . $wgScriptPath . '/extensions/WikiLexicalData/Images/ArrowRight.png" alt="' . wfMsg( 'ow_suggest_previous' ) . '"/> ' . wfMsg( 'ow_suggest_previous' ) . '</a></td>' . - '<td style="white-space: nowrap"><a id="' . $name . '-suggest-next" href="javascript:void(0)" class="suggest-next" onclick="suggestNextClicked(event, this)">' . wfMsg( 'ow_suggest_next' ) . ' <img src="' . $wgScriptPath . '/extensions/WikiLexicalData/Images/ArrowLeft.png" alt="' . wfMsg( 'ow_suggest_next' ) . '"/></a></td>' . - '<td><a id="' . $name . '-suggest-close" href="javascript:void(0)" onclick="suggestCloseClicked(event, this)">[X]</a></td>' . - '</tr>' . - '</table></div>' . - '<div><table id="' . $name . '-suggest-table"><tr><td></td></tr></table></div>' . - '</div></div>'; - } else { - $result .= - '<div class="suggest-drop-down" style="position: relative"><div id="' . $name . '-suggest-div" style="position: absolute; left: 0px; top: 0px; border: 1px solid #000000; display: none; background-color: white; padding: 4px">' . - '<div><table>' . - '<tr>' . - '<td><input type="text" id="' . $name . '-suggest-text" autocomplete="off" onkeyup="suggestTextChanged(this)" style="width: 300px"></input></td>' . - '<td><a id="' . $name . '-suggest-clear" href="javascript:void(0)" onclick="suggestClearClicked(event, this)">' . wfMsg( 'ow_suggest_clear' ) . '</a></td>' . - '<td style="white-space: nowrap"><a id="' . $name . '-suggest-previous" href="javascript:void(0)" class="suggest-previous" onclick="suggestPreviousClicked(event, this)"><img src="' . $wgScriptPath . '/extensions/WikiLexicalData/Images/ArrowLeft.png" alt="' . wfMsg( 'ow_suggest_previous' ) . '"/> ' . wfMsg( 'ow_suggest_previous' ) . '</a></td>' . - '<td style="white-space: nowrap"><a id="' . $name . '-suggest-next" href="javascript:void(0)" class="suggest-next" onclick="suggestNextClicked(event, this)">' . wfMsg( 'ow_suggest_next' ) . ' <img src="' . $wgScriptPath . '/extensions/WikiLexicalData/Images/ArrowRight.png" alt="' . wfMsg( 'ow_suggest_next' ) . '"/></a></td>' . - '<td><a id="' . $name . '-suggest-close" href="javascript:void(0)" onclick="suggestCloseClicked(event, this)">[X]</a></td>' . - '</tr>' . - '</table></div>' . - '<div><table id="' . $name . '-suggest-table"><tr><td></td></tr></table></div>' . - '</div></div>'; - } + $result .= + '<div class="suggest-drop-down"><div id="' . $name . '-suggest-div" class="suggest-div">' . + '<div><table>' . + '<tr>' . + '<td><input type="text" id="' . $name . '-suggest-text" autocomplete="off" class="suggest-text"></input></td>' . + '<td id="' . $name . '-suggest-clear" class="suggest-clear">' . wfMsg( 'ow_suggest_clear' ) . '</td>' . + '<td id="' . $name . '-suggest-previous" class="suggest-previous"><img src="' . $wgScriptPath . '/extensions/WikiLexicalData/Images/ArrowLeft.png" alt="' . wfMsg( 'ow_suggest_previous' ) . '"/> ' . wfMsg( 'ow_suggest_previous' ) . '</td>' . + '<td id="' . $name . '-suggest-next" class="suggest-next">' . wfMsg( 'ow_suggest_next' ) . ' <img src="' . $wgScriptPath . '/extensions/WikiLexicalData/Images/ArrowRight.png" alt="' . wfMsg( 'ow_suggest_next' ) . '"/></td>' . + '<td id="' . $name . '-suggest-close" class="suggest-close">[X]</td>' . + '</tr>' . + '</table></div>' . + '<div><table id="' . $name . '-suggest-table"><tr><td></td></tr></table></div>' . + '</div></div>'; + return $result; } function getStaticSuggest( $name, $suggestions, $idColumns = 1, $value = 0, $label = '', $displayLabelColumns = array( 0 ) ) { - if ( $label == "" ) + if ( $label == "" ) { $label = '                '; - + } $result = '<span class="suggest">' . // '<input type="hidden" id="'. $name .'-suggest-query" value="'. $query .'"/>' . @@ -187,17 +172,16 @@ $result .= '<input type="hidden" id="' . $name . '-suggest-id-columns" value="' . $idColumns . '"/>'; $result .= - '<a id="' . $name . '-suggest-link" class="suggest-link" onclick="suggestLinkClicked(event, this);" title="' . wfMsgSc( "SuggestHint" ) . '">' . $label . '</a>' . + '<a id="' . $name . '-suggest-link" class="suggest-link" title="' . wfMsgSc( "SuggestHint" ) . '">' . $label . '</a>' . '</span>' . - '<div class="suggest-drop-down" style="position: relative"><div id="' . $name . '-suggest-div" style="position: absolute; left: 0px; top: 0px; border: 1px solid #000000; display: none; background-color: white; padding: 4px">' . - '<div><table><tr><td>' . -// '<input type="text" id="'. $name .'-suggest-text" autocomplete="off" onkeyup="suggestTextChanged(this)" style="width: 300px"></input>' . - '</td><td><a id="' . $name . '-suggest-clear" href="javascript:void(0)" onclick="suggestClearClicked(event, this)">' . wfMsg( 'ow_suggest_clear' ) . '</a></td><td><a id="' . $name . '-suggest-close" href="#' . $name . '-suggest-link" onclick="suggestCloseClicked(event, this)">[X]</a></td></tr></table></div>' . - '<div>' . $suggestions . - // <table id="'. $name .'-suggest-table"><tr><td></td></tr></table> - '</div>' . - '</div></div>'; - + '<div class="suggest-drop-down" style="position: relative"><div id="' . $name . '-suggest-div" style="position: absolute; left: 0px; top: 0px; border: 1px solid #000000; display: none; background-color: white; padding: 4px">' . + '<div><table><tr><td>' . + '</td><td><a id="' . $name . '-suggest-clear" href="javascript:void(0)" class="suggest-clear">' . wfMsg( 'ow_suggest_clear' ) . '</a></td>' . + '<td><a id="' . $name . '-suggest-close" href="#' . $name . '-suggest-link" class="suggest-close">[X]</a></td></tr></table></div>' . + '<div>' . $suggestions . + '</div>' . + '</div></div>'; + return $result; } diff --git a/OmegaWiki/resources/suggest.css b/OmegaWiki/resources/suggest.css index cac7113..7152b0a 100644 --- a/OmegaWiki/resources/suggest.css +++ b/OmegaWiki/resources/suggest.css @@ -13,7 +13,8 @@ background-position: center right; } -.wiki-data-table td .suggest-link, .option-panel td .suggest-link { +.wiki-data-table td .suggest-link, +.option-panel td .suggest-link { display: block; zoom: 1; left: 0px; @@ -35,19 +36,82 @@ background-image: url("../../Images/ArrowButtonDown1px.png"); } -.suggest-drop-down { - /*font-size: 1em;*/ - font-size: 13px; -} - -.suggest-link, .suggest-link:hover, .suggest-link:active, .suggest-link:visited { +.suggest-link, +.suggest-link:hover, +.suggest-link:active, +.suggest-link:visited { color: #000000; text-decoration: none; white-space: nowrap; } -td .suggest-link, td .suggest-link:hover, td .suggest-link:active, td .suggest-link:visited { +td .suggest-link, +td .suggest-link:hover, +td .suggest-link:active, +td .suggest-link:visited { white-space: normal; +} + +.suggest-div { + position: absolute; + left: 0px; + top: 0px; + border: 1px solid #000000; + display: none; + background-color: white; + padding: 4px; +} + +.suggest-drop-down { + /*font-size: 1em;*/ + font-size: 13px; + position: relative; +} + +.suggest-loading { + background-color: #DDDDDD; +} + +.suggest-clear { + cursor: pointer; + color:blue; +} +.suggest-clear:hover { + text-decoration:underline; +} + +.suggest-close { + cursor: pointer; + color:blue; +} +.suggest-close:hover { + text-decoration:underline; +} + +.suggest-next { + color:blue; + margin-left: 2px; + margin-right: 8px; + white-space: nowrap; + cursor: pointer; +} +.suggest-next:hover { + text-decoration:underline; +} + +.suggest-previous { + color:blue; + margin-left: 8px; + margin-right: 2px; + white-space: nowrap; + cursor: pointer; +} +.suggest-previous:hover { + text-decoration:underline; +} + +.suggest-text { + width: 300px; } .suggestion-row { @@ -55,10 +119,12 @@ margin: 0px; } -.suggestion-row.active td.column-even, .suggestion-row.active td.column-odd { - /*background-color: #DDDDDD;*/ - background-color: #CECCF7; +.suggestion-row { cursor: pointer; +} +.suggestion-row.active td.column-even, +.suggestion-row.active td.column-odd { + background-color: #CECCF7; } .suggestion-row td { @@ -71,16 +137,3 @@ white-space: nowrap; } -.suggest-loading { - background-color: #DDDDDD; -} - -.suggest-next { - margin-left: 2px; - margin-right: 8px; -} - -.suggest-previous { - margin-left: 8px; - margin-right: 2px; -} \ No newline at end of file diff --git a/OmegaWiki/resources/suggest.js b/OmegaWiki/resources/suggest.js index a6306fc..ef07717 100644 --- a/OmegaWiki/resources/suggest.js +++ b/OmegaWiki/resources/suggest.js @@ -1,102 +1,138 @@ -window.getHTTPObject = function () { - var xmlhttp; +jQuery(document).ready(function( $ ) { - try { - xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); - } catch (e) { - try { - xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); - } catch (e) { - try { - xmlhttp = new XMLHttpRequest(); - } catch (e) { - xmlhttp = false; - } + var suggestionTimeOut = null; + + $(".remove-checkbox").click(function(event) { + $(this).parent().parent().toggleClass('to-be-removed'); + }); + + $(".suggest-next").click(function(event) { + var suggestPrefix = getSuggestPrefix( this, 'next'); + var suggestOffset = document.getElementById(suggestPrefix + 'offset'); + suggestOffset.value = parseInt(suggestOffset.value) + 10; + updateSuggestions(suggestPrefix); + stopEventHandling(event); + }); + + $(".suggest-previous").click(function(event) { + var suggestPrefix = getSuggestPrefix( this, 'previous'); + var suggestOffset = document.getElementById(suggestPrefix + 'offset'); + suggestOffset.value = Math.max(parseInt(suggestOffset.value) - 10, 0); + updateSuggestions(suggestPrefix); + stopEventHandling(event); + }); + + $(".suggest-close").click(function(event) { + var suggestPrefix = getSuggestPrefix( this, 'close'); + $("#" + suggestPrefix + "div").hide(); + stopEventHandling(event); + }); + + $(".suggest-clear").click(function(event) { + updateSuggestValue(getSuggestPrefix(this, 'clear'), "" + , " "); + stopEventHandling(event); + }); + + $(".suggest-link").click(function(event) { + var suggestLinkId = this.id; + // removing the "link" at the end of the Id + var suggestPrefix = getSuggestPrefix( this, 'link'); + + $("#" + suggestPrefix + "div").show(); + + var suggestField = document.getElementById(suggestPrefix + "text"); + if (suggestField != null) { + suggestField.focus(); + updateSuggestions(suggestPrefix); + } + stopEventHandling(event); + }); + + $(".suggest-text").keyup(function(event) { + var suggestPrefix = getSuggestPrefix( this, 'text'); + scheduleUpdateSuggestions( suggestPrefix ); + }); + + function getSuggestPrefix( node, postFix ) { + var nodeId = node.id; + return stripSuffix( nodeId, postFix ); + } + + function scheduleUpdateSuggestions( suggestPrefix ) { + if ( suggestionTimeOut != null ) { + clearTimeout( suggestionTimeOut ); + } + $("#" + suggestPrefix + "offset").val( 0 ); + suggestionTimeOut = setTimeout(function() { + updateSuggestions( suggestPrefix ) + }, 600); + } + + function stripSuffix( source, suffix ) { + return source.substr(0, source.length - suffix.length); + } + + function updateSuggestValue( suggestPrefix, value, displayValue ) { + var suggestLink = document.getElementById(suggestPrefix + "link"); + var suggestValue = document.getElementById(suggestPrefix + "value"); + var suggestDiv = document.getElementById(suggestPrefix + "div"); + var suggestField = document.getElementById(stripSuffix(suggestPrefix, "-suggest-")); + + suggestField.value = value; + + suggestLink.innerHTML = displayValue; + suggestDiv.style.display = 'none'; + suggestLink.focus(); + + var suggestOnUpdate = document.getElementById(suggestPrefix + "parameter-onUpdate"); + if(suggestOnUpdate != null) { + eval(suggestOnUpdate.value + "," + value + ")"); } } - return xmlhttp; -} + /* + * suggests a list (of languages, classes...) according to the letters typed in the query field + * or to the arrows "next" "previous" + */ + function updateSuggestions( suggestPrefix ) { + var table = document.getElementById(suggestPrefix + "table"); + var suggestQuery = document.getElementById(suggestPrefix + "query").value; + var suggestOffset = document.getElementById(suggestPrefix + "offset").value; + var dataSet = document.getElementById(suggestPrefix + "dataset").value; -window.getSuggestPrefix = function (node, postFix) { - var nodeId = node.id; - return stripSuffix(nodeId, postFix); -} + suggestText = document.getElementById(suggestPrefix + "text"); + suggestText.className = "suggest-loading"; + var suggestTextVal = suggestText.value ; // we copy the value to compare it later to the current value -window.leftTrim = function (sString) { - while (sString.substring(0,1) == ' ' || sString.substring(0,1) == "\n") { - sString = sString.substring(1, sString.length); - } - return sString; -} + var suggestAttributesLevel = document.getElementById(suggestPrefix + "parameter-level"); + var suggestDefinedMeaningId = document.getElementById(suggestPrefix + "parameter-definedMeaningId"); + var suggestSyntransId = document.getElementById(suggestPrefix + "parameter-syntransId"); + var suggestAnnotationAttributeId = document.getElementById(suggestPrefix + "parameter-annotationAttributeId"); -// remove accents for comparison -window.normalizeText = function (text) { - text = text.replace(new RegExp("[àáâãäå]", 'g'),"a"); - text = text.replace(new RegExp("æ", 'g'),"ae"); - text = text.replace(new RegExp("ç", 'g'),"c"); - text = text.replace(new RegExp("[èéêë]", 'g'),"e"); - text = text.replace(new RegExp("[ìíîï]", 'g'),"i"); - text = text.replace(new RegExp("ñ", 'g'),"n"); - text = text.replace(new RegExp("[òóôõö]", 'g'),"o"); - text = text.replace(new RegExp("œ", 'g'),"oe"); - text = text.replace(new RegExp("[ùúûü]", 'g'),"u"); - text = text.replace(new RegExp("[ýÿ]", 'g'),"y"); - return text ; -} + URL = wgScript + + '?title=Special:Suggest&search-text=' + encodeURI(suggestTextVal) + + '&prefix=' + encodeURI(suggestPrefix) + + '&query=' + encodeURI(suggestQuery) + + '&offset=' + encodeURI(suggestOffset) + + '&dataset='+dataSet; - -/* -* suggests a list (of languages, classes...) according to the letters typed in the query field -* or to the arrows "next" "previous" -*/ -window.updateSuggestions = function (suggestPrefix) { - var http = getHTTPObject(); - var table = document.getElementById(suggestPrefix + "table"); - var suggestQuery = document.getElementById(suggestPrefix + "query").value; - var suggestOffset = document.getElementById(suggestPrefix + "offset").value; - var dataSet = document.getElementById(suggestPrefix + "dataset").value; - - suggestText = document.getElementById(suggestPrefix + "text"); - suggestText.className = "suggest-loading"; - var suggestTextVal = suggestText.value ; // we copy the value to compare it later to the current value - - var suggestAttributesLevel = document.getElementById(suggestPrefix + "parameter-level"); - var suggestDefinedMeaningId = document.getElementById(suggestPrefix + "parameter-definedMeaningId"); - var suggestSyntransId = document.getElementById(suggestPrefix + "parameter-syntransId"); - var suggestAnnotationAttributeId = document.getElementById(suggestPrefix + "parameter-annotationAttributeId"); - - var URL = 'index.php'; - var location = "" + document.location; - - if (location.indexOf('index.php/') > 0) URL = '../' + URL; - - URL = - wgScript + - '?title=Special:Suggest&search-text=' + encodeURI(suggestTextVal) + - '&prefix=' + encodeURI(suggestPrefix) + - '&query=' + encodeURI(suggestQuery) + - '&offset=' + encodeURI(suggestOffset) + - '&dataset='+dataSet; - - if (suggestAttributesLevel != null) - URL = URL + '&attributesLevel=' + encodeURI(suggestAttributesLevel.value); - - if (suggestDefinedMeaningId != null) - URL = URL + '&definedMeaningId=' + encodeURI(suggestDefinedMeaningId.value); + if (suggestAttributesLevel != null) + URL = URL + '&attributesLevel=' + encodeURI(suggestAttributesLevel.value); - if (suggestSyntransId != null) - URL = URL + '&syntransId=' + encodeURI(suggestSyntransId.value); - - if (suggestAnnotationAttributeId != null) - URL = URL + '&annotationAttributeId=' + encodeURI(suggestAnnotationAttributeId.value); + if (suggestDefinedMeaningId != null) + URL = URL + '&definedMeaningId=' + encodeURI(suggestDefinedMeaningId.value); + + if (suggestSyntransId != null) + URL = URL + '&syntransId=' + encodeURI(suggestSyntransId.value); - http.onreadystatechange = function() { - if (http.readyState == 4) { + if (suggestAnnotationAttributeId != null) + URL = URL + '&annotationAttributeId=' + encodeURI(suggestAnnotationAttributeId.value); + + $.get( URL, function(data) { var newTable = document.createElement('div'); - //alert(http.responseText); - if (http.responseText != '') { - newTable.innerHTML = leftTrim(http.responseText); + if (data != '') { + newTable.innerHTML = leftTrim( data ); // put the searched text in bold within the returned string if ( suggestTextVal != "" ) { @@ -124,189 +160,112 @@ // comparing the stored value send in the URL, and the actual value if ( suggestTextVal != suggestText.value ) { - window.suggestionTimeOut = setTimeout("updateSuggestions(\"" + suggestPrefix + "\")", 100); + suggestionTimeOut = setTimeout( function() { + updateSuggestions( suggestPrefix ) + }, 100); } - } - }; - - http.open('GET', URL, true); - http.send(null); -} - -window.suggestionTimeOut = null; - -window.scheduleUpdateSuggestions = function (suggestPrefix) { - if (window.suggestionTimeOut != null) - clearTimeout(window.suggestionTimeOut); - - var suggestOffset = document.getElementById(suggestPrefix + "offset"); - suggestOffset.value = 0; - window.suggestionTimeOut = setTimeout("updateSuggestions(\"" + suggestPrefix + "\")", 600); -} - -window.suggestTextChanged = function (suggestText) { - scheduleUpdateSuggestions(getSuggestPrefix(suggestText, "text")); -} - -window.mouseOverRow = function (row) { - row.className = "suggestion-row active"; -} - -window.mouseOutRow = function (row) { - row.className = "suggestion-row inactive"; -} - -window.stopEventHandling = function (event) { - event.cancelBubble = true; - - if (event.stopPropagation) - event.stopPropagation(); - - if (event.preventDefault) - event.preventDefault(); - else - event.returnValue = false; -} - -window.stripSuffix = function (source, suffix) { - return source.substr(0, source.length - suffix.length); -} - -window.suggestLinkClicked = function (event, suggestLink) { - var suggestLinkId = suggestLink.id; - // removing the "link" at the end of the Id - var suggestPrefix = suggestLinkId.substr(0, suggestLinkId.length - 4); - - var suggestDiv = document.getElementById(suggestPrefix + "div"); - var suggestField = document.getElementById(suggestPrefix + "text"); - suggestDiv.style.display = 'block'; - - if (suggestField != null) { - suggestField.focus(); - updateSuggestions(suggestPrefix); + }); } - stopEventHandling(event); -} + function leftTrim( sString ) { + while (sString.substring(0,1) == ' ' || sString.substring(0,1) == "\n") { + sString = sString.substring(1, sString.length); + } + return sString; + } -window.updateSelectOptions = function (id, objectId, value) { - var http = getHTTPObject(); - var URL = 'index.php'; - var location = "" + document.location; + // remove accents for comparison + function normalizeText( text ) { + text = text.replace(new RegExp("[àáâãäå]", 'g'),"a"); + text = text.replace(new RegExp("æ", 'g'),"ae"); + text = text.replace(new RegExp("ç", 'g'),"c"); + text = text.replace(new RegExp("[èéêë]", 'g'),"e"); + text = text.replace(new RegExp("[ìíîï]", 'g'),"i"); + text = text.replace(new RegExp("ñ", 'g'),"n"); + text = text.replace(new RegExp("[òóôõö]", 'g'),"o"); + text = text.replace(new RegExp("œ", 'g'),"oe"); + text = text.replace(new RegExp("[ùúûü]", 'g'),"u"); + text = text.replace(new RegExp("[ýÿ]", 'g'),"y"); + return text ; + } - if (location.indexOf('index.php/') > 0) URL = '../' + URL; - http.open('GET', URL + '/Special:Select?optnAtt=' + encodeURI(value) + '&attribute-object=' + encodeURI(objectId), true); - http.send(null); + function stopEventHandling( event ) { + event.cancelBubble = true; - http.onreadystatechange = function() { - if (http.readyState == 4) { + if (event.stopPropagation) { + event.stopPropagation(); + } + if (event.preventDefault) { + event.preventDefault(); + } else { + event.returnValue = false; + } + } + + function updateSelectOptions(id, objectId, value) { + var URL = 'index.php'; + var location = "" + document.location; + + if (location.indexOf('index.php/') > 0) { + URL = '../' + URL; + } + URL = URL + '/Special:Select?optnAtt=' + encodeURI(value) + '&attribute-object=' + encodeURI(objectId); + alert(URL); + $.get( URL, function(data) { var select = document.getElementById(id); select.options.length = 0; - var options = http.responseText.split("\n"); + var options = data.split("\n"); for (idx in options) { option = options[idx].split(";"); select.add(new Option(option[1],option[0]),null); } - } - }; -} - -window.updateSuggestValue = function (suggestPrefix, value, displayValue) { - var suggestLink = document.getElementById(suggestPrefix + "link"); - var suggestValue = document.getElementById(suggestPrefix + "value"); - var suggestDiv = document.getElementById(suggestPrefix + "div"); - var suggestField = document.getElementById(stripSuffix(suggestPrefix, "-suggest-")); - - suggestField.value = value; - - suggestLink.innerHTML = displayValue; - suggestDiv.style.display = 'none'; - suggestLink.focus(); - - var suggestOnUpdate = document.getElementById(suggestPrefix + "parameter-onUpdate"); - if(suggestOnUpdate != null) - eval(suggestOnUpdate.value + "," + value + ")"); -} - -window.suggestClearClicked = function (event, suggestClear) { - updateSuggestValue(getSuggestPrefix(suggestClear, 'clear'), "", " "); - stopEventHandling(event); -} - -window.suggestCloseClicked = function (event, suggestClose) { - var suggestPrefix = getSuggestPrefix(suggestClose, 'close'); - var suggestDiv = document.getElementById(suggestPrefix + 'div'); - suggestDiv.style.display = 'none'; - stopEventHandling(event); -} - -window.suggestNextClicked = function (event, suggestNext, dataSetOverride) { - var suggestPrefix = getSuggestPrefix(suggestNext, 'next'); - var suggestOffset = document.getElementById(suggestPrefix + 'offset'); - suggestOffset.value = parseInt(suggestOffset.value) + 10; - updateSuggestions(suggestPrefix); - stopEventHandling(event); -} - -window.suggestPreviousClicked = function (event, suggestPrevious) { - var suggestPrefix = getSuggestPrefix(suggestPrevious, 'previous'); - var suggestOffset = document.getElementById(suggestPrefix + 'offset'); - suggestOffset.value = Math.max(parseInt(suggestOffset.value) - 10, 0); - updateSuggestions(suggestPrefix); - stopEventHandling(event); -} - -window.suggestRowClicked = function (event, suggestRow) { - var suggestPrefix = getSuggestPrefix(suggestRow.parentNode.parentNode.parentNode.parentNode, "div"); - var idColumnsField = document.getElementById(suggestPrefix + "id-columns"); - var displayLabelField = document.getElementById(suggestPrefix + "label-columns"); - var displayLabelColumnIndices = displayLabelField.value.split(", "); - var labels = new Array(); - - for (var i = 0; i < displayLabelColumnIndices.length; i++) { - var columnValue = suggestRow.getElementsByTagName('td')[displayLabelColumnIndices[i]].innerHTML; - - if (columnValue != "") { - columnValue = columnValue.replace ("<b>",""); - columnValue = columnValue.replace ("</b>",""); - labels.push(columnValue); - } + }); } - - var idColumns = 1; - - if (idColumnsField != null) - idColumns = idColumnsField.value; - - var values = suggestRow.id.split('-'); - var ids = new Array(); - - for (var i = idColumns - 1; i >= 0; i--) - ids.push(values[values.length - i - 1]); - updateSuggestValue(suggestPrefix, ids.join('-'), labels.join(', ')); - stopEventHandling(event); -} + /* some more functions to load only when ajax is complete + * because the class "suggestion-row" is not known before that + * and it does not work if the functions are defined outside + * of ajaxcomplete + */ + $(document).ajaxComplete(function() { + $(".suggestion-row").mouseover(function() { + $(this).addClass('active'); + }).mouseout(function() { + $(this).removeClass('active'); + }); -window.enableChildNodes = function (node, enabled) { - if (enabled) - var disabled = ""; - else - var disabled = "disabled"; + $(".suggestion-row").click(function() { + var suggestPrefix = getSuggestPrefix(this.parentNode.parentNode.parentNode.parentNode, "div"); + var idColumnsField = document.getElementById(suggestPrefix + "id-columns"); + var displayLabelField = document.getElementById(suggestPrefix + "label-columns"); + var displayLabelColumnIndices = displayLabelField.value.split(", "); + var labels = new Array(); - childNodes = node.getElementsByTagName('select'); + for (var i = 0; i < displayLabelColumnIndices.length; i++) { + var columnValue = this.getElementsByTagName('td')[displayLabelColumnIndices[i]].innerHTML; - for (var i = 0; i < childNodes.length; i++) - childNodes[i].disabled = disabled; -} + if (columnValue != "") { + columnValue = columnValue.replace ("<b>",""); + columnValue = columnValue.replace ("</b>",""); + labels.push(columnValue); + } + } -window.removeClicked = function (checkBox) { - var container = checkBox.parentNode.parentNode; + var idColumns = 1; - if (checkBox.checked) - container.className = "to-be-removed"; - else - container.className = ""; + if (idColumnsField != null) { + idColumns = idColumnsField.value; + } + var values = this.id.split('-'); + var ids = new Array(); -} + for (var i = idColumns - 1; i >= 0; i--) { + ids.push(values[values.length - i - 1]); + } + updateSuggestValue(suggestPrefix, ids.join('-'), labels.join(', ')); + stopEventHandling(event); + }); + }); + +}); -- To view, visit https://gerrit.wikimedia.org/r/50428 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: merged Gerrit-Change-Id: Ide21c3ef2c979acb61a1fb598222ac7ba1acddbd Gerrit-PatchSet: 1 Gerrit-Project: mediawiki/extensions/WikiLexicalData Gerrit-Branch: master Gerrit-Owner: Kipcool <kipmas...@gmail.com> Gerrit-Reviewer: Kipcool <kipmas...@gmail.com> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits