PageRenderTime 43ms CodeModel.GetById 17ms RepoModel.GetById 0ms app.codeStats 0ms

/concreteOLD/helpers/form/page_selector.php

https://bitbucket.org/selfeky/xclusivescardwebsite
PHP | 173 lines | 128 code | 11 blank | 34 comment | 19 complexity | 45c6523707a92159fafe13b50fe3b969 MD5 | raw file
  1. <?php
  2. /**
  3. * @package Helpers
  4. * @category Concrete
  5. * @subpackage Forms
  6. * @author Andrew Embler <andrew@concrete5.org>
  7. * @copyright Copyright (c) 2003-2008 Concrete5. (http://www.concrete5.org)
  8. * @license http://www.concrete5.org/license/ MIT License
  9. */
  10. /**
  11. * Special form elements for choosing a page from the concrete5 sitemap tool.
  12. * @package Helpers
  13. * @category Concrete
  14. * @subpackage Forms
  15. * @author Andrew Embler <andrew@concrete5.org>
  16. * @copyright Copyright (c) 2003-2008 Concrete5. (http://www.concrete5.org)
  17. * @license http://www.concrete5.org/license/ MIT License
  18. */
  19. defined('C5_EXECUTE') or die("Access Denied.");
  20. class FormPageSelectorHelper {
  21. /**
  22. * Creates form fields and JavaScript page chooser for choosing a page. For use with inclusion in blocks.
  23. * <code>
  24. * $dh->selectPage('pageID', '1'); // prints out the home page and makes it selectable.
  25. * </code>
  26. * @param int $cID
  27. */
  28. public function selectPage($fieldName, $cID = false, $javascriptFunc='ccm_selectSitemapNode') {
  29. $selectedCID = 0;
  30. if (isset($_REQUEST[$fieldName])) {
  31. $selectedCID = $_REQUEST[$fieldName];
  32. } else if ($cID > 0) {
  33. $selectedCID = $cID;
  34. }
  35. $html = '';
  36. $clearStyle = 'display: none';
  37. $html .= '<div class="ccm-summary-selected-item"><div class="ccm-summary-selected-item-inner"><strong class="ccm-summary-selected-item-label">';
  38. if ($selectedCID > 0) {
  39. $oc = Page::getByID($selectedCID);
  40. $html .= $oc->getCollectionName();
  41. $clearStyle = '';
  42. }
  43. $html .= '</strong></div>';
  44. $html .= '<a class="ccm-sitemap-select-page" dialog-sender="' . $fieldName . '" dialog-width="90%" dialog-height="70%" dialog-append-buttons="true" dialog-modal="false" dialog-title="' . t('Choose Page') . '" href="' . REL_DIR_FILES_TOOLS_REQUIRED . '/sitemap_search_selector.php?sitemap_select_mode=select_page&amp;cID=' . $selectedCID . '">' . t('Select Page') . '</a>';
  45. $html .= '&nbsp;<a href="javascript:void(0)" dialog-sender="' . $fieldName . '" class="ccm-sitemap-clear-selected-page" style="float: right; margin-top: -8px;' . $clearStyle . '"><img src="' . ASSETS_URL_IMAGES . '/icons/remove.png" style="vertical-align: middle; margin-left: 3px" /></a>';
  46. $html .= '<input type="hidden" name="' . $fieldName . '" value="' . $selectedCID . '"/>';
  47. $html .= '</div>';
  48. $html .= '<script type="text/javascript">
  49. var ccmActivePageField;
  50. function ccm_initSelectPage() {
  51. $("a.ccm-sitemap-select-page").unbind().dialog().click(function(){
  52. ccmActivePageField = this;
  53. });
  54. $("a.ccm-sitemap-clear-selected-page").unbind().click(function(){
  55. ccmActivePageField = this;
  56. clearPageSelection();
  57. });
  58. };
  59. function clearPageSelection() {
  60. var fieldName = $(ccmActivePageField).attr("dialog-sender");
  61. var par = $(ccmActivePageField).parent().find(\'.ccm-summary-selected-item-label\');
  62. $(ccmActivePageField).parent().find(\'.ccm-sitemap-clear-selected-page\').hide();
  63. var pari = $(ccmActivePageField).parent().find("[name=\'"+fieldName+"\']");
  64. console.log(pari);
  65. par.html("");
  66. pari.val("0");
  67. }
  68. $(ccm_initSelectPage);
  69. ccm_selectSitemapNode = function(cID, cName) { ';
  70. if($javascriptFunc=='' || $javascriptFunc=='ccm_selectSitemapNode'){
  71. $html .= '
  72. var fieldName = $(ccmActivePageField).attr("dialog-sender");
  73. var par = $(ccmActivePageField).parent().find(\'.ccm-summary-selected-item-label\');
  74. $(ccmActivePageField).parent().find(\'.ccm-sitemap-clear-selected-page\').show();
  75. var pari = $(ccmActivePageField).parent().find("[name=\'"+fieldName+"\']");
  76. par.html(cName);
  77. pari.val(cID);
  78. ';
  79. }else{
  80. $html .= $javascriptFunc."(cID, cName); \n";
  81. }
  82. $html .= "} \r\n </script>";
  83. return $html;
  84. }
  85. /* Embed a sitemap in javascript dialog. Supports the following args:
  86. * 'node_action' - path to script containing code to be execute when user clicks on a node in the sitemap
  87. * 'dialog_title' - dialog title
  88. * 'dialog_height' - dialog height (default: 350px)
  89. * 'dialog_width' - dialog width (default: 350px)
  90. * 'target_id' - id of the (hidden) field on the parent page that is to receive the CID of the chosen page
  91. * (do not include the '#')
  92. * (any other arguments the dashboard/sitemap element supports)
  93. */
  94. public function sitemap($args) {
  95. if (!isset($args['select_mode'])) {
  96. $args['select_mode'] = 'move_copy_delete';
  97. }
  98. if (empty($args['node_action'])) {
  99. $args['node_action'] = '<none>';
  100. }
  101. if (empty($args['display_mode'])) {
  102. $args['display_mode'] = 'full';
  103. }
  104. if (empty($args['instance_id'])) {
  105. $args['instance_id'] = time();
  106. }
  107. Loader::element('dashboard/sitemap', $args);
  108. }
  109. public function quickSelect($key, $cID = false, $args = array()) {
  110. $selectedCID = 0;
  111. if (isset($_REQUEST[$key])) {
  112. $selectedCID = $_REQUEST[$key];
  113. } else if ($cID > 0) {
  114. $selectedCID = $cID;
  115. }
  116. $cName = '';
  117. if ($selectedCID > 0) {
  118. $oc = Page::getByID($selectedCID);
  119. $cp = new Permissions($oc);
  120. if ($cp->canRead()) {
  121. $cName = $oc->getCollectionName();
  122. }
  123. }
  124. $form = Loader::helper('form');
  125. $valt = Loader::helper('validation/token');
  126. $token = $valt->generate('quick_page_select_' . $key);
  127. $html .= "
  128. <script type=\"text/javascript\">
  129. $(function () {
  130. $('#ccm-quick-page-selector-label-".$key."').autocomplete({
  131. select: function(e, ui) {
  132. $('#ccm-quick-page-selector-label-" . $key . "').val(ui.item.label);
  133. $('#ccm-quick-page-selector-value-" . $key . "').val(ui.item.value);
  134. return false;
  135. },
  136. open: function(e, ui) {
  137. //$('#ccm-quick-page-selector-label-" . $key . "').val('');
  138. $('#ccm-quick-page-selector-value-" . $key . "').val('');
  139. },
  140. focus: function(e, ui) {
  141. $('#ccm-quick-page-selector-label-" . $key . "').val(ui.item.label);
  142. return false;
  143. },
  144. source: '" . REL_DIR_FILES_TOOLS_REQUIRED . "/pages/autocomplete?key=" . $key . "&token=" . $token . "'
  145. });
  146. $('#ccm-quick-page-selector-label-" . $key . "').keydown(function(e) {
  147. if (e.keyCode == 13) {
  148. e.preventDefault();
  149. }
  150. }).change(function(e) {
  151. if ($('#ccm-quick-page-selector-label-" . $key . "').val() == '') {
  152. $('#ccm-quick-page-selector-value-" . $key . "').val('');
  153. }
  154. });
  155. $('#ccm-quick-page-selector-label-".$key."').autocomplete('widget').addClass('ccm-page-selector-autocomplete');
  156. } );
  157. </script>";
  158. $html .= '<input type="hidden" id="ccm-quick-page-selector-value-' . $key . '" name="' . $key . '" value="' . $selectedCID . '" /><span class="ccm-quick-page-selector">
  159. <input type="text" class="ccm-input-text" name="ccm-quick-page-selector-label-' . $key . '" id="ccm-quick-page-selector-label-' . $key . '" value="' . $cName . '" /></span>';
  160. return $html;
  161. }
  162. }