mirror of
https://github.com/silverstripe/silverstripe-dms
synced 2024-10-22 14:05:56 +02:00
e4bc553521
* Add 2.0.0 changelog * Update DMSInterface and DMSDocumentInterface removing *page and adding getDocumentSetsByPage to DMSInterface * Update use documentation and update unit tests This commit changes the relationship from Pages has_many Documents to Pages has_many DocumentSets which are many_many to Documents. The upload field has been upated to attach documents to a set instead of a page, the tests updated and the DMSInterface and DMSDocumentInterface updated to be less relevant to pages and more relevant to document sets.
69 lines
1.8 KiB
PHP
69 lines
1.8 KiB
PHP
<?php
|
|
|
|
class DMSGridFieldAddNewButton extends GridFieldAddNewButton implements GridField_HTMLProvider
|
|
{
|
|
/**
|
|
* The document set ID that the document should be attached to
|
|
*
|
|
* @var int
|
|
*/
|
|
protected $documentSetId;
|
|
|
|
/**
|
|
* Overriding the parent method to change the template that the DMS add button will be rendered with
|
|
*
|
|
* @param GridField $gridField
|
|
* @return array
|
|
*/
|
|
public function getHTMLFragments($gridField)
|
|
{
|
|
$singleton = singleton($gridField->getModelClass());
|
|
|
|
if (!$singleton->canCreate()) {
|
|
return array();
|
|
}
|
|
|
|
if (!$this->buttonName) {
|
|
// provide a default button name, can be changed by calling {@link setButtonName()} on this component
|
|
$objectName = $singleton->i18n_singular_name();
|
|
$this->buttonName = _t('GridField.Add', 'Add {name}', array('name' => $objectName));
|
|
}
|
|
|
|
$link = singleton('DMSDocumentAddController')->Link();
|
|
if ($this->getDocumentSetId()) {
|
|
$link = Controller::join_links($link, '?dsid=' . $this->getDocumentSetId());
|
|
}
|
|
|
|
$data = new ArrayData(array(
|
|
'NewLink' => $link,
|
|
'ButtonName' => $this->buttonName,
|
|
));
|
|
|
|
return array(
|
|
$this->targetFragment => $data->renderWith('DMSGridFieldAddNewButton'),
|
|
);
|
|
}
|
|
|
|
/**
|
|
* Set the document set ID that this document should be attached to
|
|
*
|
|
* @param int $id
|
|
* @return $this
|
|
*/
|
|
public function setDocumentSetId($id)
|
|
{
|
|
$this->documentSetId = $id;
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* Get the document set ID that this document should be attached to
|
|
*
|
|
* @return int
|
|
*/
|
|
public function getDocumentSetId()
|
|
{
|
|
return $this->documentSetId;
|
|
}
|
|
}
|