PageRenderTime 51ms CodeModel.GetById 18ms RepoModel.GetById 0ms app.codeStats 0ms

/concrete/single_pages/dashboard/pages/types/form.php

http://github.com/concrete5/concrete5
PHP | 253 lines | 223 code | 29 blank | 1 comment | 4 complexity | 7c546ceb85781dd1783fba8d33c7a7e4 MD5 | raw file
Possible License(s): MIT, LGPL-2.1, MPL-2.0-no-copyleft-exception, BSD-3-Clause
  1. <?php defined('C5_EXECUTE') or die("Access Denied.");
  2. use \Concrete\Core\Page\Type\Composer\FormLayoutSetControl as PageTypeComposerFormLayoutSetControl;
  3. ?>
  4. <div style="display: none">
  5. <div id="ccm-page-type-composer-add-set" class="ccm-ui">
  6. <form method="post" action="<?=$view->action('add_set', $pagetype->getPageTypeID())?>">
  7. <?=Loader::helper('validation/token')->output('add_set')?>
  8. <div class="form-group">
  9. <?=$form->label('ptComposerFormLayoutSetName', tc('Name of a set', 'Set Name'))?>
  10. <?=$form->text('ptComposerFormLayoutSetName')?>
  11. </div>
  12. <div class="form-group">
  13. <?=$form->label('ptComposerFormLayoutSetDescription', tc('Description of a set', 'Set Description'))?>
  14. <?=$form->textarea('ptComposerFormLayoutSetDescription')?>
  15. </div>
  16. </form>
  17. <div class="dialog-buttons">
  18. <button class="btn btn-default pull-left" onclick="jQuery.fn.dialog.closeTop()"><?=t('Cancel')?></button>
  19. <button class="btn btn-primary pull-right" onclick="$('#ccm-page-type-composer-add-set form').submit()"><?=t('Add Set')?></button>
  20. </div>
  21. </div>
  22. </div>
  23. <div class="ccm-dashboard-header-buttons btn-group">
  24. <a href="#" data-dialog="add_set" class="btn btn-default"><?=t('Add Set')?></a>
  25. <a href="<?=URL::to('/dashboard/pages/types')?>" class="btn btn-default"><?=t('Back to List')?></a>
  26. </div>
  27. <div class="ccm-pane-body ccm-pane-body-footer">
  28. <p class="lead"><?php echo $pagetype->getPageTypeDisplayName(); ?></p>
  29. <?php if (count($sets) > 0) {
  30. /* @var $set Concrete\Core\Page\Type\Composer\FormLayoutSet */
  31. foreach ($sets as $set) {
  32. ?>
  33. <div class="ccm-item-set panel panel-default" data-page-type-composer-form-layout-control-set-id="<?= $set->getPageTypeComposerFormLayoutSetID()?>">
  34. <div class="panel-heading">
  35. <ul class="ccm-item-set-controls">
  36. <li><a href="<?=REL_DIR_FILES_TOOLS_REQUIRED?>/page_types/composer/form/add_control?ptComposerFormLayoutSetID=<?=$set->getPageTypeComposerFormLayoutSetID()?>" dialog-title="<?=t('Add Form Control')?>" dialog-width="640" dialog-height="400" data-command="add-form-set-control"><i class="fa fa-plus"></i></a></li>
  37. <li><a href="#" data-command="move_set" style="cursor: move"><i class="fa fa-arrows"></i></a></li>
  38. <li><a href="#" data-edit-set="<?=$set->getPageTypeComposerFormLayoutSetID()?>"><i class="fa fa-pencil"></i></a></li>
  39. <li><a href="#" data-delete-set="<?=$set->getPageTypeComposerFormLayoutSetID()?>"><i class="fa fa-trash-o"></i></a></li>
  40. </ul>
  41. <div class="ccm-item-set-name" ><?php
  42. if ($set->getPageTypeComposerFormLayoutSetDisplayName()) {
  43. echo $set->getPageTypeComposerFormLayoutSetDisplayName();
  44. } else {
  45. echo t('(No Name)');
  46. }
  47. ?></div>
  48. </div>
  49. <div style="display: none">
  50. <div data-delete-set-dialog="<?=$set->getPageTypeComposerFormLayoutSetID()?>">
  51. <form data-delete-set-form="<?=$set->getPageTypeComposerFormLayoutSetID()?>" action="<?=$view->action('delete_set', $set->getPageTypeComposerFormLayoutSetID())?>" method="post">
  52. <?=t("Delete this form layout set? This cannot be undone.")?>
  53. <?=Loader::helper('validation/token')->output('delete_set')?>
  54. </form>
  55. <div class="dialog-buttons">
  56. <button class="btn btn-default pull-left" onclick="jQuery.fn.dialog.closeTop()"><?=t('Cancel')?></button>
  57. <button class="btn btn-danger pull-right" onclick="$('form[data-delete-set-form=<?=$set->getPageTypeComposerFormLayoutSetID()?>]').submit();"><?=t('Delete Set')?></button>
  58. </div>
  59. </div>
  60. </div>
  61. <div style="display: none">
  62. <div data-edit-set-dialog="<?=$set->getPageTypeComposerFormLayoutSetID()?>" class="ccm-ui">
  63. <form data-edit-set-form="<?=$set->getPageTypeComposerFormLayoutSetID()?>" action="<?=$view->action('update_set', $set->getPageTypeComposerFormLayoutSetID())?>" method="post">
  64. <div class="form-group">
  65. <?=$form->label('ptComposerFormLayoutSetName', tc('Name of a set', 'Set Name'))?>
  66. <?=$form->text('ptComposerFormLayoutSetName', $set->getPageTypeComposerFormLayoutSetName())?>
  67. </div>
  68. <div class="form-group">
  69. <?=$form->label('ptComposerFormLayoutSetDescription', tc('Description of a set', 'Set Description'))?>
  70. <?=$form->textarea('ptComposerFormLayoutSetDescription', $set->getPageTypeComposerFormLayoutSetDescription())?>
  71. </div>
  72. <div class="dialog-buttons">
  73. <button class="btn btn-default pull-left" onclick="jQuery.fn.dialog.closeTop()"><?=t('Cancel')?></button>
  74. <button class="btn btn-primary pull-right" onclick="$('form[data-edit-set-form=<?=$set->getPageTypeComposerFormLayoutSetID()?>]').submit();"><?=t('Update Set')?></button>
  75. </div>
  76. <?=Loader::helper('validation/token')->output('update_set')?>
  77. </form>
  78. </div>
  79. </div>
  80. <table class="table table-hover" style="width: 100%;">
  81. <tbody class="ccm-item-set-inner">
  82. <?php $controls = PageTypeComposerFormLayoutSetControl::getList($set);
  83. foreach ($controls as $cnt) {
  84. echo Loader::element('page_types/composer/form/layout_set/control', array('control' => $cnt));
  85. }
  86. ?>
  87. </tbody>
  88. </table>
  89. </div>
  90. <?php
  91. }
  92. ?>
  93. <?php
  94. } else {
  95. ?>
  96. <p><?=t('You have not added any composer form layout control sets.')?></p>
  97. <?php
  98. } ?>
  99. </div>
  100. <script type="text/javascript">
  101. var Composer = {
  102. deleteFromLayoutSetControl: function(ptComposerFormLayoutSetControlID) {
  103. jQuery.fn.dialog.showLoader();
  104. var formData = [{
  105. 'name': 'token',
  106. 'value': '<?=Loader::helper("validation/token")->generate("delete_set_control")?>'
  107. }, {
  108. 'name': 'ptComposerFormLayoutSetControlID',
  109. 'value': ptComposerFormLayoutSetControlID
  110. }];
  111. $.ajax({
  112. type: 'post',
  113. data: formData,
  114. url: '<?=$view->action("delete_set_control")?>',
  115. success: function() {
  116. jQuery.fn.dialog.hideLoader();
  117. jQuery.fn.dialog.closeAll();
  118. $('tr[data-page-type-composer-form-layout-control-set-control-id=' + ptComposerFormLayoutSetControlID + ']').remove();
  119. }
  120. });
  121. }
  122. }
  123. $(function() {
  124. $('a[data-dialog=add_set]').on('click', function() {
  125. jQuery.fn.dialog.open({
  126. element: '#ccm-page-type-composer-add-set',
  127. modal: true,
  128. width: 320,
  129. title: '<?=t("Add Control Set")?>',
  130. height: 'auto'
  131. });
  132. });
  133. $('a[data-delete-set]').on('click', function() {
  134. var ptComposerFormLayoutSetID = $(this).attr('data-delete-set');
  135. jQuery.fn.dialog.open({
  136. element: 'div[data-delete-set-dialog=' + ptComposerFormLayoutSetID + ']',
  137. modal: true,
  138. width: 320,
  139. title: '<?=t("Delete Control Set")?>',
  140. height: 'auto'
  141. });
  142. });
  143. $('a[data-edit-set]').on('click', function() {
  144. var ptComposerFormLayoutSetID = $(this).attr('data-edit-set');
  145. jQuery.fn.dialog.open({
  146. element: 'div[data-edit-set-dialog=' + ptComposerFormLayoutSetID + ']',
  147. modal: true,
  148. width: 320,
  149. title: '<?=t("Update Control Set")?>',
  150. height: 'auto'
  151. });
  152. });
  153. $('div.ccm-pane-body').sortable({
  154. handle: 'a[data-command=move_set]',
  155. items: '.ccm-item-set',
  156. cursor: 'move',
  157. axis: 'y',
  158. stop: function() {
  159. var formData = [{
  160. 'name': 'token',
  161. 'value': '<?=Loader::helper("validation/token")->generate("update_set_display_order")?>'
  162. }, {
  163. 'name': 'ptID',
  164. 'value': <?=$pagetype->getPageTypeID()?>
  165. }];
  166. $('.ccm-item-set').each(function() {
  167. formData.push({'name': 'ptComposerFormLayoutSetID[]', 'value': $(this).attr('data-page-type-composer-form-layout-control-set-id')});
  168. });
  169. $.ajax({
  170. type: 'post',
  171. data: formData,
  172. url: '<?=$view->action("update_set_display_order")?>',
  173. success: function() {
  174. }
  175. });
  176. }
  177. });
  178. $('a[data-command=add-form-set-control]').dialog();
  179. $('a[data-command=edit-form-set-control]').dialog();
  180. $('.ccm-item-set-inner').sortable({
  181. handle: 'a[data-command=move-set-control]',
  182. items: '.ccm-item-set-control',
  183. cursor: 'move',
  184. axis: 'y',
  185. helper: function(e, ui) { // prevent table columns from collapsing
  186. ui.addClass('active');
  187. ui.children().each(function () {
  188. $(this).width($(this).width());
  189. });
  190. return ui;
  191. },
  192. stop: function(e, ui) {
  193. ui.item.removeClass('active');
  194. var formData = [{
  195. 'name': 'token',
  196. 'value': '<?=Loader::helper("validation/token")->generate("update_set_control_display_order")?>'
  197. }, {
  198. 'name': 'ptComposerFormLayoutSetID',
  199. 'value': $(this).parent().parent().attr('data-page-type-composer-form-layout-control-set-id')
  200. }];
  201. $(this).find('.ccm-item-set-control').each(function() {
  202. formData.push({'name': 'ptComposerFormLayoutSetControlID[]', 'value': $(this).attr('data-page-type-composer-form-layout-control-set-control-id')});
  203. });
  204. $.ajax({
  205. type: 'post',
  206. data: formData,
  207. url: '<?=$view->action("update_set_control_display_order")?>',
  208. success: function() {}
  209. });
  210. }
  211. });
  212. $('.ccm-item-set-inner').on('click', 'a[data-delete-set-control]', function() {
  213. var ptComposerFormLayoutSetControlID = $(this).attr('data-delete-set-control');
  214. jQuery.fn.dialog.open({
  215. element: 'div[data-delete-set-control-dialog=' + ptComposerFormLayoutSetControlID + ']',
  216. modal: true,
  217. width: 320,
  218. title: '<?=t("Delete Control")?>',
  219. height: 'auto'
  220. });
  221. return false;
  222. });
  223. });
  224. </script>