ktbulkactions.php
来自「PHP 知识管理系统(基于树结构的知识管理系统), 英文原版的PHP源码。」· PHP 代码 · 共 1,282 行 · 第 1/4 页
PHP
1,282 行
$this->errorRedirectTo('collectinfo', _kt('Invalid target folder selected'));
exit(0);
}
if ($_REQUEST['fReturnAction'] != 'search2') {
if($this->iTargetFolderId == $this->oFolder->getId()){
$this->errorRedirectTo('collectinfo', _kt('Invalid target folder selected: Target folder is the same as the current folder.'));
exit(0);
}
}
// does the user have write permission
if(!Permission::userHasFolderWritePermission($this->oTargetFolder)) {
$this->errorRedirectTo('collectinfo', _kt('You do not have permission to move items to this location'));
exit(0);
}
return parent::do_performaction();
}
function perform_action($oEntity) {
if(is_a($oEntity, 'Document')) {
return KTDocumentUtil::move($oEntity, $this->oTargetFolder, $this->oUser, $this->sReason);
} else if(is_a($oEntity, 'Folder')) {
return KTFolderUtil::move($oEntity, $this->oTargetFolder, $this->oUser, $this->sReason);
}
}
}
class KTBulkCopyAction extends KTBulkAction {
var $sName = 'ktcore.actions.bulk.copy';
var $_sPermission = 'ktcore.permissions.read';
var $_bMutator = true;
function getDisplayName() {
return _kt('Copy');
}
function form_collectinfo() {
$cancelUrl = $this->getReturnUrl();
$oForm = new KTForm;
$oForm->setOptions(array(
'identifier' => 'ktcore.actions.bulk.copy.form',
'label' => _kt('Copy Items'),
'submit_label' => _kt('Copy'),
'action' => 'performaction',
'fail_action' => 'collectinfo',
'cancel_url' => $cancelUrl,
'context' => $this,
));
// Setup the collection for move display.
require_once(KT_LIB_DIR . '/browse/DocumentCollection.inc.php');
$collection = new AdvancedCollection();
$oCR =& KTColumnRegistry::getSingleton();
$col = $oCR->getColumn('ktcore.columns.title');
//$col->setOptions(array('qs_params'=>array('fMoveCode'=>$sMoveCode,
// 'fFolderId'=>$oFolder->getId(),
// 'action'=>'startMove')));
$collection->addColumn($col);
$qObj = new FolderBrowseQuery($this->oFolder->iId);
$exclude=array();
foreach( $this->oEntityList->aFolderIds as $folderid)
{
$exclude[] = $folderid+0;
}
$qObj->exclude_folders = $exclude;
$collection->setQueryObject($qObj);
$aOptions = $collection->getEnvironOptions();
$aOptions['result_url'] = KTUtil::addQueryString($_SERVER['PHP_SELF'],
array('fFolderId' => $this->oFolder->iId,
'action' => 'collectinfo'));
$collection->setOptions($aOptions);
$oWF =& KTWidgetFactory::getSingleton();
$oWidget = $oWF->get('ktcore.widgets.collection',
array('label' => _kt('Target Folder'),
'description' => _kt('Use the folder collection and path below to browse to the folder you wish to copy the documents into.'),
'required' => true,
'name' => 'fFolderId',
'broken_name' => true,
'folder_id' => $this->oFolder->iId,
'collection' => $collection));
$oForm->addInitializedWidget($oWidget);
$oForm->addWidget(
array('ktcore.widgets.reason',array(
'name' => 'reason',
'label' => _kt('Reason'),
'description' => _kt('The reason for copying these documents and folders, for historical purposes.'),
'value' => null,
'required' => true,
)
));
$oForm->setValidators(array(
array('ktcore.validators.string', array(
'test' => 'reason',
'output' => 'reason',
)),
));
return $oForm;
}
function check_entity($oEntity) {
if(is_a($oEntity, 'Document')) {
if(!KTDocumentUtil::canBeMoved($oEntity)) {
return PEAR::raiseError(_kt('Document cannot be copied'));
}
}
return parent::check_entity($oEntity);
}
// info collection step
function do_collectinfo() {
$this->store_lists();
$this->get_lists();
$oTemplating =& KTTemplating::getSingleton();
$oTemplate = $oTemplating->loadTemplate('ktcore/bulk_action_info');
return $oTemplate->render(array('context' => $this,
'form' => $this->form_collectinfo()));
}
function do_performaction() {
$this->store_lists();
$this->get_lists();
$oForm = $this->form_collectinfo();
$res = $oForm->validate();
if (!empty($res['errors'])) {
$oForm->handleError();
}
$this->sReason = $_REQUEST['data']['reason'];
$this->iTargetFolderId = $_REQUEST['data']['fFolderId'];
$this->oTargetFolder = Folder::get($this->iTargetFolderId);
$_REQUEST['fReturnData'] = '';
$_REQUEST['fFolderId'] = $this->iTargetFolderId;
// does it exists
if(PEAR::isError($this->oTargetFolder)) {
return PEAR::raiseError(_kt('Invalid target folder selected'));
}
// does the user have write permission
if(!Permission::userHasFolderWritePermission($this->oTargetFolder)) {
$this->errorRedirectTo('collectinfo', _kt('You do not have permission to move items to this location'));
}
return parent::do_performaction();
}
function perform_action($oEntity) {
if(is_a($oEntity, 'Document')) {
return KTDocumentUtil::copy($oEntity, $this->oTargetFolder, $this->sReason);
} else if(is_a($oEntity, 'Folder')) {
return KTFolderUtil::copy($oEntity, $this->oTargetFolder, $this->oUser, $this->sReason);
}
}
}
class KTBulkArchiveAction extends KTBulkAction {
var $sName = 'ktcore.actions.bulk.archive';
var $_sPermission = 'ktcore.permissions.write';
var $_bMutator = true;
function getDisplayName() {
return _kt('Archive');
}
function form_collectinfo() {
$cancelUrl = $this->getReturnUrl();
$oForm = new KTForm;
$oForm->setOptions(array(
'identifier' => 'ktcore.actions.bulk.archive.form',
'label' => _kt('Archive Items'),
'submit_label' => _kt('Archive'),
'action' => 'performaction',
'fail_action' => 'collectinfo',
'cancel_url' => $cancelUrl,
'context' => $this,
));
$oForm->addWidget(
array('ktcore.widgets.reason',array(
'name' => 'reason',
'label' => _kt('Reason'),
'description' => _kt('The reason for archiving these documents and folders, for historical purposes.'),
'value' => null,
'required' => true,
)
));
$oForm->setValidators(array(
array('ktcore.validators.string', array(
'test' => 'reason',
'output' => 'reason',
)),
));
return $oForm;
}
function check_entity($oEntity) {
if((!is_a($oEntity, 'Document')) && (!is_a($oEntity, 'Folder'))) {
return PEAR::raiseError(_kt('Document cannot be archived'));
}
if($oEntity->isSymbolicLink()){
return PEAR::raiseError(_kt("It is not possible to archive a shortcut. Please archive the target document or folder instead."));
}
if(is_a($oEntity, 'Document')){
if(!KTWorkflowUtil::actionEnabledForDocument($oEntity, 'ktcore.actions.document.archive')){
return PEAR::raiseError(_kt('Document cannot be archived as it is restricted by the workflow.'));
}
}
return parent::check_entity($oEntity);
}
/**
* build the confirmation form that is shown when symlinks are affected by this action.
*
* @return KTForm the form
*/
function form_confirm() {
$cancelUrl = $this->getReturnUrl();
$oForm = new KTForm;
$oForm->setOptions(array(
'label' => _kt('Are you sure?'),
'description' => _kt('There are shortcuts linking to some of the documents or folders in your selection; continuing will automatically delete the shortcuts. Would you like to continue?'),
'action' => 'collectinfo',
'fail_action' => 'main',
'cancel_url' => $cancelUrl,
'submit_label' => _kt('Continue'),
'context' => $this,
));
$oForm->setWidgets(array(
array('ktcore.widgets.hidden',array(
'name' => 'archive_confirmed',
'value' => '1'
))));
return $oForm;
}
/**
* Shows the confirmation form if symlinks are affected by the current action
*
* @return Template HTML
*/
function do_confirm(){
$this->store_lists();
$this->get_lists();
$this->oPage->setBreadcrumbDetails(_kt('Confirm archive'));
$oTemplate =& $this->oValidator->validateTemplate('ktcore/bulk_action_confirm');
$oForm = $this->form_confirm();
$oTemplate->setData(array(
'context' => &$this,
'form' => $oForm,
));
return $oTemplate->render();
}
// info collection step
function do_collectinfo() {
$this->store_lists();
$this->get_lists();
//check if a the symlinks deletion confirmation has been passed yet
if(KTutil::arrayGet($_REQUEST['data'],'archive_confirmed') != 1){
//check if there are actually any symlinks involved.
if($this->symlinksLinkingToCurrentList()){
$this->redirectTo("confirm");
}
}
$oTemplating =& KTTemplating::getSingleton();
$oTemplate = $oTemplating->loadTemplate('ktcore/bulk_action_info');
return $oTemplate->render(array('context' => $this,
'form' => $this->form_collectinfo()));
}
function do_performaction() {
$this->store_lists();
$this->get_lists();
$oForm = $this->form_collectinfo();
$res = $oForm->validate();
if (!empty($res['errors'])) {
$oForm->handleError();
}
$this->sReason = $_REQUEST['data']['reason'];
return parent::do_performaction();
}
function perform_action($oEntity) {
if(is_a($oEntity, 'Document')) {
$res = KTDocumentUtil::archive($oEntity, $this->sReason);
if(PEAR::isError($res)){
return $res;
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?