Kipcool has uploaded a new change for review.
https://gerrit.wikimedia.org/r/71867
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(-)
git pull
ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/WikiLexicalData
refs/changes/67/71867/1
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 =
'                ';
}
- $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: newchange
Gerrit-Change-Id: I1f81ba28625f7e24e998c5cc4e31a9916256a6e3
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/WikiLexicalData
Gerrit-Branch: master
Gerrit-Owner: Kipcool <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits