Advertisement
Guest User

Untitled

a guest
Jun 22nd, 2015
262
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 6.25 KB | None | 0 0
  1. <?php
  2. /**
  3.  * Created by PhpStorm.
  4.  * User: joe.broderick
  5.  * Date: 6/12/2015
  6.  * Time: 5:19 PM
  7.  */
  8.  
  9. class CustomHMenu extends DataObject implements PermissionProvider{
  10.  
  11.     private static $db = array(
  12.         'Name' => 'Varchar',
  13.         'Slug' => 'Text'
  14.     );
  15.  
  16.     public static $has_many = array(
  17.         'HMenuItems' => 'CustomHMenuItem'
  18.     );
  19.  
  20.     public function getCMSFields(){
  21.         $fields = FieldList::create(TabSet::create('Root'));
  22.         $fields->addFieldsToTab('Root.Main',[
  23.             TextField::create('Name', 'Menu Name')
  24.         ]);
  25.  
  26.         $fields = parent::getCMSFields();
  27.  
  28.         //Requirements::javascript('http://code.jquery.com/jquery-2.1.4.min.js');
  29.         //Requirements::javascript('http://code.jquery.com/ui/1.11.4/jquery-ui.min.js');
  30.         //Requirements::css('http://code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css');
  31.         Requirements::javascript('mysite/js/CustomHMenu.js');
  32.         Requirements::css('mysite/css/CustomHMenu.css');
  33.  
  34.         //$fields->removeByName('Pages');
  35.         //$fields->removeByName('CustomHMenus');
  36.         $fields->removeByName('HMenuItems');
  37.  
  38.         if(!$this->ID) {
  39.             $fields->addFieldToTab('Root.Main', new TextField('Name','Menu Name'));
  40.             $fields->addFieldToTab('Root.Main', new TextField('Slug', 'Slug (for internal referencing)'));
  41.         } else {
  42.             //$fields->addFieldToTab('Root.Main', new HeaderField('MenuSettings',_t('CustomMenus.FormSettingsHeader','Menu Settings')));
  43.             $fields->addFieldToTab('Root.Main', new HeaderField('MenuSettings','Menu Settings'));
  44.             $fields->addFieldToTab('Root.Main', new TextField('Name','Menu Name'));
  45.             $fields->addFieldToTab('Root.Main', new TextField('Slug', 'Slug (for internal referencing)'));
  46.  
  47.             $fields->addFieldToTab('Root.Items', new CustomHMenuField('HMenuItems', 'Manage Items'));
  48.  
  49.             //$fields->addFieldToTab('Root.Main', new HeaderField('MenuPages',_t('CustomMenus.FormPagesHeader','Pages in this Menu')));
  50.             //$fields->addFieldToTab('Root.Main', new TreeMultiselectField('HMenuItems',_t('CustomMenus.FormPagesPages','Select pages'), 'SiteTree'));
  51.  
  52.             /*$fields->addFieldToTab('Root.Main', new HeaderField('MenuMenus','Sub Menus'));
  53.             $fields->addFieldToTab('Root.Main', new TreeMultiselectField('CustomHMenus','Select Sub Menus', 'CustomHMenu'));*/
  54.             //$fields->addFieldToTab('Root.Main', new CheckboxSetField('CustomHMenus', 'Select Sub Menus', 'CustomHMenu'));
  55.  
  56.             //$fields->addFieldToTab('Root.Main', new GridField( 'Pages', "Drag to Sort", $this->Pages, $config = GridFieldConfig_RelationEditor::create()->addComponent(new GridFieldOrderableRows())));
  57.         }
  58.  
  59.         $this->extend('updateCMSFields', $fields);
  60.  
  61.         return $fields;
  62.     }
  63.  
  64.     public static function getSitePages(){
  65.         $pages = [];
  66.         $depth = 0;
  67.         foreach( SiteTree::get() as $page ){
  68.             $pages[$page->ID] = [
  69.                 'title' => $page->getTitle(),
  70.                 'depth' => self::getDepth($page)
  71.             ];
  72.         }
  73.         return $pages;
  74.     }
  75.  
  76.     private static function getDepth($element){
  77.         if(is_object($element) && method_exists($element, 'getParent') && $element->getParent()){
  78.             return self::getDepth($element->getParent()) +1;
  79.         }
  80.         return 0; // stopping case
  81.     }
  82.  
  83.     /*public function onChangeHMenuItems(&$items){
  84.         if($items){
  85.             foreach($items as $k => $pageId){
  86.                 $mi = CustomHMenuItem::create();
  87.  
  88.                 $mi->PageID = $pageId;
  89.                 $mi->CustomHMenuID = $this->original['ID'];
  90.                 $mi->h_id = 0;
  91.                 $mi->sort = 0;
  92.                 $mi->p_id = 0;
  93.                 if($miId = $mi->write()){
  94.                     $items[$k] = $miId;
  95.                 }
  96.             }
  97.         }
  98.         return true;
  99.     }*/
  100.  
  101.     public function onBeforeWrite() {
  102.         parent::onBeforeWrite();
  103.  
  104.         // Ensure the slug is URL safe
  105.         $this->Slug = ($this->Slug) ? Convert::raw2url($this->Slug) : Convert::raw2url($this->Title);
  106.     }
  107.  
  108.     /**   Permissions
  109.      * -----------------------------------------------------------------------
  110.      */
  111.     public function providePermissions() {
  112.         return array(
  113.             'MENU_VIEWALL' => array(
  114.                 'name' => 'View all menus',
  115.                 'help' => 'Allow viewing of all menus in the "Menus" section',
  116.                 'category' => 'Menus',
  117.                 'sort' => 100
  118.             ),
  119.             'MENU_CREATE' => array(
  120.                 'name' => 'Create menus',
  121.                 'help' => 'Allow creation of menus in the "Menus" section',
  122.                 'category' => 'Menus',
  123.                 'sort' => 110
  124.             ),
  125.             'MENU_DELETE' => array(
  126.                 'name' => 'Delete menus',
  127.                 'help' => 'Allow deleting of menus in the "Menus" section',
  128.                 'category' => 'Menus',
  129.                 'sort' => 120
  130.             ),
  131.             'MENU_EDIT' => array(
  132.                 'name' => 'Edit menus',
  133.                 'help' => 'Allow editing of menus in the "Menu" section',
  134.                 'category' => 'Menus',
  135.                 'sort' => 130
  136.             ),
  137.         );
  138.     }
  139.  
  140.  
  141.     public function canView($member = null) {
  142.         if(Permission::check('ADMIN') || Permission::check('MENU_VIEWALL'))
  143.             return true;
  144.         else
  145.             return false;
  146.     }
  147.  
  148.     public function canCreate($member = null) {
  149.         if(Permission::check('ADMIN') || Permission::check('MENU_CREATE'))
  150.             return true;
  151.         else
  152.             return false;
  153.     }
  154.  
  155.     public function canDelete($member = null) {
  156.         if(Permission::check('ADMIN') || Permission::check('MENU_DELETE'))
  157.             return true;
  158.         else
  159.             return false;
  160.     }
  161.  
  162.     public function canEdit($member = null) {
  163.         if(Permission::check('ADMIN') || Permission::check('MENU_EDIT'))
  164.             return true;
  165.         else
  166.             return false;
  167.     }
  168. }
  169.  
  170. class CustomHMenu_Controller extends Page_Controller {
  171.  
  172.     private static $allowed_actions = array(
  173.         'edit'
  174.     );
  175.  
  176.     public function edit(){
  177.         die('it works!');
  178.     }
  179. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement