Kipcool has submitted this change and it was merged.

Change subject: specialSuggest using element attributes instead of an hidden 
input for each variable
......................................................................


specialSuggest
using element attributes instead of an hidden input for
each variable

Change-Id: I1f81ba28625f7e24e998c5cc4e31a9916256a6e3
---
M OmegaWiki/SpecialSuggest.php
M OmegaWiki/forms.php
M resources/suggest.js
3 files changed, 101 insertions(+), 68 deletions(-)

Approvals:
  Kipcool: Verified; Looks good to me, approved



diff --git a/OmegaWiki/SpecialSuggest.php b/OmegaWiki/SpecialSuggest.php
index 3b3ea5d..433f59f 100644
--- a/OmegaWiki/SpecialSuggest.php
+++ b/OmegaWiki/SpecialSuggest.php
@@ -51,7 +51,7 @@
                        case 'class':
                                $sql = $this->getSQLForClasses( $langCode );
                                break;
-                       case WLD_RELATIONS:
+                       case WLD_RELATIONS: // 'rel'
                                if ( $attributesLevel == "DefinedMeaning" ) {
                                        $sql = 
$this->getSQLToSelectPossibleAttributes( $definedMeaningId, $attributesLevel, 
$syntransId, $annotationAttributeId, 'DM' );
                                } elseif ( $attributesLevel == "SynTrans" ) {
diff --git a/OmegaWiki/forms.php b/OmegaWiki/forms.php
index 0868b7a..d65919f 100644
--- a/OmegaWiki/forms.php
+++ b/OmegaWiki/forms.php
@@ -125,22 +125,37 @@
        if ( $label == "" ) {
                $label = 
'                ';
        }
-       $result =
-               '<span class="suggest">' .
-                       '<input type="hidden" id="' . $name . '-suggest-query" 
value="' . $query . '"/>' .
-                       '<input type="hidden" id="' . $name . '-suggest-offset" 
value="0"/>' .
-                       '<input type="hidden" id="' . $name . 
'-suggest-label-columns" value="' . implode( ', ', $displayLabelColumns ) . 
'"/>' .
-                       '<input type="hidden" id="' . $name . '" name="' . 
$name . '" value="' . $value . '"/>' .
-                       '<input type="hidden" id="' . $name . 
'-suggest-dataset" value="' . $dc . '"/>';
 
-       foreach ( $parameters as $parameter => $parameterValue ) {
-               $inputID = $name . '-suggest-parameter-' . $parameter;
-               $result .= HTML::hidden( $parameter, $parameterValue , array( 
"id" => $inputID ) );
+       $result = Html::openElement('span', array( 'class' => 'suggest' ) );
+
+       // the input that will contain the value selected with suggest.js
+       $inputOptions = array(
+               'id' => $name,
+               'name' => $name,
+               'value' => $value,
+               'type' => 'hidden'
+       );
+       $result .= Html::element('input', $inputOptions);
+
+       $spanOptions = array(
+               'id' => $name . '-suggest-link',
+               'name' => $name . '-suggest-link',
+               'class' => 'suggest-link',
+               'title' => wfMessage( "ow_SuggestHint" )->text(),
+               'query' => $query,
+               'offset' => 0,
+               'label-columns' => implode( ', ', $displayLabelColumns ),
+               'dataset' => $dc
+       );
+
+       foreach( $parameters as $parameter => $parameterValue ) {
+               // parameters like level, definedMeaningId, 
annotationAttributeId, syntransId
+               $spanOptions[$parameter] = $parameterValue;
        }
 
-       $result .=
-               '<span id="' . $name . '-suggest-link" class="suggest-link" 
title="' . wfMessage( "ow_SuggestHint" )->text() . '">' . $label . '</span>' .
-               '</span>';
+       $result .= Html::rawElement('span', $spanOptions, $label);
+
+       $result .= Html::closeElement('span');
 
        // The table that then allows to select from a dropdown list
        // is generated with javascript (cf. suggest.js)
@@ -152,25 +167,35 @@
        if ( $label == "" ) {
                $label = 
'&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;';
        }
-       $result =
-               '<span class="suggest">' .
-//                     '<input type="hidden" id="'. $name .'-suggest-query" 
value="'. $query .'"/>' .
-                       '<input type="hidden" id="' . $name . 
'-suggest-label-columns" value="' . implode( ', ', $displayLabelColumns ) . 
'"/>' .
-                       '<input type="hidden" id="' . $name . '" name="' . 
$name . '" value="' . $value . '"/>';
+
+       $result = Html::openElement('span', array( 'class' => 'suggest' ) );
+
+       // the input that will contain the value selected with suggest.js
+       $inputOptions = array(
+               'id' => $name,
+               'name' => $name,
+               'value' => $value,
+               'type' => 'hidden'
+       );
+       $result .= Html::element('input', $inputOptions);
+       $spanOptions = array(
+               'id' => $name . '-suggest-link',
+               'name' => $name . '-suggest-link',
+               'class' => 'suggest-link',
+               'title' => wfMessage( "ow_SuggestHint" )->text(),
+               'query' => $query,
+               'offset' => 0,
+               'label-columns' => implode( ', ', $displayLabelColumns ),
+               'dataset' => $dc
+       );
 
        if ( $idColumns > 1 ) {
-               $result .= '<input type="hidden" id="' . $name . 
'-suggest-id-columns" value="' . $idColumns . '"/>';
+               $spanOptions['id-columns'] = $idColumns;
        }
-       $result .=
-                       '<a id="' . $name . '-suggest-link" 
class="suggest-link" title="' . wfMessage( "ow_SuggestHint" )->text() . '">' . 
$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>' .
-                       '</td><td><a id="' . $name . '-suggest-clear" 
href="javascript:void(0)" class="suggest-clear">' . wfMessage( 
'ow_suggest_clear' )->text() . '</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>';
+
+       $result .= Html::rawElement('span', $spanOptions, $label);
+
+       $result .= Html::closeElement('span');
 
        return $result;
 }
diff --git a/resources/suggest.js b/resources/suggest.js
index 42d187d..3651a82 100644
--- a/resources/suggest.js
+++ b/resources/suggest.js
@@ -94,8 +94,8 @@
        }
 
        function updateSuggestValue( suggestPrefix, value, displayValue ) {
-               var suggestLink = document.getElementById(suggestPrefix + 
"link");
-               var suggestValue = document.getElementById(suggestPrefix + 
"value");
+               var suggestLinkId = suggestPrefix + "link";
+               var suggestLink = document.getElementById(suggestLinkId);
                var suggestDiv = document.getElementById(suggestPrefix + "div");
                var suggestField = 
document.getElementById(stripSuffix(suggestPrefix, "-suggest-"));
 
@@ -105,57 +105,64 @@
                suggestDiv.style.display = 'none';
                suggestLink.focus();
 
-               var suggestOnUpdate = document.getElementById(suggestPrefix + 
"parameter-onUpdate");
+               var suggestOnUpdate = $('#' + suggestLinkId).attr('onUpdate');
                if(suggestOnUpdate != null) {
-                       eval(suggestOnUpdate.value + "," + value + ")");
+                       eval(suggestOnUpdate + "," + value + ")");
                }
        }
 
        /*
        * suggests a list (of languages, classes...) according to the letters 
typed in the query field
        * or to the arrows "next" "previous"
+       * suggestPrefix is of the form 
"add-dm-269-syntrans-423-objAtt-rel-relation-type-suggest-"
        */
 
        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;
-
+               // table is created by the createSuggestStructure function
+               var table = $('#' + suggestPrefix + 'table');
                if ( table == null ) {
                        // just in case
                        return;
                }
 
+               // the following parameters are created in forms.php
+               var suggestlink = '#' + suggestPrefix + 'link';
+               var suggestQuery = $(suggestlink).attr('query');
+               var suggestOffset = $(suggestlink).attr('offset');
+               var dataSet = $(suggestlink).attr('dataset');
+
+               var suggestAttributesLevel = $(suggestlink).attr('level');
+               var suggestDefinedMeaningId = 
$(suggestlink).attr('definedMeaningId');
+               var suggestSyntransId = $(suggestlink).attr('syntransId');
+               var suggestAnnotationAttributeId = 
$(suggestlink).attr('annotationAttributeId');
+
                suggestText = $("#" + suggestPrefix + "text");
                suggestText.addClass("suggest-loading");
                var suggestTextVal = suggestText.val() ; // 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");
