Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- /**
- * Created by PhpStorm.
- * User: joe.broderick
- * Date: 6/12/2015
- * Time: 5:19 PM
- */
- class CustomHMenu extends DataObject implements PermissionProvider{
- private static $db = array(
- 'Name' => 'Varchar',
- 'Slug' => 'Text'
- );
- public static $has_many = array(
- 'HMenuItems' => 'CustomHMenuItem'
- );
- public function getCMSFields(){
- $fields = FieldList::create(TabSet::create('Root'));
- $fields->addFieldsToTab('Root.Main',[
- TextField::create('Name', 'Menu Name')
- ]);
- $fields = parent::getCMSFields();
- //Requirements::javascript('http://code.jquery.com/jquery-2.1.4.min.js');
- //Requirements::javascript('http://code.jquery.com/ui/1.11.4/jquery-ui.min.js');
- //Requirements::css('http://code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css');
- Requirements::javascript('mysite/js/CustomHMenu.js');
- Requirements::css('mysite/css/CustomHMenu.css');
- //$fields->removeByName('Pages');
- //$fields->removeByName('CustomHMenus');
- $fields->removeByName('HMenuItems');
- if(!$this->ID) {
- $fields->addFieldToTab('Root.Main', new TextField('Name','Menu Name'));
- $fields->addFieldToTab('Root.Main', new TextField('Slug', 'Slug (for internal referencing)'));
- } else {
- //$fields->addFieldToTab('Root.Main', new HeaderField('MenuSettings',_t('CustomMenus.FormSettingsHeader','Menu Settings')));
- $fields->addFieldToTab('Root.Main', new HeaderField('MenuSettings','Menu Settings'));
- $fields->addFieldToTab('Root.Main', new TextField('Name','Menu Name'));
- $fields->addFieldToTab('Root.Main', new TextField('Slug', 'Slug (for internal referencing)'));
- $fields->addFieldToTab('Root.Items', new CustomHMenuField('HMenuItems', 'Manage Items'));
- //$fields->addFieldToTab('Root.Main', new HeaderField('MenuPages',_t('CustomMenus.FormPagesHeader','Pages in this Menu')));
- //$fields->addFieldToTab('Root.Main', new TreeMultiselectField('HMenuItems',_t('CustomMenus.FormPagesPages','Select pages'), 'SiteTree'));
- /*$fields->addFieldToTab('Root.Main', new HeaderField('MenuMenus','Sub Menus'));
- $fields->addFieldToTab('Root.Main', new TreeMultiselectField('CustomHMenus','Select Sub Menus', 'CustomHMenu'));*/
- //$fields->addFieldToTab('Root.Main', new CheckboxSetField('CustomHMenus', 'Select Sub Menus', 'CustomHMenu'));
- //$fields->addFieldToTab('Root.Main', new GridField( 'Pages', "Drag to Sort", $this->Pages, $config = GridFieldConfig_RelationEditor::create()->addComponent(new GridFieldOrderableRows())));
- }
- $this->extend('updateCMSFields', $fields);
- return $fields;
- }
- public static function getSitePages(){
- $pages = [];
- $depth = 0;
- foreach( SiteTree::get() as $page ){
- $pages[$page->ID] = [
- 'title' => $page->getTitle(),
- 'depth' => self::getDepth($page)
- ];
- }
- return $pages;
- }
- private static function getDepth($element){
- if(is_object($element) && method_exists($element, 'getParent') && $element->getParent()){
- return self::getDepth($element->getParent()) +1;
- }
- return 0; // stopping case
- }
- /*public function onChangeHMenuItems(&$items){
- if($items){
- foreach($items as $k => $pageId){
- $mi = CustomHMenuItem::create();
- $mi->PageID = $pageId;
- $mi->CustomHMenuID = $this->original['ID'];
- $mi->h_id = 0;
- $mi->sort = 0;
- $mi->p_id = 0;
- if($miId = $mi->write()){
- $items[$k] = $miId;
- }
- }
- }
- return true;
- }*/
- public function onBeforeWrite() {
- parent::onBeforeWrite();
- // Ensure the slug is URL safe
- $this->Slug = ($this->Slug) ? Convert::raw2url($this->Slug) : Convert::raw2url($this->Title);
- }
- /** Permissions
- * -----------------------------------------------------------------------
- */
- public function providePermissions() {
- return array(
- 'MENU_VIEWALL' => array(
- 'name' => 'View all menus',
- 'help' => 'Allow viewing of all menus in the "Menus" section',
- 'category' => 'Menus',
- 'sort' => 100
- ),
- 'MENU_CREATE' => array(
- 'name' => 'Create menus',
- 'help' => 'Allow creation of menus in the "Menus" section',
- 'category' => 'Menus',
- 'sort' => 110
- ),
- 'MENU_DELETE' => array(
- 'name' => 'Delete menus',
- 'help' => 'Allow deleting of menus in the "Menus" section',
- 'category' => 'Menus',
- 'sort' => 120
- ),
- 'MENU_EDIT' => array(
- 'name' => 'Edit menus',
- 'help' => 'Allow editing of menus in the "Menu" section',
- 'category' => 'Menus',
- 'sort' => 130
- ),
- );
- }
- public function canView($member = null) {
- if(Permission::check('ADMIN') || Permission::check('MENU_VIEWALL'))
- return true;
- else
- return false;
- }
- public function canCreate($member = null) {
- if(Permission::check('ADMIN') || Permission::check('MENU_CREATE'))
- return true;
- else
- return false;
- }
- public function canDelete($member = null) {
- if(Permission::check('ADMIN') || Permission::check('MENU_DELETE'))
- return true;
- else
- return false;
- }
- public function canEdit($member = null) {
- if(Permission::check('ADMIN') || Permission::check('MENU_EDIT'))
- return true;
- else
- return false;
- }
- }
- class CustomHMenu_Controller extends Page_Controller {
- private static $allowed_actions = array(
- 'edit'
- );
- public function edit(){
- die('it works!');
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement