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
diff options
context:
space:
mode:
authorBeezyT <timo@ezdesign.de>2012-11-15 19:44:07 +0400
committerBeezyT <timo@ezdesign.de>2012-11-15 19:44:07 +0400
commit5ecce0eff918e229b61b78f1b2909969f09f7c1c (patch)
tree319f34d18fe3aa75f3988dd3a4b5992ba30339f5
parentc775c64ec484ac52ce10773948ce28bcb2467c42 (diff)
refs #2465
* support for internet explorer 7 & 8 * redirect by setting window.location.href loses referrer - use fake link * implementing position:fixed for status bar in java script * when visibility=inherit, go up the dom to find out whether an element is visible * avoid .data() completely in followingpages.js * some specific html and css * adding v parameter to loaded script to invalidate caches * regenerating piwik.js (i hope it worked properly this time) * hiding notifications that get stuck after removing a hovered element (only happens sometimes) * binding window.resize after every broadcast.pageload() - the binding was lost after opening a popover * fixing mode with frames disabled: didn't work after migration to the l parameter This version is the first one that I think is stable. Please deploy on the demo so we can do some more testing. The next step is translation and documentation. After that, we're ready to release as beta. git-svn-id: http://dev.piwik.org/svn/trunk@7479 59fd770c-687e-43c8-a1e3-f5a4ff64c105
-rw-r--r--js/piwik.js2
-rw-r--r--piwik.js4
-rw-r--r--plugins/CoreHome/templates/broadcast.js2
-rw-r--r--plugins/Overlay/Controller.php12
-rw-r--r--plugins/Overlay/client/client.css5
-rw-r--r--plugins/Overlay/client/client.js59
-rw-r--r--plugins/Overlay/client/followingpages.js48
-rw-r--r--plugins/Overlay/templates/index.css2
-rw-r--r--plugins/Overlay/templates/index.js28
-rw-r--r--plugins/Overlay/templates/index.tpl2
-rw-r--r--plugins/Overlay/templates/index_noframe.tpl8
11 files changed, 135 insertions, 37 deletions
diff --git a/js/piwik.js b/js/piwik.js
index 7a978ce925..ecfff3951f 100644
--- a/js/piwik.js
+++ b/js/piwik.js
@@ -971,7 +971,7 @@ var
}
};
script.onload = onLoad;
- script.src = root + 'plugins/Overlay/client/client.js';
+ script.src = root + 'plugins/Overlay/client/client.js?v=1';
var head = document.getElementsByTagName('head')[0];
head.appendChild(script);
}
diff --git a/piwik.js b/piwik.js
index 594e35a032..54e9cfb2ef 100644
--- a/piwik.js
+++ b/piwik.js
@@ -14,7 +14,7 @@ return typeof f==="function"?m({"":n},""):n}throw new SyntaxError("JSON.parse")}
}function j(){var L;if(n.addEventListener){J(n,"DOMContentLoaded",function i(){n.removeEventListener("DOMContentLoaded",i,false);F()})}else{if(n.attachEvent){n.attachEvent("onreadystatechange",function i(){if(n.readyState==="complete"){n.detachEvent("onreadystatechange",i);F()}});if(n.documentElement.doScroll&&w===w.top){(function i(){if(!k){try{n.documentElement.doScroll("left")}catch(M){setTimeout(i,0);return}F()}}())}}}if((new RegExp("WebKit")).test(c.userAgent)){L=setInterval(function(){if(k||/loaded|complete/.test(n.readyState)){clearInterval(L);F()}},10)}J(w,"load",F,false)}function q(){var i="";try{i=w.top.document.referrer}catch(M){if(w.parent){try{i=w.parent.document.referrer}catch(L){i=""}}}if(i===""){i=n.referrer}return i}function f(i){var M=new RegExp("^([a-z]+):"),L=M.exec(i);return L?L[1]:null}function b(i){var M=new RegExp("^(?:(?:https?|ftp):)/*(?:[^@]+@)?([^:/#]+)"),L=M.exec(i);return L?L[1]:i}function x(M,L){var P=new RegExp("^(?:https?|ftp)(?::/*(?:[^?]+)[?])([^#]+)"),O=P.exec(M),N=new RegExp("(?:^|&)"+L+"=([^&]*)"),i=O?N.exec(O[1]):0;
return i?v(i[1]):""}function m(i){return d(g(i))}function I(ab){var N=function(W,i){return(W<<i)|(W>>>(32-i))},ac=function(ai){var ah="",ag,W;for(ag=7;ag>=0;ag--){W=(ai>>>(ag*4))&15;ah+=W.toString(16)}return ah},Q,ae,ad,M=[],U=1732584193,S=4023233417,R=2562383102,P=271733878,O=3285377520,aa,Z,Y,X,V,af,L,T=[];ab=m(ab);L=ab.length;for(ae=0;ae<L-3;ae+=4){ad=ab.charCodeAt(ae)<<24|ab.charCodeAt(ae+1)<<16|ab.charCodeAt(ae+2)<<8|ab.charCodeAt(ae+3);T.push(ad)}switch(L&3){case 0:ae=2147483648;break;case 1:ae=ab.charCodeAt(L-1)<<24|8388608;break;case 2:ae=ab.charCodeAt(L-2)<<24|ab.charCodeAt(L-1)<<16|32768;break;case 3:ae=ab.charCodeAt(L-3)<<24|ab.charCodeAt(L-2)<<16|ab.charCodeAt(L-1)<<8|128;break}T.push(ae);while((T.length&15)!==14){T.push(0)}T.push(L>>>29);T.push((L<<3)&4294967295);for(Q=0;Q<T.length;Q+=16){for(ae=0;ae<16;ae++){M[ae]=T[Q+ae]}for(ae=16;ae<=79;ae++){M[ae]=N(M[ae-3]^M[ae-8]^M[ae-14]^M[ae-16],1)}aa=U;Z=S;Y=R;X=P;V=O;for(ae=0;ae<=19;ae++){af=(N(aa,5)+((Z&Y)|(~Z&X))+V+M[ae]+1518500249)&4294967295;
V=X;X=Y;Y=N(Z,30);Z=aa;aa=af}for(ae=20;ae<=39;ae++){af=(N(aa,5)+(Z^Y^X)+V+M[ae]+1859775393)&4294967295;V=X;X=Y;Y=N(Z,30);Z=aa;aa=af}for(ae=40;ae<=59;ae++){af=(N(aa,5)+((Z&Y)|(Z&X)|(Y&X))+V+M[ae]+2400959708)&4294967295;V=X;X=Y;Y=N(Z,30);Z=aa;aa=af}for(ae=60;ae<=79;ae++){af=(N(aa,5)+(Z^Y^X)+V+M[ae]+3395469782)&4294967295;V=X;X=Y;Y=N(Z,30);Z=aa;aa=af}U=(U+aa)&4294967295;S=(S+Z)&4294967295;R=(R+Y)&4294967295;P=(P+X)&4294967295;O=(O+V)&4294967295}af=ac(U)+ac(S)+ac(R)+ac(P)+ac(O);return af.toLowerCase()}function C(M,i,L){if(M==="translate.googleusercontent.com"){if(L===""){L=i}i=x(i,"u");M=b(i)}else{if(M==="cc.bingj.com"||M==="webcache.googleusercontent.com"||M.slice(0,5)==="74.6."){i=n.links[0].href;M=b(i)}}return[M,i,L]}function r(L){var i=L.length;if(L.charAt(--i)==="."){L=L.slice(0,i)}if(L.slice(0,2)==="*."){L=L.slice(1)}return L}function K(L){if(!h(L)){L=L.text||"";var i=n.getElementsByTagName("title");if(i&&p(i[0])){L=i[0].text}}return L}function s(O,S){var U="Piwik_Overlay";var R=n.referrer;
-var i=O;i=i.substring(0,i.length-9);i.substring(i.substring(0,7)==="http://"?7:8,i.length);R.substring(R.substring(0,7)==="http://"?7:8,R.length);if(R.substring(0,i.length)===i){var M=new RegExp("^"+i+"index\\.php\\?module=Overlay&action=startOverlaySession&idsite=([0-9]+)&period=([^&]+)&date=([^&]+)$");var N=R.match(M);if(N){var P=N[1];if(parseInt(P,10)!==S){return false}var Q=N[2];var L=N[3];window.name=U+"###"+Q+"###"+L}}var T=w.name.split("###");return T.length===3&&T[0]===U}function B(M,S){var T=window.name.split("###");var R=M.substring(0,M.length-9);var N=T[1];var i=T[2];var L=false;var O=function(){if(!L){L=true;Piwik_Overlay_Client.initialize(R,S,N,i)}};var Q=document.createElement("script");Q.type="text/javascript";Q.onreadystatechange=function(){if(this.readyState==="loaded"||this.readyState==="complete"){O()}};Q.onload=O;Q.src=R+"plugins/Overlay/client/client.js";var P=document.getElementsByTagName("head")[0];P.appendChild(Q)}function t(af,aE){var O=C(n.domain,w.location.href,q()),aX=r(O[0]),bb=O[1],aK=O[2],aI="GET",N=af||"",a1=aE||"",av,al=n.title,an="7z|aac|ar[cj]|as[fx]|avi|bin|csv|deb|dmg|doc|exe|flv|gif|gz|gzip|hqx|jar|jpe?g|js|mp(2|3|4|e?g)|mov(ie)?|ms[ip]|od[bfgpst]|og[gv]|pdf|phps|png|ppt|qtm?|ra[mr]?|rpm|sea|sit|tar|t?bz2?|tgz|torrent|txt|wav|wm[av]|wpd||xls|xml|z|zip",aG=[aX],R=[],az=[],ae=[],aF=500,S,ag,T,U,ap=["pk_campaign","piwik_campaign","utm_campaign","utm_source","utm_medium"],ak=["pk_kwd","piwik_kwd","utm_term"],a9="_pk_",X,ba,V=false,a4,ar,au,ac=63072000000,ad=1800000,aw=15768000000,aa=n.location.protocol==="https",Q=false,aA={},a5=200,aQ={},a2={},aN=false,aL=false,aJ,aB,Y,ao=I,aM,at;
+var i=O;i=i.substring(0,i.length-9);i.substring(i.substring(0,7)==="http://"?7:8,i.length);R.substring(R.substring(0,7)==="http://"?7:8,R.length);if(R.substring(0,i.length)===i){var M=new RegExp("^"+i+"index\\.php\\?module=Overlay&action=startOverlaySession&idsite=([0-9]+)&period=([^&]+)&date=([^&]+)$");var N=R.match(M);if(N){var P=N[1];if(parseInt(P,10)!==S){return false}var Q=N[2];var L=N[3];window.name=U+"###"+Q+"###"+L}}var T=w.name.split("###");return T.length===3&&T[0]===U}function B(M,S){var T=window.name.split("###");var R=M.substring(0,M.length-9);var N=T[1];var i=T[2];var L=false;var O=function(){if(!L){L=true;Piwik_Overlay_Client.initialize(R,S,N,i)}};var Q=document.createElement("script");Q.type="text/javascript";Q.onreadystatechange=function(){if(this.readyState==="loaded"||this.readyState==="complete"){O()}};Q.onload=O;Q.src=R+"plugins/Overlay/client/client.js?v=1";var P=document.getElementsByTagName("head")[0];P.appendChild(Q)}function t(af,aE){var O=C(n.domain,w.location.href,q()),aX=r(O[0]),bb=O[1],aK=O[2],aI="GET",N=af||"",a1=aE||"",av,al=n.title,an="7z|aac|ar[cj]|as[fx]|avi|bin|csv|deb|dmg|doc|exe|flv|gif|gz|gzip|hqx|jar|jpe?g|js|mp(2|3|4|e?g)|mov(ie)?|ms[ip]|od[bfgpst]|og[gv]|pdf|phps|png|ppt|qtm?|ra[mr]?|rpm|sea|sit|tar|t?bz2?|tgz|torrent|txt|wav|wm[av]|wpd||xls|xml|z|zip",aG=[aX],R=[],az=[],ae=[],aF=500,S,ag,T,U,ap=["pk_campaign","piwik_campaign","utm_campaign","utm_source","utm_medium"],ak=["pk_kwd","piwik_kwd","utm_term"],a9="_pk_",X,ba,V=false,a4,ar,au,ac=63072000000,ad=1800000,aw=15768000000,aa=n.location.protocol==="https",Q=false,aA={},a5=200,aQ={},a2={},aN=false,aL=false,aJ,aB,Y,ao=I,aM,at;
function aS(bk,bh,bg,bj,bf,bi){if(V){return}var be;if(bg){be=new Date();be.setTime(be.getTime()+bg)}n.cookie=bk+"="+g(bh)+(bg?";expires="+be.toGMTString():"")+";path="+(bj||"/")+(bf?";domain="+bf:"")+(bi?";secure":"")}function ab(bg){if(V){return 0}var be=new RegExp("(^|;)[ ]*"+bg+"=([^;]*)"),bf=be.exec(n.cookie);return bf?v(bf[2]):0}function a6(be){var bf;if(T){bf=new RegExp("#.*");return be.replace(bf,"")}return be}function aW(bg,be){var bh=f(be),bf;if(bh){return be}if(be.slice(0,1)==="/"){return f(bg)+"://"+b(bg)+be}bg=a6(bg);if((bf=bg.indexOf("?"))>=0){bg=bg.slice(0,bf)}if((bf=bg.lastIndexOf("/"))!==bg.length-1){bg=bg.slice(0,bf+1)}return bg+be}function aH(bh){var bf,be,bg;for(bf=0;bf<aG.length;bf++){be=r(aG[bf].toLowerCase());if(bh===be){return true}if(be.slice(0,1)==="."){if(bh===be.slice(1)){return true}bg=bh.length-be.length;if((bg>0)&&(bh.slice(bg)===be)){return true}}}return false}function bd(be){var bf=new Image(1,1);bf.onload=function(){};bf.src=N+(N.indexOf("?")<0?"?":"&")+be
}function aT(be){try{var bg=w.XMLHttpRequest?new w.XMLHttpRequest():w.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):null;bg.open("POST",N,true);bg.onreadystatechange=function(){if(this.readyState===4&&this.status!==200){bd(be)}};bg.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");bg.send(be)}catch(bf){bd(be)}}function aq(bg,bf){var be=new Date();if(!a4){if(aI==="POST"){aT(bg)}else{bd(bg)}e=be.getTime()+bf}}function aR(be){return a9+be+"."+a1+"."+aM}function P(){if(V){return"0"}if(!p(c.cookieEnabled)){var be=aR("testcookie");aS(be,"1");return ab(be)==="1"?"1":"0"}return c.cookieEnabled?"1":"0"}function aC(){aM=ao((X||aX)+(ba||"/")).slice(0,4)}function Z(){var bf=aR("cvar"),be=ab(bf);if(be.length){be=JSON2.parse(be);if(y(be)){return be}}return{}}function M(){if(Q===false){Q=Z()}}function a0(){var be=new Date();aJ=be.getTime()}function W(bi,bf,be,bh,bg,bj){aS(aR("id"),bi+"."+bf+"."+be+"."+bh+"."+bg+"."+bj,ac,ba,X,aa)}function L(){var bf=new Date(),be=Math.round(bf.getTime()/1000),bh=ab(aR("id")),bg;
if(bh){bg=bh.split(".");bg.unshift("0")}else{if(!at){at=ao((c.userAgent||"")+(c.platform||"")+JSON2.stringify(a2)+be).slice(0,16)}bg=["1",at,be,0,be,"",""]}return bg}function i(){var be=ab(aR("ref"));if(be.length){try{be=JSON2.parse(be);if(y(be)){return be}}catch(bf){}}return["","",0,""]}function am(bg,bF,bG,bi){var bD,bf=new Date(),bo=Math.round(bf.getTime()/1000),bI,bE,bk,bw,bA,bn,by,bl,bC,bj=1024,bJ,br,bz=Q,bu=aR("id"),bp=aR("ses"),bq=aR("ref"),bK=aR("cvar"),bx=L(),bt=ab(bp),bB=i(),bH=av||bb,bm,be;if(V){V=false;aS(bu,"",-86400,ba,X);aS(bp,"",-86400,ba,X);aS(bK,"",-86400,ba,X);aS(bq,"",-86400,ba,X);V=true}if(a4){return""}bI=bx[0];bE=bx[1];bw=bx[2];bk=bx[3];bA=bx[4];bn=bx[5];if(!p(bx[6])){bx[6]=""}by=bx[6];if(!p(bi)){bi=""}var bs=document.characterSet||document.charset;if(!bs||bs.toLowerCase()==="utf-8"||bs.toLowerCase()==="iso-8859-1"||bs.toLowerCase()==="iso-8859-15"){bs=null}bm=bB[0];be=bB[1];bl=bB[2];bC=bB[3];if(!bt){bk++;bn=bA;if(!au||!bm.length){for(bD in ap){if(Object.prototype.hasOwnProperty.call(ap,bD)){bm=x(bH,ap[bD]);
@@ -27,4 +27,4 @@ a2[bf]=(bg&&bg.enabledPlugin)?"1":"0"}}}if(typeof navigator.javaEnabled!=="unkno
if(!p(bg)){bg="visit"}if(bg==="page"||bg===3){be=aA[bf]}else{if(bg==="visit"||bg===2){M();be=Q[bf]}}if(!p(be)||(be&&be[0]==="")){return false}return be},deleteCustomVariable:function(be,bf){if(this.getCustomVariable(be,bf)){this.setCustomVariable(be,"","",bf)}},setLinkTrackingTimer:function(be){aF=be},setDownloadExtensions:function(be){an=be},addDownloadExtensions:function(be){an+="|"+be},setDomains:function(be){aG=h(be)?[be]:be;aG.push(aX)},setIgnoreClasses:function(be){R=h(be)?[be]:be},setRequestMethod:function(be){aI=be||"GET"},setReferrerUrl:function(be){aK=be},setCustomUrl:function(be){av=aW(bb,be)},setDocumentTitle:function(be){al=be},setDownloadClasses:function(be){az=h(be)?[be]:be},setLinkClasses:function(be){ae=h(be)?[be]:be},setCampaignNameKey:function(be){ap=h(be)?[be]:be},setCampaignKeywordKey:function(be){ak=h(be)?[be]:be},discardHashTag:function(be){T=be},setCookieNamePrefix:function(be){a9=be;Q=Z()},setCookieDomain:function(be){X=r(be);aC()},setCookiePath:function(be){ba=be;
aC()},setVisitorCookieTimeout:function(be){ac=be*1000},setSessionCookieTimeout:function(be){ad=be*1000},setReferralCookieTimeout:function(be){aw=be*1000},setConversionAttributionFirstReferrer:function(be){au=be},disableCookies:function(){V=true;a2.cookie="0"},setDoNotTrack:function(bf){var be=c.doNotTrack||c.msDoNotTrack;a4=bf&&(be==="yes"||be==="1");if(a4){this.disableCookies()}},addListener:function(bf,be){aO(bf,be)},enableLinkTracking:function(be){if(k){ax(be)}else{u.push(function(){ax(be)})}},setHeartBeatTimer:function(bg,bf){var be=new Date();S=be.getTime()+bg*1000;ag=bf*1000},killFrame:function(){if(w.location!==w.top.location){w.top.location=w.location}},redirectFile:function(be){if(w.location.protocol==="file:"){w.location=be}},setCountPreRendered:function(be){ar=be},trackGoal:function(be,bg,bf){ai(function(){aD(be,bg,bf)})},trackLink:function(bf,be,bg){ai(function(){aZ(bf,be,bg)})},trackPageView:function(be,bf){if(s(N,a1)){ai(function(){B(N,a1)})}else{ai(function(){ay(be,bf)})}},trackSiteSearch:function(be,bg,bf){ai(function(){aj(be,bg,bf)
})},setEcommerceView:function(bh,be,bg,bf){if(!p(bg)||!bg.length){bg=""}else{if(bg instanceof Array){bg=JSON2.stringify(bg)}}aA[5]=["_pkc",bg];if(p(bf)&&String(bf).length){aA[2]=["_pkp",bf]}if((!p(bh)||!bh.length)&&(!p(be)||!be.length)){return}if(p(bh)&&bh.length){aA[3]=["_pks",bh]}if(!p(be)||!be.length){be=""}aA[4]=["_pkn",be]},addEcommerceItem:function(bi,be,bg,bf,bh){if(bi.length){aQ[bi]=[bi,be,bg,bf,bh]}},trackEcommerceOrder:function(be,bi,bh,bg,bf,bj){aU(be,bi,bh,bg,bf,bj)},trackEcommerceCartUpdate:function(be){a8(be)}}}function o(){return{push:G}}J(w,"beforeunload",H,false);j();Date.prototype.getTimeAlias=Date.prototype.getTime;A=new t();for(D=0;D<_paq.length;D++){G(_paq[D])}_paq=new o();return{addPlugin:function(i,L){a[i]=L},getTracker:function(i,L){return new t(i,L)},getAsyncTracker:function(){return A}}}()),piwik_track,piwik_log=function(b,f,d,g){function a(h){try{return eval("piwik_"+h)}catch(i){}return}var c,e=Piwik.getTracker(d,f);e.setDocumentTitle(b);e.setCustomData(g);
-c=a("tracker_pause");if(c){e.setLinkTrackingTimer(c)}c=a("download_extensions");if(c){e.setDownloadExtensions(c)}c=a("hosts_alias");if(c){e.setDomains(c)}c=a("ignore_classes");if(c){e.setIgnoreClasses(c)}e.trackPageView();if(a("install_tracker")){piwik_track=function(i,k,j,h){e.setSiteId(k);e.setTrackerUrl(j);e.trackLink(i,h)};e.enableLinkTracking()}}; \ No newline at end of file
+c=a("tracker_pause");if(c){e.setLinkTrackingTimer(c)}c=a("download_extensions");if(c){e.setDownloadExtensions(c)}c=a("hosts_alias");if(c){e.setDomains(c)}c=a("ignore_classes");if(c){e.setIgnoreClasses(c)}e.trackPageView();if(a("install_tracker")){piwik_track=function(i,k,j,h){e.setSiteId(k);e.setTrackerUrl(j);e.trackLink(i,h)};e.enableLinkTracking()}};
diff --git a/plugins/CoreHome/templates/broadcast.js b/plugins/CoreHome/templates/broadcast.js
index f3efff7bf1..6e153702e4 100644
--- a/plugins/CoreHome/templates/broadcast.js
+++ b/plugins/CoreHome/templates/broadcast.js
@@ -70,6 +70,8 @@ var broadcast = {
* 1. after calling $.history.init();
* 2. after calling $.history.load(); //look at broadcast.changeParameter();
* 3. after pushing "Go Back" button of a browser
+ *
+ * * Note: the method is manipulated in Overlay/templates/index.js - keep this in mind when making changes.
*
* @param {string} hash to load page with
* @return {void}
diff --git a/plugins/Overlay/Controller.php b/plugins/Overlay/Controller.php
index ecb5192108..5e86073048 100644
--- a/plugins/Overlay/Controller.php
+++ b/plugins/Overlay/Controller.php
@@ -134,6 +134,7 @@ class Piwik_Overlay_Controller extends Piwik_Controller
$urls = $sitesManager->getSiteUrlsFromId($idSite);
echo '
+ <html><head><title></title></head><body>
<script type="text/javascript">
function handleProtocol(url) {
if (' . ($this->usingSsl() ? 'true' : 'false') . ') {
@@ -158,7 +159,15 @@ class Piwik_Overlay_Controller extends Piwik_Controller
var testUrl = removeUrlPrefix(knownUrls[i]);
if (urlToRedirectWithoutPrefix.substr(0, testUrl.length) == testUrl) {
match = true;
- window.location.href = handleProtocol(urlToRedirect);
+ if (navigator.appName == "Microsoft Internet Explorer") {
+ // internet explorer loses the referrer if we use window.location.href=X
+ var referLink = document.createElement("a");
+ referLink.href = handleProtocol(urlToRedirect);
+ document.body.appendChild(referLink);
+ referLink.click();
+ } else {
+ window.location.href = handleProtocol(urlToRedirect);
+ }
break;
}
}
@@ -174,6 +183,7 @@ class Piwik_Overlay_Controller extends Piwik_Controller
window.location.href = handleProtocol("'.$site['main_url'].'");
};
</script>
+ </body></html>
';
}
diff --git a/plugins/Overlay/client/client.css b/plugins/Overlay/client/client.css
index 9484de5458..05e2e87169 100644
--- a/plugins/Overlay/client/client.css
+++ b/plugins/Overlay/client/client.css
@@ -121,16 +121,13 @@
#PIS_StatusBar {
padding: 10px 0;
- position: absolute;
position: fixed;
z-index: 10020;
bottom: 0;
right: 0;
- background: #ccc;
border-top: 1px solid #ccc;
border-left: 1px solid #ccc;
background: #fbfbfb;
-
-webkit-border-top-left-radius: 6px;
-webkit-border-top-right-radius: 0px;
-webkit-border-bottom-right-radius: 0px;
@@ -142,7 +139,7 @@
border-top-left-radius: 6px;
border-top-right-radius: 0px;
border-bottom-right-radius: 0px;
- border-bottom-left-radius: 0px;
+ border-bottom-left-radius: 0px;
}
#PIS_StatusBar .PIS_Item {
diff --git a/plugins/Overlay/client/client.js b/plugins/Overlay/client/client.js
index e4eb418289..64b3aede6b 100644
--- a/plugins/Overlay/client/client.js
+++ b/plugins/Overlay/client/client.js
@@ -82,6 +82,49 @@ var Piwik_Overlay_Client = (function() {
return el;
}
+ /** Special treatment for some internet explorers */
+ var ieStatusBarEventsBound = false;
+ function handleIEStatusBar() {
+ if (navigator.appVersion.indexOf("MSIE 7.") == -1
+ && navigator.appVersion.indexOf("MSIE 8.") == -1) {
+ // this is not IE8 or lower
+ return;
+ }
+
+ // IE7/8 can't handle position:fixed so we need to do it by hand
+ statusBar.css({
+ position: 'absolute',
+ right: 'auto',
+ bottom: 'auto',
+ left: 0,
+ top: 0
+ });
+
+ var position = function() {
+ var scrollY = document.body.scrollTop;
+ var scrollX = document.body.scrollLeft;
+ statusBar.css({
+ top: (scrollY + $(window).height() - statusBar.outerHeight()) + 'px',
+ left: (scrollX + $(window).width() - statusBar.outerWidth()) + 'px'
+ });
+ };
+
+ position();
+
+ statusBar.css({width: 'auto'});
+ if (statusBar.width() < 350) {
+ statusBar.width(350);
+ } else {
+ statusBar.width(statusBar.width());
+ }
+
+ if (!ieStatusBarEventsBound) {
+ ieStatusBarEventsBound = true;
+ $(window).resize(position);
+ $(window).scroll(position);
+ }
+ }
+
return {
/** Initialize in-site analytics */
@@ -142,7 +185,7 @@ var Piwik_Overlay_Client = (function() {
};
script.onload = onLoad;
- script.src = piwikRoot+relativePath;
+ script.src = piwikRoot+relativePath+'?v=1';
head.appendChild(script);
},
@@ -183,13 +226,27 @@ var Piwik_Overlay_Client = (function() {
statusBar.show().append(item);
+ handleIEStatusBar();
+
return function() {
item.remove();
if (statusBar.children().size() == 0) {
statusBar.hide();
+ } else {
+ handleIEStatusBar();
}
};
},
+
+ /** Hide all notifications with a certain class */
+ hideNotifications: function(className) {
+ statusBar.find('.PIS_' + className).remove();
+ if (statusBar.children().size() == 0) {
+ statusBar.hide();
+ } else {
+ handleIEStatusBar();
+ }
+ },
/**
* Initialize a loading notification
diff --git a/plugins/Overlay/client/followingpages.js b/plugins/Overlay/client/followingpages.js
index 093b960f9b..edb9c40e1e 100644
--- a/plugins/Overlay/client/followingpages.js
+++ b/plugins/Overlay/client/followingpages.js
@@ -156,7 +156,7 @@ var Piwik_Overlay_FollowingPages = (function() {
/** Create the link tag element */
function createLinkTag(linkTag, linkUrl, data, body) {
- if (typeof linkTag[0].piwikTagElement != 'undefined') {
+ if (typeof linkTag[0].piwikTagElement != 'undefined' && linkTag[0].piwikTagElement !== null) {
// this link tag already has a tag element. happens in rare cases.
return;
}
@@ -220,7 +220,7 @@ var Piwik_Overlay_FollowingPages = (function() {
inlineChild = linkTag.children().eq(0);
}
- if (linkTag.css('visibility') == 'hidden' || (
+ if (getVisibility(linkTag) == 'hidden' || (
// in case of hasOneChild: jquery always returns linkTag.is(':visible')=false
!linkTag.is(':visible') && !(hasOneChild && inlineChild && inlineChild.is(':visible'))
)) {
@@ -230,7 +230,7 @@ var Piwik_Overlay_FollowingPages = (function() {
}
tagElement.attr('class', 'PIS_LinkTag'); // reset class
- if (tagElement.data('piwik-highlighted')) {
+ if (tagElement[0].piwikHighlighted) {
tagElement.addClass('PIS_Highlighted');
}
@@ -277,11 +277,11 @@ var Piwik_Overlay_FollowingPages = (function() {
// remove the tag element from the dom
if (linkTag && linkTag[0] && linkTag[0].piwikTagElement) {
tagElement = linkTag[0].piwikTagElement;
- if (tagElement.data('piwik-highlighted')) {
+ if (tagElement[0].piwikHighlighted) {
unHighlightLink(linkTag, tagToRemove.index1);
}
tagElement.remove();
- delete linkTag[0].piwikTagElement;
+ linkTag[0].piwikTagElement = null;
}
// remove the link from the index
linksOnPage[tagToRemove.index1].splice(tagToRemove.index2, 1);
@@ -294,6 +294,18 @@ var Piwik_Overlay_FollowingPages = (function() {
callback();
}
}
+
+ /** Get the visibility of an element */
+ function getVisibility(el) {
+ var visibility = el.css('visibility');
+ if (visibility == 'inherit') {
+ el = el.parent();
+ if (el.size() > 0) {
+ return getVisibility(el);
+ }
+ }
+ return visibility;
+ }
/**
* Find out whether a link has only one child. Using .children().size() == 1 doesn't work
@@ -321,7 +333,7 @@ var Piwik_Overlay_FollowingPages = (function() {
/** Check whether new links have been added to the dom */
function findNewLinks() {
var newLinks = $('a').filter(function() {
- return typeof this.piwikDiscovered == 'undefined';
+ return typeof this.piwikDiscovered == 'undefined' || this.piwikDiscovered === null;
});
if (newLinks.size() == 0) {
@@ -395,20 +407,28 @@ var Piwik_Overlay_FollowingPages = (function() {
var padding = '&nbsp;&nbsp;';
highlightElements[3].html(padding + text + padding).css({
- minWidth: (width + 4) + 'px',
+ width: 'auto',
top: offset.top + height,
left: offset.left - 2
}).show();
+ if (highlightElements[3].width() < width + 4) {
+ // we cannot use minWidth because of IE7
+ highlightElements[3].width(width + 4);
+ }
for (var j = 0; j < numLinks; j++) {
var tag = linksOnPage[linkUrl][j][0].piwikTagElement;
tag.addClass('PIS_Highlighted');
- tag.data('piwik-highlighted', true);
+ tag[0].piwikHighlighted = true;
}
+ // Sometimes it fails to remove the notification when the hovered element is removed.
+ // To make sure we don't display more than one location at a time, we hide all before showing the new one.
+ Piwik_Overlay_Client.hideNotifications('LinkLocation');
+
// we don't use .data() because jquery would remove the callback when the link tag is removed
linkTag[0].piwikHideNotification = Piwik_Overlay_Client.notification(
- Piwik_Overlay_Translations.get('link') + ': ' + linkUrl);
+ Piwik_Overlay_Translations.get('link') + ': ' + linkUrl, 'LinkLocation');
}
/** Remove highlight from link */
@@ -422,12 +442,13 @@ var Piwik_Overlay_FollowingPages = (function() {
var tag = linksOnPage[linkUrl][j][0].piwikTagElement;
if (tag) {
tag.removeClass('PIS_Highlighted');
- tag.data('piwik-highlighted', false);
+ tag[0].piwikHighlighted = false;
}
}
- if (typeof linkTag[0].piwikHideNotification == 'function') {
- linkTag[0].piwikHideNotification.apply();
+ if ((typeof linkTag[0].piwikHideNotification) == 'function') {
+ linkTag[0].piwikHideNotification();
+ linkTag[0].piwikHideNotification = null;
}
}
@@ -464,10 +485,11 @@ var Piwik_Overlay_FollowingPages = (function() {
for (var j = 0; j < linksOnPage[url].length; j++) {
var linkTag = linksOnPage[url][j];
var tagElement = linkTag[0].piwikTagElement;
- delete linkTag[0].piwikTagElement;
if (tagElement) {
tagElement.remove();
}
+ linkTag[0].piwikTagElement = null;
+
$(linkTag).unbind('mouseenter').unbind('mouseleave');
}
}
diff --git a/plugins/Overlay/templates/index.css b/plugins/Overlay/templates/index.css
index 42efdcf0dd..154546eeeb 100644
--- a/plugins/Overlay/templates/index.css
+++ b/plugins/Overlay/templates/index.css
@@ -2,6 +2,8 @@
html {
width: 100%;
height: 100%;
+ /** hide scroll bar in ie7 */
+ *overflow: auto;
}
body {
diff --git a/plugins/Overlay/templates/index.js b/plugins/Overlay/templates/index.js
index 807eb6b565..45ec759d42 100644
--- a/plugins/Overlay/templates/index.js
+++ b/plugins/Overlay/templates/index.js
@@ -58,7 +58,7 @@ var Piwik_Overlay = (function() {
});
$sidebar.empty().append($response).show();
-
+
if ($sidebar.find('.Overlay_NoData').size() == 0) {
$rowEvolutionLink.show();
$transitionsLink.show()
@@ -109,7 +109,7 @@ var Piwik_Overlay = (function() {
function hashChangeCallback(urlHash) {
var location = broadcast.getParamValue('l', urlHash);
location = Overlay_Helper.decodeFrameUrl(location);
-
+
if (!updateComesFromInsideFrame) {
var iframeUrl = iframeSrcBase;
if (location) {
@@ -122,12 +122,6 @@ var Piwik_Overlay = (function() {
}
updateComesFromInsideFrame = false;
-
- // handle window resize
- // this needs to be bound here because broadcast unbinds it after every hash change
- $(window).resize(function() {
- adjustDimensions();
- });
}
return {
@@ -160,15 +154,27 @@ var Piwik_Overlay = (function() {
adjustDimensions();
}, 50);
+ // handle window resize
+ // we manipulate broadcast.pageload because it unbinds all resize events on window
+ var originalPageload = broadcast.pageload;
+ broadcast.pageload = function(hash) {
+ originalPageload(hash);
+ $(window).resize(function() {
+ adjustDimensions();
+ });
+ };
+ $(window).resize(function() {
+ adjustDimensions();
+ });
+
// handle hash change
broadcast.loadAjaxContent = hashChangeCallback;
broadcast.init();
-
+
if (window.location.href.split('#').length == 1) {
// if there's no hash, broadcast won't trigger the callback - we have to do it here
hashChangeCallback('');
}
-
// handle date selection
var $select = $('select#Overlay_DateRangeSelect').change(function() {
@@ -224,7 +230,7 @@ var Piwik_Overlay = (function() {
if (locationParts.length > 1) {
currentLocation = broadcast.getParamValue('l', locationParts[1]);
}
-
+
var newLocation = Overlay_Helper.encodeFrameUrl(currentUrl);
if (newLocation != currentLocation) {
diff --git a/plugins/Overlay/templates/index.tpl b/plugins/Overlay/templates/index.tpl
index 2499b1662e..66bddbe1db 100644
--- a/plugins/Overlay/templates/index.tpl
+++ b/plugins/Overlay/templates/index.tpl
@@ -43,7 +43,7 @@
<div id="Overlay_Main">
- <iframe id="Overlay_Iframe" src=""></iframe>
+ <iframe id="Overlay_Iframe" src="" frameborder="0"></iframe>
</div>
diff --git a/plugins/Overlay/templates/index_noframe.tpl b/plugins/Overlay/templates/index_noframe.tpl
index ec2008c5d3..0897f7cd9c 100644
--- a/plugins/Overlay/templates/index_noframe.tpl
+++ b/plugins/Overlay/templates/index_noframe.tpl
@@ -8,9 +8,11 @@
{literal}
- var loactionParts = window.location.href.split('#');
- if (loactionParts.length > 1) {
- newLocation += '#' + loactionParts[1];
+ var locationParts = window.location.href.split('#');
+ if (locationParts.length > 1) {
+ var url = broadcast.getParamValue('l', locationParts[1]);
+ url = Overlay_Helper.decodeFrameUrl(url);
+ newLocation += '#' + url;
}
window.location.href = newLocation;