forked from jaedb/ModuleManager
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathModuleAdmin.php
More file actions
executable file
·95 lines (69 loc) · 3.13 KB
/
ModuleAdmin.php
File metadata and controls
executable file
·95 lines (69 loc) · 3.13 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
<?php
namespace PlasticStudio\ModuleManager;
use SilverStripe\Core\ClassInfo;
use SilverStripe\Admin\ModelAdmin;
use SilverStripe\Core\Config\Config;
use SilverStripe\Forms\GridField\GridFieldAddNewButton;
use Symbiote\GridFieldExtensions\GridFieldAddNewMultiClass;
use Symbiote\GridFieldExtensions\Extensions\GridFieldDetailFormItemRequestExtension;
class Admin extends ModelAdmin {
private static $url_segment = 'modules';
private static $menu_title = 'Modules';
private static $menu_icon_class = 'font-icon-edit-list';
private static $managed_models = array(
Module::class
);
public function getEditForm($id = null, $fields = null){
$form = parent::getEditForm($id, $fields);
$gridFieldName = $this->sanitiseClassName(Module::class);
$gridField = $form->Fields()->fieldByName($gridFieldName);
// Swap out our "Add" button for the multiclass Add
$gridField->getConfig()->addComponent(new GridFieldAddNewMultiClass());
$gridField->getConfig()->removeComponentsByType(GridFieldAddNewButton::class);
return $form;
}
// public function getEditForm($id = null, $fields = null)
// {
// // Get the default form
// $form = parent::getEditForm($id, $fields);
// // GridField name (ModelAdmin sanitises the class)
// $gridFieldName = $this->sanitiseClassName(Module::class);
// // Locate the GridField
// $gridField = $form->Fields()->fieldByName("Root.$gridFieldName");
// if (!$gridField) {
// return $form;
// }
// $config = $gridField->getConfig();
// // --- Remove default Add button ---
// $config->removeComponentsByType(GridFieldAddNewButton::class);
// // --- Remove GridFieldExtensions DetailForm hook that breaks MultiClass ---
// $config->removeComponentsByType(
// GridFieldDetailFormItemRequestExtension::class
// );
// // --- Create MultiClass Add component ---
// $multiClass = new GridFieldAddNewMultiClass();
// // --- Get list of classes dynamically ---
// $classes = [];
// foreach (ClassInfo::subclassesFor(Module::class) as $class) {
// if ($class === Module::class) {
// continue;
// }
// // Skip abstract classes
// if ((new \ReflectionClass($class))->isAbstract()) {
// continue;
// }
// // Only include classes that can be created
// if (!(singleton($class)->canCreate())) {
// continue;
// }
// $classes[$class] = singleton($class)->i18n_singular_name();
// }
// // Optional: allow project to override/extend via config
// $configClasses = Config::forClass(self::class)->get('slide_classes') ?? [];
// $classes = array_merge($classes, $configClasses);
// $multiClass->setClasses($classes);
// // Add to GridField
// $config->addComponent($multiClass);
// return $form;
// }
}