documentpreview.php.svn-base
来自「PHP 知识管理系统(基于树结构的知识管理系统), 英文原版的PHP源码。」· SVN-BASE 代码 · 共 300 行
SVN-BASE
300 行
<?php/* * $Id: $ * * The contents of this file are subject to the KnowledgeTree * Commercial Editions On-Premise License ("License"); * You may not use this file except in compliance with the License. * You may obtain a copy of the License at * http://www.knowledgetree.com/about/legal/ * The terms of this license may change from time to time and the latest * license will be published from time to time at the above Internet address. * * This edition of the KnowledgeTree software * is NOT licensed to you under Open Source terms. * You may not redistribute this source code. * For more information please see the License above. * * (c) 2008 KnowledgeTree Inc. * Portions copyright The Jam Warehouse Software (Pty) Ltd; * All Rights Reserved. * */$kt_dir = $_REQUEST['kt_dir'];require_once($kt_dir.'/config/dmsDefaults.php');class DocumentPreview { var $_oDocument; var $_IDocId; var $_iMimeId; var $_oFolder; var $_iFolderId; /** * Constructer - creates the document object * * @param int $iDocumentId The document Id * @return */ function DocumentPreview($iId, $type = 'document'){ if($type == 'folder'){ // $type should never be a folder. $this->_oDocument = false; return; } $oDocument = Document::get($iId); if(PEAR::isError($oDocument)){ $this->_oDocument = false; return; } $this->_oDocument = $oDocument; $this->_IDocId = $iId; $this->_iMimeId = $oDocument->getMimeTypeID(); $this->imageMimeTypes = array(10, 27, 37, 38, 39, 71); } /** * Get the document title for the preview * * @return string The document title and mime icon */ function getTitle(){ if($this->_oDocument === false){ return '<b>'._kt('Error').'</b>'; } GLOBAL $default; $sIcon = ''; $sTitle = htmlentities($this->_oDocument->getName(), ENT_NOQUOTES, 'utf-8'); $iLen = strlen($sTitle); if($iLen > 60){ $sFull = $sTitle; if($iLen >= 99){ $sTitle = substr($sTitle, 0, 97).'...'; } $sTitle = '<h4 title="'.$sFull.'">'.$sTitle.'</h4>'; }else{ $sTitle = '<h2>'.$sTitle.'</h2>'; } // Get the icon $sIcon = $this->getMimeIcon(); $sTitle = '<div class="previewhd"> <div style="float:left">'.$sIcon.'</div> <div style="float:left; width: 375px;">'.$sTitle.'</div> </div>'; return $sTitle; } /** * Display the mime type icon. * * @param unknown_type $iMimeId * @return unknown */ function getMimeIcon() { global $default; $iMimeId = $this->_iMimeId; $sIconPath = $this->getIconPath(); $sIconPath = $default->rootUrl.$sIconPath; return "<img src='$sIconPath' title='$sTitle' /> "; } /** * If there isn't an icon for the given extension, find a generic icon for the type else return the default icon. * * @param string $ext * @return string */ function checkForGeneric($ext) { if(in_array($ext, array('py','php'))){ return 'generic/source'; } if(in_array($ext, array('odt','sxw', 'ott', 'sxt'))){ return 'generic/wordprocessing'; } if(in_array($ext, array('ods','ots', 'sxc', 'stc'))){ return 'spreadsheet'; } if(in_array($ext, array('odp','otp', 'sxi', 'sti'))){ return 'generic/pres'; } if(in_array($ext, array('mp3','m4a'))){ return 'generic/sound'; } if(in_array($ext, array('m4v'))){ return 'generic/video'; } return 'default'; } /** * Get the path to the correct icon for the mime type * * @return string */ function getIconPath() { $sIconPath = KTMime::getIconPath($this->_iMimeId); // Get mime type icon $sIconPath = '/resources/mimetypes/big/'.$sIconPath.'.png'; if(!file_exists(KT_DIR.$sIconPath)){ // See if there is an icon for the extension $sMimeType = KTMime::getMimeTypeName($this->_iMimeId); $aMimeInfo = KTMime::getFriendlyNameAndExtension($sMimeType); if(!PEAR::isError($aMimeInfo) && !empty($aMimeInfo)){ $sExt = $aMimeInfo[0]['filetypes']; $sIconPath = '/resources/mimetypes/big/'.$sExt.'.png'; if(!file_exists(KT_DIR.$sIconPath)){ $generic = $this->checkForGeneric($sExt); // if all else fails, use the default icon $sIconPath = '/resources/mimetypes/big/'.$generic.'.png'; } } } return $sIconPath; } /** * Render the info box content * * @return string */ function renderPreview(){ if($this->_oDocument === false){ return '<p>'._kt('A problem occured while loading the property preview.').'</p>'; } $sInfo = $this->getMetadata(); return '<div id="preview" class="preview" onclick="javascript: destroyPanel();">'.$sInfo.'</div>'; } /** * Create a table of the document metadata. * Hard coded for the moment * * @return unknown */ function getMetadata(){ /* Get document info */ // Filename $sFilenameLb = _kt('Document Filename: '); $sFilename = $this->_oDocument->getFileName(); // Mime type $sMimeTypeLb = _kt('File is a: '); $iMimeId = $this->_oDocument->getMimeTypeID(); $sMimeType = KTMime::getMimeTypeName($iMimeId); $sMimeType = KTMime::getFriendlyNameForString($sMimeType); // Version $sVersionLb = _kt('Document Version: '); $iVersion = $this->_oDocument->getVersion(); // Created by $sCreatedByLb = _kt('Created by: '); $iCreatorId = $this->_oDocument->getCreatorID(); $sCreated = $this->_oDocument->getCreatedDateTime(); $oCreator = User::get($iCreatorId); $sCreatedBy = $oCreator->getName().' ('.$sCreated.')'; // Owned by $sOwnedByLb = _kt('Owned by: '); $iOwnedId = $this->_oDocument->getOwnerID(); $oOwner = User::get($iOwnedId); $sOwnedBy = $oOwner->getName(); // Last update by $iModifiedId = $this->_oDocument->getModifiedUserId(); $sLastUpdatedByLb = ''; $sLastUpdatedBy = ''; if(!empty($iModifiedId)){ $sLastUpdatedByLb = _kt('Last updated by: '); $sModified = $this->_oDocument->getLastModifiedDate(); $oModifier = User::get($iModifiedId); $sLastUpdatedBy = $oModifier->getName().' ('.$sModified.')'; } // Document type $sDocTypeLb = _kt('Document Type: '); $iDocTypeId = $this->_oDocument->getDocumentTypeID(); $oDocType = DocumentType::get($iDocTypeId); $sDocType = $oDocType->getName(); // Workflow $iWFId = $this->_oDocument->getWorkflowId(); $sWF = ''; $sWFLb = ''; if(!empty($iWFId)){ $sWFLb = _kt('Workflow: '); $iWFStateId = $this->_oDocument->getWorkflowStateId(); $oWF = KTWorkflow::get($iWFId); $sWF = $oWF->getHumanName(); $oWFState = KTWorkflowState::get($iWFStateId); $sWF .= ' ('.$oWFState->getHumanName().')'; } // Checked out by $sCheckedLb = ''; $sCheckedOutBy = ''; if($this->_oDocument->getIsCheckedOut()){ $sCheckedLb = _kt('Checked out by: '); $iCheckedID = $this->_oDocument->getCheckedOutUserID(); $oCheckedUser = User::get($iCheckedID); $sCheckedOutBy = $oCheckedUser->getName(); } // Id $sIdLb = _kt('Document ID: '); $sId = $this->_IDocId; /* Create table */ $sInfo = "<table cellspacing='3px' cellpadding='3px'> <tr><td>{$sFilenameLb}</td><td><b>{$sFilename}</b></td></tr> <tr><td>{$sMimeTypeLb}</td><td><b>{$sMimeType}</b></td></tr> <tr><td>{$sVersionLb}</td><td><b>{$iVersion}</b></td></tr> <tr><td>{$sCreatedByLb}</td><td><b>{$sCreatedBy}</b></td></tr> <tr><td>{$sOwnedByLb}</td><td><b>{$sOwnedBy}</b></td></tr>"; if(!empty($sLastUpdatedBy)){ $sInfo .= "<tr><td>{$sLastUpdatedByLb}</td><td><b>{$sLastUpdatedBy}</b></td></tr>"; } $sInfo .= "<tr><td>{$sDocTypeLb}</td><td><b>{$sDocType}</b></td></tr>"; if(!empty($sWF)){ $sInfo .= "<tr><td>{$sWFLb}</td><td><b>{$sWF}</b></td></tr>"; } if(!empty($sCheckedOutBy)){ $sInfo .= "<tr><td>{$sCheckedLb}</td><td><b>{$sCheckedOutBy}</b></td></tr>"; } $sInfo .= "<tr><td>{$sIdLb}</td><td><b>{$sId}</b></td></tr> </table>"; return $sInfo; }}/** * Get the document id and render the preview / info box */$iDocumentId = $_REQUEST['fDocumentId'];$oPreview = new DocumentPreview($iDocumentId);$sTitle = $oPreview->getTitle();$sContent = $oPreview->renderPreview();echo $sTitle.'<br />'.$sContent;exit;?>
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?