forked from jaedb/ModuleManager
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathModule.php
More file actions
executable file
·81 lines (66 loc) · 2.07 KB
/
Module.php
File metadata and controls
executable file
·81 lines (66 loc) · 2.07 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
<?php
namespace PlasticStudio\ModuleManager;
use SilverStripe\ORM\DataObject;
use SilverStripe\Core\Config\Config;
use SilverStripe\CMS\Model\SiteTree;
use SilverStripe\Forms\TextField;
use SilverStripe\Forms\HiddenField;
use SilverStripe\Forms\DropdownField;
use SilverStripe\Forms\TreeMultiselectField;
class Module extends DataObject {
private static $singular_name = 'Module';
private static $plural_name = 'Modules';
private static $description = 'Base module class';
private static $table_name = 'Module';
private static $db = [
'Title' => 'Varchar(255)',
'Content' => 'HTMLText',
'Position' => 'Varchar(255)'
];
private static $belongs_many_many = [
'Pages' => SiteTree::class
];
private static $summary_fields = [
'ClassName' => 'Type',
'Title' => 'Title',
'Position' => 'Position',
'Pages.Count' => 'Number of pages'
];
private static $searchable_fields = [
'Title',
'Position'
];
public function getCMSFields() {
$fields = parent::getCMSFields();
$fields->removeByName('Pages');
$fields->removeByName('LinkTracking');
$fields->removeByName('FileTracking');
$fields->addFieldToTab('Root.Main', HiddenField::create('ModuleID', 'ModuleID', $this->ID));
$fields->addFieldToTab('Root.Main', TextField::create('Title', 'Title'));
$fields->addFieldToTab('Root.Main', DropdownField::create(
'Position',
'Position',
Config::inst()->get(ModuleManager::class, 'positions')
)->setEmptyString('Please select'));
$fields->addFieldToTab("Root.Main", TreeMultiselectField::create("Pages", "Pages", SiteTree::class));
return $fields;
}
/**
* Type
* Based on class name, but the simplified version (ie not FQCN)
*
* @return string
**/
public function Type(){
return $this->ClassName;
}
/**
* Render this module
* This is auto-overwritten by creating a {ClassName} template in your templates directory
*
* @return HTMLText
**/
public function Layout(){
return $this->renderWith([$this->Type(), 'Module']);
}
}