+               URL = wgScript + '?title=Special:Suggest' ;
 
-               URL = wgScript +
-                       '?title=Special:Suggest&search-text=' + 
encodeURI(suggestTextVal) +
-                       '&prefix=' + encodeURI(suggestPrefix) +
-                       '&query=' + encodeURI(suggestQuery) +
-                       '&offset=' + encodeURI(suggestOffset) +
-                       '&dataset='+dataSet;
+               var getParams = {
+                       'search-text': suggestTextVal,
+                       prefix: suggestPrefix,
+                       query: suggestQuery,
+                       offset: suggestOffset,
+                       dataset: dataSet
+               };
+               if (suggestAttributesLevel != null) {
+                       getParams['attributesLevel'] = suggestAttributesLevel;
+               }
+               if (suggestDefinedMeaningId != null) {
+                       getParams['definedMeaningId'] = suggestDefinedMeaningId;
+               }
+               if (suggestSyntransId != null) {
+                       getParams['syntransId'] = suggestSyntransId;
+               }
+               if (suggestAnnotationAttributeId != null) {
+                       getParams['annotationAttributeId'] = 
suggestAnnotationAttributeId;
+               }
 
-               if (suggestAttributesLevel != null)
-                       URL = URL + '&attributesLevel=' + 
encodeURI(suggestAttributesLevel.value);
-               
-               if (suggestDefinedMeaningId != null)
-                       URL = URL + '&definedMeaningId=' + 
encodeURI(suggestDefinedMeaningId.value);
-
-               if (suggestSyntransId != null)
-                       URL = URL + '&syntransId=' + 
encodeURI(suggestSyntransId.value);
-                       
-               if (suggestAnnotationAttributeId != null)
-                       URL = URL + '&annotationAttributeId=' + 
encodeURI(suggestAnnotationAttributeId.value);
-
-               $.get( URL, function(data) {
+               $.get( URL, getParams, function(data) {
                        var newTable = document.createElement('div');
                        if (data != '') {
                                newTable.innerHTML = leftTrim( data );
@@ -250,10 +257,12 @@
                });
 
                $(".suggestion-row").click(function() {
-                       var suggestPrefix = 
getSuggestPrefix(this.parentNode.parentNode.parentNode, "div");
-                       var idColumnsField = 
document.getElementById(suggestPrefix + "id-columns");
-                       var displayLabelField = 
document.getElementById(suggestPrefix + "label-columns");
-                       var displayLabelColumnIndices = 
displayLabelField.value.split(", ");
+                       var suggestPrefix = stripSuffix( 
$(this).closest('.suggest-div').attr('id'), 'div');
+                       var suggestlink = '#' + suggestPrefix + 'link';
+
+                       var idColumnsField = $(suggestlink).attr('id-columns');
+                       var displayLabelField = 
$(suggestlink).attr('label-columns');
+                       var displayLabelColumnIndices = 
displayLabelField.split(", ");
                        var labels = new Array();
 
                        for (var i = 0; i < displayLabelColumnIndices.length; 
i++) {
@@ -265,11 +274,10 @@
                                        labels.push(columnValue);
                                }
                        }
-
                        var idColumns = 1;
 
                        if (idColumnsField != null) {
-                               idColumns = idColumnsField.value;
+                               idColumns = idColumnsField;
                        }
                        var values = this.id.split('-');
                        var ids = new Array();

-- 
To view, visit https://gerrit.wikimedia.org/r/71867
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: I1f81ba28625f7e24e998c5cc4e31a9916256a6e3
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/WikiLexicalData
Gerrit-Branch: master
Gerrit-Owner: Kipcool <[email protected]>
Gerrit-Reviewer: Hiong3-eng5 <[email protected]>
Gerrit-Reviewer: Kipcool <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to