PageRenderTime 44ms CodeModel.GetById 15ms RepoModel.GetById 0ms app.codeStats 0ms

/system/expressionengine/modules/pages/mcp.pages.php

https://bitbucket.org/mbaily/tremain
PHP | 373 lines | 230 code | 77 blank | 66 comment | 34 complexity | 16944da42d1cd8e6be3b0c2579e53d95 MD5 | raw file
  1. <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
  2. /**
  3. * ExpressionEngine - by EllisLab
  4. *
  5. * @package ExpressionEngine
  6. * @author EllisLab Dev Team
  7. * @copyright Copyright (c) 2003 - 2013, EllisLab, Inc.
  8. * @license http://ellislab.com/expressionengine/user-guide/license.html
  9. * @link http://ellislab.com
  10. * @since Version 2.0
  11. * @filesource
  12. */
  13. // ------------------------------------------------------------------------
  14. /**
  15. * ExpressionEngine Pages Module
  16. *
  17. * @package ExpressionEngine
  18. * @subpackage Modules
  19. * @category Modules
  20. * @author EllisLab Dev Team
  21. * @link http://ellislab.com
  22. */
  23. class Pages_mcp {
  24. var $page_array = array();
  25. var $pages = array();
  26. var $homepage_display;
  27. /**
  28. * Constructor
  29. */
  30. function Pages_mcp($switch=TRUE)
  31. {
  32. // Make a local reference to the ExpressionEngine super object
  33. $this->EE =& get_instance();
  34. ee()->load->model('pages_model');
  35. $query = ee()->pages_model->fetch_configuration();
  36. $default_channel = 0;
  37. $this->homepage_display = 'not_nested';
  38. if ($query->num_rows() > 0)
  39. {
  40. foreach($query->result_array() as $row)
  41. {
  42. $$row['configuration_name'] = $row['configuration_value'];
  43. }
  44. $this->homepage_display = $homepage_display;
  45. }
  46. $new_page_location = '';
  47. if ($default_channel != 0)
  48. {
  49. $new_page_location = AMP.'M=entry_form'.AMP.'channel_id='.$default_channel;
  50. }
  51. ee()->cp->set_right_nav(array(
  52. 'create_page' => BASE.AMP.'C=content_publish'.$new_page_location,
  53. 'pages_configuration' => BASE.AMP.'C=addons_modules'.AMP.'M=show_module_cp'.AMP.'module=pages'.AMP.'method=configuration'
  54. ));
  55. }
  56. // --------------------------------------------------------------------
  57. /**
  58. * Pages Main page
  59. */
  60. function index()
  61. {
  62. ee()->load->model('pages_model');
  63. $vars['cp_page_title'] = ee()->lang->line('pages_module_name');
  64. $vars['new_page_location'] = '';
  65. ee()->load->library('table');
  66. ee()->load->library('javascript');
  67. ee()->load->helper('form');
  68. ee()->javascript->output(array(
  69. '$(".toggle_all").toggle(
  70. function(){
  71. $("input.toggle").each(function() {
  72. this.checked = true;
  73. });
  74. }, function (){
  75. var checked_status = this.checked;
  76. $("input.toggle").each(function() {
  77. this.checked = false;
  78. });
  79. }
  80. );'
  81. )
  82. );
  83. ee()->javascript->compile();
  84. $pages = ee()->config->item('site_pages');
  85. if ($pages === FALSE OR count($pages[ee()->config->item('site_id')]['uris']) == 0)
  86. {
  87. return ee()->load->view('index', $vars, TRUE);
  88. }
  89. natcasesort($pages[ee()->config->item('site_id')]['uris']);
  90. $vars['pages'] = array();
  91. // Our Pages
  92. $i = 0;
  93. $previous = array();
  94. $spcr = '<img src="'.PATH_CP_GBL_IMG.'clear.gif" border="0" width="24" height="14" alt="" title="" />';
  95. $indent = $spcr.'<img src="'.PATH_CP_GBL_IMG.'cat_marker.gif" border="0" width="18" height="14" alt="" title="" />';
  96. foreach($pages[ee()->config->item('site_id')]['uris'] as $entry_id => $url)
  97. {
  98. $url = ($url == '/') ? '/' : '/'.trim($url, '/');
  99. $vars['pages'][$entry_id]['entry_id'] = $entry_id;
  100. $vars['pages'][$entry_id]['entry_id'] = $entry_id;
  101. $vars['pages'][$entry_id]['view_url'] = ee()->functions->fetch_site_index().QUERY_MARKER.'URL='.urlencode(ee()->functions->create_url($url));
  102. $vars['pages'][$entry_id]['page'] = $url;
  103. $vars['pages'][$entry_id]['indent'] = '';
  104. if ($this->homepage_display == 'nested' && $url != '/')
  105. {
  106. $x = explode('/', trim($url, '/'));
  107. for($i=0, $s=count($x); $i < $s; ++$i)
  108. {
  109. if (isset($previous[$i]) && $previous[$i] == $x[$i])
  110. {
  111. continue;
  112. }
  113. $this_indent = ($i == 0) ? '' : str_repeat($spcr, $i-1).$indent;
  114. $vars['pages'][$entry_id]['indent'] = $this_indent;
  115. }
  116. $previous = $x;
  117. }
  118. $vars['pages'][$entry_id]['toggle'] = array(
  119. 'name' => 'toggle[]',
  120. 'id' => 'delete_box_'.$entry_id,
  121. 'value' => $entry_id,
  122. 'class' =>'toggle'
  123. );
  124. }
  125. return ee()->load->view('index', $vars, TRUE);
  126. }
  127. /*
  128. Hunting for Bugs in the Code...
  129. / \
  130. \ \ ,, / /
  131. '-.`\()/`.-'
  132. .--_'( )'_--.
  133. / /` /`""`\ `\ \
  134. | | >< \ \
  135. \ \ / /
  136. '.__.'
  137. */
  138. // --------------------------------------------------------------------
  139. /**
  140. * Pages Configuration Screen
  141. */
  142. function configuration()
  143. {
  144. ee()->load->model('pages_model');
  145. if ( ! ee()->cp->allowed_group('can_admin_channels'))
  146. {
  147. show_error(ee()->lang->line('unauthorized_access'));
  148. }
  149. ee()->load->library('table');
  150. $vars['cp_page_title'] = ee()->lang->line('pages_configuration');
  151. ee()->cp->set_breadcrumb(BASE.AMP.'C=addons_modules'.AMP.'M=show_module_cp'.AMP.'module=pages',
  152. ee()->lang->line('pages_module_name'));
  153. ee()->load->helper('form');
  154. // Get Channels
  155. ee()->load->model('channel_model');
  156. $wquery = ee()->channel_model->get_channels(ee()->config->item('site_id'));
  157. // Get Templates
  158. ee()->load->model('template_model');
  159. $tquery = ee()->template_model->get_templates(ee()->config->item('site_id'));
  160. // Our Configuration Options
  161. $vars['configuration_fields'] = array('homepage_display' =>
  162. array('type' => 'display_pulldown',
  163. 'label' => ee()->lang->line('pages_display_on_homepage'),
  164. 'value' => ''),
  165. 'default_channel' =>
  166. array('type' => 'other',
  167. 'label' => ee()->lang->line('default_for_page_creation'),
  168. 'value' => '')
  169. );
  170. foreach($wquery->result_array() as $row)
  171. {
  172. $vars['configuration_fields']['template_channel_'.$row['channel_id']] = array('type' => "channel", 'label' => ee()->lang->line("default_template").':'.NBS.$row['channel_title'], 'value' => '');
  173. }
  174. // Existing Configuration Data
  175. $data_query = ee()->pages_model->fetch_site_pages_config();
  176. if ($data_query->num_rows() > 0)
  177. {
  178. foreach($data_query->result_array() as $row)
  179. {
  180. if (isset($vars['configuration_fields'][$row['configuration_name']]))
  181. {
  182. $vars['configuration_fields'][$row['configuration_name']]['value'] = $row['configuration_value'];
  183. }
  184. }
  185. }
  186. foreach($vars['configuration_fields'] as $field_name => $field_data)
  187. {
  188. $vars['configuration_fields'][$field_name]['field_name'] = $field_name;
  189. if ($field_data['type'] == 'channel')
  190. {
  191. $vars['configuration_fields'][$field_name]['options'][0] = ee()->lang->line('no_default');
  192. foreach ($tquery->result_array() as $template)
  193. {
  194. $vars['configuration_fields'][$field_name]['options'][$template['template_id']] = $template['group_name'].'/'.$template['template_name'];
  195. }
  196. }
  197. elseif($field_data['type'] == 'display_pulldown')
  198. {
  199. $vars['configuration_fields'][$field_name]['options'] = array(
  200. 'not_nested' => ee()->lang->line('not_nested'),
  201. 'nested' => ee()->lang->line('nested')
  202. );
  203. }
  204. else
  205. {
  206. $vars['configuration_fields'][$field_name]['options'][0] = ee()->lang->line('no_default');
  207. foreach ($wquery->result_array() as $row)
  208. {
  209. $vars['configuration_fields'][$field_name]['options'][$row['channel_id']] = $row['channel_title'];
  210. }
  211. }
  212. }
  213. return ee()->load->view('configuration', $vars, TRUE);
  214. }
  215. // --------------------------------------------------------------------
  216. /**
  217. * Save Configuration
  218. */
  219. function save_configuration()
  220. {
  221. ee()->load->model('pages_model');
  222. $data = array();
  223. foreach($_POST as $key => $value)
  224. {
  225. if ($key == 'homepage_display' && in_array($value, array('nested', 'not_nested')))
  226. {
  227. $data[$key] = $value;
  228. }
  229. elseif (is_numeric($value) && $value != '0' && ($key == 'default_channel' OR substr($key, 0, strlen('template_channel_')) == 'template_channel_'))
  230. {
  231. $data[$key] = $value;
  232. }
  233. }
  234. if (count($data) > 0)
  235. {
  236. ee()->pages_model->update_pages_configuration($data);
  237. }
  238. ee()->session->set_flashdata('message_success', ee()->lang->line('configuration_updated'));
  239. ee()->functions->redirect(BASE.AMP.'C=addons_modules'.AMP.'M=show_module_cp'.AMP.'module=pages');
  240. }
  241. // --------------------------------------------------------------------
  242. /**
  243. * Delete Confirmation
  244. */
  245. function delete_confirm()
  246. {
  247. ee()->load->model('pages_model');
  248. if ( ! ee()->input->post('toggle'))
  249. {
  250. return $this->index();
  251. }
  252. ee()->load->helper('form');
  253. ee()->cp->set_breadcrumb(BASE.AMP.'C=addons_modules'.AMP.'M=show_module_cp'.AMP.'module=pages', ee()->lang->line('pages_module_name'));
  254. $vars['cp_page_title'] = ee()->lang->line('pages_delete_confirm');
  255. foreach ($_POST['toggle'] as $key => $val)
  256. {
  257. $vars['damned'][] = $val;
  258. }
  259. $vars['form_hidden']['groups'] = 'n';
  260. return ee()->load->view('delete_confirm', $vars, TRUE);
  261. }
  262. // --------------------------------------------------------------------
  263. /**
  264. * Delete Pages
  265. */
  266. function delete()
  267. {
  268. ee()->load->model('pages_model');
  269. if ( ! ee()->input->post('delete'))
  270. {
  271. return $this->index();
  272. }
  273. $ids = array();
  274. foreach ($_POST['delete'] as $key => $val)
  275. {
  276. $ids[$val] = $val;
  277. }
  278. // Delete Pages & give us the number deleted.
  279. $delete_pages = ee()->pages_model->delete_site_pages($ids);
  280. if ($delete_pages === FALSE)
  281. {
  282. return $this->index();
  283. }
  284. else
  285. {
  286. $message = ($delete_pages > 1) ?
  287. ee()->lang->line('pages_deleted') : ee()->lang->line('page_deleted');
  288. ee()->session->set_flashdata('message_success', $message);
  289. ee()->functions->redirect(BASE.AMP.'C=addons_modules'.AMP.'M=show_module_cp'.AMP.'module=pages');
  290. }
  291. }
  292. }
  293. // END CLASS
  294. /* End of file mcp.pages.php */
  295. /* Location: ./system/expressionengine/modules/pages/mcp.pages.php */