1 <?php
2 3 4 5 6
7 class Publication extends Page {
8
9 static $default_parent = "PublHolder";
10 static $allowed_children = null;
11 static $can_be_root = false;
12 static $icon = "publication/img/publication";
13
14 static $db = array(
15 'Date' => 'Date',
16 'Description' => 'Text',
17 'Author' => 'Text',
18 'Source' => 'Text',
19 'SourceLink' => 'Varchar(255)',
20 'IsHidden' => 'Boolean',
21 'Favorite' => 'Boolean',
22 );
23
24 static $defaults = array(
25 'AutoChild' => 0,
26 'ShowInMenus' => 0,
27 'ShowInSiteMap' => 0,
28 'ShowInSearch' => 1,
29 'ShowOnlyInTab' => 1,
30 'IsHidden' => 0,
31 'Favorite' => 0,
32 );
33
34 static $has_one = array(
35 'Photo' => 'Image',
36 );
37
38 static $summary_fields = array('Date', 'Title', 'FavoriteTitle', 'IsHiddenTitle');
39
40 function getCMSFields() {
41 $fields = parent::getCMSFields();
42
43 $dateField = new DateField('Date', $this->fieldLabel('Date'));
44 if (!property_exists('FormField', 'use_html5') || !FormField::use_html5()) {
45 $dateField->setLocale('ru_RU');
46 $dateField->setConfig('dateformat', 'dd/MM/yyyy');
47 $dateField->setConfig('showcalendar', true);
48 }
49 $fields->addFieldToTab('Root.Content.Main', $dateField, 'Title');
50
51 $PublImage = new ImageField('Photo', _t('Publication.has_one_Photo'));
52 $PublImage->setFolderName('Publications');
53 $fields->addFieldToTab('Root.Content.Main', $PublImage);
54
55 $fields->addFieldToTab('Root.Content.Main', new TextareaField('Description', _t('Publication.db_Description')));
56 $fields->addFieldToTab('Root.Content.Main', new TextField('Author', _t('Publication.db_Author')));
57 $fields->addFieldToTab('Root.Content.Main', new TextField('Source', _t('Publication.db_Source')));
58 $fields->addFieldToTab('Root.Content.Main', new TextField('SourceLink', _t('Publication.db_SourceLink')));
59 $fields->addFieldToTab('Root.Content.Main', new CheckboxField('IsHidden', _t('Publication.db_IsHidden','Hidden')));
60 $fields->addFieldToTab('Root.Content.Main', new CheckboxField('Favorite', _t('Publication.db_Favorite','Favorite')));
61
62 $fields->addFieldToTab('Root.Content', new Tab('FullContent', _t('Publication.SINGULARNAME')), 'PagePhotos');
63 $fields->addFieldToTab('Root.Content.FullContent', $fields->dataFieldByName('Content'));
64
65 return $fields;
66 }
67
68 public function FavoriteTitle() {
69 return ($this->Favorite) ? _t('CheckboxField.YES', 'Yes') : _t('CheckboxField.NO', 'No');
70 }
71
72 public function IsHiddenTitle() {
73 return ($this->IsHidden) ? _t('CheckboxField.YES', 'Yes') : _t('CheckboxField.NO', 'No');
74 }
75
76 function fieldLabels($relations = true) {
77 $labels = parent::fieldLabels($relations);
78 $labels['FavoriteTitle'] = _t('Publication.FavoriteTitle', 'Favorite');
79 $labels['IsHiddenTitle'] = _t('Publication.IsHiddenTitle', 'Is Hidden');
80 return $labels;
81 }
82
83 public function getCMSActions() {
84 Requirements::javascript('webylon/javascript/SubpageAction.js');
85 $fields = parent::getCMSActions();
86 $fields->push(new HiddenField('backLink', '', $this->Parent()->ID));
87 $fields->insertBefore(new FormAction('goBack', _t('News.BACKBUTTON', 'Back')), 'action_unpublish');
88 return $fields;
89 }
90 public function getCMSValidator() {
91 return new RequiredFields('Title');
92 }
93
94 public function populateDefaults() {
95 parent::populateDefaults();
96 $this->setField('Date', date('Y-m-d'), strtotime('now'));
97 }
98
99 function onBeforeWrite() {
100 if (!$this->Description)
101 $this->Description = trim(strip_tags($this->Content));
102 parent::onBeforeWrite();
103 }
104
105 106 107
108 public function DescriptionSummmary() {
109 if ($this->obj('Description'))
110 return $this->obj('Description');
111 else {
112 return $this->obj('Content')->FirstParagraph('html');
113 }
114 }
115
116
117 118 119 120 121 122 123 124 125 126
127 static function get_publications($count = 1, $favorites = false, $holderID = false, $random = false) {
128 $filter = 'IsHidden = 0';
129 $sort = ($random) ? 'RAND()' : 'Date DESC';
130 if ($favorites) {
131 $filter .= " AND Favorite = 1";
132 }
133 if ($holderID !== false) {
134 $filter .= " AND ParentID = $holderID";
135 }
136 return DataObject::get('Publication', $filter, $sort, '', $count);
137 }
138 }
139
140 class Publication_Controller extends Page_Controller {
141 }
142
[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.
-