create.class.php 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. <?php
  2. /**
  3. * Load create template page
  4. *
  5. * @package modx
  6. * @subpackage manager.controllers
  7. */
  8. class ElementTemplateCreateManagerController extends modManagerController {
  9. public $category;
  10. public $onTempFormRender = '';
  11. public $onTempFormPrerender = '';
  12. /**
  13. * Check for any permissions or requirements to load page
  14. * @return bool
  15. */
  16. public function checkPermissions() {
  17. return $this->modx->hasPermission('new_template');
  18. }
  19. /**
  20. * Register custom CSS/JS for the page
  21. * @return void
  22. */
  23. public function loadCustomCssJs() {
  24. $mgrUrl = $this->modx->getOption('manager_url',null,MODX_MANAGER_URL);
  25. $this->addJavascript($mgrUrl.'assets/modext/widgets/core/modx.grid.local.property.js');
  26. $this->addJavascript($mgrUrl.'assets/modext/widgets/element/modx.grid.element.properties.js');
  27. $this->addJavascript($mgrUrl.'assets/modext/widgets/element/modx.grid.template.tv.js');
  28. $this->addJavascript($mgrUrl.'assets/modext/widgets/element/modx.panel.template.js');
  29. $this->addJavascript($mgrUrl.'assets/modext/sections/element/template/create.js');
  30. $this->addHtml('
  31. <script type="text/javascript">
  32. // <![CDATA[
  33. MODx.onTempFormRender = "'.$this->onTempFormRender.'";
  34. MODx.perm.unlock_element_properties = "'.($this->modx->hasPermission('unlock_element_properties') ? 1 : 0).'";
  35. Ext.onReady(function() {
  36. MODx.load({
  37. xtype: "modx-page-template-create"
  38. ,record: {
  39. category: "'.($this->category ? $this->category->get('id') : 0).'"
  40. }
  41. });
  42. });
  43. // ]]>
  44. </script>');
  45. }
  46. /**
  47. * Custom logic code here for setting placeholders, etc
  48. * @param array $scriptProperties
  49. * @return mixed
  50. */
  51. public function process(array $scriptProperties = array()) {
  52. $placeholders = array();
  53. /* grab category if preset */
  54. if (isset($scriptProperties['category'])) {
  55. $this->category = $this->modx->getObject('modCategory',$scriptProperties['category']);
  56. if ($this->category != null) {
  57. $placeholders['category'] = $this->category;
  58. }
  59. }
  60. /* invoke OnTempFormRender event */
  61. $placeholders['onTempFormRender'] = $this->fireRenderEvent();
  62. return $placeholders;
  63. }
  64. /**
  65. * Invoke OnTempFormPrerender event
  66. * @return void
  67. */
  68. public function firePreRenderEvents() {
  69. /* PreRender events inject directly into the HTML, as opposed to the JS-based Render event which injects HTML
  70. into the panel */
  71. $this->onTempFormPrerender = $this->modx->invokeEvent('OnTempFormPrerender',array(
  72. 'id' => 0,
  73. 'mode' => modSystemEvent::MODE_NEW,
  74. ));
  75. if (is_array($this->onTempFormPrerender)) $this->onTempFormPrerender = implode('',$this->onTempFormPrerender);
  76. $this->setPlaceholder('onTempFormPrerender', $this->onTempFormPrerender);
  77. }
  78. /**
  79. * Invoke OnTempFormRender event
  80. * @return string
  81. */
  82. public function fireRenderEvent() {
  83. $this->onTempFormRender = $this->modx->invokeEvent('OnTempFormRender',array(
  84. 'id' => 0,
  85. 'mode' => modSystemEvent::MODE_NEW,
  86. ));
  87. if (is_array($this->onTempFormRender)) $this->onTempFormRender = implode('',$this->onTempFormRender);
  88. $this->onTempFormRender = str_replace(array('"',"\n","\r"),array('\"','',''),$this->onTempFormRender);
  89. return $this->onTempFormRender;
  90. }
  91. /**
  92. * Return the pagetitle
  93. *
  94. * @return string
  95. */
  96. public function getPageTitle() {
  97. return $this->modx->lexicon('template_new');
  98. }
  99. /**
  100. * Return the location of the template file
  101. * @return string
  102. */
  103. public function getTemplateFile() {
  104. return 'element/template/create.tpl';
  105. }
  106. /**
  107. * Specify the language topics to load
  108. * @return array
  109. */
  110. public function getLanguageTopics() {
  111. return array('template','category','propertyset','element','tv');
  112. }
  113. /**
  114. * Get the Help URL
  115. * @return string
  116. */
  117. public function getHelpUrl() {
  118. return 'Templates';
  119. }
  120. }