mirror of
https://github.com/silverstripe/silverstripe-dms
synced 2024-10-22 14:05:56 +02:00
ENHANCEMENT: adding basic UI for embargo/expiry
This commit is contained in:
parent
864624e662
commit
429253591c
@ -240,18 +240,18 @@ class DMSDocument extends DataObject implements DMSDocumentInterface {
|
|||||||
* should be used to hide documents that have not yet gone live.
|
* should be used to hide documents that have not yet gone live.
|
||||||
* @return null
|
* @return null
|
||||||
*/
|
*/
|
||||||
function embargoForever() {
|
function embargoForever($write = true) {
|
||||||
$this->EmbargoedForever = true;
|
$this->EmbargoedForever = true;
|
||||||
$this->write();
|
if ($write) $this->write();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Hides the document until any page it is linked to is published
|
* Hides the document until any page it is linked to is published
|
||||||
* @return null
|
* @return null
|
||||||
*/
|
*/
|
||||||
function embargoUntilPublished() {
|
function embargoUntilPublished($write = true) {
|
||||||
$this->EmbargoedUntilPublished = true;
|
$this->EmbargoedUntilPublished = true;
|
||||||
$this->write();
|
if ($write) $this->write();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -281,20 +281,20 @@ class DMSDocument extends DataObject implements DMSDocumentInterface {
|
|||||||
* @param $datetime String date time value when this Document should expire
|
* @param $datetime String date time value when this Document should expire
|
||||||
* @return null
|
* @return null
|
||||||
*/
|
*/
|
||||||
function embargoUntilDate($datetime) {
|
function embargoUntilDate($datetime, $write = true) {
|
||||||
$this->EmbargoedUntilDate = DBField::create_field('SS_Datetime', $datetime);;
|
$this->EmbargoedUntilDate = DBField::create_field('SS_Datetime', $datetime);;
|
||||||
$this->write();
|
if ($write) $this->write();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Clears any previously set embargos, so the Document always shows up in all queries.
|
* Clears any previously set embargos, so the Document always shows up in all queries.
|
||||||
* @return null
|
* @return null
|
||||||
*/
|
*/
|
||||||
function clearEmbargo() {
|
function clearEmbargo($write = true) {
|
||||||
$this->EmbargoedForever = false;
|
$this->EmbargoedForever = false;
|
||||||
$this->EmbargoedUntilPublished = false;
|
$this->EmbargoedUntilPublished = false;
|
||||||
$this->EmbargoedUntilDate = null;
|
$this->EmbargoedUntilDate = null;
|
||||||
$this->write();
|
if ($write) $this->write();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -313,18 +313,18 @@ class DMSDocument extends DataObject implements DMSDocumentInterface {
|
|||||||
* @param $datetime String date time value when this Document should expire
|
* @param $datetime String date time value when this Document should expire
|
||||||
* @return null
|
* @return null
|
||||||
*/
|
*/
|
||||||
function expireAtDate($datetime) {
|
function expireAtDate($datetime, $write = true) {
|
||||||
$this->ExpireAtDate = DBField::create_field('SS_Datetime', $datetime);
|
$this->ExpireAtDate = DBField::create_field('SS_Datetime', $datetime);
|
||||||
$this->write();
|
if ($write) $this->write();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Clears any previously set expiry.
|
* Clears any previously set expiry.
|
||||||
* @return null
|
* @return null
|
||||||
*/
|
*/
|
||||||
function clearExpiry() {
|
function clearExpiry($write = true) {
|
||||||
$this->ExpireAtDate = null;
|
$this->ExpireAtDate = null;
|
||||||
$this->write();
|
if ($write) $this->write();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -511,23 +511,56 @@ class DMSDocument extends DataObject implements DMSDocumentInterface {
|
|||||||
|
|
||||||
$fields->add(new LiteralField('BottomTaskSelection',
|
$fields->add(new LiteralField('BottomTaskSelection',
|
||||||
'<div id="Actions" class="field actions"><label class="left">Actions</label><ul>'.
|
'<div id="Actions" class="field actions"><label class="left">Actions</label><ul>'.
|
||||||
'<li class="ss-ui-button" data-panel="replace">Replace</li>'.
|
|
||||||
'<li class="ss-ui-button" data-panel="embargo">Embargo</li>'.
|
'<li class="ss-ui-button" data-panel="embargo">Embargo</li>'.
|
||||||
|
'<li class="ss-ui-button" data-panel="expiry">Expiry</li>'.
|
||||||
|
'<li class="ss-ui-button" data-panel="replace">Replace</li>'.
|
||||||
'<li class="ss-ui-button" data-panel="find-usage">Find usage</li>'.
|
'<li class="ss-ui-button" data-panel="find-usage">Find usage</li>'.
|
||||||
'</ul></div>'));
|
'</ul></div>'));
|
||||||
//$fields->add($uploadField);
|
|
||||||
|
$embargoValue = 0;
|
||||||
|
if ($this->EmbargoedForever) $embargoValue = 2;
|
||||||
|
elseif ($this->EmbargoedUntilPublished) $embargoValue = 1;
|
||||||
|
elseif (!empty($this->EmbargoedUntilDate)) $embargoValue = 3;
|
||||||
|
$embargo = new OptionsetField('Embargo','Embargo',array('None','Hide document until page is published','Hide document forever','Hide until set date'),$embargoValue);
|
||||||
|
$embargoDatetime = new DatetimeField('EmbargoedUntilDate','');
|
||||||
|
|
||||||
|
$expiryValue = 0;
|
||||||
|
if (!empty($this->ExpireAtDate)) $expiryValue = 1;
|
||||||
|
$expiry = new OptionsetField('Expiry','Expiry',array('None','Set document to expire on'),$expiryValue);
|
||||||
|
$expiryDatetime = new DatetimeField('ExpireAtDate','');
|
||||||
|
|
||||||
// This adds all the actions details into a group.
|
// This adds all the actions details into a group.
|
||||||
// Embargo, History, etc to go in here
|
// Embargo, History, etc to go in here
|
||||||
// These are toggled on and off via the Actions Buttons above
|
// These are toggled on and off via the Actions Buttons above
|
||||||
$fields->add($group = new FieldGroup(
|
$fields->add(FieldGroup::create(
|
||||||
|
FieldGroup::create(
|
||||||
|
$embargo,
|
||||||
|
$embargoDatetime
|
||||||
|
)->addExtraClass('embargo'),
|
||||||
|
FieldGroup::create(
|
||||||
|
$expiry,
|
||||||
|
$expiryDatetime
|
||||||
|
)->addExtraClass('expiry'),
|
||||||
$uploadField->addExtraClass('replace'),
|
$uploadField->addExtraClass('replace'),
|
||||||
$pagesGrid->addExtraClass('find-usage')
|
$pagesGrid->addExtraClass('find-usage')
|
||||||
));
|
)->setName("ActionsPanel")->addExtraClass('dmsupload ss-uploadfield'));
|
||||||
$group->setName("ActionsPanel")->addExtraClass('dmsupload ss-upload ss-uploadfield');
|
|
||||||
return $fields;
|
return $fields;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function onBeforeWrite() {
|
||||||
|
parent::onBeforeWrite();
|
||||||
|
|
||||||
|
//set the embargo options from the OptionSetField created in the getCMSFields method
|
||||||
|
//do not write after clearing the embargo (write happens automatically)
|
||||||
|
$this->clearEmbargo(false); //clear all previous settings and re-apply them on save
|
||||||
|
if ($this->Embargo == 1) $this->embargoUntilPublished(false);
|
||||||
|
if ($this->Embargo == 2) $this->embargoForever(false);
|
||||||
|
if ($this->Embargo == 3) $this->embargoUntilDate($this->EmbargoDatetime, false);
|
||||||
|
|
||||||
|
$this->clearExpiry(false); //clear all previous settings and re-apply them on save
|
||||||
|
if ($this->Expire == 1) $this->expireAtDate($this->ExpiryDatetime, false);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return the relative URL of an icon for the file type,
|
* Return the relative URL of an icon for the file type,
|
||||||
* based on the {@link appCategory()} value.
|
* based on the {@link appCategory()} value.
|
||||||
|
@ -43,6 +43,28 @@
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
$('#Form_ItemEditForm_Embargo input').entwine({
|
||||||
|
onchange: function() {
|
||||||
|
//selected the date options
|
||||||
|
if (this.attr('value') == 3) {
|
||||||
|
$('.embargoDatetime').show();
|
||||||
|
} else {
|
||||||
|
$('.embargoDatetime').hide();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
$('#Form_ItemEditForm_Expiry input').entwine({
|
||||||
|
onchange: function() {
|
||||||
|
//selected the date options
|
||||||
|
if (this.attr('value') == 1) {
|
||||||
|
$('.expiryDatetime').show();
|
||||||
|
} else {
|
||||||
|
$('.expiryDatetime').hide();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
$('#ActionsPanel').entwine({
|
$('#ActionsPanel').entwine({
|
||||||
onadd: function() {
|
onadd: function() {
|
||||||
//do an initial show of the entire panel
|
//do an initial show of the entire panel
|
||||||
@ -52,8 +74,14 @@
|
|||||||
$('#Actions ul').append('<li class="delete-button-appended"></li>');
|
$('#Actions ul').append('<li class="delete-button-appended"></li>');
|
||||||
$('.delete-button-appended').append($('#Form_ItemEditForm_action_doDelete'));
|
$('.delete-button-appended').append($('#Form_ItemEditForm_action_doDelete'));
|
||||||
|
|
||||||
|
//add some extra classes to the replace field containers to make it work with drag and drop uploading
|
||||||
|
this.find('.replace').closest('div.fieldgroup-field').addClass('ss-upload').addClass('ss-uploadfield');
|
||||||
|
|
||||||
|
$('#Form_ItemEditForm_EmbargoedUntilDate-date').closest('.fieldholder-small').addClass('embargoDatetime').hide();
|
||||||
|
$('#Form_ItemEditForm_ExpireAtDate-date').closest('.fieldholder-small').addClass('expiryDatetime').hide();
|
||||||
|
|
||||||
//show the replace panel when the page loads
|
//show the replace panel when the page loads
|
||||||
$('li[data-panel="replace"]').click();
|
$('li[data-panel="embargo"]').click();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user