mirror of
https://github.com/silverstripe/silverstripe-cms
synced 2024-10-22 06:05:56 +00:00
ENHANCEMENT batchactions can now implement confirmationDialog() to provide a custom confirmation dialog to the front end.
MINOR added above confiration to batch setting expiry (from r97215) git-svn-id: svn://svn.silverstripe.com/silverstripe/open/modules/cms/branches/2.4@98211 467b73ca-7a2a-4603-9d3b-597d59a354a9
This commit is contained in:
parent
8eef5a7d99
commit
ba0adbc48d
@ -14,6 +14,7 @@ class CMSBatchActionHandler extends RequestHandler {
|
|||||||
|
|
||||||
static $url_handlers = array(
|
static $url_handlers = array(
|
||||||
'$BatchAction/applicablepages' => 'handleApplicablePages',
|
'$BatchAction/applicablepages' => 'handleApplicablePages',
|
||||||
|
'$BatchAction/confirmation' => 'handleConfirmation',
|
||||||
'$BatchAction' => 'handleAction',
|
'$BatchAction' => 'handleAction',
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -104,6 +105,27 @@ class CMSBatchActionHandler extends RequestHandler {
|
|||||||
return $response;
|
return $response;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function handleConfirmation($request) {
|
||||||
|
// Find the action handler
|
||||||
|
$actions = Object::get_static($this->class, 'batch_actions');
|
||||||
|
$actionClass = $actions[$request->param('BatchAction')];
|
||||||
|
$actionHandler = new $actionClass();
|
||||||
|
|
||||||
|
// Sanitise ID list and query the database for apges
|
||||||
|
$ids = split(' *, *', trim($request->requestVar('csvIDs')));
|
||||||
|
foreach($ids as $k => $id) $ids[$k] = (int)$id;
|
||||||
|
$ids = array_filter($ids);
|
||||||
|
|
||||||
|
if($actionHandler->hasMethod('confirmationDialog')) {
|
||||||
|
$response = new HTTPResponse(json_encode($actionHandler->confirmationDialog($ids)));
|
||||||
|
} else {
|
||||||
|
$response = new HTTPResponse(json_encode(array('alert' => false)));
|
||||||
|
}
|
||||||
|
|
||||||
|
$response->addHeader("Content-type", "application/json");
|
||||||
|
return $response;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return a DataObjectSet of ArrayData objects containing the following pieces of info
|
* Return a DataObjectSet of ArrayData objects containing the following pieces of info
|
||||||
* about each batch action:
|
* about each batch action:
|
||||||
|
@ -537,8 +537,6 @@ Behaviour.register({
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Publish selected pages action
|
* Publish selected pages action
|
||||||
*/
|
*/
|
||||||
@ -550,13 +548,34 @@ publishpage.prototype = {
|
|||||||
if(csvIDs) {
|
if(csvIDs) {
|
||||||
var optionEl = $('choose_batch_action').options[$('choose_batch_action').selectedIndex];
|
var optionEl = $('choose_batch_action').options[$('choose_batch_action').selectedIndex];
|
||||||
var actionText = optionEl.text;
|
var actionText = optionEl.text;
|
||||||
var optionParams = eval(optionEl.className);
|
|
||||||
var ingText = optionParams.doingText;
|
|
||||||
|
|
||||||
// Confirmation
|
var confirmationURL = $('choose_batch_action').value + '/confirmation?csvIDs=' + csvIDs;
|
||||||
|
jQuery.getJSON(confirmationURL, function(data) {
|
||||||
|
// If a custom alert has been provided, show that.
|
||||||
|
// otherwise, show the default one
|
||||||
|
if (data.alert) {
|
||||||
|
if (!confirm(data.content)) return false;
|
||||||
|
} else {
|
||||||
if(!confirm("You have " + batchActionGlobals.count() + " pages selected.\n\nDo your really want to " + actionText.toLowerCase() + "?")) {
|
if(!confirm("You have " + batchActionGlobals.count() + " pages selected.\n\nDo your really want to " + actionText.toLowerCase() + "?")) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$('batchactions_options').submitform();
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
alert(ss.i18n._t('CMSMAIN.SELECTONEPAGE'));
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
},
|
||||||
|
|
||||||
|
submitform: function() {
|
||||||
|
csvIDs = batchActionGlobals.getCsvIds();
|
||||||
|
|
||||||
|
var optionEl = $('choose_batch_action').options[$('choose_batch_action').selectedIndex];
|
||||||
|
var optionParams = eval(optionEl.className);
|
||||||
|
var ingText = optionParams.doingText;
|
||||||
|
|
||||||
this.elements.csvIDs.value = csvIDs;
|
this.elements.csvIDs.value = csvIDs;
|
||||||
|
|
||||||
@ -581,11 +600,6 @@ publishpage.prototype = {
|
|||||||
errorMessage('Error ' + ingText, response);
|
errorMessage('Error ' + ingText, response);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
} else {
|
|
||||||
alert(ss.i18n._t('CMSMAIN.SELECTONEPAGE'));
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user