knowledgeroot 配置
首先下载 KnowledgeRoot 的安装包,就是一个压缩文件,解压缩后放到 WebRoot 下面
在浏览器中打开网站,自动提示进行安装,安装的过程很简单,安装结束后即可以使用。
安装包创建的数据库默认使用瑞典语,这个很不好,可以打开 dumps/mysql.sql 文件进行修改,将
ENGINE=MyISAM AUTO_INCREMENT=1
全部替换为
ENGINE=MyISAM AUTO_INCREMENT=1 CHARACTER SET utf8 COLLATE utf8_unicode_ci
即可保证所有的表创建为 UTF-8 格式的。
如果需要修改 admin 账号的密码,也可以在脚本中直接修改,如下所示:
INSERT INTO `users` ( `id` , `name` , `password` , `enabled` , `defaultgroup` , `defaultrights` , `admin` , `rightedit` , `treecache` )
VALUES ( '1', 'Admin', MD5('1qA2wS3eD$'), '1', '1', '210', '1', '1', '' );
默认的登录界面是英文的(en_US.UTF8),可以在 config/app.ini 文件中修改

[base]
version = "1.0.3"
title = "知识库"
cryptkey = "yourcryptkeyhere"
base_path = "D:\Web\Domains\knowledge/"
base_url = "http://localhost/"
charset = "UTF-8"
locale = "zh_CN"
showlogo = "1"
theme = "green"

如上文所示,将 local 修改为 zh_CN 则默认的语言就是中文的了,另外网站的标题也可以修改,如果修改为中文记得将文件编码设置为 UTF8
showlogo 为 1 则在页面左上方显示 logo , 为 0 则显示title 的内容
在内容标题的下方有一排菜单,鼠标移动到菜单项上时会出现菜单项超出菜单条的问题,这是因为直接设置了菜单条的高度,去掉元素的高度,让 dojo 自动计算高度就不会有这个问题,找到 include/class-default-menu.php,定位到 201 行(针对 1.0.3 版本),去掉 height: 24px; 这个属性,就可以了
$this->defaultmenu['content']['config']['wrap'] = '<div style="border-left:0px; border-right:0px;" dojoType="dijit.MenuBar" region="top">|</div>'; |
首页的
D:\wwwroot\WWWW\index.php
knowledgeroot_logo.png
<div class="pagetitle">
<?php echo ($CLASS['config']->base->showlogo) ? "<img src=\"images/knowledgeroot_logo.png\" alt=\"".$CLASS['config']->base->title."\" title=\"".$CLASS['config']->base->title."\" />" : $CLASS['config']->base->title; ?>
</div>
<div class="version">
<a href="http://www.knowledgeroot.org">Knowledgeroot</a> - <?php echo $CLASS['translate']->_('version') . ": " . $CLASS['config']->base->version; ?>
</div>
换成自己的标识
如果觉得内置的编辑器功能太弱,可以到KNOWLEDGEROOT官方网址上下载 CKEditor 插件(或者 FCKEditor 插件),在后台管理界面中导入 ckeditor.krx ,然后在扩展里面安装(install)并启用(enable)这个插件就可以了,该编辑插件在 FireFox 中可以直接从计算机里面拖图片到编辑框中,非常方便(该功能在 Chrome 和 IE 不好用,因为这些浏览器会打开你拖进来的图片,而不是放到编辑区里面)
最后如果觉得字体和文字的大小不合适那么可以修改 css 来进行调整,例如把 system/themes/green/green.css 中字体调整为
font-family: "微软雅黑", "新宋体", "宋体", Arial;
font-size: 10pt;
.pagetitle {
color:#ffffff;
font-family: Georgia, "Trebuchet MS";
font-size:32.5px;
font-weight:bold;
padding: 5px;
letter-spacing: -2px;
}
.pagetitle {
color:#ffffff;
font-family: 微软雅黑, "Microsoft YaHei UI";
font-size:32.5px;
font-weight:bold;
padding: 5px;
letter-spacing: -2px;
}
字体大小在不同的地方需要根据原来的大小等比例的调整,目录树、菜单、正文等系统默认 12px,对中文来说太小不方便阅读,所以统一调整为 10pt,就美观多了。
默认语言
\include\class-language.php
var $default_lang = "zh_CN.UTF8";
以下是建好的效果:

