summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Coburn <btcoburn@silicodon.net>2006-04-28 03:51:58 +0200
committerBen Coburn <btcoburn@silicodon.net>2006-04-28 03:51:58 +0200
commitb1112787e60be712d508e80baaf0d6f9a861f0ac (patch)
tree8bcd2701fc510a6b2cd29d701ed678cc804c8add
parent73ca7c9c18c7cdc9f38624ade2027d000a7d5372 (diff)
downloadrpg-b1112787e60be712d508e80baaf0d6f9a861f0ac.tar.gz
rpg-b1112787e60be712d508e80baaf0d6f9a861f0ac.tar.bz2
accesskey tooltip rewriting
Does client-side rewriting of accesskey tooltip text so that it will be more OS and browser specific. Dokuwiki should output all accesskey tooltips as [ALT+<key>] because this patch matches on "[ALT+". darcs-hash:20060428015158-05dcb-0102a1b2068c053e81dd21ad3927c78b6c9f349e.gz
-rw-r--r--inc/html.php2
-rw-r--r--lib/exe/js.php3
-rw-r--r--lib/scripts/script.js27
3 files changed, 30 insertions, 2 deletions
diff --git a/inc/html.php b/inc/html.php
index 908849d2b..6d0b7e116 100644
--- a/inc/html.php
+++ b/inc/html.php
@@ -248,7 +248,7 @@ function html_btn($name,$id,$akey,$params,$method='get'){
$ret .= '<input type="submit" value="'.htmlspecialchars($label).'" class="button" ';
if($akey){
- $ret .= 'title="ALT+'.strtoupper($akey).'" ';
+ $ret .= 'title="[ALT+'.strtoupper($akey).']" ';
$ret .= 'accesskey="'.$akey.'" ';
}
$ret .= '/>';
diff --git a/lib/exe/js.php b/lib/exe/js.php
index f18edc5d6..5c7ee1dbd 100644
--- a/lib/exe/js.php
+++ b/lib/exe/js.php
@@ -121,7 +121,8 @@ function js_out(){
// load user script
@readfile(DOKU_CONF.'userscript.js');
- // add scroll event
+ // add scroll event and tooltip rewriting
+ js_runonstart('updateAccessKeyTooltip()');
js_runonstart('scrollToMarker()');
// initialize init pseudo event
diff --git a/lib/scripts/script.js b/lib/scripts/script.js
index 87fd8e503..d6be1cba9 100644
--- a/lib/scripts/script.js
+++ b/lib/scripts/script.js
@@ -17,6 +17,33 @@ if (clientPC.indexOf('opera')!=-1) {
}
/**
+ * Rewrite the accesskey tooltips to be more browser and OS specific.
+ *
+ * Accesskey tooltips are still only a best-guess of what will work
+ * on well known systems.
+ *
+ * @author Ben Coburn <btcoburn@silicodon.net>
+ */
+function updateAccessKeyTooltip() {
+ // determin tooltip text (order matters)
+ var tip = 'ALT+'; //default
+ if (domLib_isMac) { tip = 'CTRL+'; }
+ if (domLib_isOpera) { tip = 'SHIFT+ESC '; }
+ // add other cases here...
+
+ // do tooltip update
+ if (tip=='ALT+') { return; }
+ var exp = /\[ALT\+/i;
+ var rep = '['+tip;
+ var elements = domLib_getElementsByTagNames(['a', 'input', 'button']);
+ for (var i=0; i<elements.length; i++) {
+ if (elements[i].accessKey.length==1 && elements[i].title.length>0) {
+ elements[i].title = elements[i].title.replace(exp, rep);
+ }
+ }
+}
+
+/**
* Handy shortcut to document.getElementById
*
* This function was taken from the prototype library