D7net
Home
Console
Upload
information
Create File
Create Folder
About
Tools
:
/
opt
/
psa
/
admin
/
plib
/
modules
/
xovi
/
views
/
scripts
/
rank-tracker
/
Filename :
index.phtml
back
Copy
<?php // Copyright 1999-2020. Plesk International GmbH. All rights reserved. $this->headLink()->appendStylesheet(pm_Context::getBaseUrl() . 'css/nv.d3.css?' . XOVIVERSION); $this->headScript()->appendFile(pm_Context::getBaseUrl() . 'js/d3.v3.min.js?' . XOVIVERSION); $this->headScript()->appendFile(pm_Context::getBaseUrl() . 'js/nv.d3.min.js?' . XOVIVERSION); $this->headScript()->appendFile(pm_Context::getBaseUrl() . 'js/xoviRequest.js?' . XOVIVERSION); $this->headScript()->appendFile(pm_Context::getBaseUrl() . 'js/dataTable.js?' . XOVIVERSION); $this->headScript()->appendFile(pm_Context::getBaseUrl() . 'js/dataChart.js?' . XOVIVERSION); ?> <div id="seo-toolkit" class="overview"> <?php if (!empty($this->preview)) : ?> <div class="preview-box"> <?php echo $this->preview; ?> </div> <?php endif; ?> <div class="row"> <div class="col-xs-12"> <?php if ($this->filterForm) : ?> <div class="active-list active-list-wrap"> <div class="active-list-item"> <div class="row"> <div class="col-md-6 col-xs-12"> <div class="caption"> <div class="caption-head"> <div class="caption-head-wrap"> <h2><?= $this->lmsg("rank-tracker.filters"); ?></h2> </div> <div class="caption-summary" id="rtFilters"> <?php echo $this->filterForm; ?> <div class="btns-box"> <div class="field-value"> <span id="btn-filter-send" class="btn action"><button><?= $this->lmsg('rank-tracker.filter.apply'); ?></button></span> <span id="btn-filter-cancel" class="btn"><button><?= $this->lmsg('rank-tracker.filter.reset'); ?></button></span> </div> </div> </div> </div> </div> </div> <div class="col-md-6 col-xs-12"> <div class="caption"> <div class="caption-head"> <div class="caption-head-wrap help pull-right" title="<?= pm_Locale::lmsg('rank-tracker.help.keyword-ranking'); ?>"><img width="16" height="16" src="<?= pm_Context::getBaseUrl(); ?>images/icon_help.png"></div> <div class="caption-summary"> <div id="keywordRankingChart" class="pie-body"> </div> </div> </div> </div> </div> </div> </div> </div> <?php endif; ?> </div> </div> <div class="row"> <div class="col-xs-12"> <div class="active-list active-list-wrap"> <div class="active-list-item"> <div class="caption"> <div class="caption-head"> <div class="caption-head-wrap"> <h2><?= $this->lmsg("rank-tracker.title.keyword-trend"); ?></h2> <div class="help pull-right" title="<?= pm_Locale::lmsg('rank-tracker.help.keyword-trend'); ?>"><img width="16" height="16" src="<?= pm_Context::getBaseUrl(); ?>images/icon_help.png"></div> </div> <div class="caption-summary"> <div id="keywordTrendChart" class="line-body"> </div> </div> </div> </div> <div class="active-list-details"> </div> </div> </div> </div> </div> <?php if ($this->keysList) : ?> <div class="active-list active-list-wrap"> <div class="active-list-item"> <div class="caption"> <div class="caption-head"> <div class="caption-head-wrap"> <h2><?= $this->lmsg("rank-tracker.keywords"); ?></h2> </div> <div class="caption-summary" id="KeywordsList"> <?= $this->renderList($this->keysList); ?> <?php if (!empty($this->glossary)) : ?> <div class="row"> <div class="col-xs-12"> <h3><?= pm_Locale::lmsg("siteAudit.details.title.glossary"); ?></h3> <ul> <?php foreach ($this->glossary as $column) : ?> <li><b><?= pm_Locale::lmsg('rank-tracker.column.' . $column) ?></b>: <?= pm_Locale::lmsg('rank-tracker.column.' . $column . '.tooltip') ?></li> <?php endforeach; ?> </ul> </div> </div> <?php endif; ?> </div> </div> </div> <div class="active-list-details"> </div> </div> </div> <?php endif; ?> </div> <script type="text/javascript"> if (typeof PleskExt !== "object") { var PleskExt = {}; } if (typeof PleskExt.Xovi !== "object") { PleskExt.Xovi = {}; } var pieChart, pieChartSelector; Jsw.onReady(function () { Event.observe('btn-filter-send', 'click', function (event) { Jsw.submit('pm-form-simple'); }); Event.observe('btn-filter-cancel', 'click', function (event) { $$('#pm-form-simple .field-value :input[type!="hidden"]').each(function (s) { s.setValue(''); }); Jsw.submit('pm-form-simple'); }); let filters = $('pm-form-simple').serialize(true); PleskExt.Xovi.keysListReload = Jsw.getComponent('<?= $this->keysList->getId() ?>'); XoviDataTable.loadData(); let chart = new XoviDataChart({ 'url': <?= $this->jsEscape(pm_Context::getActionUrl('rank-tracker', 'load-data') . '/id/' . $this->domainId); ?> }); chart.loadData('keywordRankingChart', function (data) { loadKeywordRankingChart(data); }, Object.extend(filters, {'method': 'getKeywordRankingPie'})); chart.loadData('keywordTrendChart', function (data) { loadKeywordTrendChart(data); }, Object.extend(filters, {'method': 'getKeywordRankingLine'})); setTimeout(function () { PleskExt.Xovi.getProgressPosition(); }, 15000); PleskExt.Xovi.deleteKeywords = function (ids) { Jsw.messageBox.show(Object.extend({ type: Jsw.messageBox.TYPE_YESNO, subtype: 'confirm', onYesClick: function () { var pData = []; $A(ids).each(function (id) { pData.push(id.value); }); new Ajax.Request(<?php echo $this->jsEscape(pm_Context::getActionUrl('rank-tracker', 'delete-keywords') . '/id/' . $this->domainId); ?>, { method: 'get', parameters: { 'rows': Object.toJSON(pData) }, requestHeaders: {Accept: 'application/json'}, onSuccess: function (transport) { var response = transport.responseText.evalJSON(true); if (typeof response === "object" && response !== null && response['success']) { PleskExt.Xovi.keysListReload.reload(); PleskExt.Xovi.pieChartRefresh(); Jsw.addStatusMessage('info', <?= $this->jsEscape($this->lmsg('rank-tracker.keysdeleted')) ?>); } else if (response['message']) { Jsw.addStatusMessage('error', response['message']); } }, onFailure: function (data) { Jsw.addStatusMessage('error', <?= $this->jsEscape($this->lmsg('rank-tracker.deletekeys.error')) ?>); } }); } }, { 'text': <?= $this->jsEscape(pm_Locale::lmsg('rank-tracker.delete.warning')); ?>, 'description': '', 'buttonTitles': { 'yes': <?= $this->jsEscape(pm_Locale::lmsg('rank-tracker.deletekeys.yes')); ?>, 'no': <?= $this->jsEscape(pm_Locale::lmsg('rank-tracker.deletekeys.no')); ?> } })); }; PleskExt.Xovi.pieChartRefresh = function () { chart.refreshData(Object.extend($('pm-form-simple').serialize(true), {'method': 'getKeywordRankingPie'}), function (data) { pieChartSelector.datum(data).transition().call(pieChart); nv.utils.windowResize(pieChart.update); }) }; PleskExt.Xovi.getProgressPosition = function () { var newKeys = $('<?= $this->keysList->getId() ?>').select("img"); if (newKeys.length > 0) { var keys = []; $A(newKeys).each(function (id) { keys.push(id.up('tr').getAttribute('data-row-id')); }); new Ajax.Request(<?php echo $this->jsEscape(pm_Context::getActionUrl('rank-tracker', 'progress-position') . '/id/' . $this->domainId); ?>, { method: 'get', parameters: { 'keys': Object.toJSON(keys) }, requestHeaders: {Accept: 'application/json'}, onSuccess: function (transport) { var response = transport.responseText.evalJSON(true); if (typeof response === "object" && response !== null && response['success']) { if (response['reload']) { PleskExt.Xovi.keysListReload.reload(); PleskExt.Xovi.pieChartRefresh(); } setTimeout(function () { PleskExt.Xovi.getProgressPosition(); }, 15000); } } }); } return false; }; } ); function loadKeywordTrendChart(data) { nv.addGraph(function () { var chart = nv.models.lineChart() .x(function (d) { return new Date(d.x).getTime(); }); chart.xAxis .axisLabel('Date') .rotateLabels(-45) .tickFormat(function (d) { return d3.time.format('%b %d')(new Date(d)); }); d3.select('#keywordTrendChart svg') .datum(data) .call(chart); nv.utils.windowResize(chart.update); return chart; }); } function loadKeywordRankingChart(data) { if (!data.length) { Jsw.addStatusMessage('error', <?= $this->jsEscape($this->lmsg('api.request.error.default')) ?>); } nv.addGraph(function () { var height = 330; pieChart = nv.models.pieChart() .x(function (d) { return d.label; }) .y(function (d) { return d.value }) .margin({top: 0, right: 0, bottom: 0, left: 0}) .showLabels(true) .labelsOutside(true) .showLegend(false); pieChartSelector = d3.select('#keywordRankingChart svg') .attr('width', '100%') .attr('height', height) .datum(data) .call(pieChart); nv.utils.windowResize(pieChart.update); return pieChart; }); } </script>