Support for map and analytics settings
This commit is contained in:
parent
b57a833e11
commit
49053ff741
3 changed files with 75 additions and 1 deletions
30
publichealth/home/migrations/0017_auto_20170510_1627.py
Normal file
30
publichealth/home/migrations/0017_auto_20170510_1627.py
Normal file
|
@ -0,0 +1,30 @@
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
# Generated by Django 1.11 on 2017-05-10 14:27
|
||||||
|
from __future__ import unicode_literals
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('home', '0016_socialcontact'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='contact',
|
||||||
|
name='analytics',
|
||||||
|
field=models.CharField(blank=True, default='', help_text='Optional web analytics property code', max_length=60),
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='contact',
|
||||||
|
name='map_url',
|
||||||
|
field=models.URLField(blank=True, help_text='Optional link of address to mapping provider', null=True),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='socialcontact',
|
||||||
|
name='profile',
|
||||||
|
field=models.CharField(default='', help_text='Name of the account, e.g. @myaccount, or full URL', max_length=255),
|
||||||
|
),
|
||||||
|
]
|
|
@ -59,6 +59,10 @@ class Contact(models.Model):
|
||||||
phone = models.CharField(max_length=40, default="")
|
phone = models.CharField(max_length=40, default="")
|
||||||
email = models.EmailField(max_length=100, default="")
|
email = models.EmailField(max_length=100, default="")
|
||||||
www = models.URLField(null=True, blank=True)
|
www = models.URLField(null=True, blank=True)
|
||||||
|
map_url = models.URLField(null=True, blank=True,
|
||||||
|
help_text="Optional link of address to mapping provider")
|
||||||
|
analytics = models.CharField(max_length=60, default="", blank=True,
|
||||||
|
help_text="Optional web analytics property code")
|
||||||
|
|
||||||
panels = Page.content_panels + [
|
panels = Page.content_panels + [
|
||||||
FieldPanel('title_fr'),
|
FieldPanel('title_fr'),
|
||||||
|
@ -66,6 +70,8 @@ class Contact(models.Model):
|
||||||
FieldPanel('phone'),
|
FieldPanel('phone'),
|
||||||
FieldPanel('email'),
|
FieldPanel('email'),
|
||||||
FieldPanel('www'),
|
FieldPanel('www'),
|
||||||
|
FieldPanel('map_url'),
|
||||||
|
FieldPanel('analytics'),
|
||||||
]
|
]
|
||||||
|
|
||||||
def phone_link(self):
|
def phone_link(self):
|
||||||
|
@ -74,6 +80,13 @@ class Contact(models.Model):
|
||||||
return 'mailto:%s' % self.email
|
return 'mailto:%s' % self.email
|
||||||
def www_domain(self):
|
def www_domain(self):
|
||||||
return self.www.replace('http://', '').replace('https://', '')
|
return self.www.replace('http://', '').replace('https://', '')
|
||||||
|
def is_google_analytics(self):
|
||||||
|
return self.analytics.startswith('UA-')
|
||||||
|
def get_piwik_analytics(self):
|
||||||
|
# When formatted as "server|site_id", assume Piwik
|
||||||
|
if not '|' in self.analytics: return False
|
||||||
|
sa = self.analytics.split('|')
|
||||||
|
return { 'server': sa[0], 'site': sa[1] }
|
||||||
def trans_title_styled(self):
|
def trans_title_styled(self):
|
||||||
v = self.trans_title.split(' ')
|
v = self.trans_title.split(' ')
|
||||||
if len(v) != 3: return v
|
if len(v) != 3: return v
|
||||||
|
|
|
@ -1,6 +1,10 @@
|
||||||
<address>
|
<address>
|
||||||
<p>{{ contact.trans_title }}<br>
|
<p>{{ contact.trans_title }}<br>
|
||||||
{{ contact.address }}
|
{% if contact.map_url %}
|
||||||
|
<a href="{{ contact.map_url }}">{{ contact.address }}</a>
|
||||||
|
{% else %}
|
||||||
|
{{ contact.address }}
|
||||||
|
{% endif %}
|
||||||
</p>
|
</p>
|
||||||
<p>Tel. <a href="{{ contact.phone_link }}">{{ contact.phone }}</a><br>
|
<p>Tel. <a href="{{ contact.phone_link }}">{{ contact.phone }}</a><br>
|
||||||
<a href="{{ contact.email_link }}">{{ contact.email }}</a><br>
|
<a href="{{ contact.email_link }}">{{ contact.email }}</a><br>
|
||||||
|
@ -14,3 +18,30 @@
|
||||||
{{ sc.network_title }}</a>
|
{{ sc.network_title }}</a>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
{% if contact.is_google_analytics %}
|
||||||
|
<script>
|
||||||
|
(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','https://www.google-analytics.com/analytics.js','ga');
|
||||||
|
ga('create', '{{ contact.analytics }}', 'auto');
|
||||||
|
ga('send', 'pageview');
|
||||||
|
</script>
|
||||||
|
{% elif contact.get_piwik_analytics %}
|
||||||
|
<script type="text/javascript">
|
||||||
|
var _paq = _paq || [];
|
||||||
|
_paq.push(["setDocumentTitle", document.domain + "/" + document.title]);
|
||||||
|
_paq.push(["setCookieDomain", document.domain]);
|
||||||
|
_paq.push(["setDomains", [document.domain,"*." + document.domain]]);
|
||||||
|
_paq.push(['trackPageView']);
|
||||||
|
_paq.push(['enableLinkTracking']);
|
||||||
|
(function() {
|
||||||
|
var u="//{{ contact.get_piwik_analytics.server }}";
|
||||||
|
_paq.push(['setTrackerUrl', u+'piwik.php']);
|
||||||
|
_paq.push(['setSiteId', {{ contact.get_piwik_analytics.site }}]);
|
||||||
|
var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
|
||||||
|
g.type='text/javascript'; g.async=true; g.defer=true; g.src=u+'piwik.js'; s.parentNode.insertBefore(g,s);
|
||||||
|
})();
|
||||||
|
</script>
|
||||||
|
{% endif %}
|
||||||
|
|
Loading…
Reference in a new issue