https://www.mediawiki.org/wiki/Special:Code/MediaWiki/112223
Revision: 112223
Author: jdlrobson
Date: 2012-02-23 17:15:09 +0000 (Thu, 23 Feb 2012)
Log Message:
-----------
shift search related code from application.js to opensearch.js
it makes more sense if all the search related code is in one place
Modified Paths:
--------------
trunk/extensions/MobileFrontend/javascripts/application.js
trunk/extensions/MobileFrontend/javascripts/beta_application.js
trunk/extensions/MobileFrontend/javascripts/beta_opensearch.js
trunk/extensions/MobileFrontend/javascripts/opensearch.js
trunk/extensions/MobileFrontend/tests/js/test_application.js
trunk/extensions/MobileFrontend/tests/js/test_opensearch.js
Modified: trunk/extensions/MobileFrontend/javascripts/application.js
===================================================================
--- trunk/extensions/MobileFrontend/javascripts/application.js 2012-02-23
17:12:11 UTC (rev 112222)
+++ trunk/extensions/MobileFrontend/javascripts/application.js 2012-02-23
17:15:09 UTC (rev 112223)
@@ -3,7 +3,7 @@
MobileFrontend = (function() {
function init() {
- var i, search, clearSearch, results, languageSelection, a,
heading,
+ var i, results, languageSelection, a, heading,
sectionHeadings = document.getElementsByClassName(
'section_heading' ),
dismissNotification, cookieNameZeroVisibility,
zeroRatedBanner, zeroRatedBannerVisibility;
utilities( document.body ).addClass( 'jsEnabled' );
@@ -28,20 +28,9 @@
heading.insertBefore( createButton( false ),
heading.firstChild );
utilities( heading ).bind( 'click', openSectionHandler,
false );
}
- search = document.getElementById( 'search' );
- clearSearch = document.getElementById( 'clearsearch' );
results = document.getElementById( 'results' );
languageSelection = document.getElementById(
'languageselection' );
- function initClearSearchLink() {
- function onFocusHandler() {
- search.select();
- }
- utilities( clearSearch ).bind( 'mousedown',
clearSearchBox, true );
- utilities( search ).bind( 'keyup',
handleClearSearchLink, false );
- utilities( search ).bind( 'click', onFocusHandler, true
);
- }
-
function navigateToLanguageSelection() {
var url;
if ( languageSelection ) {
@@ -53,35 +42,10 @@
}
utilities( languageSelection ).bind( 'change',
navigateToLanguageSelection );
- function handleClearSearchLink() {
- if ( clearSearch ) {
- if ( search.value.length > 0 ) {
- clearSearch.style.display = 'block';
- } else {
- clearSearch.style.display = 'none';
- if ( results ) {
- results.style.display = 'none';
- }
- }
- }
- }
-
- function clearSearchBox( event ) {
- search.value = '';
- clearSearch.style.display = 'none';
- if ( results ) {
- results.style.display = 'none';
- }
- if ( event ) {
- event.preventDefault();
- }
- }
-
function logoClick() {
var n = document.getElementById( 'nav' ).style;
n.display = n.display === 'block' ? 'none' : 'block';
}
- initClearSearchLink();
utilities( document.getElementById( 'logo' ) ).bind( 'click',
logoClick );
dismissNotification = document.getElementById(
'dismiss-notification' );
Modified: trunk/extensions/MobileFrontend/javascripts/beta_application.js
===================================================================
--- trunk/extensions/MobileFrontend/javascripts/beta_application.js
2012-02-23 17:12:11 UTC (rev 112222)
+++ trunk/extensions/MobileFrontend/javascripts/beta_application.js
2012-02-23 17:15:09 UTC (rev 112223)
@@ -32,24 +32,12 @@
heading.insertBefore( createButton( false ),
heading.firstChild );
utilities( heading ).bind( 'click', openSectionHandler,
false );
}
- search = document.getElementById( 'search' );
- clearSearch = document.getElementById( 'clearsearch' );
results = document.getElementById( 'results' );
languageSelection = document.getElementById(
'languageselection' );
zeroRatedBanner = document.getElementById( 'zero-rated-banner'
) ||
document.getElementById( 'zero-rated-banner-red' );
- function initClearSearchLink() {
- function onFocusHandler() {
- search.select();
- }
- utilities( clearSearch ).bind( 'mousedown',
clearSearchBox, true );
- utilities( search ).bind( 'keyup',
handleClearSearchLink, false );
- utilities( search ).bind( 'keydown', handleDefaultText,
false );
- utilities( search ).bind( 'click', onFocusHandler, true
);
- }
-
function navigateToLanguageSelection() {
var url;
if ( languageSelection ) {
@@ -61,39 +49,10 @@
}
utilities( languageSelection ).bind( 'change',
navigateToLanguageSelection );
- function handleDefaultText() {
- var pE = document.getElementById( 'placeholder' );
- if ( pE ) {
- pE.style.display = 'none';
- }
- }
-
- function handleClearSearchLink() {
- if ( clearSearch ) {
- if ( search.value.length > 0 ) {
- clearSearch.style.display = 'block';
- } else {
- clearSearch.style.display = 'none';
- }
- }
- }
-
- function clearSearchBox( event ) {
- search.value = '';
- clearSearch.style.display = 'none';
- if ( event ) {
- event.preventDefault();
- }
- }
-
function logoClick() {
var n = document.getElementById( 'nav' ).style;
n.display = n.display === 'block' ? 'none' : 'block';
}
- initClearSearchLink();
- search.onpaste = function() {
- handleDefaultText();
- };
utilities( document.getElementById( 'logo' ) ).bind( 'click',
logoClick );
dismissNotification = document.getElementById(
'dismiss-notification' );
Modified: trunk/extensions/MobileFrontend/javascripts/beta_opensearch.js
===================================================================
--- trunk/extensions/MobileFrontend/javascripts/beta_opensearch.js
2012-02-23 17:12:11 UTC (rev 112222)
+++ trunk/extensions/MobileFrontend/javascripts/beta_opensearch.js
2012-02-23 17:15:09 UTC (rev 112223)
@@ -244,17 +244,58 @@
}
}
+ function handleDefaultText() {
+ var pE = document.getElementById( 'placeholder' );
+ if ( pE ) {
+ pE.style.display = 'none';
+ }
+ }
+
+ function initClearSearch() {
+ var clearSearch = document.getElementById( 'clearsearch' ),
+ search = document.getElementById( 'search' ),
+ results = document.getElementById( 'results' );
+ function handleClearSearchLink() {
+ if ( clearSearch ) {
+ if ( search.value.length > 0 ) {
+ clearSearch.style.display = 'block';
+ } else {
+ clearSearch.style.display = 'none';
+ }
+ }
+ }
+
+ function clearSearchBox( event ) {
+ search.value = '';
+ clearSearch.style.display = 'none';
+ if ( event ) {
+ event.preventDefault();
+ }
+ }
+
+ function onFocusHandler() {
+ search.select();
+ }
+ u( clearSearch ).bind( 'mousedown', clearSearchBox, true );
+ u( search ).bind( 'keyup', handleClearSearchLink, false );
+ u( search ).bind( 'keydown', handleDefaultText, false );
+ u( search ).bind( 'click', onFocusHandler, true );
+ }
+
function init() {
var results = document.getElementById( 'results' );
results.onmousedown = whichElement;
document.body.onmousedown = whichElement;
document.body.ontouchstart = whichElement;
results.ontouchstart = whichElement;
+ search.onpaste = handleDefaultText;
}
init();
+ initClearSearch();
return {
init: init,
+ initClearSearch: initClearSearch,
writeResults: writeResults,
createObjectArray: createObjectArray,
removeResults: removeResults
Modified: trunk/extensions/MobileFrontend/javascripts/opensearch.js
===================================================================
--- trunk/extensions/MobileFrontend/javascripts/opensearch.js 2012-02-23
17:12:11 UTC (rev 112222)
+++ trunk/extensions/MobileFrontend/javascripts/opensearch.js 2012-02-23
17:15:09 UTC (rev 112223)
@@ -136,6 +136,42 @@
}
}
+ function initClearSearch() {
+ var clearSearch = document.getElementById( 'clearsearch' ),
+ search = document.getElementById( 'search' ),
+ results = document.getElementById( 'results' );
+ function handleClearSearchLink() {
+ if ( clearSearch ) {
+ if ( search.value.length > 0 ) {
+ clearSearch.style.display = 'block';
+ } else {
+ clearSearch.style.display = 'none';
+ if ( results ) {
+ results.style.display = 'none';
+ }
+ }
+ }
+ }
+
+ function clearSearchBox( event ) {
+ search.value = '';
+ clearSearch.style.display = 'none';
+ if ( results ) {
+ results.style.display = 'none';
+ }
+ if ( event ) {
+ event.preventDefault();
+ }
+ }
+
+ function onFocusHandler() {
+ search.select();
+ }
+ u( clearSearch ).bind( 'mousedown', clearSearchBox, true );
+ u( search ).bind( 'keyup', handleClearSearchLink, false );
+ u( search ).bind( 'click', onFocusHandler, true );
+ }
+
function init() {
var results = document.getElementById( 'results' );
results.onmousedown = whichElement;
@@ -144,9 +180,11 @@
results.ontouchstart = whichElement;
}
init();
+ initClearSearch();
return {
init: init,
+ initClearSearch: initClearSearch,
writeResults: writeResults,
createObjectArray: createObjectArray
};
Modified: trunk/extensions/MobileFrontend/tests/js/test_application.js
===================================================================
--- trunk/extensions/MobileFrontend/tests/js/test_application.js
2012-02-23 17:12:11 UTC (rev 112222)
+++ trunk/extensions/MobileFrontend/tests/js/test_application.js
2012-02-23 17:15:09 UTC (rev 112223)
@@ -75,50 +75,6 @@
strictEqual(cookieEnd, "off", "banner now set for dismissal");
});
-module("MobileFrontend application.js: clear search", {
- setup: function() {
- MFET.createFixtures();
- MFE.init();
- $("#clearsearch").hide();
- },
- teardown: function() {
- MFET.cleanFixtures();
- }
-});
-
-test("setup", function() {
- strictEqual($("#clearsearch").attr("title"), "Clear", "check
clearsearch tooltip");
-});
-
-test("reveal clearsearch on text", function() {
- $("#search").val("hello");
- var initialVisibility = $("#clearsearch").is(":visible");
- MFET.triggerEvent($("#search")[0], "keyup")
- strictEqual(initialVisibility, false, "at start clear button should be
hidden.")
- strictEqual($("#clearsearch").is(":visible"), true, "clear search is
now visible");
-});
-
-test("hide clearsearch when no text", function() {
- $("#clearsearch").show();
- $("#search").val("");
- var initialVisibility = $("#clearsearch").is(":visible");
- MFET.triggerEvent($("#search")[0], "keyup");
- strictEqual(initialVisibility, true, "at start we made it visible")
- strictEqual($("#clearsearch").is("visible"), false, "now invisible due
to lack of text in input");
- strictEqual($("#results").is("visible"), false, "results also hidden");
-});
-
-test("click clearSearchBox", function() {
- $("#search").val("hello world");
- $("#results,#clearsearch").show();
-
- MFET.triggerEvent($("#clearsearch")[0], "mousedown")
-
- strictEqual($("#search").val(), "", "value reset");
- strictEqual($("#results").is(":visible"), false, "results hidden");
- strictEqual($("#clearsearch").is(":visible"), false, "clear search
hidden");
-});
-
module("MobileFrontend application.js: logo click", {
setup: function() {
MFET.createFixtures();
Modified: trunk/extensions/MobileFrontend/tests/js/test_opensearch.js
===================================================================
--- trunk/extensions/MobileFrontend/tests/js/test_opensearch.js 2012-02-23
17:12:11 UTC (rev 112222)
+++ trunk/extensions/MobileFrontend/tests/js/test_opensearch.js 2012-02-23
17:15:09 UTC (rev 112223)
@@ -1,5 +1,50 @@
var MFEOS = MobileFrontend.opensearch;
var _ajax;
+
+module("MobileFrontend application.js: clear search", {
+ setup: function() {
+ $(['<div id="clearsearchtest"><div id="results"></div><input
type="text" id="search">',
+ '<button id="clearsearch" title="Clear"
style="display:none;">clear</button></div>'].join("")).appendTo(document.body);
+ MFEOS.initClearSearch();
+ },
+ teardown: function() {
+ $("#clearsearchtest").remove();
+ }
+});
+
+test("setup", function() {
+ strictEqual($("#clearsearch").attr("title"), "Clear", "check
clearsearch tooltip");
+});
+
+test("reveal clearsearch on text", function() {
+ $("#search").val("hello");
+ var initialVisibility = $("#clearsearch").is(":visible");
+ MFET.triggerEvent($("#search")[0], "keyup")
+ strictEqual(initialVisibility, false, "at start clear button should be
hidden.")
+ strictEqual($("#clearsearch").is(":visible"), true, "clear search is
now visible");
+});
+
+test("hide clearsearch when no text", function() {
+ $("#clearsearch").show();
+ $("#search").val("");
+ var initialVisibility = $("#clearsearch").is(":visible");
+ MFET.triggerEvent($("#search")[0], "keyup");
+ strictEqual(initialVisibility, true, "at start we made it visible")
+ strictEqual($("#clearsearch").is("visible"), false, "now invisible due
to lack of text in input");
+ strictEqual($("#results").is("visible"), false, "results also hidden");
+});
+
+test("click clearSearchBox", function() {
+ $("#search").val("hello world");
+ $("#results,#clearsearch").show();
+
+ MFET.triggerEvent($("#clearsearch")[0], "mousedown")
+
+ strictEqual($("#search").val(), "", "value reset");
+ strictEqual($("#results").is(":visible"), false, "results hidden");
+ strictEqual($("#clearsearch").is(":visible"), false, "clear search
hidden");
+});
+
module("MobileFrontend opensearch.js - writeResults", {
setup: function() {
_ajax = MobileFrontend.utils.ajax;
_______________________________________________
MediaWiki-CVS mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-cvs