Source of file DMSDocumentAdmin.php
Size: 2,999 Bytes - Last Modified: 2021-12-24T06:47:08+00:00
/var/www/docs.ssmods.com/process/src/code/cms/DMSDocumentAdmin.php
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 | <?php class DMSDocumentAdmin extends ModelAdmin { private static $managed_models = array( 'DMSDocument', 'DMSDocumentSet' ); private static $url_segment = 'documents'; private static $menu_title = 'Documents'; private static $menu_icon = 'dms/images/app_icons/drawer.png'; public function init() { parent::init(); Requirements::javascript(DMS_DIR . '/javascript/DMSGridField.js'); } /** * Remove the default "add" button and replace it with a customised version for DMS * * @return CMSForm */ public function getEditForm($id = null, $fields = null) { /** @var CMSForm $form */ $form = parent::getEditForm($id, $fields); $gridField = $form->Fields()->fieldByName($this->sanitiseClassName($this->modelClass)); return $this->modifyGridField($form, $gridField); } /** * If the GridField is for DMSDocument then add a custom "add" button. If it's for DMSDocumentSet then * update the display fields to include some extra columns that are only for this ModelAdmin, so cannot * be added directly to the model's display fields. * * @param CMSForm $form * @param GridField $gridField * @return CMSForm */ protected function modifyGridField(CMSForm $form, GridField $gridField) { $gridFieldConfig = $gridField->getConfig(); $gridFieldConfig->removeComponentsByType('GridFieldEditButton'); $gridFieldConfig->addComponent(new DMSGridFieldEditButton(), 'GridFieldDeleteAction'); if ($this->modelClass === 'DMSDocument') { $gridFieldConfig->removeComponentsByType('GridFieldAddNewButton'); $gridFieldConfig->addComponent( new DMSGridFieldAddNewButton('buttons-before-left'), 'GridFieldExportButton' ); } elseif ($this->modelClass === 'DMSDocumentSet') { $dataColumns = $gridFieldConfig->getComponentByType('GridFieldDataColumns'); $fields = $dataColumns->getDisplayFields($gridField); $fields = array('Title' => 'Title', 'Page.Title' => 'Page') + $fields; $dataColumns->setDisplayFields($fields) ->setFieldFormatting( array( 'Page.Title' => function ($value, $item) { // Link a page click directly to the Document Set on the actual page if ($page = SiteTree::get()->byID($item->PageID)) { return sprintf( "<a class='dms-doc-sets-link' href='%s/#Root_DocumentSets%s'>$value</a>", $page->CMSEditLink(), $page->DocumentSets()->count() ); } } ) ); } return $form; } } |