1.基于php开发,支持linux ,windows.
2.支持mysql ,sqlite, postgreSQL
3.支持任意类型附件(目前版本使用数据库base64后保存文件,需要调整mysql 参数max_allowed_packet,否则大于1M文件不能保存),使用数据库保存附件这个特性,如果附件很多,很大的情况,会是个问题。需要改造。
4.支持插件功能,官方网站下载插件,后台管理import,然后install, enable。
5.官方插件CKEditor (当前版本 2.6.2) 可与KCFinder 2.5.1 配合实现文件上传(已经支持中文)
6.官方插件ContentHistory 实现版本历史功能,类似diff查看版本,以及系统全部 last changes
7.支持中文,如需要修改原始翻译,可使用 msgfmt 可自主转换 po to mo.
8.tips:针对每个page.可以在edit page时设定content是否在点击page时自动展开还是只列title。创建时不能指定?
9.编辑冲突问题解决:原始版本编辑content时,首先在content_open表插入数据。然后打开content内容。第二个用户编辑时,也是先写入到content_open表,然后检查是否有其他用户打开数据,如果有,在打开内容上方显示警告。如果强制编辑,会出现一方修改信息被另一方覆盖的问题。
解决方法是采用排他编辑模式,如果内容被编辑中,其他人再试图编辑,直接提示有其他人编辑,返回。不能进入编辑。提示信息中有正在编辑此内容的user id。以方便协调。
主要修改2个文件:
class-knowledgeroot-content.php
function edit_content
class-knowledgeroot.php
function openContent
10.注意插件多不支持中文,修改插件的language.php参照 en_US 增加zh_CN配置,(UTF-8 no bom )
11. 使用CKEditor 时,配合KCFinder支持文件上传
修改CKEditor目录下config.js 指向KCFinder
CKEDITOR.editorConfig = function( config )
{
// Define changes to default configuration here. For example:
// config.language = 'fr';
// config.uiColor = '#AADC6E';
config.filebrowserBrowseUrl = '/kcfinder/browse.php?type=files';
config.filebrowserImageBrowseUrl = '/kcfinder/browse.php?type=images';
config.filebrowserFlashBrowseUrl = '/kcfinder/browse.php?type=flash';
config.filebrowserUploadUrl = '/kcfinder/upload.php?type=files';
config.filebrowserImageUploadUrl = '/kcfinder/upload.php?type=images';
config.filebrowserFlashUploadUrl = '/kcfinder/upload.php?type=flash';
};
修改kcfinder 中config.php ,加入:
$_SESSION['KCFINDER']['disabled'] = false,
完成。
注意如果在linux系统中使用了软链接www root,需要配置kcfinder的uploadurl地址。
12. 升级CKEditor .
出于安全考虑, CKEditor使用 新版本 3.6.6.1替换原始版本3.6.2。
直接替换原始extension/ckeditor/ckeditor,然后修改config.js 同11.
CREATE TABLE mail_queue (
id int(11) unsigned NOT NULL auto_increment,
subject varchar(255) NOT NULL,
bodytext text ,
bodyhtml text ,
emailto varchar(255) not null,
createtime timestamp NOT NULL default CURRENT_TIMESTAMP,
PRIMARY KEY (id)
) ENGINE=MyISAM DEFAULT CHARSET=utf8
$emailto = $config->to;
$sql = sprintf("INSERT into mail_queue (subject, bodytext,bodyhtml,emailto) VALUES( '%s', '%s', '%s', '%s')",
addslashes($subject),addslashes($bodyText),addslashes($bodyHtml),$emailto);
$this->CLASS['db']->query($sql );
return true;
}
<?php
// mailqueue_send_job.php
// tank add 2013.
$timer = microtime();
$starttime = ((double)strstr($timer, ' ') + (double)substr($timer,0,strpos($timer,' ')));
if (!is_file("config/app.ini")) {
echo "No configuration file found! ";
exit();
}
// load requiered files
require_once ('include/init.php');
$config = $CLASS['config']->email;
$res = $CLASS['db']->query("SELECT id, subject,bodytext,bodyhtml,emailto FROM mail_queue order by id ");
$cnt = $CLASS['db']->num_rows($res);
while($row = $CLASS['db']->fetch_assoc($res)) {
$id = $row['id'];
$res2 = $CLASS['db']->query(sprintf("delete FROM mail_queue where id = %d ",$id));
sendEmail($config,$row['emailto'], $row['subject'], $row['bodytext'], $row['bodyhtml']) ;
}
function sendEmail($config, $emailto,$subject, $bodyText, $bodyHtml = null) {
try {
$transport = null;
if($config->host != '') {
$smtpConfig = array();
if($config->auth != '') {
$smtpConfig['auth'] = $config->auth;
$smtpConfig['username'] = $config->username;
$smtpConfig['password'] = $config->password;
}
if($config->port != '') {
$smtpConfig['port'] = $config->port;
}
if($config->ssl != '') {
$smtpConfig['ssl'] = $config->ssl;
}
$transport = new Zend_Mail_Transport_Smtp($config->host, $smtpConfig);
}
$mail = new Zend_Mail('UTF-8');
$mail->addHeader('X-MailGenerator', 'Knowledgeroot');
$mail->setBodyText($bodyText);
if($bodyHtml != null) $mail->setBodyHtml($bodyHtml);
$mail->setFrom($config->from, $config->from_name);
foreach(explode(",", $emailto) as $value) {
if(trim($value) != "") {
$mail->addTo($value);
}
}
$mail->setSubject($config->subject_prefix . $subject);
$mail->send($transport);
echo 'Sent OK\n';
return true;
} catch(Zend_Mail_Transport_Exception $e) {
$ErrorMsg = $e->getMessage();
echo '\nError 1:' .$ErrorMsg;
return false;
} catch(Exception $e) {
$ErrorMsg = $e->getMessage();
echo '\nsError 2:' . $ErrorMsg;
return false;
}
}
?>
#!/bin/sh
wget -O result http://localhost/mailqueue_send_job.php >> log.txt
$texthtml = htmlspecialchars($text);
$texthtml = $text;
return "<textarea class="ckeditor" id="content" name="content">".$texthtml."</textarea>";
}
15. 增加首页显示last changes功能:
function start(&$CLASS) {
$this->CLASS =& $CLASS;
}
function getlastchanges() {
$CLASS['lastchanges'] = new lastchanges();
$CLASS['lastchanges']->start($CLASS);
knowledgeroot 配置的更多相关文章
- knowledgeroot 的配置与优化
首先下载 KnowledgeRoot 的安装包,就是一个压缩文件,解压缩后放到 WebRoot 下面 在浏览器中打开网站,自动提示进行安装,安装的过程很简单,安装结束后即可以使用. 安装包创建的数据库 ...
- knowledgeroot
knowledgeroot 示例站点 www.globaladmin.cn Knowledgeroot可用于文档管理,知识库管理. 1.基于php开发,支持linux ,windows.2.支持mys ...
- 配置android sdk 环境
1:下载adnroid sdk安装包 官方下载地址无法打开,没有vpn,使用下面这个地址下载,地址:http://www.android-studio.org/
- Android Studio配置 AndroidAnnotations——Hi_博客 Android App 开发笔记
以前用Eclicps 用习惯了现在 想学学 用Android Studio 两天的钻研终于 在我电脑上装了一个Android Studio 并完成了AndroidAnnotations 的配置. An ...
- react-router 组件式配置与对象式配置小区别
1. react-router 对象式配置 和 组件式配置 组件式配置(Redirect) ----对应---- 对象式配置(onEnter钩子) IndexRedirect -----对应-- ...
- 总结:Mac前端开发环境的搭建(配置)
新年新气象,在2016年的第一天,我入手了人生中第一台自己的电脑(大一时好友赠送的电脑在一次无意中烧坏了主板,此后便不断借用别人的或者网站的).macbook air,身上已无分文...接下来半年的房 ...
- Android Studio 多个编译环境配置 多渠道打包 APK输出配置
看完这篇你学到什么: 熟悉gradle的构建配置 熟悉代码构建环境的目录结构,你知道的不仅仅是只有src/main 开发.生成环境等等环境可以任意切换打包 多渠道打包 APK输出文件配置 需求 一般我 ...
- Virtual Box配置CentOS7网络(图文教程)
之前很多次安装CentOS7虚拟机,每次配置网络在网上找教程,今天总结一下,全图文配置,方便以后查看. Virtual Box可选的网络接入方式包括: NAT 网络地址转换模式(NAT,Network ...
- [linux]阿里云主机的免登陆安全SSH配置与思考
公司服务器使用的第三方云端服务,即阿里云,而本地需要经常去登录到服务器做相应的配置工作,鉴于此,每次登录都要使用密码是比较烦躁的,本着极速思想,我们需要配置我们的免登陆. 一 理论概述 SSH介绍 S ...
随机推荐
- servlet(6) - servlet总结 - 小易Java笔记
垂阅前必看: 这都是我总结的我觉得是学习servlet应该掌握的,我在学习期间也做了一个博客项目来让所学的知识得以巩固.下面就是博客项目链接.前面的servlet相关的笔记总汇,还有就是我把觉得在学习 ...
- poj 1269(两条直线交点)
Intersecting Lines Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 13481 Accepted: 59 ...
- uiautomator2 +Python进行Android原生应用UI测试
uiautomator2封装了google的uiautomator(只能用java),uiautomator2可以使用脚本语言python进行编写,更简单直观地修改.运行自动化测试代码: 不足为:仅支 ...
- 将双击“root的主文件”弹出的窗口设置为文件浏览器
1.双击桌面"root的文件夹"图标, 在过去Centos版本之前,每次双击“root主文件夹”都会弹出文件管理窗口: 解决办法: 关闭所有窗口后,重新双击图标: ...
- (17)python 网络编程
TCP连接的断点是由一个IP地址和一个端口号来唯一标识的 客户端/服务器 客户端总是最开始申请连接的一端,服务器则是等待客户端连接的一段 服务器的端口号如果不是特殊用土的一般应该大于1024,客户端则 ...
- Codeforces Round #209 (Div. 2) D. Pair of Numbers (模拟)
D. Pair of Numbers time limit per test 2 seconds memory limit per test 256 megabytes input standard ...
- NAT穿透工具pwnat
NAT穿透工具pwnat 由于网络环境的限制,大部分计算机都不在公网中,而是位于NAT或者防火墙之后.这时,不同NAT之后的计算机通信就受到限制.为了解决这个问题,Kali Linux提供了一个N ...
- [BZOJ 1789] Necklace
Link: BZOJ 1789 传送门 Solution: 感觉$n\le 50$可以随便乱搞啊…… 这里我是先找到3条链的失配位置,再找到这之后其中2条链最远的失配位置,统计即可 Code: #in ...
- HDOJ 4903 The only survival
Discription: There is an old country and the king fell in love with a devil. The devil always ask th ...
- 【数论】【暴力】bzoj4052 [Cerc2013]Magical GCD
考虑向一个集合里添加一个数,它们的gcd要么不变,要么变成原gcd的一个约数.因此不同的gcd只有log个. 所以对于每个位置,维护一个表,存储从这个位置向前所有的不同的gcd及其初始位置,然后暴力更 ...