Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/matomo-org/matomo.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/libs
diff options
context:
space:
mode:
authormatt <matt@59fd770c-687e-43c8-a1e3-f5a4ff64c105>2009-05-06 04:56:57 +0400
committermatt <matt@59fd770c-687e-43c8-a1e3-f5a4ff64c105>2009-05-06 04:56:57 +0400
commit7fb16fd18e885e823115cb18f34c82c260ac3caa (patch)
treedeba9f41b62f82879e9baacfe59215492e40f90e /libs
parent3bcf2b2f3b11f35b16a0ad928e26a36b3ad3bfe8 (diff)
- Refresh and back button now work! great contribution by Khanh Pham fixed #103
it's using the jquery history plugin. period, date, idsite, module and action are persisted across requests, making Piwik much nicer and faster to use.
Diffstat (limited to 'libs')
-rw-r--r--libs/jquery/jquery.history.js12
-rw-r--r--libs/jquery/original lib/jquery.history.js150
2 files changed, 162 insertions, 0 deletions
diff --git a/libs/jquery/jquery.history.js b/libs/jquery/jquery.history.js
new file mode 100644
index 0000000000..2d1a541e2c
--- /dev/null
+++ b/libs/jquery/jquery.history.js
@@ -0,0 +1,12 @@
+/*
+ * jQuery history plugin
+ *
+ * Copyright (c) 2006 Taku Sano (Mikage Sawatari)
+ * Licensed under the MIT License:
+ * http://www.opensource.org/licenses/mit-license.php
+ *
+ * Modified by Lincoln Cooper to add Safari support and only call the callback once during initialization
+ * for msie when no initial hash supplied.
+ */
+
+jQuery.extend({historyCurrentHash:undefined,historyCallback:undefined,historyInit:function(d){jQuery.historyCallback=d;var c=location.hash;jQuery.historyCurrentHash=c;if((jQuery.browser.msie)&&(jQuery.browser.version<8)){if(jQuery.historyCurrentHash==""){jQuery.historyCurrentHash="#"}$("body").prepend('<iframe id="jQuery_history" style="display: none;"></iframe>');var a=$("#jQuery_history")[0];var b=a.contentWindow.document;b.open();b.close();b.location.hash=c}else{if($.browser.safari){jQuery.historyBackStack=[];jQuery.historyBackStack.length=history.length;jQuery.historyForwardStack=[];jQuery.isFirst=true}}jQuery.historyCallback(c.replace(/^#/,""));setInterval(jQuery.historyCheck,100)},historyAddHistory:function(a){jQuery.historyBackStack.push(a);jQuery.historyForwardStack.length=0;this.isFirst=true},historyCheck:function(){if((jQuery.browser.msie)&&(jQuery.browser.version<8)){var a=$("#jQuery_history")[0];var d=a.contentDocument||a.contentWindow.document;var f=d.location.hash;if(f!=jQuery.historyCurrentHash){location.hash=f;jQuery.historyCurrentHash=f;jQuery.historyCallback(f.replace(/^#/,""))}}else{if($.browser.safari){if(!jQuery.dontCheck){var b=history.length-jQuery.historyBackStack.length;if(b){jQuery.isFirst=false;if(b<0){for(var c=0;c<Math.abs(b);c++){jQuery.historyForwardStack.unshift(jQuery.historyBackStack.pop())}}else{for(var c=0;c<b;c++){jQuery.historyBackStack.push(jQuery.historyForwardStack.shift())}}var e=jQuery.historyBackStack[jQuery.historyBackStack.length-1];if(e!=undefined){jQuery.historyCurrentHash=location.hash;jQuery.historyCallback(e)}}else{if(jQuery.historyBackStack[jQuery.historyBackStack.length-1]==undefined&&!jQuery.isFirst){if(document.URL.indexOf("#")>=0){jQuery.historyCallback(document.URL.split("#")[1])}else{var f=location.hash;jQuery.historyCallback("")}jQuery.isFirst=true}}}}else{var f=location.hash;if(f!=jQuery.historyCurrentHash){jQuery.historyCurrentHash=f;jQuery.historyCallback(f.replace(/^#/,""))}}}},historyLoad:function(d){var e;if(jQuery.browser.safari){e=d}else{e="#"+d;location.hash=e}jQuery.historyCurrentHash=e;if((jQuery.browser.msie)&&(jQuery.browser.version<8)){var a=$("#jQuery_history")[0];var c=a.contentWindow.document;c.open();c.close();c.location.hash=e;jQuery.historyCallback(d)}else{if(jQuery.browser.safari){jQuery.dontCheck=true;this.historyAddHistory(d);var b=function(){jQuery.dontCheck=false};window.setTimeout(b,200);jQuery.historyCallback(d);location.hash=e}else{jQuery.historyCallback(d)}}}});
diff --git a/libs/jquery/original lib/jquery.history.js b/libs/jquery/original lib/jquery.history.js
new file mode 100644
index 0000000000..c6f7b55b9a
--- /dev/null
+++ b/libs/jquery/original lib/jquery.history.js
@@ -0,0 +1,150 @@
+/*
+ * jQuery history plugin
+ *
+ * Copyright (c) 2006 Taku Sano (Mikage Sawatari)
+ * Licensed under the MIT License:
+ * http://www.opensource.org/licenses/mit-license.php
+ *
+ * Modified by Lincoln Cooper to add Safari support and only call the callback once during initialization
+ * for msie when no initial hash supplied.
+ */
+
+
+jQuery.extend({
+ historyCurrentHash: undefined,
+
+ historyCallback: undefined,
+
+ historyInit: function(callback){
+ jQuery.historyCallback = callback;
+ var current_hash = location.hash;
+
+ jQuery.historyCurrentHash = current_hash;
+ if ((jQuery.browser.msie) && (jQuery.browser.version < 8)) {
+ // To stop the callback firing twice during initilization if no hash present
+ if (jQuery.historyCurrentHash == '') {
+ jQuery.historyCurrentHash = '#';
+ }
+
+ // add hidden iframe for IE
+ $("body").prepend('<iframe id="jQuery_history" style="display: none;"></iframe>');
+ var ihistory = $("#jQuery_history")[0];
+ var iframe = ihistory.contentWindow.document;
+ iframe.open();
+ iframe.close();
+ iframe.location.hash = current_hash;
+ }
+ else if ($.browser.safari) {
+ // etablish back/forward stacks
+ jQuery.historyBackStack = [];
+ jQuery.historyBackStack.length = history.length;
+ jQuery.historyForwardStack = [];
+
+ jQuery.isFirst = true;
+ }
+ jQuery.historyCallback(current_hash.replace(/^#/, ''));
+ setInterval(jQuery.historyCheck, 100);
+ },
+
+ historyAddHistory: function(hash) {
+ // This makes the looping function do something
+ jQuery.historyBackStack.push(hash);
+
+ jQuery.historyForwardStack.length = 0; // clear forwardStack (true click occured)
+ this.isFirst = true;
+ },
+
+ historyCheck: function(){
+ if ((jQuery.browser.msie) && (jQuery.browser.version < 8)) {
+ // On IE, check for location.hash of iframe
+ var ihistory = $("#jQuery_history")[0];
+ var iframe = ihistory.contentDocument || ihistory.contentWindow.document;
+ var current_hash = iframe.location.hash;
+ if(current_hash != jQuery.historyCurrentHash) {
+
+ location.hash = current_hash;
+ jQuery.historyCurrentHash = current_hash;
+ jQuery.historyCallback(current_hash.replace(/^#/, ''));
+
+ }
+ } else if ($.browser.safari) {
+ if (!jQuery.dontCheck) {
+ var historyDelta = history.length - jQuery.historyBackStack.length;
+
+ if (historyDelta) { // back or forward button has been pushed
+ jQuery.isFirst = false;
+ if (historyDelta < 0) { // back button has been pushed
+ // move items to forward stack
+ for (var i = 0; i < Math.abs(historyDelta); i++) jQuery.historyForwardStack.unshift(jQuery.historyBackStack.pop());
+ } else { // forward button has been pushed
+ // move items to back stack
+ for (var i = 0; i < historyDelta; i++) jQuery.historyBackStack.push(jQuery.historyForwardStack.shift());
+ }
+ var cachedHash = jQuery.historyBackStack[jQuery.historyBackStack.length - 1];
+ if (cachedHash != undefined) {
+ jQuery.historyCurrentHash = location.hash;
+ jQuery.historyCallback(cachedHash);
+ }
+ } else if (jQuery.historyBackStack[jQuery.historyBackStack.length - 1] == undefined && !jQuery.isFirst) {
+ // back button has been pushed to beginning and URL already pointed to hash (e.g. a bookmark)
+ // document.URL doesn't change in Safari
+ if (document.URL.indexOf('#') >= 0) {
+ jQuery.historyCallback(document.URL.split('#')[1]);
+ } else {
+ var current_hash = location.hash;
+ jQuery.historyCallback('');
+ }
+ jQuery.isFirst = true;
+ }
+ }
+ } else {
+ // otherwise, check for location.hash
+ var current_hash = location.hash;
+ if(current_hash != jQuery.historyCurrentHash) {
+ jQuery.historyCurrentHash = current_hash;
+ jQuery.historyCallback(current_hash.replace(/^#/, ''));
+ }
+ }
+ },
+ historyLoad: function(hash){
+ var newhash;
+
+ if (jQuery.browser.safari) {
+ newhash = hash;
+ }
+ else {
+ newhash = '#' + hash;
+ location.hash = newhash;
+ }
+ jQuery.historyCurrentHash = newhash;
+
+ if ((jQuery.browser.msie) && (jQuery.browser.version < 8)) {
+ var ihistory = $("#jQuery_history")[0];
+ var iframe = ihistory.contentWindow.document;
+ iframe.open();
+ iframe.close();
+ iframe.location.hash = newhash;
+ jQuery.historyCallback(hash);
+ }
+ else if (jQuery.browser.safari) {
+ jQuery.dontCheck = true;
+ // Manually keep track of the history values for Safari
+ this.historyAddHistory(hash);
+
+ // Wait a while before allowing checking so that Safari has time to update the "history" object
+ // correctly (otherwise the check loop would detect a false change in hash).
+ var fn = function() {jQuery.dontCheck = false;};
+ window.setTimeout(fn, 200);
+ jQuery.historyCallback(hash);
+ // N.B. "location.hash=" must be the last line of code for Safari as execution stops afterwards.
+ // By explicitly using the "location.hash" command (instead of using a variable set to "location.hash") the
+ // URL in the browser and the "history" object are both updated correctly.
+ location.hash = newhash;
+ }
+ else {
+ jQuery.historyCallback(hash);
+ }
+ }
+});
+
+