From 2eed2eb680ebe191c883bf3cb0dd63a08752efcf Mon Sep 17 00:00:00 2001
From: Anthon Pang <apang@softwaredevelopment.ca>
Date: Sat, 23 Mar 2013 18:39:48 -0400
Subject: [PATCH] fixes #3352 - expose Piwik as an AMD module (uses the jQuery
 approach for backward compatibility)

---
 js/piwik.js | 24 ++++++++++++++++++------
 1 file changed, 18 insertions(+), 6 deletions(-)

diff --git a/js/piwik.js b/js/piwik.js
index 6472f9d1fb..b4314af10b 100644
--- a/js/piwik.js
+++ b/js/piwik.js
@@ -383,7 +383,6 @@ if (!this.JSON2) {
 /*global unescape */
 /*global ActiveXObject */
 /*global _paq:true */
-/*global Piwik_Overlay_Client */
 /*members encodeURIComponent, decodeURIComponent, getElementsByTagName,
     shift, unshift,
     createElement, appendChild, characterSet, charset,
@@ -420,9 +419,12 @@ if (!this.JSON2) {
     setHeartBeatTimer, killFrame, redirectFile, setCountPreRendered,
     trackGoal, trackLink, trackPageView, trackSiteSearch,
     setEcommerceView, addEcommerceItem, trackEcommerceOrder, trackEcommerceCartUpdate,
-    addPlugin, getTracker, getAsyncTracker,
-    initialize
-*/
+    addPlugin, getTracker, getAsyncTracker
+ */
+/*global Piwik_Overlay_Client */
+/*members initialize */
+/*global define */
+/*members amd */
 var
     // asynchronous tracker (or proxy)
     _paq = _paq || [],
@@ -463,7 +465,10 @@ var
             asyncTracker,
 
             /* iterator */
-            i;
+            i,
+
+            /* local Piwik */
+            Piwik;
 
         /************************************************************
          * Private methods
@@ -2926,7 +2931,7 @@ var
          * Public data and methods
          ************************************************************/
 
-        return {
+        Piwik = {
             /**
              * Add plugin
              *
@@ -2957,6 +2962,13 @@ var
                 return asyncTracker;
             }
         };
+
+        // Expose Piwik as an AMD module
+        if (typeof define === 'function' && define.amd) {
+            define(['piwik'], [], function () { return Piwik; });
+        }
+
+        return Piwik;
     }()),
 
     /************************************************************
-- 
GitLab