backupmodx.widget.php 3.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. <?php
  2. /**
  3. * BackupMODX Widget
  4. *
  5. * @package backupmodx
  6. * @subpackage widget
  7. */
  8. class modDashboardWidgetBackupModx extends modDashboardWidgetInterface
  9. {
  10. /**
  11. * @var BackupMODX
  12. */
  13. public $backupmodx;
  14. public $cssBlockClass = 'dashboard-block-quadro" id="dashboard-block-quadro';
  15. /**
  16. * Renders the content of the block in the appropriate size
  17. * @return string
  18. */
  19. public function process()
  20. {
  21. $output = $this->render();
  22. if (!empty($output)) {
  23. $widgetArray = $this->widget->toArray();
  24. $widgetArray['content'] = $output;
  25. $widgetArray['class'] = $this->cssBlockClass;
  26. $widgetArray['name_trans'] .= '<span class="quadro-widget-about" onclick="BackupMODX.about()"><img width="80" height="20" src="' . $this->backupmodx->getOption('assetsUrl') . 'img/mgr/quadro-small.png" srcset="' . $this->backupmodx->getOption('assetsUrl') . 'img/mgr/quadro-small@2x.png 2x" alt="Quadro"></span>';
  27. $output = $this->getFileChunk('dashboard/block.tpl', $widgetArray);
  28. $output = preg_replace('@\[\[(.[^\[\[]*?)\]\]@si', '', $output);
  29. $output = preg_replace('@\[\[(.[^\[\[]*?)\]\]@si', '', $output);
  30. }
  31. return $output;
  32. }
  33. /**
  34. * modDashboardWidgetBackupModx constructor.
  35. * @param xPDO $modx
  36. * @param modDashboardWidget $widget
  37. * @param modManagerController $controller
  38. */
  39. public function __construct(xPDO &$modx, modDashboardWidget &$widget, modManagerController &$controller)
  40. {
  41. parent::__construct($modx, $widget, $controller);
  42. $corePath = $this->modx->getOption('backupmodx.core_path', null, $this->modx->getOption('core_path') . 'components/backupmodx/');
  43. $this->backupmodx = $this->modx->getService('backupmodx', 'BackupMODX', $corePath . '/model/backupmodx/', array(
  44. 'core_path' => $corePath
  45. ));
  46. $this->controller->addLexiconTopic($this->widget->get('lexicon'));
  47. }
  48. /**
  49. * @return string
  50. */
  51. public function render()
  52. {
  53. $groups = $this->backupmodx->getOption('groups');
  54. if (strpos($groups, ',') !== false) {
  55. $groups = array_map('trim', explode(',', $groups));
  56. }
  57. if ($this->modx->user->isMember($groups)) {
  58. $this->controller->addLexiconTopic($this->widget->get('lexicon'));
  59. $assetsUrl = $this->backupmodx->getOption('assetsUrl');
  60. $jsUrl = $this->backupmodx->getOption('jsUrl') . 'mgr/';
  61. $jsSourceUrl = $assetsUrl . '../../../source/js/mgr/';
  62. $cssUrl = $this->backupmodx->getOption('cssUrl') . 'mgr/';
  63. $cssSourceUrl = $assetsUrl . '../../../source/css/mgr/';
  64. if ($this->backupmodx->getOption('debug') && ($this->backupmodx->getOption('assetsUrl') != MODX_ASSETS_URL . 'components/backupmodx/')) {
  65. $this->controller->addJavascript($jsSourceUrl . 'backupmodx.js?v=v' . $this->backupmodx->version);
  66. $this->controller->addJavascript($jsSourceUrl . 'helper/util.js?v=v' . $this->backupmodx->version);
  67. $this->controller->addCss($cssSourceUrl . 'backupmodx.css?v=v' . $this->backupmodx->version);
  68. } else {
  69. $this->controller->addJavascript($jsUrl . 'backupmodx.min.js?v=v' . $this->backupmodx->version);
  70. $this->controller->addCss($cssUrl . 'backupmodx.min.css?v=v' . $this->backupmodx->version);
  71. }
  72. $this->controller->addHtml('<script>Ext.onReady(function() {
  73. BackupMODX.config = ' . json_encode($this->backupmodx->options, JSON_PRETTY_PRINT) . ';
  74. });</script>');
  75. return $this->getFileChunk($this->backupmodx->getOption('templatesPath') . 'backupmodx.widget.tpl', array(
  76. 'backupmodx.assets_url' => $this->backupmodx->getOption('assetsUrl')
  77. ));
  78. } else {
  79. return '';
  80. }
  81. }
  82. }
  83. return 'modDashboardWidgetBackupModx';