1 <?php
2
3 4 5 6 7
8 class extends LeftAndMain {
9
10 static $url_segment = 'menus';
11 static = 'Menus';
12 static = 10;
13 static $url_priority = 41;
14 static $url_rule = '/$Action/$ID/$OtherID';
15 static $tree_class = "CustomMenuHolder";
16
17 public function init() {
18 parent::init();
19 Requirements::javascript('custom_menu/javascript/CustomMenu_right.js');
20 Requirements::css('custom_menu/css/CustomMenu.css');
21 }
22
23 24 25 26 27 28
29 public function root() {
30 return false;
31 }
32
33 34 35 36 37 38
39 public function () {
40 $result = DataObject::get('CustomMenuHolder');
41 return $result;
42 }
43
44 45 46 47
48 function getEditForm($id = null) {
49 if (!$id)
50 $id = $this->urlParams['ID'];
51
52 if ($id) {
53 $currentMenu = DataObject::get_by_id('CustomMenuHolder', $id);
54
55 $pagesManager = new FieldSet(
56 new TextField('OtherLink', 'OtherLink'),
57 new TreeDropdownField('PageLink', 'Страница', 'SiteTree')
58 );
59 $customMenus = DataObject::get('CustomMenuHolder')->toDropdownMap();
60 $customMenus[0] = 'Не выбрано';
61
62 $menuManager = new DataObjectManager(
63 $this,
64 'Pages',
65 'CustomMenuItem',
66 array(
67 'Title' => 'Title',
68 'OtherLink' => 'OtherLink'
69 ),
70 null,
71 'ParentID = ' . $id
72 );
73
74 $fields = new FieldSet(
75 new HiddenField('ID', 'id #', $id),
76 new TabSet('Root',
77 new Tab('Main',
78 _t('CustomMenus.FormMain', 'Main'),
79 new HeaderField('MenuHeading', _t('CustomMenus.FormMainHeader', 'Edit Menu')),
80 new TextField('Title', _t('CustomMenus.FormMainTitle', 'Menu Title')),
81 new TextField('Segment', _t('CustomMenus.FormMainSlug', 'Menu Slug (used in your control call)'))
82 ), new Tab('Pages', _t('CustomMenus.FormPages', 'Pages'),
83 new HeaderField('ManageMenu', 'Управление меню', 4),
84 $menuManager
85 )
86 )
87 );
88
89 $fields->addFieldToTab('Root.Pages', new HiddenField('ClassName', 'CustomMenuItem'));
90
91 if (Director::isDev() && Member::currentUser()->isAdmin()) {
92 $actions = new FieldSet(
93 new FormAction('doDeleteMenu', _t('CustomMenus.FormActionDelete', 'Delete Menu')),
94 new FormAction('doUpdateMenu', _t('CustomMenus.FormActionUpdate', 'Update Menu'))
95 );
96 } else {
97 $fields->removeByName('Main');
98 $actions = new FieldSet(
99 new FormAction('doUpdateMenu', _t('CustomMenus.FormActionUpdate', 'Update Menu'))
100 );
101 }
102 $this->extend('updateMenuHolderFields', $fields);
103 $form = new Form($this, "EditForm", $fields, $actions);
104 $form->loadDataFrom($currentMenu);
105 return $form;
106 }
107 }
108
109 function () {
110 if (Director::isDev() && Member::currentUser()->isAdmin()) {
111
112 $fields = new FieldSet(
113 new HiddenField('ID', 'id#', 'new')
114 );
115 $actions = new FieldSet(
116 new FormAction('doCreateMenu', _t('CustomMenus.CreateMenu', 'Create Menu'))
117 );
118 $form = new Form($this, "LeftMenuForm", $fields, $actions);
119 return $form;
120 }
121 return false;
122 }
123
124 function ($data, $form) {
125 $id = $data['ID'];
126
127 $record = DataObject::get_by_id("CustomMenuHolder", $id);
128 $record->Status = "Saved (update)";
129 $form->saveInto($record);
130
131 if ($record->write()) {
132 FormResponse::status_message(_t('CustomMenus.UpdateSuccess', 'Updated Menu'), 'good');
133 FormResponse::update_status($record->Status);
134 FormResponse::set_node_title($id, $record->Title);
135 FormResponse::get_page($id);
136 } else {
137 FormResponse::status_message(_t('CustomMenus.UpdateFail', 'Update Failed'), 'bad');
138 }
139
140 return FormResponse::respond();
141 }
142
143 function ($data, $form) {
144 if (Director::isDev() && Member::currentUser()->isAdmin()) {
145 $id = $data['ID'];
146
147 $record = DataObject::get_by_id("CustomMenuHolder", $id);
148 $record->delete();
149
150 FormResponse::add($this->deleteTreeNodeJS($record));
151 FormResponse::status_message(_t('CustomMenus.DeleteSuccess', 'Deleted Menu'), 'good');
152 } else {
153 FormResponse::status_message(_t('CustomMenus.DeleteFail', 'Delete Failed'), 'bad');
154 }
155 return FormResponse::respond();
156 }
157
158 function ($data, $form) {
159 if (Director::isDev() && Member::currentUser()->isAdmin()) {
160 $menu = new CustomMenuHolder();
161 $menu->Title = 'New Menu';
162 $menu->Slug = "new-menu";
163
164 if ($menu->write()) {
165 FormResponse::status_message(_t('CustomMenus.CreateSuccess', 'Created Menu'), 'good');
166 } else
167 FormResponse::status_message(_t('CustomMenus.CreateFail', 'Creation Failed'), 'bad');
168 }else {
169 FormResponse::status_message(_t('CustomMenus.CreateFail', 'Creation Failed'), 'bad');
170 }
171 return FormResponse::respond();
172 }
173 }
174
[Raise a SilverStripe Framework issue/bug](https://github.com/silverstripe/silverstripe-framework/issues/new)
- [Raise a SilverStripe CMS issue/bug](https://github.com/silverstripe/silverstripe-cms/issues/new)
- Please use the
Silverstripe Forums to ask development related questions.
-