browse.php.svn-base

来自「PHP 知识管理系统(基于树结构的知识管理系统), 英文原版的PHP源码。」· SVN-BASE 代码 · 共 442 行 · 第 1/2 页

SVN-BASE
442
字号
<?php/** * $Id$ * * KnowledgeTree Community Edition * Document Management Made Simple * Copyright (C) 2008 KnowledgeTree Inc. * Portions copyright The Jam Warehouse Software (Pty) Limited * * This program is free software; you can redistribute it and/or modify it under * the terms of the GNU General Public License version 3 as published by the * Free Software Foundation. * * This program is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more * details. * * You should have received a copy of the GNU General Public License * along with this program.  If not, see <http://www.gnu.org/licenses/>. * * You can contact KnowledgeTree Inc., PO Box 7775 #87847, San Francisco, * California 94120-7775, or email info@knowledgetree.com. * * The interactive user interfaces in modified source and object code versions * of this program must display Appropriate Legal Notices, as required under * Section 5 of the GNU General Public License version 3. * * In accordance with Section 7(b) of the GNU General Public License version 3, * these Appropriate Legal Notices must retain the display of the "Powered by * KnowledgeTree" logo and retain the original copyright notice. If the display of the * logo is not reasonably feasible for technical reasons, the Appropriate Legal Notices * must display the words "Powered by KnowledgeTree" and retain the original * copyright notice. * Contributor( s): ______________________________________ */// main library routines and defaultsrequire_once('config/dmsDefaults.php');require_once(KT_LIB_DIR . '/templating/templating.inc.php');require_once(KT_LIB_DIR . '/templating/kt3template.inc.php');require_once(KT_LIB_DIR . '/dispatcher.inc.php');require_once(KT_LIB_DIR . '/util/ktutil.inc');require_once(KT_LIB_DIR . '/browse/DocumentCollection.inc.php');require_once(KT_LIB_DIR . '/browse/BrowseColumns.inc.php');require_once(KT_LIB_DIR . '/browse/PartialQuery.inc.php');require_once(KT_LIB_DIR . '/browse/browseutil.inc.php');require_once(KT_LIB_DIR . '/foldermanagement/Folder.inc');require_once(KT_LIB_DIR . '/documentmanagement/DocumentType.inc');require_once(KT_LIB_DIR . '/documentmanagement/Document.inc');require_once(KT_LIB_DIR . '/documentmanagement/DocumentField.inc');require_once(KT_LIB_DIR . '/widgets/portlet.inc.php');require_once(KT_LIB_DIR . '/actions/folderaction.inc.php');require_once(KT_DIR . '/plugins/ktcore/KTFolderActions.php');require_once(KT_LIB_DIR . '/permissions/permissionutil.inc.php');require_once(KT_LIB_DIR . '/permissions/permission.inc.php');require_once(KT_LIB_DIR . '/users/userhistory.inc.php');require_once(KT_LIB_DIR . '/browse/columnregistry.inc.php');require_once(KT_LIB_DIR . '/actions/entitylist.php');require_once(KT_LIB_DIR . '/actions/bulkaction.php');$sectionName = 'browse';class BrowseDispatcher extends KTStandardDispatcher {	var $sName = 'ktcore.actions.folder.view';	var $oFolder = null;	var $sSection = 'browse';	var $browse_mode = null;	var $query = null;	var $resultURL;	var $sHelpPage = 'ktcore/browse.html';	var $editable;	function BrowseDispatcher() {		$this->aBreadcrumbs = array(		array('action' => 'browse', 'name' => _kt('Browse')),		);		return parent::KTStandardDispatcher();	}	function check() {		$this->browse_mode = KTUtil::arrayGet($_REQUEST, 'fBrowseMode', 'folder');		$action = KTUtil::arrayGet($_REQUEST, $this->event_var, 'main');		$this->editable = false;		// catch the alternative actions.		if ($action != 'main') {			return true;		}		// if we're going to main ...		// folder browse mode		if ($this->browse_mode == 'folder') {			$in_folder_id = KTUtil::arrayGet($_REQUEST, 'fFolderId');			if (empty($in_folder_id)) {				$oConfig = KTConfig::getSingleton();				if ($oConfig->get('tweaks/browseToUnitFolder')) {					$iHomeFolderId = $this->oUser->getHomeFolderId();					if ($iHomeFolderId) {						$in_folder_id = $iHomeFolderId;					}				}			}			$folder_id = (int) $in_folder_id; // conveniently, will be 0 if not possible.			if ($folder_id == 0) {				$folder_id = 1;			}			$_REQUEST['fBrowseMode'] = 'folder';			// here we need the folder object to do the breadcrumbs.			$oFolder =& Folder::get($folder_id);			if (PEAR::isError($oFolder)) {				return false; // just fail.			}			// check whether the user can edit this folder			$oPerm = KTPermission::getByName('ktcore.permissions.write');			if (KTPermissionUtil::userHasPermissionOnItem($this->oUser, $oPerm, $oFolder)) {				$this->editable = true;			} else {				$this->editable = false;			}			// set the title and breadcrumbs...			$this->oPage->setTitle(_kt('Browse'));			if (KTPermissionUtil::userHasPermissionOnItem($this->oUser, 'ktcore.permissions.folder_details', $oFolder)) {				$this->oPage->setSecondaryTitle($oFolder->getName());			} else {				if (KTBrowseUtil::inAdminMode($this->oUser, $oFolder)) {					$this->oPage->setSecondaryTitle(sprintf('(%s)', $oFolder->getName()));				} else {					$this->oPage->setSecondaryTitle('...');				}			}			//Figure out if we came here by navigating trough a shortcut.			//If we came here from a shortcut, the breadcrumbspath should be relative			//to the shortcut folder.			$iSymLinkFolderId = KTUtil::arrayGet($_REQUEST, 'fShortcutFolder', null);			if(is_numeric($iSymLinkFolderId)){				$oBreadcrumbsFolder = Folder::get($iSymLinkFolderId);				$this->aBreadcrumbs = kt_array_merge($this->aBreadcrumbs, KTBrowseUtil::breadcrumbsForFolder($oBreadcrumbsFolder,array('final' => false)));				$this->aBreadcrumbs[] = array('name'=>$oFolder->getName());			}else{				$this->aBreadcrumbs = kt_array_merge($this->aBreadcrumbs, KTBrowseUtil::breadcrumbsForFolder($oFolder));			}			$this->oFolder =& $oFolder;			// we now have a folder, and need to create the query.			$aOptions = array(                'ignorepermissions' => KTBrowseUtil::inAdminMode($this->oUser, $oFolder),			);			$this->oQuery =  new BrowseQuery($oFolder->getId(), $this->oUser, $aOptions);			$this->resultURL = KTUtil::addQueryString($_SERVER['PHP_SELF'], sprintf('fFolderId=%d', $oFolder->getId()));			// and the portlets			$portlet = new KTActionPortlet(sprintf(_kt('About this folder')));			$aActions = KTFolderActionUtil::getFolderInfoActionsForFolder($this->oFolder, $this->oUser);			$portlet->setActions($aActions,$this->sName);			$this->oPage->addPortlet($portlet);			$portlet = new KTActionPortlet(sprintf(_kt('Actions on this folder')));			$aActions = KTFolderActionUtil::getFolderActionsForFolder($oFolder, $this->oUser);			$portlet->setActions($aActions,null);			$this->oPage->addPortlet($portlet);		} else if ($this->browse_mode == 'lookup_value') {			// browsing by a lookup value			$this->editable = false;			// check the inputs			$field = KTUtil::arrayGet($_REQUEST, 'fField', null);			$oField = DocumentField::get($field);			if (PEAR::isError($oField) || ($oField == false)) {				$this->errorRedirectToMain('No Field selected.');				exit(0);			}			$value = KTUtil::arrayGet($_REQUEST, 'fValue', null);			$oValue = MetaData::get($value);			if (PEAR::isError($oValue) || ($oValue == false)) {				$this->errorRedirectToMain('No Value selected.');				exit(0);			}			$this->oQuery = new ValueBrowseQuery($oField, $oValue);			$this->resultURL = KTUtil::addQueryString($_SERVER['PHP_SELF'],			sprintf('fBrowseMode=lookup_value&fField=%d&fValue=%d', $field, $value));			// setup breadcrumbs			$this->aBreadcrumbs =			array(			array('name' => _kt('Lookup Values'),                            'url' => KTUtil::addQueryString($_SERVER['PHP_SELF'], 'action=selectField')),			array('name' => $oField->getName(),                            'url' => KTUtil::addQueryString($_SERVER['PHP_SELF'], 'action=selectLookup&fField=' . $oField->getId())),			array('name' => $oValue->getName(),                            'url' => KTUtil::addQueryString($_SERVER['PHP_SELF'], sprintf('fBrowseMode=lookup_value&fField=%d&fValue=%d', $field, $value))));		} else if ($this->browse_mode == 'document_type') {			// browsing by document type

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?