Commit: 41ae81049082668c4f8bf883db739484081b2c08 Author: Hannes Magnusson <[email protected]> Sat, 28 Dec 2013 19:01:40 -0800 Parents: c251f3f393baaab6f9205d0d164b60ccd3e8e24b Branches: master
Link: http://git.php.net/?p=web/php.git;a=commitdiff;h=41ae81049082668c4f8bf883db739484081b2c08 Log: Have some fun with current-page search (keyboard shortcut: g s) Changed paths: M include/header.inc M js/common.js M js/ext/mousetrap.min.js M styles/theme-base.css Diff: diff --git a/include/header.inc b/include/header.inc index c015d5d..770a2d0 100755 --- a/include/header.inc +++ b/include/header.inc @@ -102,6 +102,12 @@ if ($config["cache"]) { <div class="headsup"><?php echo $config["headsup"]?></div> <?php endif ?> <nav id="trick"><div><?php doc_toc("en") ?></div></nav> +<div id="goto"> + <div class="search"> + <div class="text"></div> + <div class="results"><ul></ul></div> + </div> +</div> <?php if (!empty($config['breadcrumbs'])): ?> <div id="breadcrumbs"> diff --git a/js/common.js b/js/common.js index d370169..4378a5e 100755 --- a/js/common.js +++ b/js/common.js @@ -61,6 +61,10 @@ Mousetrap.bind("?", function() { }); Mousetrap.bind("esc", function() { $("#trick").slideUp(); + $("#goto").slideUp(); + + $("html").off("keydown"); + $("html").off("keypress"); }); /* Mousetrap.bind("j", function() { @@ -155,6 +159,62 @@ Mousetrap.bind("k", function() { cycleHeaders(matches, 0); } }); +$.expr[":"].icontains = $.expr.createPseudo(function(arg) { + return function( elem ) { + return $(elem).text().toUpperCase().indexOf(arg.toUpperCase()) >= 0; + }; +}); +function lookfor(txt) { + var retval = $("#layout a:icontains('" + txt + "')"); + $("#goto .results ul").empty(); + $(retval).each(function(k, val) { + $("#goto .results ul").append("<li><a href='" + $(val).attr("href") + "'>" + $(val).text() +"</a></li>"); + }); + $("#goto .results a:first").focus(); +} +Mousetrap.bind("g s", function(e) { + $("#goto").slideToggle(); + lookfor($("#goto .text").text()); + + $("html").on("keydown", function(e) { + switch(e.which || e.keyCode) { + /* Backspace */ + case 8: + var txt = $("#goto .text").text(); + txt = txt.substring(0, txt.length - 1); + $("#goto .text").text(txt); + lookfor(txt); + e.preventDefault(); + break; + + /* Enter */ + case 13: + Mousetrap.unpause(); + Mousetrap.trigger('esc'); + return true; + + /* Tab */ + case 9: + $(document.activeElement).parent().next().first().focus(); + break; + case 27: + Mousetrap.unpause(); + Mousetrap.trigger('esc'); + } + }); + $("html").on("keypress", function(e) { + if (e.which == 13) { + return true; + } + e.preventDefault(); + var letter = String.fromCharCode(e.which || e.keyCode); + $("#goto .text").append(letter); + var txt = $("#goto .text").text().trim(); + lookfor(txt); + }); + + Mousetrap.pause(); +}); Mousetrap.bind("/", function(e) { if (e.preventDefault) { e.preventDefault(); diff --git a/js/ext/mousetrap.min.js b/js/ext/mousetrap.min.js index 114a222..5a99439 100644 --- a/js/ext/mousetrap.min.js +++ b/js/ext/mousetrap.min.js @@ -7,3 +7,4 @@ c,a,e),l[d.key][c?"unshift":"push"]({callback:b,modifiers:d.modifiers,action:d.a "@":"2","#":"3",$:"4","%":"5","^":"6","&":"7","*":"8","(":"9",")":"0",_:"-","+":"=",":":";",'"':"'","<":",",">":".","?":"/","|":"\\"},G={option:"alt",command:"meta","return":"enter",escape:"esc",mod:/Mac|iPod|iPhone|iPad/.test(navigator.platform)?"meta":"ctrl"},p,l={},q={},n={},D,z=!1,I=!1,u=!1;for(f=1;20>f;++f)h[111+f]="f"+f;for(f=0;9>=f;++f)h[f+96]=f;s(r,"keypress",y);s(r,"keydown",y);s(r,"keyup",y);var m={bind:function(a,b,d){a=a instanceof Array?a:[a];for(var c=0;c<a.length;++c)F(a[c],b,d);return this}, unbind:function(a,b){return m.bind(a,function(){},b)},trigger:function(a,b){if(q[a+":"+b])q[a+":"+b]({},a);return this},reset:function(){l={};q={};return this},stopCallback:function(a,b){return-1<(" "+b.className+" ").indexOf(" mousetrap ")?!1:"INPUT"==b.tagName||"SELECT"==b.tagName||"TEXTAREA"==b.tagName||b.isContentEditable},handleKey:function(a,b,d){var c=C(a,b,d),e;b={};var f=0,g=!1;for(e=0;e<c.length;++e)c[e].seq&&(f=Math.max(f,c[e].level));for(e=0;e<c.length;++e)c[e].seq?c[e].level==f&&(g=!0, b[c[e].seq]=1,x(c[e].callback,d,c[e].combo,c[e].seq)):g||x(c[e].callback,d,c[e].combo);c="keypress"==d.type&&I;d.type!=u||w(a)||c||t(b);I=g&&"keydown"==d.type}};J.Mousetrap=m;"function"===typeof define&&define.amd&&define(m)})(window,document); +Mousetrap=function(a){var c=a.stopCallback,b=!0;a.stopCallback=function(a,d,e){return b?c(a,d,e):!0};a.pause=function(){b=!1};a.unpause=function(){b=!0};return a}(Mousetrap); diff --git a/styles/theme-base.css b/styles/theme-base.css index 3fbd6b2..81c9db3 100755 --- a/styles/theme-base.css +++ b/styles/theme-base.css @@ -1583,6 +1583,7 @@ div.soft-deprecation-notice blockquote.sidebar { #intro .container, .navbar-inner, #breadcrumbs, + #goto div, #trick div, #layout { width:1170px; @@ -1592,6 +1593,7 @@ div.soft-deprecation-notice blockquote.sidebar { #intro .container, .navbar-inner, #breadcrumbs, + #goto div, #trick div, #layout { width:1440px; @@ -1725,6 +1727,27 @@ div.soft-deprecation-notice blockquote.sidebar { } } +#goto { + display: none; + background-color: #333; + height: 100%; + width: 100%; + opacity: 0.9; + position: fixed; + top: 50px; + z-index: 5000; + color: #eee; +} +#goto .search .results { + text-shadow: 0px 2px 3px #555; + font-size: 2em; + line-height: 1; +} +#goto .search .text { + color: #222; + text-shadow: 0px 2px 3px #555; + font-size: 10em; +} #trick { display: none; background-color: #333; @@ -1735,6 +1758,7 @@ div.soft-deprecation-notice blockquote.sidebar { top: 50px; z-index: 5000; } +#goto div, #trick div { margin: 0 auto; } -- PHP Webmaster List Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
