ktcolumns.inc.php
来自「PHP 知识管理系统(基于树结构的知识管理系统), 英文原版的PHP源码。」· PHP 代码 · 共 601 行 · 第 1/2 页
PHP
601 行
$iUserId = null;
if (($aDataRow["type"] == "folder") && (!is_null($this->folder_field_function))) {
if (method_exists($aDataRow['folder'], $this->folder_field_function)) {
$iUserId = call_user_func(array($aDataRow['folder'], $this->folder_field_function));
}
} else if (($aDataRow["type"] == "document") && (!is_null($this->document_field_function))) {
if (method_exists($aDataRow['document'], $this->document_field_function)) {
$iUserId = call_user_func(array($aDataRow['document'], $this->document_field_function));
}
}
if (is_null($iUserId)) {
return '—';
}
$oUser = User::get($iUserId);
if (PEAR::isError($oUser) || $oUser == false) {
return '—';
} else {
return htmlentities($oUser->getName(), ENT_NOQUOTES, 'UTF-8');
}
}
function addToFolderQuery() {
return array(null, null, null);
}
function addToDocumentQuery() {
return array(null, null, null);
}
}
class CreatorColumn extends AdvancedUserColumn {
var $document_field_function = "getCreatorID";
var $folder_field_function = "getCreatorID";
var $sortable = true; // by default
var $namespace = 'ktcore.columns.creator';
function CreatorColumn() {
$this->label = _kt("Creator"); // abstract.
}
}
class AdvancedSelectionColumn extends AdvancedColumn {
var $rangename = null;
var $show_folders = true;
var $show_documents = true;
var $namespace = "ktcore.columns.selection";
function AdvancedSelectionColumn() {
$this->label = '';
}
function setOptions($aOptions) {
AdvancedColumn::setOptions($aOptions);
$this->rangename = KTUtil::arrayGet($this->aOptions, 'rangename', $this->rangename);
$this->show_folders = KTUtil::arrayGet($this->aOptions, 'show_folders', $this->show_folders, false);
$this->show_documents = KTUtil::arrayGet($this->aOptions, 'show_documents', $this->show_documents, false);
}
function renderHeader($sReturnURL) {
global $main;
$main->requireJSResource("resources/js/toggleselect.js");
return sprintf('<input type="checkbox" title="toggle all" onclick="toggleSelectFor(this, \'%s\')" />', $this->rangename);
}
// only include the _f or _d IF WE HAVE THE OTHER TYPE.
function renderData($aDataRow) {
$localname = htmlentities($this->rangename,ENT_QUOTES,'UTF-8');
if (($aDataRow["type"] === "folder") && ($this->show_folders)) {
if ($this->show_documents) {
$localname .= "_f[]";
}
$v = $aDataRow["folderid"];
} else if (($aDataRow["type"] === "document") && $this->show_documents) {
if ($this->show_folders) {
$localname .= "_d[]";
}
$v = $aDataRow["docid"];
} else {
return ' ';
}
return sprintf('<input type="checkbox" name="%s" onclick="activateRow(this)" value="%s"/>', $localname, $v);
}
// no label, but we do have a title
function getName() {
return _kt("Multiple Selection");
}
}
class AdvancedSingleSelectionColumn extends AdvancedSelectionColumn {
var $namespace = 'ktcore.columns.singleselection';
function AdvancedSingleSelectionColumn() {
parent::AdvancedSelectionColumn();
$this->label = null;
}
function renderHeader() {
global $main;
//include some javascript to force real single selections
if($this->show_folders && $this->show_documents){
$main->requireJSResource("resources/js/singleselect.js");
}
return ' ';
}
// only include the _f or _d IF WE HAVE THE OTHER TYPE.
function renderData($aDataRow) {
$localname = $this->rangename;
if (($aDataRow["type"] === "folder") && ($this->show_folders)) {
if ($this->show_documents) {
$localname .= "_f";
}
$v = $aDataRow["folderid"];
} else if (($aDataRow["type"] === "document") && $this->show_documents) {
if ($this->show_folders) {
$localname .= "_d";
}
$v = $aDataRow["docid"];
} else {
return ' ';
}
$return = '<input type="radio" name="' . $localname . '" value="' . $v . '" ';
if($this->show_folders && $this->show_documents){
$return .= 'onClick="forceSingleSelect(this)" ';
}
$return .='/>';
return $return;
}
// no label, but we do have a title
function getName() {
return _kt("Single Selection");
}
}
class AdvancedWorkflowColumn extends AdvancedColumn {
var $namespace = 'ktcore.columns.workflow_state';
var $sortable = false;
function AdvancedWorkflowColumn() {
$this->label = _kt("Workflow State");
$this->sortable = false;
}
// use inline, since its just too heavy to even _think_ about using smarty.
function renderData($aDataRow) {
// only _ever_ show this for documents.
if ($aDataRow["type"] === "folder") {
return ' ';
}
$oWorkflow = KTWorkflowUtil::getWorkflowForDocument($aDataRow['document']);
$oState = KTWorkflowUtil::getWorkflowStateForDocument($aDataRow['document']);
if (($oState == null) || ($oWorkflow == null)) {
return '—';
} else {
return sprintf('%s <span class="descriptive">%s</span>',
htmlentities($oState->getName(), ENT_NOQUOTES, 'UTF-8'),
htmlentities($oWorkflow->getName(), ENT_NOQUOTES, 'UTF-8')
);
}
}
}
class CheckedOutByColumn extends AdvancedColumn {
var $namespace = 'ktcore.columns.checkedout_by';
var $sortable = false;
function CheckedOutByColumn() {
$this->label = _kt('Checked Out By');
$this->sortable = false;
}
function renderData($aDataRow) {
// only show this for documents.
if ($aDataRow['type'] === 'folder') {
return ' ';
}
// Check if document is checked out
$bIsCheckedOut = $aDataRow['document']->getIsCheckedOut();
if($bIsCheckedOut){
// Get the user id
$iUserId = $aDataRow['document']->getCheckedOutUserID();
$oUser = User::get($iUserId);
$sUser = $oUser->getName();
return '<span class="descriptive">'.htmlentities($sUser, ENT_NOQUOTES, 'UTF-8').'</span>';
}
return '—';
}
}
class DocumentTypeColumn extends AdvancedColumn {
var $namespace = 'ktcore.columns.document_type';
var $sortable = false;
function DocumentTypeColumn() {
$this->label = _kt('Document Type');
$this->sortable = false;
}
function renderData($aDataRow) {
// only show this for documents.
if ($aDataRow['type'] === 'folder') {
return ' ';
}
// Check if document is checked out
$iDocTypeId = $aDataRow['document']->getDocumentTypeID();
if(!empty($iDocTypeId)){
$oDocumentType = DocumentType::get($iDocTypeId);
$sType = $oDocumentType->getName();
return '<span class="descriptive">'.htmlentities($sType, ENT_NOQUOTES, 'UTF-8').'</span>';
}
return '—';
}
}
class AdvancedDownloadColumn extends AdvancedColumn {
var $namespace = 'ktcore.columns.download';
function AdvancedDownloadColumn() {
$this->label = null;
}
function renderHeader($sReturnURL) {
return ' ';
}
function renderData($aDataRow) {
// only _ever_ show this for documents.
if ($aDataRow["type"] === "folder") {
return ' ';
}
$link = KTUtil::ktLink('action.php','ktcore.actions.document.view', 'fDocumentId=' . $aDataRow['document']->getId());
return sprintf('<a href="%s" class="ktAction ktDownload" title="%s">%s</a>', $link, _kt('Download Document'), _kt('Download Document'));
}
function getName() { return _kt('Download'); }
}
class DocumentIDColumn extends AdvancedColumn {
var $bSortable = false;
var $namespace = 'ktcore.columns.docid';
function DocumentIDColumn() {
$this->label = _kt("Document ID");
}
function renderData($aDataRow) {
// only _ever_ show this for documents.
if ($aDataRow["type"] === "folder") {
return ' ';
}
return htmlentities($aDataRow['document']->getId(), ENT_NOQUOTES, 'UTF-8');
}
}
class ContainingFolderColumn extends AdvancedColumn {
var $namespace = 'ktcore.columns.containing_folder';
function ContainingFolderColumn() {
$this->label = _kt("View Folder");
}
function renderData($aDataRow) {
// only _ever_ show this for documents.
if ($aDataRow["type"] === "folder") {
return ' ';
}
$link = KTBrowseUtil::getUrlForFolder($aDataRow['document']->getFolderId());
return sprintf('<a href="%s" class="ktAction ktMoveUp" title="%s">%s</a>', $link, _kt('View Folder'), _kt('View Folder'));
}
function getName() { return _kt('Opening Containing Folder'); }
}
?>
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?