/manager/controllers/default/element/snippet/update.php

https://github.com/gbds/revolution · PHP · 89 lines · 66 code · 10 blank · 13 comment · 10 complexity · 35b1dcefd0c6ec3c3e5faa19bc6e6141 MD5 · raw file

  1. <?php
  2. /**
  3. * Load update snippet page
  4. *
  5. * @package modx
  6. * @subpackage manager.element.snippet
  7. */
  8. if(!$modx->hasPermission('edit_snippet')) return $modx->error->failure($modx->lexicon('access_denied'));
  9. /* get snippet */
  10. $snippet = $modx->getObject('modSnippet',$_REQUEST['id']);
  11. if ($snippet == null) return $modx->error->failure($modx->lexicon('snippet_err_nf'));
  12. if (!$snippet->checkPolicy('view')) return $modx->error->failure($modx->lexicon('access_denied'));
  13. if ($snippet->get('locked') && !$modx->hasPermission('edit_locked')) {
  14. return $modx->error->failure($modx->lexicon('snippet_err_locked'));
  15. }
  16. /* invoke onSnipFormRender event */
  17. $onSnipFormRender = $modx->invokeEvent('OnSnipFormRender',array(
  18. 'id' => $snippet->get('id'),
  19. 'snippet' => &$snippet,
  20. 'mode' => modSystemEvent::MODE_UPD,
  21. ));
  22. if (is_array($onSnipFormRender)) $onSnipFormRender = implode('',$onSnipFormRender);
  23. $onSnipFormRender = str_replace(array('"',"\n","\r"),array('\"','',''),$onSnipFormRender);
  24. $modx->smarty->assign('onSnipFormRender',$onSnipFormRender);
  25. /* get properties */
  26. $properties = $snippet->get('properties');
  27. if (!is_array($properties)) $properties = array();
  28. $data = array();
  29. foreach ($properties as $property) {
  30. $data[] = array(
  31. $property['name'],
  32. $property['desc'],
  33. $property['type'],
  34. $property['options'],
  35. $property['value'],
  36. $property['lexicon'],
  37. false, /* overridden set to false */
  38. $property['desc_trans'],
  39. );
  40. }
  41. $snippetArray = $snippet->toArray();
  42. $snippetArray['properties'] = $data;
  43. if (strpos($snippetArray['snippet'],'<?php') === false) {
  44. $snippetArray['snippet'] = "<?php\n".$snippetArray['snippet'];
  45. }
  46. /* check unlock default element properties permission */
  47. $unlock_element_properties = $modx->hasPermission('unlock_element_properties') ? 1 : 0;
  48. /* register JS scripts */
  49. $modx->regClientStartupScript($modx->getOption('manager_url').'assets/modext/widgets/core/modx.grid.local.property.js');
  50. $modx->regClientStartupScript($modx->getOption('manager_url').'assets/modext/widgets/element/modx.grid.element.properties.js');
  51. $modx->regClientStartupScript($modx->getOption('manager_url').'assets/modext/widgets/element/modx.panel.snippet.js');
  52. $modx->regClientStartupScript($modx->getOption('manager_url').'assets/modext/sections/element/snippet/update.js');
  53. $modx->regClientStartupHTMLBlock('
  54. <script type="text/javascript">
  55. // <![CDATA[
  56. Ext.onReady(function() {
  57. MODx.load({
  58. xtype: "modx-page-snippet-update"
  59. ,snippet: "'.$snippet->get('id').'"
  60. ,record: '.$modx->toJSON($snippetArray).'
  61. });
  62. });
  63. MODx.onSnipFormRender = "'.$onSnipFormRender.'";
  64. MODx.perm.unlock_element_properties = "'.$unlock_element_properties.'";
  65. // ]]>
  66. </script>');
  67. /* invoke OnSnipFormPrerender event */
  68. $onSnipFormPrerender = $modx->invokeEvent('OnSnipFormPrerender',array(
  69. 'id' => $snippet->get('id'),
  70. 'snippet' => &$snippet,
  71. 'mode' => modSystemEvent::MODE_UPD,
  72. ));
  73. if (is_array($onSnipFormPrerender)) $onSnipFormPrerender = implode('',$onSnipFormPrerender);
  74. $modx->smarty->assign('onSnipFormPrerender',$onSnipFormPrerender);
  75. /* assign snippet to parser and display template */
  76. $modx->smarty->assign('snippet',$snippet);
  77. $modx->smarty->assign('_pagetitle',$modx->lexicon('snippet').': '.$snippet->get('name'));
  78. $this->checkFormCustomizationRules($snippet);
  79. return $modx->smarty->fetch('element/snippet/update.tpl');