piwik_analytics 0.9.1 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.rdoc +25 -15
- data/Rakefile +2 -2
- data/init.rb +1 -0
- data/lib/generators/piwik_analytics.rb +7 -0
- data/lib/generators/piwik_analytics/install/install_generator.rb +12 -0
- data/lib/generators/piwik_analytics/install/templates/config/piwik.yml +33 -0
- data/lib/piwik_analytics.rb +6 -74
- data/lib/piwik_analytics/configuration.rb +74 -0
- data/lib/piwik_analytics/helpers.rb +49 -0
- data/lib/piwik_analytics/init.rb +1 -0
- data/lib/piwik_analytics/railtie.rb +18 -0
- data/piwik_analytics.gemspec +24 -0
- metadata +47 -19
data/README.rdoc
CHANGED
@@ -1,28 +1,38 @@
|
|
1
1
|
= PiwikAnalytics
|
2
2
|
|
3
|
-
This
|
4
|
-
it will output the synchronous piwik tracking code for every page automatically
|
5
|
-
(given that it is configured correctly). Configuring this plugin is easy:
|
3
|
+
**Note:** This Gem has undergone a major rewrite in 1.x compared to 0.9.x.
|
6
4
|
|
7
|
-
|
8
|
-
|
5
|
+
The piwik_analytics gem provides an easy way to include Piwik into your application.
|
6
|
+
By default it will output the synchronous piwik tracking code for every page
|
7
|
+
(given that it is configured correctly).
|
9
8
|
|
10
|
-
|
11
|
-
under Settings -> Websites. <Piwik-URL> must be replaced by the URL to your
|
12
|
-
Piwik installation.
|
9
|
+
== Installation
|
13
10
|
|
14
|
-
|
15
|
-
introduced in Piwik 1.1 you can add the folliwing line:
|
11
|
+
Add `piwik_analytics` to Gemfile:
|
16
12
|
|
17
|
-
|
13
|
+
gem 'piwik_analytics', '~> 1.0.0'
|
18
14
|
|
19
|
-
|
20
|
-
the following line to those controllers:
|
15
|
+
Run the generator:
|
21
16
|
|
22
|
-
|
17
|
+
rails g piwik_analytics:install
|
18
|
+
|
19
|
+
This will install a piwik.yml configuration file into the `config` directory
|
20
|
+
of your application.
|
21
|
+
|
22
|
+
|
23
|
+
== Configuration
|
24
|
+
|
25
|
+
Open up `config/piwik.yml` and edit the settings. Each setting is described in
|
26
|
+
the config file itself.
|
27
|
+
|
28
|
+
== Usage
|
29
|
+
|
30
|
+
Inside your `application.html.erb` (or haml, slim) simply add
|
31
|
+
|
32
|
+
<%= piwik_tracking_tag %>
|
23
33
|
|
24
34
|
Enjoy :)
|
25
35
|
|
26
36
|
|
27
37
|
= Licence
|
28
|
-
Copyright(c) 2010-
|
38
|
+
Copyright(c) 2010-2012 Fabian Becker, released under MIT licence.
|
data/Rakefile
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
require 'rake'
|
2
2
|
require 'rake/testtask'
|
3
|
-
require '
|
3
|
+
require 'rdoc/task'
|
4
4
|
|
5
5
|
desc 'Default: run unit tests.'
|
6
6
|
task :default => :test
|
@@ -20,4 +20,4 @@ Rake::RDocTask.new(:rdoc) do |rdoc|
|
|
20
20
|
rdoc.options << '--line-numbers' << '--inline-source'
|
21
21
|
rdoc.rdoc_files.include('README')
|
22
22
|
rdoc.rdoc_files.include('lib/**/*.rb')
|
23
|
-
end
|
23
|
+
end
|
data/init.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require File.dirname(__FILE__) + "/lib/piwik_analytics"
|
@@ -0,0 +1,12 @@
|
|
1
|
+
module PiwikAnalytics
|
2
|
+
module Generators
|
3
|
+
class InstallGenerator < Rails::Generators::Base
|
4
|
+
def self.source_root
|
5
|
+
@source_root ||= File.expand_path(File.join(File.dirname(__FILE__), 'templates'))
|
6
|
+
end
|
7
|
+
def copy_config_file
|
8
|
+
template 'config/piwik.yml'
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
# Configuration:
|
2
|
+
#
|
3
|
+
# disabled
|
4
|
+
# false if tracking tag should be shown
|
5
|
+
# use_async
|
6
|
+
# Set to true if you want to use asynchronous tracking
|
7
|
+
# url
|
8
|
+
# The url of your piwik instance (e.g. localhost/piwik/
|
9
|
+
# id_site
|
10
|
+
# The id of your website inside Piwik
|
11
|
+
#
|
12
|
+
production:
|
13
|
+
piwik:
|
14
|
+
id_site: 1
|
15
|
+
url: localhost
|
16
|
+
use_async: false
|
17
|
+
disabled: false
|
18
|
+
|
19
|
+
development:
|
20
|
+
piwik:
|
21
|
+
id_site: 1
|
22
|
+
url: localhost
|
23
|
+
disabled: true
|
24
|
+
use_async: false
|
25
|
+
hostname: localhost
|
26
|
+
|
27
|
+
test:
|
28
|
+
piwik:
|
29
|
+
id_site: 1
|
30
|
+
url: localhost
|
31
|
+
disabled: true
|
32
|
+
use_async: false
|
33
|
+
hostname: localhost
|
data/lib/piwik_analytics.rb
CHANGED
@@ -1,81 +1,13 @@
|
|
1
|
-
|
2
|
-
require 'active_support'
|
1
|
+
require File.join(File.dirname(__FILE__), 'piwik_analytics', 'configuration')
|
3
2
|
|
4
3
|
module PiwikAnalytics
|
5
|
-
|
6
|
-
def piwik_tracking_js
|
7
|
-
if Config.use_async
|
8
|
-
<<-code
|
9
|
-
<!-- Piwik -->
|
10
|
-
<script type="text/javascript">
|
11
|
-
var _paq = _paq || [];
|
12
|
-
(function(){
|
13
|
-
var u=(("https:" == document.location.protocol) ? "https://#{Config.url}" : "http://#{Config.url}");
|
14
|
-
_paq.push(['setSiteId', #{Config.id_site}]);
|
15
|
-
_paq.push(['setTrackerUrl', u+'piwik.php']);
|
16
|
-
_paq.push(['trackPageView']);
|
17
|
-
var d=document,
|
18
|
-
g=d.createElement('script'),
|
19
|
-
s=d.getElementsByTagName('script')[0];
|
20
|
-
g.type='text/javascript';
|
21
|
-
g.defer=true;
|
22
|
-
g.async=true;
|
23
|
-
g.src=u+'piwik.js';
|
24
|
-
s.parentNode.insertBefore(g,s);
|
25
|
-
})();
|
26
|
-
</script>
|
27
|
-
<!-- End Piwik Tag -->
|
28
|
-
code
|
29
|
-
else
|
30
|
-
<<-code
|
31
|
-
<!-- Piwik -->
|
32
|
-
<script type="text/javascript">
|
33
|
-
var pkBaseURL = (("https:" == document.location.protocol) ? "https://#{Config.url}" : "http://#{Config.url}");
|
34
|
-
document.write(unescape("%3Cscript src='" + pkBaseURL + "piwik.js' type='text/javascript'%3E%3C/script%3E"));
|
35
|
-
</script><script type="text/javascript">
|
36
|
-
try {
|
37
|
-
var piwikTracker = Piwik.getTracker(pkBaseURL + "piwik.php", #{Config.id_site});
|
38
|
-
piwikTracker.trackPageView();
|
39
|
-
piwikTracker.enableLinkTracking();
|
40
|
-
} catch( err ) {}
|
41
|
-
</script>
|
42
|
-
<!-- End Piwik Tag -->
|
43
|
-
code
|
44
|
-
end
|
45
|
-
end
|
46
|
-
|
47
|
-
def add_piwik_analytics_tracking
|
48
|
-
if Config.enabled? request.format
|
49
|
-
if Config.use_async
|
50
|
-
self.response.body= response.body.sub /<\/[hH][eE][aA][dD]>/, "#{piwik_tracking_js}</head>" if response.body.respond_to?(:sub!)
|
51
|
-
else
|
52
|
-
self.response.body= response.body.sub! /<\/[bB][oO][dD][yY]>/, "#{piwik_tracking_js}</body>" if response.body.respond_to?(:sub!)
|
53
|
-
end
|
54
|
-
end
|
55
|
-
end
|
56
|
-
end
|
57
|
-
|
58
|
-
class PiwikAnalyticsConfigurationError < StandardError; end
|
59
|
-
|
60
|
-
class Config
|
61
|
-
@@id_site = nil
|
62
|
-
cattr_accessor :id_site
|
63
|
-
|
64
|
-
@@url = nil
|
65
|
-
cattr_accessor :url
|
66
|
-
|
67
|
-
@@use_async = false
|
68
|
-
cattr_accessor :use_async
|
69
|
-
|
70
|
-
@@environments = ["production"]
|
71
|
-
cattr_accessor :environments
|
4
|
+
require 'piwik_analytics/railtie' if defined?(Rails)
|
72
5
|
|
73
|
-
|
74
|
-
|
6
|
+
class <<self
|
7
|
+
attr_writer :configuration
|
75
8
|
|
76
|
-
def
|
77
|
-
|
78
|
-
environments.include?(Rails.env) && formats.include?(format.to_sym)
|
9
|
+
def configuration
|
10
|
+
@configuration ||= PiwikAnalytics::Configuration.new
|
79
11
|
end
|
80
12
|
end
|
81
13
|
end
|
@@ -0,0 +1,74 @@
|
|
1
|
+
|
2
|
+
module PiwikAnalytics
|
3
|
+
class Configuration
|
4
|
+
|
5
|
+
#
|
6
|
+
# The url of the Piwik instance
|
7
|
+
# Defaults to localhost
|
8
|
+
#
|
9
|
+
def url
|
10
|
+
@url ||= (user_configuration_from_key('url') || 'localhost')
|
11
|
+
end
|
12
|
+
|
13
|
+
#
|
14
|
+
# The ID of the tracked website
|
15
|
+
# Defaults to 1
|
16
|
+
#
|
17
|
+
def id_site
|
18
|
+
@id_size ||= (user_configuration_from_key('id_size') || 1)
|
19
|
+
end
|
20
|
+
|
21
|
+
#
|
22
|
+
# Whether or not to use the async tracking
|
23
|
+
# Defaults to false
|
24
|
+
#
|
25
|
+
def use_async?
|
26
|
+
@use_async ||= (user_configuration_from_key('use_async') || false)
|
27
|
+
end
|
28
|
+
|
29
|
+
#
|
30
|
+
# Whether or not to disable Piwik.
|
31
|
+
# Defaults to false.
|
32
|
+
#
|
33
|
+
def disabled?
|
34
|
+
@disabled ||= (user_configuration_from_key('disabled') || false)
|
35
|
+
end
|
36
|
+
|
37
|
+
private
|
38
|
+
|
39
|
+
#
|
40
|
+
# return a specific key from the user configuration in config/piwik.yml
|
41
|
+
#
|
42
|
+
# ==== Returns
|
43
|
+
#
|
44
|
+
# Mixed:: requested_key or nil
|
45
|
+
#
|
46
|
+
def user_configuration_from_key( *keys )
|
47
|
+
keys.inject(user_configuration) do |hash, key|
|
48
|
+
hash[key] if hash
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
#
|
53
|
+
# Memoized hash of configuration options for the current Rails environment
|
54
|
+
# as specified in config/piwik.yml
|
55
|
+
#
|
56
|
+
# ==== Returns
|
57
|
+
#
|
58
|
+
# Hash:: configuration options for current environment
|
59
|
+
#
|
60
|
+
def user_configuration
|
61
|
+
@user_configuration ||= begin
|
62
|
+
path = File.join(::Rails.root, 'config', 'piwik.yml')
|
63
|
+
if File.exist?(path)
|
64
|
+
File.open(path) do |file|
|
65
|
+
processed = ERB.new(file.read).result
|
66
|
+
YAML.load(processed)[::Rails.env]['piwik']
|
67
|
+
end
|
68
|
+
else
|
69
|
+
{}
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
module PiwikAnalytics
|
2
|
+
module Helpers
|
3
|
+
def piwik_tracking_tag
|
4
|
+
config = PiwikAnalytics.configuration
|
5
|
+
return if config.disabled?
|
6
|
+
|
7
|
+
if config.use_async?
|
8
|
+
tag = <<-CODE
|
9
|
+
<!-- Piwik -->
|
10
|
+
<script type="text/javascript">
|
11
|
+
var _paq = _paq || [];
|
12
|
+
(function(){
|
13
|
+
var u=(("https:" == document.location.protocol) ? "https://#{config.url}" : "http://#{config.url}");
|
14
|
+
_paq.push(['setSiteId', #{config.id_site}]);
|
15
|
+
_paq.push(['setTrackerUrl', u+'piwik.php']);
|
16
|
+
_paq.push(['trackPageView']);
|
17
|
+
var d=document,
|
18
|
+
g=d.createElement('script'),
|
19
|
+
s=d.getElementsByTagName('script')[0];
|
20
|
+
g.type='text/javascript';
|
21
|
+
g.defer=true;
|
22
|
+
g.async=true;
|
23
|
+
g.src=u+'piwik.js';
|
24
|
+
s.parentNode.insertBefore(g,s);
|
25
|
+
})();
|
26
|
+
</script>
|
27
|
+
<!-- End Piwik Tag -->
|
28
|
+
CODE
|
29
|
+
tag.html_safe
|
30
|
+
else
|
31
|
+
tag = <<-CODE
|
32
|
+
<!-- Piwik -->
|
33
|
+
<script type="text/javascript">
|
34
|
+
var pkBaseURL = (("https:" == document.location.protocol) ? "https://#{config.url}" : "http://#{config.url}");
|
35
|
+
document.write(unescape("%3Cscript src='" + pkBaseURL + "piwik.js' type='text/javascript'%3E%3C/script%3E"));
|
36
|
+
</script><script type="text/javascript">
|
37
|
+
try {
|
38
|
+
var piwikTracker = Piwik.getTracker(pkBaseURL + "piwik.php", #{config.id_site});
|
39
|
+
piwikTracker.trackPageView();
|
40
|
+
piwikTracker.enableLinkTracking();
|
41
|
+
} catch( err ) {}
|
42
|
+
</script>
|
43
|
+
<!-- End Piwik Tag -->
|
44
|
+
CODE
|
45
|
+
tag.html_safe
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
ActionView::Base.send :include, PiwikAnalytics::Helpers
|
@@ -0,0 +1,18 @@
|
|
1
|
+
# PiwikAnalytics
|
2
|
+
require 'active_support'
|
3
|
+
|
4
|
+
module PiwikAnalytics
|
5
|
+
|
6
|
+
class Railtie < Rails::Railtie
|
7
|
+
railtie_name :piwik_analytics
|
8
|
+
|
9
|
+
generators do
|
10
|
+
load "generators/piwik_analytics.rb"
|
11
|
+
end
|
12
|
+
|
13
|
+
initializer "piwik_analytics.init", :before=> :load_config_initializers do
|
14
|
+
require "piwik_analytics/helpers"
|
15
|
+
load "piwik_analytics/init.rb"
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
spec = Gem::Specification.new do |s|
|
2
|
+
s.name = 'piwik_analytics'
|
3
|
+
s.version = '1.0.0'
|
4
|
+
s.date = Time.now.strftime "%Y-%m-%d"
|
5
|
+
s.author = 'Fabian Becker'
|
6
|
+
s.email = 'halfdan@xnorfz.de'
|
7
|
+
s.homepage = 'https://github.com/halfdan/piwik_analytics/'
|
8
|
+
s.summary = "[Rails] Easily include Piwik tracking in your Rails application."
|
9
|
+
|
10
|
+
s.description = <<-DESC
|
11
|
+
The piwik_analytics gem provides an easy way to include Piwik into your application.
|
12
|
+
By default it will output the synchronous piwik tracking code for every page
|
13
|
+
(given that it is configured correctly).
|
14
|
+
DESC
|
15
|
+
|
16
|
+
s.files = `git ls-files`.split("\n")
|
17
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
18
|
+
s.require_paths = ["lib"]
|
19
|
+
|
20
|
+
s.add_runtime_dependency 'rails', '>= 3.0.0'
|
21
|
+
s.add_dependency 'actionpack'
|
22
|
+
s.add_dependency 'activesupport'
|
23
|
+
end
|
24
|
+
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: piwik_analytics
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,12 +9,27 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
13
|
-
default_executable:
|
12
|
+
date: 2012-10-10 00:00:00.000000000 Z
|
14
13
|
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: rails
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: 3.0.0
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ! '>='
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: 3.0.0
|
15
30
|
- !ruby/object:Gem::Dependency
|
16
31
|
name: actionpack
|
17
|
-
requirement:
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
18
33
|
none: false
|
19
34
|
requirements:
|
20
35
|
- - ! '>='
|
@@ -22,10 +37,15 @@ dependencies:
|
|
22
37
|
version: '0'
|
23
38
|
type: :runtime
|
24
39
|
prerelease: false
|
25
|
-
version_requirements:
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '0'
|
26
46
|
- !ruby/object:Gem::Dependency
|
27
47
|
name: activesupport
|
28
|
-
requirement:
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
29
49
|
none: false
|
30
50
|
requirements:
|
31
51
|
- - ! '>='
|
@@ -33,15 +53,15 @@ dependencies:
|
|
33
53
|
version: '0'
|
34
54
|
type: :runtime
|
35
55
|
prerelease: false
|
36
|
-
version_requirements:
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
description: ! " The piwik_analytics gem provides an easy way to include Piwik
|
63
|
+
into your application.\n By default it will output the synchronous piwik tracking
|
64
|
+
code for every page\n (given that it is configured correctly). \n"
|
45
65
|
email: halfdan@xnorfz.de
|
46
66
|
executables: []
|
47
67
|
extensions: []
|
@@ -50,10 +70,18 @@ files:
|
|
50
70
|
- MIT-LICENSE
|
51
71
|
- README.rdoc
|
52
72
|
- Rakefile
|
73
|
+
- init.rb
|
74
|
+
- lib/generators/piwik_analytics.rb
|
75
|
+
- lib/generators/piwik_analytics/install/install_generator.rb
|
76
|
+
- lib/generators/piwik_analytics/install/templates/config/piwik.yml
|
77
|
+
- lib/piwik_analytics.rb
|
78
|
+
- lib/piwik_analytics/configuration.rb
|
79
|
+
- lib/piwik_analytics/helpers.rb
|
80
|
+
- lib/piwik_analytics/init.rb
|
81
|
+
- lib/piwik_analytics/railtie.rb
|
82
|
+
- piwik_analytics.gemspec
|
53
83
|
- test/piwik_analytics_test.rb
|
54
84
|
- test/test_helper.rb
|
55
|
-
- lib/piwik_analytics.rb
|
56
|
-
has_rdoc: true
|
57
85
|
homepage: https://github.com/halfdan/piwik_analytics/
|
58
86
|
licenses: []
|
59
87
|
post_install_message:
|
@@ -74,8 +102,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
74
102
|
version: '0'
|
75
103
|
requirements: []
|
76
104
|
rubyforge_project:
|
77
|
-
rubygems_version: 1.
|
105
|
+
rubygems_version: 1.8.24
|
78
106
|
signing_key:
|
79
107
|
specification_version: 3
|
80
|
-
summary: ! '[Rails] Easily
|
108
|
+
summary: ! '[Rails] Easily include Piwik tracking in your Rails application.'
|
81
109
|
test_files: []
|