📄 portlet.inc.php
字号:
<?php
/**
* $Id: portlet.inc.php 9259 2008-09-11 20:34:13Z kevin_fourie $
*
* 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): ______________________________________
*
*/
/* KT3 Basic Portlet
*
* Very simple wrapper that establishes the absolutely basic API.
*
*/
require_once(KT_LIB_DIR . "/templating/templating.inc.php");
// FIXME need to establish some kind of api to pass in i18n information.
class KTPortlet {
var $sTitle;
var $oPlugin;
var $bActive = false;
function KTPortlet($title='') {
$this->sTitle = $title;
}
function setPlugin(&$oPlugin) {
global $default;
if (KTLOG_CACHE) $default->log->debug('portlet regging plugin: ' . $oPlugin->sNamespace);
$this->oPlugin =& $oPlugin;
}
// this should multiplex i18n_title
function getTitle() { return $this->sTitle; }
function render() {
return '<p class="ktError">Warning: Abstract Portlet created.</p>';
}
function setDispatcher(&$oDispatcher) {
$this->oDispatcher =& $oDispatcher;
}
function getActive() {
return $this->bActive;
}
}
/* Encapsulates the logic for showing navigation items.
*
*/
class KTNavPortlet extends KTPortlet {
// list of dict {url:'',label:''}
var $navItems = Array();
function setOldNavItems($aNavLinks) {
$this->navItems = array_map(array(&$this, "_oldNavZip"), $aNavLinks["descriptions"], $aNavLinks["links"]);
}
// legacy support helper
function _oldNavZip($d, $u) {
$aZip = array(
"label" => $d,
"url" => $u,
);
return $aZip;
}
function render() {
$oTemplating =& KTTemplating::getSingleton();
$oTemplate = $oTemplating->loadTemplate("kt3/portlets/nav_portlet");
$aTemplateData = array(
"context" => $this,
);
return $oTemplate->render($aTemplateData);
}
}
class KTActionPortlet extends KTPortlet {
var $actions = array();
var $bActive = true;
var $btns = '';
// current action is the one we are currently on.
function setActions($actions, $currentaction) {
foreach ($actions as $action) {
$aInfo = $action->getInfo();
if ($aInfo !== null && !empty($aInfo['name'])) {
if ($aInfo["ns"] == $currentaction) {
unset($aInfo["url"]);
$aInfo['active'] = true;
}
$aBtn = $action->getButton();
if($aBtn){
$this->btns[$aInfo['name']] = array_merge($aInfo, $aBtn);
}else{
$this->actions[$aInfo['name']] = $aInfo;
}
}
}
ksort($this->actions);
ksort($this->btns);
}
/**
* Render a button for a given action
*
* @param string $text
* @param string $link
* @param string $class
* @return unknown
*/
function renderBtn($text, $link, $class) {
// Create button html
$button = "<div class='portlet_button'>
<a href='$link'>
<div class='big_btn_left'></div>
<div class='big_btn_middle'>
<div class='btn_text'>{$text}</div>
<div class='{$class}'></div>
</div>
<div class='big_btn_right'></div>
</a>
</div>";
return $button;
}
/**
* Render the specified actions as buttons
*/
function showButtons() {
if(empty($this->btns)){
return '';
}
$rendered = '';
foreach ($this->btns as $btn){
$text = !empty($btn['display_text']) ? $btn['display_text'] : $btn['name'];
$link = $btn['url'];
$class = $btn['arrow_class'];
$rendered .= $this->renderBtn($text, $link, $class);
}
return $rendered;
}
function render() {
if (empty($this->actions)) {
return null;
}
$btn = $this->showButtons();
$oTemplating =& KTTemplating::getSingleton();
$oTemplate = $oTemplating->loadTemplate('kt3/portlets/actions_portlet');
$aTemplateData = array(
'context' => $this,
'btn' => $btn
);
return $oTemplate->render($aTemplateData);
}
}
?>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -