1
0
mirror of https://github.com/monstra-cms/monstra.git synced 2025-08-05 12:48:00 +02:00

Merge pull request #221 from metalgvc/dev

Monstra Dashboard - Google Analytics #204
This commit is contained in:
Sergey Romanenko
2014-01-17 14:13:34 -08:00
6 changed files with 1302 additions and 14 deletions

View File

@@ -1,6 +1,9 @@
<?php
// Add Plugin Javascript
Stylesheet::add('public/assets/css/daterangepicker-bs3.css', 'backend');
Javascript::add('public/assets/js/moment.min.js', 'backend');
Javascript::add('public/assets/js/daterangepicker.js', 'backend');
Javascript::add('plugins/box/dashboard/js/ganalytics.js', 'backend');
/**
@@ -51,6 +54,17 @@ class DashboardAdmin extends Backend
Option::update('ga_view_id', $ga_view_id);
}
}
// tracking id
$ga_tracking_id = trim(Request::post('ga_tracking_id'));
if (!empty($ga_tracking_id)) {
$opt_view_id = Option::get('ga_tracking_id');
if (empty($opt_view_id)) {
Option::add('ga_tracking_id', $ga_tracking_id);
} else {
Option::update('ga_tracking_id', $ga_tracking_id);
}
}
}
}

View File

@@ -12,11 +12,35 @@ $.monstra.ganalytics = {
},
_gaAreas: '#authOk,#authFail,#gaSettings,#gaLoading',
_startDate: moment().subtract('days', 29),
_endDate: moment(),
init: function(data){
$.extend(this.conf, data);
$('#gaSettingsLink').click(function(){
$.monstra.ganalytics.show('#gaSettings');
});
},
initDateRangePicker: function(){
$('#reportRange').daterangepicker({
ranges: {
'Today': [moment(), moment()],
'Yesterday': [moment().subtract('days', 1), moment().subtract('days', 1)],
'Last 7 Days': [moment().subtract('days', 6), moment()],
'Last 30 Days': [moment().subtract('days', 29), moment()],
'This Month': [moment().startOf('month'), moment().endOf('month')],
'Last Month': [moment().subtract('month', 1).startOf('month'), moment().subtract('month', 1).endOf('month')]
},
startDate: $.monstra.ganalytics._startDate,
endDate: $.monstra.ganalytics._endDate
},function(start, end) {
$.monstra.ganalytics.getAnalyticsInfo(start._d, end._d);
}
);
$.monstra.ganalytics.getAnalyticsInfo($.monstra.ganalytics._startDate._d, $.monstra.ganalytics._endDate._d);
},
libOnloadHandle: function(){
if ($.monstra.ganalytics.conf.clientId == ''
|| $.monstra.ganalytics.conf.apiKey == ''
@@ -43,7 +67,7 @@ $.monstra.ganalytics = {
handleAuthResult: function(authResult){
if (authResult && !authResult.error) {
$.monstra.ganalytics.show('#authOk');
$.monstra.ganalytics.getAnalyticsInfo();
$.monstra.ganalytics.initDateRangePicker();
} else {
$.monstra.ganalytics.show('#authFail');
if (authResult && typeof authResult.error != 'undefined') {
@@ -56,15 +80,12 @@ $.monstra.ganalytics = {
}
},
getAnalyticsInfo: function() {
getAnalyticsInfo: function(startDate, endDate) {
gapi.client.load('analytics', 'v3', function(){
var dateOffset = (24*60*60*1000) * 30;
var cdate = new Date();
var mdate = new Date(cdate.getTime() - dateOffset);
gapi.client.analytics.data.ga.get({
'ids': 'ga:'+ $.monstra.ganalytics.conf.viewId,
'start-date': $.monstra.ganalytics.formatDate(mdate),
'end-date': $.monstra.ganalytics.formatDate(cdate),
'start-date': $.monstra.ganalytics.formatDate(startDate),
'end-date': $.monstra.ganalytics.formatDate(endDate),
'metrics': 'ga:visits,ga:pageviews,ga:visitors',
'dimensions': 'ga:date'
}).execute($.monstra.ganalytics.gaReportingResults);
@@ -85,7 +106,8 @@ $.monstra.ganalytics = {
if (res.columnHeaders[h].name == 'ga:visits') {
tmpr[1] = parseInt(res.rows[r][h]);
} else if (res.columnHeaders[h].name == 'ga:date') {
tmpr[0] = res.rows[r][h];
var parsed = res.rows[r][h].match(/([0-9]{4})([0-9]{2})([0-9]{2})/)
tmpr[0] = parsed[1] +'-'+ parsed[2] +'-'+ parsed[3];
}
if (res.rows.length == (parseInt(r)+1)) {

View File

@@ -45,13 +45,27 @@
<div id="authOk" class="row hide">
<div class="col-md-9">
<div id="gaChart"></div>
<div class="row">
<div class="col-md-12">
<div id="reportRange" class="pull-right">
<span class="glyphicon glyphicon-calendar"><?php echo date("F j, Y", strtotime('-30 day')); ?> - <?php echo date("F j, Y"); ?></span> <b class="caret"></b>
</div>
</div>
</div>
<div class="row">
<div class="col-md-12">
<div id="gaChart" style="height:350px;"></div>
</div>
</div>
</div>
<div class="col-md-3">
Today:<br/>
Visits:<span id="gaVisits"></span><br/>
Visitors:<span id="gaVisitors"></span><br/>
Pageviews:<span id="gaPageviews"></span>
<div><a href="javascript:void(0);" id="gaSettingsLink">Settings</a></div>
<div><h3>Today</h3></div>
<div>Visits:<span id="gaVisits"></span></div>
<div>Visitors:<span id="gaVisitors"></span></div>
<div>Pageviews:<span id="gaPageviews"></span></div>
</div>
</div>
@@ -72,6 +86,8 @@
<label><?php echo __('View ID', 'system'); ?><input name="ga_view_id" value="<?php echo Option::get('ga_view_id'); ?>" placeholder="<?php echo __('View ID', 'system'); ?>" /></label>
<label><?php echo __('Tracking ID', 'system'); ?><input name="ga_tracking_id" value="<?php echo Option::get('ga_tracking_id'); ?>" placeholder="<?php echo __('Tracking ID', 'system'); ?>" /></label>
<input type="hidden" name="ga_settings_update" value="1" />
<button type="submit" class="btn btn-default"><?php echo __('Save', 'system'); ?></button>
</form>