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

Reply via email to