20.include.cache.php 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. <?php
  2. /** @var array $scriptProperties */
  3. $path = $modx->getOption('admintools_core_path', null, $modx->getOption('core_path') . 'components/admintools/') . 'services/';
  4. /** @var AdminTools $AdminTools */
  5. $AdminTools = $modx->getService('admintools', 'AdminTools', $path);
  6. $elementType = null;
  7. if ($AdminTools instanceof AdminTools) {
  8. switch ($modx->event->name) {
  9. case 'OnManagerPageBeforeRender':
  10. if ($modx->user->id) $AdminTools->initialize();
  11. break;
  12. case 'OnManagerPageAfterRender':
  13. if ($AdminTools->isLocked()) {
  14. $controller->content = $modx->getChunk('tpl.lockScreen', [
  15. 'username' => $modx->user->username,
  16. 'photo' => $modx->user->getPhoto(),
  17. 'title' => $modx->getOption('site_name'),
  18. 'lang' => $modx->getOption('manager_language'),
  19. 'form_action' => $AdminTools->getOption('connectorUrl'),
  20. 'auth' => $modx->user->getUserToken('mgr'),
  21. 'assets_url' => MODX_ASSETS_URL,
  22. 'input_placeholder' => $AdminTools->getInputPlaceholder(),
  23. ]
  24. );
  25. }
  26. break;
  27. case 'OnDocFormSave':
  28. if ($modx->getOption('admintools_clear_only_resource_cache',null,false) && $modx->event->params['mode'] == modSystemEvent::MODE_UPD) {
  29. if ($resource->get('syncsite')) {
  30. $AdminTools->clearResourceCache($resource);
  31. }
  32. if (!empty($_POST['createCache'])) {
  33. $AdminTools->createResourceCache($resource->uri);
  34. }
  35. }
  36. break;
  37. case 'OnManagerPageInit':
  38. if (!$modx->user->isAuthenticated('mgr') && $modx->getOption('admintools_email_authorization', null, false)) {
  39. $id = (int) $modx->getOption('admintools_loginform_resource');
  40. if (!empty($id) && $modx->getCount('modResource', ['id' => $id, 'published' => 1, 'deleted' => 0])) {
  41. $url = $modx->makeUrl($id, '', '', 'full');
  42. $modx->setOption('manager_login_url_alternate', $url);
  43. }
  44. }
  45. break;
  46. case 'OnManagerAuthentication':
  47. if ($modx->getOption('admintools_user_can_login', null, false)) {
  48. $modx->setOption('admintools_user_can_login', false);
  49. $modx->event->output(true);
  50. }
  51. break;
  52. case 'OnLoadWebDocument':
  53. if ($modx->user->isAuthenticated($modx->context->get('key')) && (!$modx->user->active || $modx->user->Profile->blocked)) {
  54. $modx->runProcessor('security/logout');
  55. }
  56. if ($modx->getOption('admintools_alternative_permissions', null, false) && !$AdminTools->hasPermissions()){
  57. $modx->sendUnauthorizedPage();
  58. }
  59. break;
  60. case 'OnTempFormPrerender':
  61. if ($modx->getOption('admintools_template_resource_relationship', null, true)) {
  62. $modx->controller->addLastJavascript($AdminTools->getOption('jsUrl') . 'mgr/templates.js');
  63. }
  64. break;
  65. case 'OnDocFormPrerender':
  66. $_html = array();
  67. $output = '';
  68. if ($modx->getOption('admintools_template_resource_relationship', null, true)) {
  69. $_html['tpl_res_relationship'] = '
  70. var tmpl = Ext.getCmp("modx-resource-template");
  71. if (tmpl.getValue()) tmpl.label.update(_("resource_template") + "&nbsp;&nbsp;<a href=\"?a=element/template/update&id=" + tmpl.getValue() + "\"><i class=\"icon icon-external-link\"></i></a>");';
  72. }
  73. if ($modx->getOption('admintools_clear_only_resource_cache', null, true) && $modx->event->params['mode'] != modSystemEvent::MODE_NEW) {
  74. $_html['create_resource_cache'] = '
  75. var cb = Ext.create({
  76. xtype: "xcheckbox",
  77. boxLabel: _("admintools_create_resource_cache"),
  78. description: _("admintools_create_resource_cache_help"),
  79. hideLabel: true,
  80. name: "createCache",
  81. id: "createCache",
  82. checked: '. intval($modx->getOption('admintools_create_resource_cache', null, false)) .'
  83. });
  84. if (Ext.getCmp("modx-page-settings-right-box-right")) {
  85. Ext.getCmp("modx-page-settings-right-box-right").insert(2,cb);
  86. Ext.getCmp("modx-page-settings-right-box-left").add(Ext.getCmp("modx-resource-uri-override"));
  87. Ext.getCmp("modx-panel-resource").on("success", function(o){
  88. if (o.result.object.createCache != 0) {
  89. cb.setValue(true);
  90. }
  91. });
  92. }';
  93. }
  94. if (!empty($_html)) {
  95. $output .= '
  96. Ext.onReady(function() {
  97. setTimeout(function(){' . implode("\n", $_html) . '
  98. }, 200);
  99. });';
  100. }
  101. if ($modx->getOption('admintools_alternative_permissions', null, true) && $modx->hasPermission('access_permissions')) {
  102. $modx->controller->addLastJavascript($AdminTools->getOption('jsUrl') . 'mgr/permissions.js');
  103. $output .= '
  104. Ext.ComponentMgr.onAvailable("modx-resource-tabs", function() {
  105. this.on("beforerender", function() {
  106. this.add({
  107. title: _("admintools_permissions"),
  108. border: false,
  109. items: [{
  110. layout: "anchor",
  111. border: false,
  112. items: [{
  113. html: _("admintools_permissions_desc"),
  114. border: false,
  115. bodyCssClass: "panel-desc"
  116. }, {
  117. xtype: "admintools-grid-permissions",
  118. anchor: "100%",
  119. cls: "main-wrapper",
  120. resource: ' . $id . '
  121. }]
  122. }]
  123. });
  124. });
  125. });
  126. ';
  127. }
  128. if (!empty($output)) $modx->controller->addHtml('<script>' . $output . '</script>');
  129. break;
  130. case 'OnMODXInit':
  131. if ($modx->context->get('key') !== 'mgr') {
  132. if ( $modx->getOption('admintools_only_current_context_user', null, false)
  133. && $modx->user->isAuthenticated('mgr')
  134. && !$modx->user->isAuthenticated($modx->context->get('key')) ) {
  135. $modx->user = $modx->newObject('modUser');
  136. $modx->user->fromArray(array('id' => 0, 'username' => $modx->getOption('default_username', '', '(anonymous)', true)), '', true);
  137. }
  138. }
  139. break;
  140. }
  141. }
  142. return;