Source of file NewsAdmin.php
Size: 3,880 Bytes - Last Modified: 2021-12-23T10:36:34+00:00
/var/www/docs.ssmods.com/process/src/code/Admin/NewsAdmin.php
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134 | <?php /** * Created by Nivanka Fonseka (nivanka@silverstripers.com). * User: nivankafonseka * Date: 4/6/15 * Time: 2:01 PM * To change this template use File | Settings | File Templates. */ class NewsAdmin extends ModelAdmin { private static $menu_icon = 'silverstripe-news/images/news-icon.png'; private static $url_segment = 'news'; private static $menu_title = 'News'; public $showImportForm = false; private static $managed_models = array( 'NewsPost', 'NewsCategory' ); private static $exclude_classes = array(); public function init() { Versioned::set_reading_mode('stage'); Config::inst()->update('NewsPost', 'pages_admin', false); parent::init(); } public function getSearchableClasses() { $arrRet = array(); $arrClasses = ClassInfo::subclassesFor('NewsPost'); $arrExclude = Config::inst()->get('NewsAdmin', 'exclude_classes'); if (!empty($arrExclude)) { foreach ($arrClasses as $strClass) { if (!in_array($strClass, $arrExclude)) { $arrRet[] = $strClass; } } } else { $arrRet = $arrClasses; } return $arrRet; } public function getSearchContext() { if ($this->IsEditingNews()) { $context = new NewsSearchContext($this->modelClass, $this); foreach ($context->getFields() as $field) { $field->setName(sprintf('q[%s]', $field->getName())); } foreach ($context->getFilters() as $filter) { $filter->setFullName(sprintf('q[%s]', $filter->getFullName())); } $this->extend('updateSearchContext', $context); return $context; } return parent::getSearchContext(); } public function getEditForm($id = null, $fields = null) { $form = parent::getEditForm($id, $fields); $field = $form->Fields()->dataFieldByName($this->modelClass); if ($field) { $config = $field->getConfig(); if (!ClassInfo::exists('GridFieldBetterButtonsItemRequest') && $this->IsEditingNews()) { $config->getComponentByType('GridFieldDetailForm')->setItemRequestClass('NewsGridFieldDetailForm_ItemRequest'); } $singleton = singleton($this->modelClass); if (is_a($singleton, 'NewsPost') && ClassInfo::exists('GridFieldOrderableRows')) { $config->addComponent(new GridFieldOrderableRows('Sort')); $exportButton = $config->getComponentByType('GridFieldExportButton'); if($exportButton) { $export = array( 'Title' => 'Title', 'DateTime' => 'DateTime', 'Author' => 'Author', 'ExportContent' => 'Content' ); $this->extend('updateExportColumn', $export); $exportButton->setExportColumns($export); } } $config->removeComponentsByType('GridFieldDeleteAction'); $config->removeComponentsByType('GridFieldPaginator'); $config->addComponent($pagination = new GridFieldPaginator(100)); } return $form; } public function getList() { $list = parent::getList(); if ($this->IsEditingNews()) { $list = $list->sort('DateTime DESC')->filter('ClassName', $this->getSearchableClasses()); } $this->extend('updateNewsList', $list); return $list; } public function IsEditingNews() { $arrClasses = ClassInfo::subclassesFor('NewsPost'); return in_array($this->modelClass, $arrClasses); } } |