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:
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
@@ -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)) {
|
||||
|
@@ -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>
|
||||
|
Reference in New Issue
Block a user