/concrete/tools/pages/permissions.php

https://bitbucket.org/selfeky/xclusivescardwebsite · PHP · 268 lines · 213 code · 55 blank · 0 comment · 48 complexity · 9191bb26c65c1d0053c6fcd4d1904028 MD5 · raw file

  1. <?php
  2. defined('C5_EXECUTE') or die("Access Denied.");
  3. $u = new User();
  4. $form = Loader::helper('form');
  5. $sh = Loader::helper('concrete/dashboard/sitemap');
  6. if (!$sh->canRead()) {
  7. die(t('Access Denied'));
  8. }
  9. $form = Loader::helper('form');
  10. $pages = array();
  11. if (is_array($_REQUEST['cID'])) {
  12. foreach($_REQUEST['cID'] as $cID) {
  13. $pages[] = Page::getByID($cID);
  14. }
  15. } else {
  16. $pages[] = Page::getByID($_REQUEST['cID']);
  17. }
  18. $pcnt = 0;
  19. $cIDStr = '';
  20. foreach($pages as $c) {
  21. $cp = new Permissions($c);
  22. if ($cp->canEditPagePermissions()) {
  23. $cIDStr .= '&cID[]=' . $c->getCollectionID();
  24. $pcnt++;
  25. }
  26. }
  27. $searchInstance = Loader::helper('text')->entities($_REQUEST['searchInstance']);
  28. ?>
  29. <div class="ccm-ui">
  30. <?php if ($pcnt == 0) { ?>
  31. <?php echo t("You do not have permission to change permissions on any of the selected pages."); ?>
  32. <?php } else {
  33. $dh = Loader::helper('date');
  34. $dt = Loader::helper('form/date_time');
  35. $editPermissions = true;
  36. $permissionsInherit = array();
  37. foreach($pages as $_c) {
  38. $permissionsInherit[] = $_c->getCollectionInheritance();
  39. $permissionsSubpageOverride[] = $_c->overrideTemplatePermissions();
  40. }
  41. $permissionsInherit = array_unique($permissionsInherit);
  42. $permissionsSubpageOverride = array_unique($permissionsSubpageOverride);
  43. if (count($permissionsInherit) == 1) {
  44. $permissionsInherit = $permissionsInherit[0];
  45. } else {
  46. $permissionsInherit = '-1';
  47. }
  48. if (count($permissionsSubpageOverride) == 1) {
  49. $permissionsSubpageOverride = $permissionsSubpageOverride[0];
  50. } else {
  51. $permissionsSubpageOverride = '-1';
  52. }
  53. if ($_REQUEST['subtask'] == 'set' && $permissionsInherit == 'OVERRIDE') { ?>
  54. <?php
  55. $pk = PagePermissionKey::getByID($_REQUEST['pkID']);
  56. $pk->setPermissionObject($pages[0]);
  57. $pk->setMultiplePageArray($pages);
  58. ?>
  59. <?php Loader::element("permission/detail", array('permissionKey' => $pk)); ?>
  60. <script type="text/javascript">
  61. var ccm_permissionDialogURL = '<?php echo REL_DIR_FILES_TOOLS_REQUIRED?>/pages/permissions?subtask=set<?php echo $cIDStr?>';
  62. </script>
  63. <?php } else { ?>
  64. <form>
  65. <div class="ccm-pane-options" style="padding-bottom: 0px">
  66. <div class="clearfix">
  67. <label for="ccm-page-permissions-inherit"><?php echo t('Assign Permissions')?></label>
  68. <div class="input">
  69. <select id="ccm-page-permissions-inherit" style="width: 220px">
  70. <?php if ($permissionsInherit == '-1') { ?> <option value="-1" selected><?php echo t('** Multiple Settings')?></option><?php } ?>
  71. <option value="PARENT" <?php if ($permissionsInherit == 'PARENT') { ?>selected<?php } ?>><?php echo t('By Area of Site (Hierarchy)')?></option>
  72. <option value="TEMPLATE" <?php if ($permissionsInherit == 'TEMPLATE') { ?>selected<?php } ?>><?php echo t('From Page Type Defaults')?></option>
  73. <option value="OVERRIDE" <?php if ($permissionsInherit == 'OVERRIDE') { ?>selected<?php } ?>><?php echo t('Manually')?></option>
  74. </select>
  75. </div>
  76. </div>
  77. <div class="clearfix">
  78. <label for="ccm-page-permissions-subpages-override-template-permissions"><?php echo t('Subpage Permissions')?></label>
  79. <div class="input">
  80. <select id="ccm-page-permissions-subpages-override-template-permissions" style="width: 260px">
  81. <?php if ($permissionsSubpageOverride == '-1') { ?><option value="-1" selected><?php echo t('** Multiple Settings')?></option><?php } ?>
  82. <option value="0" <?php if ($permissionsSubpageOverride == '0') { ?>selected<?php } ?>><?php echo t('Inherit page type default permissions.')?></option>
  83. <option value="1" <?php if ($permissionsSubpageOverride == '1') { ?>selected<?php } ?>><?php echo t('Inherit the permissions of this page.')?></option>
  84. </select>
  85. </div>
  86. </div>
  87. </div>
  88. </form>
  89. <br/>
  90. <?php if ($permissionsInherit == 'OVERRIDE') { ?>
  91. <?php echo Loader::element('permission/help');?>
  92. <?php $cat = PermissionKeyCategory::getByHandle('page'); ?>
  93. <form method="post" id="ccm-permission-list-form" action="<?php echo $cat->getToolsURL("save_permission_assignments")?><?php echo $cIDStr?>">
  94. <table class="ccm-permission-grid">
  95. <?php
  96. $permissions = PermissionKey::getList('page');
  97. foreach($permissions as $pk) {
  98. $pk->setPermissionObject($c);
  99. ?>
  100. <tr>
  101. <td class="ccm-permission-grid-name" id="ccm-permission-grid-name-<?php echo $pk->getPermissionKeyID()?>"><strong><?php if ($editPermissions) { ?><a dialog-title="<?php echo tc('PermissionKeyName', $pk->getPermissionKeyName())?>" data-pkID="<?php echo $pk->getPermissionKeyID()?>" data-paID="<?php echo $pk->getPermissionAccessID()?>" onclick="ccm_permissionLaunchDialog(this)" href="javascript:void(0)"><?php } ?><?php echo tc('PermissionKeyName', $pk->getPermissionKeyName())?><?php if ($editPermissions) { ?></a><?php } ?></strong></td>
  102. <td id="ccm-permission-grid-cell-<?php echo $pk->getPermissionKeyID()?>" <?php if ($editPermissions) { ?>class="ccm-permission-grid-cell"<?php } ?>><?php echo Loader::element('permission/labels', array('pk' => $pk))?></td>
  103. </tr>
  104. <?php } ?>
  105. </table>
  106. </form>
  107. <script type="text/javascript">
  108. ccm_permissionLaunchDialog = function(link) {
  109. jQuery.fn.dialog.open({
  110. title: $(link).attr('dialog-title'),
  111. href: '<?php echo REL_DIR_FILES_TOOLS_REQUIRED?>/pages/permissions?subtask=set<?php echo $cIDStr?>&pkID=' + $(link).attr('data-pkID') + '&paID=' + $(link).attr('data-paID'),
  112. modal: false,
  113. width: 500,
  114. height: 380
  115. });
  116. }
  117. </script>
  118. <?php if ($editPermissions) { ?>
  119. <div class="dialog-buttons">
  120. <a href="javascript:void(0)" onclick="jQuery.fn.dialog.closeTop()" class="btn"><?php echo t('Cancel')?></a>
  121. <button onclick="$('#ccm-permission-list-form').submit()" class="btn primary ccm-button-right"><?php echo t('Save')?> <i class="icon-ok-sign icon-white"></i></button>
  122. </div>
  123. <?php } ?>
  124. <?php } else { ?>
  125. <?php $pkl = PermissionKey::getList('page'); $pk = $pkl[0];?>
  126. <p><?php echo t('You may only set specific permissions for pages if they are set to override defaults or their parent pages.')?></p>
  127. <?php } ?>
  128. <div id="ccm-page-permissions-confirm-dialog" style="display: none">
  129. <?php echo t('Changing this setting will affect this page immediately. Are you sure?')?>
  130. <div id="dialog-buttons-start">
  131. <input type="button" class="btn" value="<?php echo t('Cancel')?>" onclick="jQuery.fn.dialog.closeTop()" />
  132. <input type="button" class="btn error ccm-button-right" value="<?php echo t('Ok')?>" onclick="ccm_pagePermissionsConfirmInheritanceChange()" />
  133. </div>
  134. </div>
  135. <?php $pk->setPermissionObject($pages[0]); ?>
  136. <?php $pk->setMultiplePageArray($pages); ?>
  137. <script type="text/javascript">
  138. var inheritanceVal = '';
  139. ccm_pagePermissionsCancelInheritance = function() {
  140. $('#ccm-page-permissions-inherit').val(inheritanceVal);
  141. }
  142. ccm_pagePermissionsConfirmInheritanceChange = function() {
  143. jQuery.fn.dialog.showLoader();
  144. $.getJSON('<?php echo $pk->getPermissionAssignmentObject()->getPermissionKeyToolsURL("change_permission_inheritance")?>&mode=' + $('#ccm-page-permissions-inherit').val(), function(r) {
  145. if (r.deferred) {
  146. jQuery.fn.dialog.closeAll();
  147. jQuery.fn.dialog.hideLoader();
  148. ccmAlert.hud(ccmi18n.setPermissionsDeferredMsg, 2000, 'success', ccmi18n_sitemap.setPagePermissions);
  149. } else {
  150. jQuery.fn.dialog.closeTop();
  151. ccm_refreshPagePermissions();
  152. }
  153. });
  154. }
  155. $(function() {
  156. $('#ccm-permission-list-form').ajaxForm({
  157. dataType: 'json',
  158. beforeSubmit: function() {
  159. jQuery.fn.dialog.showLoader();
  160. },
  161. success: function(r) {
  162. jQuery.fn.dialog.hideLoader();
  163. jQuery.fn.dialog.closeTop();
  164. if (!r.deferred) {
  165. ccmAlert.hud(ccmi18n_sitemap.setPagePermissionsMsg, 2000, 'success', ccmi18n_sitemap.setPagePermissions);
  166. } else {
  167. jQuery.fn.dialog.closeTop();
  168. ccmAlert.hud(ccmi18n.setPermissionsDeferredMsg, 2000, 'success', ccmi18n_sitemap.setPagePermissions);
  169. }
  170. }
  171. });
  172. inheritanceVal = $('#ccm-page-permissions-inherit').val();
  173. $('#ccm-page-permissions-inherit').change(function() {
  174. if ($(this).val() == '-1') {
  175. ccm_pagePermissionsCancelInheritance();
  176. } else {
  177. $('#dialog-buttons-start').addClass('dialog-buttons');
  178. jQuery.fn.dialog.open({
  179. element: '#ccm-page-permissions-confirm-dialog',
  180. title: '<?php echo t("Confirm Change")?>',
  181. width: 280,
  182. height: 100,
  183. onClose: function() {
  184. ccm_pagePermissionsCancelInheritance();
  185. }
  186. });
  187. }
  188. });
  189. $('#ccm-page-permissions-subpages-override-template-permissions').change(function() {
  190. jQuery.fn.dialog.showLoader();
  191. $.getJSON('<?php echo $pk->getPermissionAssignmentObject()->getPermissionKeyToolsURL("change_subpage_defaults_inheritance")?>&inherit=' + $(this).val(), function(r) {
  192. if (r.deferred) {
  193. jQuery.fn.dialog.closeTop();
  194. jQuery.fn.dialog.hideLoader();
  195. ccmAlert.hud(ccmi18n.setPermissionsDeferredMsg, 2000, 'success', ccmi18n_sitemap.setPagePermissions);
  196. } else {
  197. ccm_refreshPagePermissions();
  198. }
  199. });
  200. });
  201. });
  202. ccm_refreshPagePermissions = function() {
  203. jQuery.fn.dialog.showLoader();
  204. $.get('<?php echo REL_DIR_FILES_TOOLS_REQUIRED?>/pages/permissions?foo=1<?php echo $cIDStr?>', function(r) {
  205. jQuery.fn.dialog.replaceTop(r);
  206. jQuery.fn.dialog.hideLoader();
  207. });
  208. }
  209. </script>
  210. <?php }
  211. ?>
  212. </div>
  213. <?php } ?>