ni_nitdoc: added fast copy past utility to signatures.
[nit.git] / share / nitdoc / scripts / js-facilities.js
index 0c9f42b..4297dd3 100644 (file)
@@ -4,7 +4,6 @@
 $.expr[':'].icontains = function(obj, index, meta, stack){\r
        return (obj.textContent.replace(/\[[0-9]+\]/g, "") || obj.innerText.replace(/\[[0-9]+\]/g, "") || jQuery(obj).text().replace(/\[[0-9]+\]/g, "") || '').toLowerCase().indexOf(meta[3].toLowerCase()) >= 0;\r
 };\r
-\r
 /*\r
  *     Quick Search global vars\r
  */\r
@@ -15,12 +14,11 @@ var currentTable = null;
 //Hightlighted index in search result preview table\r
 var currentIndex = -1;\r
 \r
-\r
 /*\r
 * Add folding and filtering facilities to class description page.\r
 */\r
 $(document).ready(function() {\r
-       \r
+\r
        /*\r
        * Highlight the spoted element\r
        */\r
@@ -45,8 +43,8 @@ $(document).ready(function() {
                                $(this).find("a.fold").html("+");\r
                        }\r
                        $(this).nextAll().toggle();\r
-       })
-       
+       })\r
+       \r
        // Insert search field\r
        $("nav.main ul")\r
        .append(\r
@@ -134,14 +132,17 @@ $(document).ready(function() {
 \r
                                                        // Escape regexp related characters in query\r
                                                        var query = $("#search").val();\r
+                                                       query = query.replace(/\\/gi, "\\\\");\r
                                                        query = query.replace(/\[/gi, "\\[");\r
                                                        query = query.replace(/\|/gi, "\\|");\r
                                                        query = query.replace(/\*/gi, "\\*");\r
                                                        query = query.replace(/\+/gi, "\\+");\r
-                                                       query = query.replace(/\\/gi, "\\\\");\r
                                                        query = query.replace(/\?/gi, "\\?");\r
                                                        query = query.replace(/\(/gi, "\\(");\r
                                                        query = query.replace(/\)/gi, "\\)");\r
+                                                       query = query.replace(/&/gi, "&&");\r
+                                                       query = query.replace(/>/gi, ">");\r
+                                                       query = query.replace(/</gi, "&lt;");\r
 \r
                                                        var index = 0;\r
                                                        var regexp = new RegExp("^" + query, "i");\r
@@ -150,7 +151,7 @@ $(document).ready(function() {
                                                                        break;\r
                                                                }\r
                                                                var result = entry.match(regexp);\r
-                                                               if(result != null && result.toString().toUpperCase() == $("#search").val().toUpperCase()) {\r
+                                                               if(result != null) {\r
                                                                        for(var i = 0; i < entries[entry].length; i++) {\r
                                                                                if(index > 10) {\r
                                                                                        break;\r
@@ -256,7 +257,7 @@ $(document).ready(function() {
                        })\r
                )\r
        );\r
-       
+       \r
        // Filter toggle between H I R in nav porperties list\r
        $("nav.properties.filterable .filter")\r
        .append(\r
@@ -306,9 +307,9 @@ $(document).ready(function() {
                        \r
                        $(this).toggleClass("hidden");\r
                })\r
-       );
-       
-       // Filter toggle between I R in 
+       );\r
+       \r
+       // Filter toggle between I R in \r
        $("article.properties.filterable .filter, article.classes.filterable .filter")\r
        .append(\r
                $(document.createElement("a"))\r
@@ -349,9 +350,21 @@ $(document).ready(function() {
        $("a[href*='#']").click( function() {\r
                highlightBlock($(this).attr("href").split(/#/)[1]);\r
        });\r
-       \r
+\r
        //Preload filter fields with query string\r
        preloadFilters();\r
+\r
+       //Copy to clipboard utility on signatures\r
+       $(".signature").each(function(){\r
+               $(this).append(\r
+                       $("<button class='copyButton' data-clipboard-text='" + $(this).attr("data-untyped-signature") + "'></button>")\r
+                       .append($("<img src='./resources/icons/copy.png' />"))\r
+               )\r
+       });\r
+\r
+       var clip = new ZeroClipboard($(".copyButton"), {\r
+         moviePath: "./ZeroClipboard.swf"\r
+       } );\r
 });\r
 \r
 /* Parse current URL and return anchor name */\r
@@ -363,24 +376,24 @@ function currentAnchor() {
        return null;\r
 }\r
 \r
-/* Prealod filters field using search query */
-function preloadFilters() {
-       // Parse URL and get query string
-       var search = currentAnchor();
-       
-       if(search == null || search.indexOf("q=") == -1)
-               return;
-               
+/* Prealod filters field using search query */\r
+function preloadFilters() {\r
+       // Parse URL and get query string\r
+       var search = currentAnchor();\r
+       \r
+       if(search == null || search.indexOf("q=") == -1)\r
+               return;\r
+               \r
        search = search.substring(2, search.length);    \r
-       
-       if(search == "" || search == "undefined")
-               return;
        \r
-       $(":text").val(search);
-       $(".filter :text")
-               .removeClass("notUsed")
-               .trigger("keyup");
-
+       if(search == "" || search == "undefined")\r
+               return;\r
+       \r
+       $(":text").val(search);\r
+       $(".filter :text")\r
+               .removeClass("notUsed")\r
+               .trigger("keyup");\r
+\r
 }\r
 \r
 /* Hightlight the spoted block */\r
@@ -399,4 +412,4 @@ function highlightBlock(a) {
        \r
        target.addClass("highlighted");\r
        target.show();\r
-}
\ No newline at end of file
+}\r