summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorAndreas Gohr <andi@splitbrain.org>2011-06-10 20:26:04 +0200
committerAndreas Gohr <andi@splitbrain.org>2011-06-13 14:26:34 +0200
commit17e2e2545f2fd3607a14238ecee25eb7a605ce84 (patch)
treeb54585710d4867afa3cbc0e33021806d439f31ec /lib
parent427fd3cc91f3a9d5ccfba4cfad402d45b40cf103 (diff)
downloadrpg-17e2e2545f2fd3607a14238ecee25eb7a605ce84.tar.gz
rpg-17e2e2545f2fd3607a14238ecee25eb7a605ce84.tar.bz2
Moved behavioural functions into it's own object and file
JavaScript functions adding behaviours based on IDs or class names where moved to their own object into behaviour.js and where jQueryized.
Diffstat (limited to 'lib')
-rw-r--r--lib/exe/js.php3
-rw-r--r--lib/scripts/behaviour.js91
-rw-r--r--lib/scripts/media.js3
-rw-r--r--lib/scripts/script.js82
4 files changed, 94 insertions, 85 deletions
diff --git a/lib/exe/js.php b/lib/exe/js.php
index e4c5c2ab8..0d4a08ebd 100644
--- a/lib/exe/js.php
+++ b/lib/exe/js.php
@@ -60,6 +60,7 @@ function js_out(){
DOKU_INC.'lib/scripts/subscriptions.js',
# disabled for FS#1958 DOKU_INC.'lib/scripts/hotkeys.js',
DOKU_TPLINC.'script.js',
+ DOKU_INC.'lib/scripts/behaviour.js',
);
// add possible plugin scripts and userscript
@@ -121,8 +122,6 @@ function js_out(){
if($conf['locktime'] != 0){
js_runonstart("locktimer.init(".($conf['locktime'] - 60).",'".js_escape($lang['willexpire'])."',".$conf['usedraft'].", 'wiki__text')");
}
- js_runonstart('scrollToMarker()');
- js_runonstart('focusMarker()');
// init hotkeys - must have been done after init of toolbar
# disabled for FS#1958 js_runonstart('initializeHotkeys()');
diff --git a/lib/scripts/behaviour.js b/lib/scripts/behaviour.js
new file mode 100644
index 000000000..31b82050e
--- /dev/null
+++ b/lib/scripts/behaviour.js
@@ -0,0 +1,91 @@
+/**
+ * Automatic behaviours
+ *
+ * This class wraps various JavaScript functionalities that are triggered
+ * automatically whenever a certain object is in the DOM or a certain CSS
+ * class was found
+ */
+
+dw_behaviour = {
+
+ init: function(){
+ dw_behaviour.focusMarker();
+ dw_behaviour.scrollToMarker();
+ dw_behaviour.closeMsgOnClick();
+ dw_behaviour.removeHighlightOnClick();
+ dw_behaviour.quickSelect();
+ dw_behaviour.checkWindowsShares();
+ },
+
+ /**
+ * Looks for an element with the ID scroll__here at scrolls to it
+ */
+ scrollToMarker: function(){
+ var obj = jQuery('#scroll__here');
+ if(obj.length) obj[0].scrollIntoView();
+ },
+
+ /**
+ * Looks for an element with the ID focus__this at sets focus to it
+ */
+ focusMarker: function(){
+ var obj = jQuery('#focus__this');
+ if(obj.length) obj[0].focus();
+ },
+
+ /**
+ * Close messages shown by the msg() PHP function by click
+ */
+ closeMsgOnClick: function(){
+ jQuery('div.success, div.info, div.error, div.notify').click(
+ function(e){
+ jQuery(e.target).fadeOut('fast');
+ }
+ );
+ },
+
+ /**
+ * Remove all search highlighting when clicking on a highlighted term
+ *
+ * @FIXME would be nice to have it fade out
+ */
+ removeHighlightOnClick: function(){
+ jQuery('span.search_hit').click(
+ function(e){
+ jQuery(e.target).removeClass('search_hit');
+ }
+ );
+ },
+
+ /**
+ * Autosubmit quick select forms
+ *
+ * When a <select> tag has the class "quickselect", this script will
+ * automatically submit its parent form when the select value changes.
+ * It also hides the submit button of the form.
+ *
+ * @author Andreas Gohr <andi@splitbrain.org>
+ */
+ quickSelect: function(){
+ jQuery('select.quickselect')
+ .change(function(e){ e.target.form.submit(); })
+ .parents('form').find('input[type=submit]').hide();
+ },
+
+ /**
+ * Display error for Windows Shares on browsers other than IE
+ *
+ * @author Michael Klier <chi@chimeric.de>
+ */
+ checkWindowsShares: function() {
+ if(!LANG['nosmblinks']) return true;
+ if(document.all != null) return true;
+
+ jQuery('a.windows').click(function(){
+ alert(LANG['nosmblinks']);
+ });
+ }
+
+};
+
+jQuery(dw_behaviour.init);
diff --git a/lib/scripts/media.js b/lib/scripts/media.js
index cf4a839d9..bcdba2a48 100644
--- a/lib/scripts/media.js
+++ b/lib/scripts/media.js
@@ -326,7 +326,8 @@
event.preventDefault();
- cleanMsgArea();
+ jQuery.remove('div.success, div.info, div.error, div.notify');
+
content = $('#media__content');
content.html('<img src="' + DOKU_BASE + 'lib/images/loading.gif" alt="..." class="load" />');
diff --git a/lib/scripts/script.js b/lib/scripts/script.js
index 20e475190..9b9ca600c 100644
--- a/lib/scripts/script.js
+++ b/lib/scripts/script.js
@@ -472,34 +472,6 @@ function closePopups(){
}
/**
- * Looks for an element with the ID scroll__here at scrolls to it
- */
-function scrollToMarker(){
- var obj = $('scroll__here');
- if(obj) obj.scrollIntoView();
-}
-
-/**
- * Looks for an element with the ID focus__this at sets focus to it
- */
-function focusMarker(){
- var obj = $('focus__this');
- if(obj) obj.focus();
-}
-
-/**
- * Remove messages
- */
-function cleanMsgArea(){
- var elems = getElementsByClass('(success|info|error)',document,'div');
- if(elems){
- for(var i=0; i<elems.length; i++){
- elems[i].style.display = 'none';
- }
- }
-}
-
-/**
* disable multiple revisions checkboxes if two are checked
*
* @author Anika Henke <anika@selfthinker.org>
@@ -528,60 +500,6 @@ addInitEvent(function(){
}
});
-/**
- * Autosubmit quick select forms
- *
- * When a <select> tag has the class "quickselect", this script will
- * automatically submit its parent form when the select value changes.
- * It also hides the submit button of the form.
- *
- * @author Andreas Gohr <andi@splitbrain.org>
- */
-addInitEvent(function(){
- var selects = getElementsByClass('quickselect',document,'select');
- for(var i=0; i<selects.length; i++){
- // auto submit on change
- addEvent(selects[i],'change',function(e){
- this.form.submit();
- });
- // hide submit buttons
- var btns = selects[i].form.getElementsByTagName('input');
- for(var j=0; j<btns.length; j++){
- if(btns[j].type == 'submit'){
- btns[j].style.display = 'none';
- }
- }
- }
-});
-
-/**
- * Display error for Windows Shares on browsers other than IE
- *
- * @author Michael Klier <chi@chimeric.de>
- */
-function checkWindowsShares() {
- if(!LANG['nosmblinks']) return true;
- if(document.all != null) return true;
-
- var elems = getElementsByClass('windows',document,'a');
- if(elems){
- for(var i=0; i<elems.length; i++){
- var share = elems[i];
- addEvent(share,'click',function(){
- alert(LANG['nosmblinks']);
- });
- }
- }
-}
-
-/**
- * Add the event handler for the Windows Shares check
- *
- * @author Michael Klier <chi@chimeric.de>
- */
-addInitEvent(function(){
- checkWindowsShares();
-});
/**
* Highlight the section when hovering over the appropriate section edit button