diff --git a/_config.php b/_config.php index 74053d5..77c89e3 100644 --- a/_config.php +++ b/_config.php @@ -1,2 +1,3 @@ renderWith(array('AssetAdmin_UploadContent')); +// if($request->isAjax()) { +// return $formHtml; +// } else { +// return $this->customise(array( +// 'Content' => $formHtml +// ))->renderWith(array('AssetAdmin', 'LeftAndMain')); +// } +// } + + /** + * Custom currentPage() method to handle opening the 'root' folder + */ + public function currentPage() { + $id = $this->currentPageID(); + + if($id && is_numeric($id) && $id > 0) { + return DataObject::get_by_id('SiteTree', $id); + } else { + // ID is either '0' or 'root' + return singleton('SiteTree'); + } + } + + /** + * Return fake-ID "root" if no ID is found (needed to upload files into the root-folder) + */ + public function currentPageID() { + if(is_numeric($this->request->requestVar('ID'))) { + return $this->request->requestVar('ID'); + } elseif (is_numeric($this->urlParams['ID'])) { + return $this->urlParams['ID']; + } elseif(Session::get("{$this->class}.currentPage")) { + return Session::get("{$this->class}.currentPage"); + } else { + return 0; + } + } + + /** + * @return Form + * @todo what template is used here? AssetAdmin_UploadContent.ss doesn't seem to be used anymore + */ + public function getEditForm($id = null, $fields = null) { + Requirements::javascript(FRAMEWORK_DIR . '/javascript/AssetUploadField.js'); + Requirements::css(FRAMEWORK_DIR . '/css/AssetUploadField.css'); + + $page = $this->currentPage(); + + $uploadField = UploadField::create('AssetUploadField', ''); + $uploadField->setConfig('previewMaxWidth', 40); + $uploadField->setConfig('previewMaxHeight', 30); + $uploadField->addExtraClass('ss-assetuploadfield'); + $uploadField->removeExtraClass('ss-uploadfield'); + $uploadField->setTemplate('AssetUploadField'); + + /*if ($folder->exists() && $folder->getFilename()) { + // The Upload class expects a folder relative *within* assets/ + $path = preg_replace('/^' . ASSETS_DIR . '\//', '', $folder->getFilename()); + $uploadField->setFolderName($path); + } else { + $uploadField->setFolderName(ASSETS_DIR); + }*/ + + $exts = $uploadField->getValidator()->getAllowedExtensions(); + asort($exts); + + $form = new Form( + $this, + 'getEditForm', + new FieldList( + $uploadField, + new LiteralField( + 'AllowedExtensions', + sprintf( + '

%s: %s

', + _t('AssetAdmin.ALLOWEDEXTS', 'Allowed extensions'), + implode(', ', $exts) + ) + ), + new HiddenField('ID') + ), + new FieldList() + ); + $form->addExtraClass('center cms-edit-form ' . $this->BaseCSSClasses()); + // Don't use AssetAdmin_EditForm, as it assumes a different panel structure + $form->setTemplate($this->getTemplatesWithSuffix('_EditForm')); + /*$form->Fields()->push( + new LiteralField( + 'BackLink', + sprintf( + '%s', + Controller::join_links(singleton('AssetAdmin')->Link('show'), $folder ? $folder->ID : 0), + _t('AssetAdmin.BackToFolder', 'Back to folder') + ) + ) + );*/ + //$form->loadDataFrom($folder); + + return $form; + } + + /** + * @return ArrayList + */ + /*public function Breadcrumbs($unlinked = false) { + $items = parent::Breadcrumbs($unlinked); + + // The root element should explicitly point to the root node. + $items[0]->Link = Controller::join_links(singleton('AssetAdmin')->Link('show'), 0); + + // Enforce linkage of hierarchy to AssetAdmin + foreach($items as $item) { + $baselink = $this->Link('show'); + if(strpos($item->Link, $baselink) !== false) { + $item->Link = str_replace($baselink, singleton('AssetAdmin')->Link('show'), $item->Link); + } + } + + $items->push(new ArrayData(array( + 'Title' => _t('AssetAdmin.Upload', 'Upload'), + 'Link' => $this->Link() + ))); + + return $items; + }*/ + +} + + +?> \ No newline at end of file diff --git a/code/DMSSiteTreeExtension.php b/code/DMSSiteTreeExtension.php index c038c06..479b0f9 100644 --- a/code/DMSSiteTreeExtension.php +++ b/code/DMSSiteTreeExtension.php @@ -6,17 +6,41 @@ class DMSSiteTreeExtension extends DataExtension { ); function updateCMSFields(FieldList $fields){ - $documentsListConfig = GridFieldConfig_RecordEditor::create(); + // Document listing + $gridFieldConfig = GridFieldConfig::create()->addComponents( + new GridFieldToolbarHeader(), + new GridFieldFilterHeader(), + new GridFieldSortableHeader(), + new GridFieldDataColumns(), + new GridFieldPaginator(15), + new GridFieldEditButton(), + new GridFieldDeleteAction(), + new GridFieldDetailForm() + //GridFieldLevelup::create($folder->ID)->setLinkSpec('admin/assets/show/%d') + ); $modelClass = DMS::$modelClass; - $documentsListConfig->getComponentByType('GridFieldDataColumns')->setDisplayFields($modelClass::$display_fields); - - $fields->addFieldToTab( - 'Root.Documents', - GridField::create( - 'Documents', - false, - $this->owner->Documents(), - $documentsListConfig + $gridFieldConfig->getComponentByType('GridFieldDataColumns')->setDisplayFields($modelClass::$display_fields); + $gridField = GridField::create( + 'Documents', + false, + $this->owner->Documents(), + $gridFieldConfig + ); + + $uploadBtn = new LiteralField( + 'UploadButton', + sprintf( + '%s', + Controller::join_links(singleton('DMSDocumentAddController')->Link(), '?ID=' . $this->owner->ID), + "Add Document" + ) + ); + + $fields->addFieldsToTab( + 'Root.Documents', + array( + $uploadBtn, + $gridField ) ); }