D7net
Home
Console
Upload
information
Create File
Create Folder
About
Tools
:
/
opt
/
psa
/
admin
/
plib
/
modules
/
xovi
/
views
/
scripts
/
tasks
/
Filename :
index.phtml
back
Copy
<?php // Copyright 1999-2020. Plesk International GmbH. All rights reserved. $this->headLink()->appendStylesheet(pm_Context::getBaseUrl() . 'css/tasks.css?' . XOVIVERSION); $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); ?> <div id="seo-toolkit"> <div class="active-list"> <div class="active-list-wrap"> <div class="active-list-item active-list-item-collapsible active-list-item-expanded"> <div class="active-list-item-wrap"> <div class="tools-list-box"> <div class="box-area"> <div class="content"> <div class="content-area"> <?php if (empty($this->tasks_data)) { echo '<div class="task-row">' . $this->lmsg('overview.tasks.nodata') . '</div>'; } else { echo $this->tasksKpi . '<hr>'; $doneStatus = '<span class="status-right-value"><i class="icon"><img width="16" height="16" src="' . pm_Context::getBaseUrl() . 'images/tasks/ok.png" alt=""></i> ' . pm_Locale::lmsg('tasks.done') . '</span>' . '<br><br><a href="#" data-status="' . \PleskExt\Xovi\Tasks::STATUS_TODO . '" class="btn changeStatus set-open"> ' . pm_Locale::lmsg('tasks.setopen') . '</a>'; $skippedStatus = '<span class="status-right-value"><i class="icon"><img width="16" height="16" src="' . pm_Context::getBaseUrl() . 'images/tasks/ftpsession-noop.png" alt=""></i> ' . pm_Locale::lmsg('tasks.skipped') . '</span>' . '<br><br><a href="#" data-status="' . \PleskExt\Xovi\Tasks::STATUS_DONE . '" class="btn changeStatus set-done"> ' . pm_Locale::lmsg('tasks.setdone') . '</a>' . '<a href="#" data-status="' . \PleskExt\Xovi\Tasks::STATUS_TODO . '" class="btn changeStatus set-open"> ' . pm_Locale::lmsg('tasks.setopen') . '</a>'; $openStatus = '<a href="#" data-status="' . \PleskExt\Xovi\Tasks::STATUS_DONE . '" class="btn changeStatus set-done"><i class="icon">' . '<img width="16" height="16" src="' . pm_Context::getBaseUrl() . 'images/tasks/ok.png" alt=""></i> ' . pm_Locale::lmsg('tasks.setdone') . '</a><a href="#" data-status="' . \PleskExt\Xovi\Tasks::STATUS_SKIPPED . '" class="btn changeStatus set-skip"><i class="icon">' . '<img width="16" height="16" src="' . pm_Context::getBaseUrl() . 'images/tasks/ftpsession-noop.png" alt=""></i> ' . pm_Locale::lmsg('tasks.setskip') . '</a>'; foreach ($this->tasks_data as $task) { if (!isset($task['taskId'])) { continue; } if (!is_array($task['variables'])) { $task['variables'] = (array)json_decode($task['variables'], true); } ?> <div class="task-row<?php echo($task['status'] ? ' task-done' : '') ?>" data-state="<?= str_replace('tasks.', '', \PleskExt\Xovi\Tasks::$status_name[$task['status']]) ?>"> <div class="row middle-xs"> <div class="col-xs-2 center-xs"> <img src="<?= pm_Context::getBaseUrl(); ?>images/tasks/task_<?= $task['category'] . '_' . $task['variables']['linked'] ?>.png"> </div> <div class="col-xs-7"> <span class="task-category"> <?php echo pm_Locale::lmsg('tasks.category.' . $task['category']); ?> </span> <p class="task-title"><?php echo $task['title']; ?></p> <p class="task-desc"><?php echo strip_tags(pm_Locale::lmsg('tasks.' . $task['category'] . '.description.' . $task['taskId'], $task['variables'])); ?></p> </div> <div class="col-xs-3 task-status status-right" data-id="<?php echo $task['id']; ?>"> <?php if ($task['status'] == \PleskExt\Xovi\Tasks::STATUS_SKIPPED) { echo $skippedStatus; } elseif ($task['status'] == \PleskExt\Xovi\Tasks::STATUS_DONE) { echo $doneStatus; } else { echo $openStatus; } ?> </div> </div> </div> <hr> <? } } ?> </div> </div> </div> </div> </div> </div> </div> </div> <?php if (is_array($this->activityChart) && !empty($this->activityChart)) { ?> <div class="active-list active-list-collapsible"> <div class="active-list-wrap"> <div id="active-list-item-d:2" class="active-list-item active-list-item-collapsible active-list-item-expanded"> <div class="active-list-item-wrap"> <div class="caption"> <div class="caption-wrap"> <div class="caption-header"> <div class="caption-widget"></div> <div class="caption-header-wrap"> <div class="caption-main"> <div class="caption-head"> <div class="caption-head-wrap"><h2> <span><?php echo pm_Locale::lmsg('tasks.historyactivity'); ?></span> </h2></div> </div> </div> </div> </div> </div> </div> <div class="active-list-details"> <div class="active-list-details-wrap"> <div class="tools-list-box"> <div class="box-area"> <div class="content"> <div class="content-area"> <div id="chart"> <svg></svg> </div> </div> </div> </div> </div> </div> </div> </div> </div> </div> </div> <?php } ?> </div> <script type="text/javascript"> Jsw.onReady(function () { $$('.changeStatus').each(function (s) { Event.observe(s, 'click', function (event) { TaskEvent(event, this); }); }); }); function TaskEvent(event, $this) { Event.stop(event); var taskStatusCol = $this.up('.task-status'), status = $this.getAttribute('data-status'), taskId = taskStatusCol.getAttribute('data-id'); taskStatusCol.update('<img width="38" height="38" src="<?=pm_Context::getBaseUrl()?>images/icons/indicator.gif">'); new Ajax.Request(<?php echo $this->jsEscape(pm_Context::getActionUrl('tasks', 'status-change') . '/id/' . $this->domainId); ?>, { method: 'post', parameters: { 'taskId': taskId, 'status': status }, requestHeaders: {Accept: 'application/json'}, onSuccess: function (transport) { var response = transport.responseText.evalJSON(true), taskStatusCol = $$('div.task-status[data-id="' + taskId + '"]').first(); if (typeof response === "object" && response !== null && response['success']) { var $taskRow = taskStatusCol.up('.task-row'); if (status === "<?php echo \PleskExt\Xovi\Tasks::STATUS_SKIPPED; ?>") { $taskRow.addClassName('task-done'); taskStatusCol.update('<?php echo $skippedStatus; ?>'); changeKpiProgress('skipped', $taskRow.getAttribute('data-state')); $taskRow.setAttribute('data-state', "<?= str_replace('tasks.', '', \PleskExt\Xovi\Tasks::$status_name[\PleskExt\Xovi\Tasks::STATUS_SKIPPED]) ?>"); } else if (status === "<?php echo \PleskExt\Xovi\Tasks::STATUS_TODO; ?>") { $taskRow.removeClassName('task-done'); taskStatusCol.update('<?php echo $openStatus; ?>'); changeKpiProgress('open', $taskRow.getAttribute('data-state')); $taskRow.setAttribute('data-state', "<?= str_replace('tasks.', '', \PleskExt\Xovi\Tasks::$status_name[\PleskExt\Xovi\Tasks::STATUS_TODO]) ?>"); } else { $taskRow.addClassName('task-done'); taskStatusCol.update('<?php echo $doneStatus; ?>'); changeKpiProgress('done', $taskRow.getAttribute('data-state')); $taskRow.setAttribute('data-state', "<?= str_replace('tasks.', '', \PleskExt\Xovi\Tasks::$status_name[\PleskExt\Xovi\Tasks::STATUS_DONE]) ?>"); } $$('.changeStatus').each(function (s) { Event.observe(s, 'click', function (event) { TaskEvent(event, this); }); }); } else { taskStatusCol.update(<?php echo $this->jsEscape(pm_Locale::lmsg('tasks.status.error')); ?>); } }, onFailure: function (response) { $$('div.task-status[data-id="' + taskId + '"]').update(<?php echo $this->jsEscape(pm_Locale::lmsg('tasks.status.error')); ?>); } }); } function changeKpiProgress(name, oldState) { var progressTotal = $$('div.task-bar-inline').first().getWidth(), progressOne = progressTotal / totalTasks, progressOnePerc = progressOne / progressTotal * 100, progressCurrent = parseInt($$('span.count-' + name).first().innerHTML), progressCurrentPerc = progressCurrent * progressOne / progressTotal * 100, progressCurrentLimitPerc = 100 - progressCurrentPerc, progressOld = parseInt($$('span.count-' + oldState).first().innerHTML), progressOldPerc = progressOld * progressOne / progressTotal * 100, progressOldLimitPerc = 100 - progressOldPerc; $$('div.task-bar-progress.' + name).first().setStyle( { width: getProgressWidth(progressCurrentPerc, '+') } ); $$('div.task-bar-progress.limit.' + name).first().setStyle( { width: getProgressWidth(progressCurrentLimitPerc, '-') } ); $$('span.count-' + name).first().update(progressCurrent + 1); $$('div.task-bar-progress.' + oldState).first().setStyle( { width: getProgressWidth(progressOldPerc, '-') } ); $$('div.task-bar-progress.limit.' + oldState).first().setStyle( { width: getProgressWidth(progressOldLimitPerc, '+') } ); $$('span.count-' + oldState).first().update(progressOld - 1); function getProgressWidth(progress, action) { var total; if (action === '+') { total = progress + progressOnePerc; return (total > 100 ? 100 : total) + '%'; } total = progress - progressOnePerc; return (total < 0 ? 0 : total) + '%'; } } <?php echo 'var activityChartData = ' . ((is_array($this->activityChart) and count($this->activityChart)) ? json_encode($this->activityChart) : 'null') . ';'; ?> if (typeof activityChartData === 'object' && activityChartData !== null) { nv.addGraph(function () { var count = activityChartData.length, width = 500; if (count > 3 && count < 11) { width = count * 100 + 200; } else if (count > 10) { width = ''; } var chart = nv.models.multiBarChart() .width(width) .groupSpacing(count == 2 ? .5 : (count > 2 && count < 6 ? (.5 - count / 10) + .2 : .1)) .staggerLabels(true); chart.yAxis .axisLabel('<?= $this->lmsg('tasks'); ?>'); chart.yAxis.tickFormat(d3.format(',d')); chart.color(['#f78d56', '#419D54', '#ccc']); chart.multibar.stacked(true); chart.showControls(false); d3.select('#chart svg') .datum(activityChartData.data) .transition().duration(500).call(chart); nv.utils.windowResize(chart.update); return chart; }); } </script>