packages feed

happstack-hsp 7.2.4 → 7.3.0

raw patch · 2 files changed

+49/−24 lines, 2 filesdep +hsx2hsdep ~text

Dependencies added: hsx2hs

Dependency ranges changed: text

Files

happstack-hsp.cabal view
@@ -1,5 +1,5 @@ Name:                happstack-hsp-Version:             7.2.4+Version:             7.3.0 Synopsis:            Support for using HSP templates in Happstack Description:         Happstack is a web application framework. HSP is an XML templating solution. This package makes it easy to use HSP templates with Happstack. Homepage:            http://www.happstack.com/@@ -32,9 +32,10 @@                        happstack-server >= 6.0 && < 7.4,                        harp             >= 0.4 && < 0.5,                        hsp              >= 0.9.2 && < 0.11,+                       hsx2hs           >= 0.13.0 && < 0.14,                        mtl              >= 1.1 && < 2.2,                        utf8-string      == 0.3.*,                        syb              >= 0.3 && < 0.5,-                       text             >= 0.10 && < 1.1+                       text             >= 0.10 && < 1.2  --  Build-tools:         hsx2hs
src/HSP/Google/Analytics.hs view
@@ -1,31 +1,34 @@-{-# LANGUAGE DeriveDataTypeable, PatternGuards, FlexibleContexts, TypeFamilies, OverloadedStrings #-}-{-# OPTIONS_GHC -F -pgmFhsx2hs #-}+{-# LANGUAGE DeriveDataTypeable, PatternGuards, FlexibleContexts, TypeFamilies, OverloadedStrings, QuasiQuotes #-} module HSP.Google.Analytics     ( UACCT(..)     , analytics-    , addAnalytics     , analyticsAsync+    , universalAnalytics     ) where  import Data.Generics (Data, Typeable)-import Data.Text.Lazy (Text)+import Data.Text.Lazy (Text,pack) import HSP import Prelude hiding (head)+import Language.Haskell.HSX.QQ (hsx)  newtype UACCT = UACCT String -- ^ The UACCT provided to you by Google (looks like: @UA-XXXXX-X@)     deriving (Read, Show, Eq, Ord, Typeable, Data)  -- | create the google analytics asynchronous tracking script tag --+-- This uses the now dubbed 'classic google analytics'+-- -- NOTE: you must put this right before the \<\/head\> tag+-- see also: universalAnalytics analyticsAsync :: (XMLGenerator m, StringType m ~ Text) =>                   UACCT     -- ^ web property ID (looks like: @UA-XXXXX-X@)                -> GenXML m-analyticsAsync (UACCT uacct) =+analyticsAsync (UACCT uacct) = [hsx|     <script type="text/javascript">        var _gaq = _gaq || [];-      _gaq.push(['_setAccount', '<% uacct %>']);+      _gaq.push(['_setAccount', '<% pack uacct %>']);       _gaq.push(['_trackPageview']);        (function() {@@ -34,27 +37,46 @@         var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);       })(); -    </script>+    </script> |] --- | create the (old) google analytics script tags+universalAnalytics :: (XMLGenerator m, StringType m ~ Text) =>+                      UACCT     -- ^ web property ID (looks like: @UA-XXXXX-X@)+                   -> GenXML m+universalAnalytics (UACCT uacct) = [hsx|+    <script type="text/javascript">+     (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){+     (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),+     m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)+     })(window,document,'script','//www.google-analytics.com/analytics.js','ga');++     ga('create', '<% pack uacct %>', 'auto');+     ga('send', 'pageview');+    </script> |]+++-- | create the (even older) google analytics script tags -- -- NOTE: you must put the <% analytics yourUACCT %> immediately before the </body> tag -- -- You probably want to use 'analyticsAsync' instead. ----- See also: 'addAnalytics', 'analyticsAsync'+-- See also: 'addAnalytics', 'analyticsAsync', 'universalAnalytics' analytics :: (XMLGenerator m, StringType m ~ Text) => UACCT -> GenXMLList m analytics (UACCT uacct) =-    do a <- <script type="text/javascript">+    do a <- [hsx|+             <script type="text/javascript">               var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");               document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));-            </script>-       b <- <script type="text/javascript">-              var pageTracker = _gat._getTracker("<% uacct %>");-              pageTracker._initData();-              pageTracker._trackPageview();-            </script>+             </script> |]+       b <- [hsx|+             <script type="text/javascript">+               var pageTracker = _gat._getTracker("<% pack uacct %>");+               pageTracker._initData();+               pageTracker._trackPageview();+             </script> |]        return [a,b]+{-+removed because the hsx qq does not currently support patterns.  -- | automatically add the google analytics scipt tags immediately before the </body> element -- NOTE: this function is not idepotent@@ -72,13 +94,15 @@     do page <- pg        a <- analytics uacct        case page of-         <html hattrs><[ head, body ]></html> ->-             <html hattrs>-                <% head %>-                <% body <: (a :: [XML]) %>-             </html>+         [hsx| <html hattrs><[ head, body ]></html> |] ->+                [hsx|+                 <html hattrs>+                  <% head %>+                  <% body <: (a :: [XML]) %>+                 </html>+                 |]          o -> error ("Failed to add analytics." ++ show o)-+-} {- Example Analytics Code from Google:  <script type="text/javascript">