ktdocumentactions.php.svn-base
来自「PHP 知识管理系统(基于树结构的知识管理系统), 英文原版的PHP源码。」· SVN-BASE 代码 · 共 1,742 行 · 第 1/5 页
SVN-BASE
1,742 行
} if ($res === false) { $this->addErrorMessage(_kt('The file you requested is not available - please contact the system administrator if this is incorrect.')); redirect(generateControllerLink('viewDocument',sprintf(_kt('fDocumentId=%d'),$this->oDocument->getId()))); exit(0); } $oDocumentTransaction = & new DocumentTransaction($this->oDocument, _kt('Document downloaded'), 'ktcore.transactions.download', $aOptions); $oDocumentTransaction->create(); // fire subscription alerts for the downloaded document $oKTConfig =& KTConfig::getSingleton(); $bNotifications = ($oKTConfig->get('export/enablenotifications', 'on') == 'on') ? true : false; if($bNotifications){ $oSubscriptionEvent = new SubscriptionEvent(); $oFolder = Folder::get($this->oDocument->getFolderID()); $oSubscriptionEvent->DownloadDocument($this->oDocument, $oFolder); } exit(0); }}// }}}// {{{ KTDocumentCheckOutActionclass KTDocumentCheckOutAction extends KTDocumentAction { var $sName = 'ktcore.actions.document.checkout'; var $_sShowPermission = 'ktcore.permissions.write'; var $_bMutator = true; var $_bMutationAllowedByAdmin = false; var $sIconClass = 'checkout'; function getDisplayName() { return _kt('Checkout'); } function getInfo() { if ($this->oDocument->getIsCheckedOut()) { return null; } return parent::getInfo(); } function check() { $res = parent::check(); if ($res !== true) { return $res; } // since we actually check the doc out, then download it ... if (($_REQUEST[$this->event_var] == 'checkout_final') && ($this->oDocument->getCheckedOutUserID() == $_SESSION['userID'])) { return true; } // "normal". if ($this->oDocument->getIsCheckedOut()) { $_SESSION['KTErrorMessage'][] = _kt('This document is already checked out'); controllerRedirect('viewDocument', 'fDocumentId=' . $this->oDocument->getId()); exit(0); } return true; } function form_checkout() { $oForm = new KTForm; $oForm->setOptions(array( 'label' => _kt('Checkout'), 'action' => 'checkout', 'fail_action' => 'main', 'cancel_url' => KTBrowseUtil::getUrlForDocument($this->oDocument), 'submit_label' => _kt('Checkout document'), 'context' => &$this, )); $oForm->setWidgets(array( array('ktcore.widgets.reason', array( 'label' => _kt('Reason'), 'description' => _kt('Please specify why you are checking out this document. It will assist other users in understanding why you have locked this file. Please bear in mind that you can use a maximum of <strong>250</strong> characters.'), 'name' => 'reason', )), array('ktcore.widgets.boolean', array( 'label' => _kt('Download File'), 'description' => _kt('Indicate whether you would like to download this file as part of the checkout.'), 'name' => 'download_file', 'value' => true, )), )); $oForm->setValidators(array( array('ktcore.validators.string', array( 'test' => 'reason', 'max_length' => 250, 'output' => 'reason', )), array('ktcore.validators.boolean', array( 'test' => 'download_file', 'output' => 'download_file', )), )); return $oForm; } function do_main() { $this->oPage->setBreadcrumbDetails(_kt('checkout')); $oTemplate =& $this->oValidator->validateTemplate('ktcore/action/checkout'); $oForm = $this->form_checkout(); $oTemplate->setData(array( 'context' => &$this, 'form' => $oForm, )); return $oTemplate->render(); } function do_checkout() { $oForm = $this->form_checkout(); $res = $oForm->validate(); if (!empty($res['errors'])) { return $oForm->handleError(); } $data = $res['results']; $oTemplate =& $this->oValidator->validateTemplate('ktcore/action/checkout_final'); $sReason = $data['reason']; $this->startTransaction(); $res = KTDocumentUtil::checkout($this->oDocument, $sReason, $this->oUser); if (PEAR::isError($res)) { return $this->errorRedirectToMain(sprintf(_kt('Failed to check out the document: %s'), $res->getMessage())); } $this->commitTransaction(); if (!$data['download_file']) { $this->addInfoMessage(_kt('Document checked out.')); redirect(KTBrowseUtil::getUrlForDocument($this->oDocument)); exit(0); } $oTemplate->setData(array( 'context' => &$this, 'reason' => $sReason, )); return $oTemplate->render(); } function do_checkout_final() { $sReason = KTUtil::arrayGet($_REQUEST, 'reason'); $this->oValidator->notEmpty($sReason); $oKTTriggerRegistry = KTTriggerRegistry::getSingleton(); $aTriggers = $oKTTriggerRegistry->getTriggers('checkoutDownload', 'postValidate'); foreach ($aTriggers as $aTrigger) { $sTrigger = $aTrigger[0]; $oTrigger = new $sTrigger; $aInfo = array( 'document' => $oDocument, ); $oTrigger->setInfo($aInfo); $ret = $oTrigger->postValidate(); if (PEAR::isError($ret)) { return $ret; } } $oStorage =& KTStorageManagerUtil::getSingleton(); $oStorage->download($this->oDocument, true); exit(0); }}// }}}// {{{ KTDocumentCheckInActionclass KTDocumentCheckInAction extends KTDocumentAction { var $sName = 'ktcore.actions.document.checkin'; var $_sShowPermission = 'ktcore.permissions.write'; var $sIconClass = 'checkin'; function getDisplayName() { return _kt('Checkin'); } function getButton() { $btn = array(); $btn['display_text'] = _kt('Check Document In'); $btn['arrow_class'] = 'arrow_upload'; return $btn; } function getInfo() { if (!$this->oDocument->getIsCheckedOut()) { return null; } if ($this->oDocument->getCheckedOutUserID() != $this->oUser->getId()) { return null; } return parent::getInfo(); } function check() { $res = parent::check(); if ($res !== true) { return $res; } $postExpected = KTUtil::arrayGet($_REQUEST, 'postExpected'); $postReceived = KTUtil::arrayGet($_REQUEST, 'postReceived'); if (!empty($postExpected)) { $aErrorOptions = array( 'redirect_to' => array('main', sprintf('fDocumentId=%d', $this->oDocument->getId())), 'message' => sprintf(_kt('Upload larger than maximum POST size: %s (post_max_size variable in .htaccess or php.ini)'), ini_get('post_max_size')), ); $this->oValidator->notEmpty($postReceived, $aErrorOptions); } if (!$this->oDocument->getIsCheckedOut()) { $_SESSION['KTErrorMessage'][] = _kt('This document is not checked out'); controllerRedirect('viewDocument', 'fDocumentId=' . $this->oDocument->getId()); exit(0); } if ($this->oDocument->getCheckedOutUserID() != $this->oUser->getId()) { $_SESSION['KTErrorMessage'][] = _kt('This document is checked out, but not by you'); controllerRedirect('viewDocument', 'fDocumentId=' . $this->oDocument->getId()); exit(0); } return true; } function form_main() { $oForm = new KTForm; $oForm->setOptions(array( 'label' => _kt('Checkin Document'), 'action' => 'checkin', 'actionparams' => 'postExpected=1&fDocumentId='.$this->oDocument->getId(), 'fail_action' => 'main', 'cancel_url' => KTBrowseUtil::getUrlForDocument($this->oDocument), 'submit_label' => _kt('Checkin'), 'context' => &$this, 'file_upload' => true, // otherwise the post is not received. )); $major_inc = sprintf('%d.%d', $this->oDocument->getMajorVersionNumber()+1, 0); $minor_inc = sprintf('%d.%d', $this->oDocument->getMajorVersionNumber(), $this->oDocument->getMinorVersionNumber()+1); // Set the widgets for the form $aWidgets = array( array('ktcore.widgets.file', array( 'label' => _kt('File'), 'description' => sprintf(_kt('Please specify the file you wish to upload. Unless you also indicate that you are changing its filename (see "Force Original Filename" below), this will need to be called <strong>%s</strong>'), htmlentities($this->oDocument->getFilename(),ENT_QUOTES,'UTF-8')), 'name' => 'file', 'basename' => 'file', 'required' => true, )), array('ktcore.widgets.boolean',array( 'label' => _kt('Major Update'), 'description' => sprintf(_kt('If this is checked, then the document\'s version number will be increased to %s. Otherwise, it will be considered a minor update, and the version number will be %s.'), $major_inc, $minor_inc), 'name' => 'major_update', 'value' => false, )), array('ktcore.widgets.reason', array( 'label' => _kt('Reason'), 'description' => _kt('Please describe the changes you made to the document. Bear in mind that you can use a maximum of <strong>250</strong> characters.'), 'name' => 'reason', )), ); // Set the validators for the widgets $aValidators = array( array('ktcore.validators.string', array( 'test' => 'reason', 'max_length' => 250, 'output' => 'reason', )), array('ktcore.validators.boolean', array( 'test' => 'major_update', 'output' => 'major_update', )), array('ktcore.validators.file', array( 'test' => 'file', 'output' => 'file', )), ); // Add the "Force Original Filename" option if applicable global $default; if(!$default->disableForceFilenameOption){ $aWidgets[] = array('ktcore.widgets.boolean',array( 'label' => _kt('Force Original Filename'), 'description' => sprintf(_kt('If this is checked, the uploaded document must have the same filename as the original: <strong>%s</strong>'), htmlentities($this->oDocument->getFilename(),ENT_QUOTES,'UTF-8')), 'name' => 'forcefilename', 'value' => true, )); $aValidators[] = array('ktcore.validators.boolean', array( 'test' => 'forcefilename', 'output' => 'forcefilename', )); } // Add widgets and validators to the form $oForm->setWidgets($aWidgets); $oForm->setValidators($aValidators); return $oForm; } function do_main() { $this->oPage->setBreadcrumbDetails(_kt('Checkin')); $oTemplate =& $this->oValidator->validateTemplate('ktcore/action/checkin'); $oForm = $this->form_main(); $oTemplate->setData(array( 'context' => &$this, 'form' => $oForm, )); return $oTemplate->render(); } function do_checkin() { $oForm = $this->form_main(); $res = $oForm->validate(); $data = $res['results']; $extra_errors = array(); // If the filename is different to the original check if "Force Original Filename" is set and return an error if it is. $docFileName = $this->oDocument->getFilename(); if($data['file']['name'] != $docFileName){ global $default; if($default->disableForceFilenameOption){ $extra_errors['file'] = sprintf(_kt('The file you uploaded was not called "%s". The file must have the same name as the original file.'), htmlentities($docFileName,ENT_QUOTES,'UTF-8')); }else if ($data['forcefilename']) { $extra_errors['file'] = sprintf(_kt('The file you uploaded was not called "%s". If you wish to change the filename, please set "Force Original Filename" below to false. '), htmlentities($docFileName,ENT_QUOTES,'UTF-8')); } } if (!empty($res['errors']) || !empty($extra_errors)) { return $oForm->handleError(null, $extra_errors); }
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?