* conver 2 unix.

This commit is contained in:
wangchunsheng
2012-03-03 00:44:50 +00:00
parent 687fbf2ade
commit bf805a2211
14 changed files with 2223 additions and 2223 deletions

View File

@@ -1,83 +1,83 @@
<?php
error_reporting(0);
$config->langs['cn'] = '中文简体';
$config->langs['en'] = 'EN';
$lang->cn->title = '欢迎使用禅道集成运行环境!';
$lang->cn->poweredBy = "由<a href='http://www.apachefriends.org/' target='_blank'>xampp</a>精简而来";
$lang->cn->links['zentao']['link'] = '/zentao/';
$lang->cn->links['zentao']['text'] = '访问禅道';
$lang->cn->links['zentao']['target'] = '_self';
$lang->cn->links['official']['link'] = 'http://www.zentao.net/';
$lang->cn->links['official']['text'] = '禅道官网';
$lang->cn->links['official']['target'] = '_blank';
$lang->cn->links['sqlbudyy']['link'] = '/sqlbuddy/';
$lang->cn->links['sqlbudyy']['text'] = '数据库管理';
$lang->cn->links['sqlbudyy']['target'] = '_blank';
$lang->cn->links['phpinfo']['link'] = '?mode=phpinfo';
$lang->cn->links['phpinfo']['text'] = 'PHP信息';
$lang->cn->links['phpinfo']['target'] = '_blank';
$lang->en->title = 'Welcome to use zentao!';
$lang->en->poweredBy = "reduced from <a href='http://www.apachefriends.org/' target='_blank'>xampp</a>";
$lang->en->links['zentao']['link'] = '/zentao/';
$lang->en->links['zentao']['text'] = 'ZenTao';
$lang->en->links['zentao']['target'] = '_self';
$lang->en->links['official']['link'] = 'http://www.zentao.net/';
$lang->en->links['official']['text'] = 'Community';
$lang->en->links['official']['target'] = '_blank';
$lang->en->links['sqlbudyy']['link'] = '/sqlbuddy/';
$lang->en->links['sqlbudyy']['text'] = 'MySQL';
$lang->en->links['sqlbudyy']['target'] = '_blank';
$lang->en->links['phpinfo']['link'] = '?mode=phpinfo';
$lang->en->links['phpinfo']['text'] = 'PHP';
$lang->en->links['phpinfo']['target'] = '_blank';
if(is_file('./my.php')) include './my.php';
$acceptLang = stripos($_SERVER['HTTP_ACCEPT_LANGUAGE'], 'zh-CN') !== false ? 'cn' : 'en';
$acceptLang = isset($_GET['lang']) ? $_GET['lang'] : $acceptLang;
$clientLang = $lang->$acceptLang;
?>
<?php if(isset($_GET['mode']) and $_GET['mode'] == 'phpinfo') die(phpinfo());?>
<html xmlns='http://www.w3.org/1999/xhtml'>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=utf-8' />
<meta http-equiv="refresh" content="5; url=/zentao/" />
<title><?php echo $clientLang->title;?></title>
<link href="/zentao/theme/default/style.css" rel="stylesheet" type="text/css">
<link href="/zentao/theme/default/yui.css" rel="stylesheet" type="text/css">
<style>
html {background-color:#06294e;}
table{margin-top:200px; background:white; border:none}
tr, th, td{border:none}
#welcome{font-size:20px}
#logo{width:120px; border-right:1px solid #efefef}
#links{padding-left:25px}
#links a{display:block; width:100px; height:25px; line-height:25px; float:left; margin-right:5px; border:1px solid gray; background:#efefef; text-decoration:none; text-align:center}
#links #zentao{background:green; color:#efefef}
#power{background:#efefef}
.button-c{width:100px}
</style>
</head>
<body>
<table class='table-5' align='center'>
<tr class='colhead'><th colspan='2' id='welcome'><?php echo $clientLang->title;?></th></tr>
<tr>
<td id='logo'><img src='/zentao/theme/default/images/main/logo2.png' /></td>
<td id='links'><?php foreach($clientLang->links as $linkID => $link) echo "<a id='$linkID' href='$link[link]' target='$link[target]'>$link[text]</a>";?></td>
</tr>
<tr id='power'>
<td class='a-right' colspan='2'>
<?php
echo $clientLang->poweredBy . ' ';
foreach($config->langs as $langCode => $langName) echo "<a href='?lang=$langCode'>$langName</a>";
?>
</td>
</tr>
</table>
</body>
</html>
<?php
error_reporting(0);
$config->langs['cn'] = '中文简体';
$config->langs['en'] = 'EN';
$lang->cn->title = '欢迎使用禅道集成运行环境!';
$lang->cn->poweredBy = "由<a href='http://www.apachefriends.org/' target='_blank'>xampp</a>精简而来";
$lang->cn->links['zentao']['link'] = '/zentao/';
$lang->cn->links['zentao']['text'] = '访问禅道';
$lang->cn->links['zentao']['target'] = '_self';
$lang->cn->links['official']['link'] = 'http://www.zentao.net/';
$lang->cn->links['official']['text'] = '禅道官网';
$lang->cn->links['official']['target'] = '_blank';
$lang->cn->links['sqlbudyy']['link'] = '/sqlbuddy/';
$lang->cn->links['sqlbudyy']['text'] = '数据库管理';
$lang->cn->links['sqlbudyy']['target'] = '_blank';
$lang->cn->links['phpinfo']['link'] = '?mode=phpinfo';
$lang->cn->links['phpinfo']['text'] = 'PHP信息';
$lang->cn->links['phpinfo']['target'] = '_blank';
$lang->en->title = 'Welcome to use zentao!';
$lang->en->poweredBy = "reduced from <a href='http://www.apachefriends.org/' target='_blank'>xampp</a>";
$lang->en->links['zentao']['link'] = '/zentao/';
$lang->en->links['zentao']['text'] = 'ZenTao';
$lang->en->links['zentao']['target'] = '_self';
$lang->en->links['official']['link'] = 'http://www.zentao.net/';
$lang->en->links['official']['text'] = 'Community';
$lang->en->links['official']['target'] = '_blank';
$lang->en->links['sqlbudyy']['link'] = '/sqlbuddy/';
$lang->en->links['sqlbudyy']['text'] = 'MySQL';
$lang->en->links['sqlbudyy']['target'] = '_blank';
$lang->en->links['phpinfo']['link'] = '?mode=phpinfo';
$lang->en->links['phpinfo']['text'] = 'PHP';
$lang->en->links['phpinfo']['target'] = '_blank';
if(is_file('./my.php')) include './my.php';
$acceptLang = stripos($_SERVER['HTTP_ACCEPT_LANGUAGE'], 'zh-CN') !== false ? 'cn' : 'en';
$acceptLang = isset($_GET['lang']) ? $_GET['lang'] : $acceptLang;
$clientLang = $lang->$acceptLang;
?>
<?php if(isset($_GET['mode']) and $_GET['mode'] == 'phpinfo') die(phpinfo());?>
<html xmlns='http://www.w3.org/1999/xhtml'>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=utf-8' />
<meta http-equiv="refresh" content="5; url=/zentao/" />
<title><?php echo $clientLang->title;?></title>
<link href="/zentao/theme/default/style.css" rel="stylesheet" type="text/css">
<link href="/zentao/theme/default/yui.css" rel="stylesheet" type="text/css">
<style>
html {background-color:#06294e;}
table{margin-top:200px; background:white; border:none}
tr, th, td{border:none}
#welcome{font-size:20px}
#logo{width:120px; border-right:1px solid #efefef}
#links{padding-left:25px}
#links a{display:block; width:100px; height:25px; line-height:25px; float:left; margin-right:5px; border:1px solid gray; background:#efefef; text-decoration:none; text-align:center}
#links #zentao{background:green; color:#efefef}
#power{background:#efefef}
.button-c{width:100px}
</style>
</head>
<body>
<table class='table-5' align='center'>
<tr class='colhead'><th colspan='2' id='welcome'><?php echo $clientLang->title;?></th></tr>
<tr>
<td id='logo'><img src='/zentao/theme/default/images/main/logo2.png' /></td>
<td id='links'><?php foreach($clientLang->links as $linkID => $link) echo "<a id='$linkID' href='$link[link]' target='$link[target]'>$link[text]</a>";?></td>
</tr>
<tr id='power'>
<td class='a-right' colspan='2'>
<?php
echo $clientLang->poweredBy . ' ';
foreach($config->langs as $langCode => $langName) echo "<a href='?lang=$langCode'>$langName</a>";
?>
</td>
</tr>
</table>
</body>
</html>

View File

@@ -1,300 +1,300 @@
<?php
/**
* The common simplified chinese file of ZenTaoPMS.
*
* @copyright Copyright 2009-2012 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
* @package ZenTaoPMS
* @version $Id$
* @link http://www.zentao.net
*/
$lang->arrow = '<span class="icon-arrow">&nbsp;</span>';
$lang->colon = '::';
$lang->comma = '';
$lang->dot = '。';
$lang->at = ' 于 ';
$lang->downArrow = '↓';
$lang->ZenTaoPMS = '禅道管理';
$lang->welcome = "欢迎使用『%s』{$lang->colon} {$lang->ZenTaoPMS}";
$lang->myControl = "我的地盘";
$lang->currentPos = '当前位置:';
$lang->logout = '退出';
$lang->login = '登录';
$lang->aboutZenTao = '关于';
$lang->todayIs = '今天是%s';
$lang->runInfo = "<div class='row'><div class='u-1 a-center' id='debugbar'>时间: %s 毫秒, 内存: %s KB, 查询: %s. </div></div>";
$lang->reset = '重填';
$lang->edit = '编辑';
$lang->copy = '复制';
$lang->delete = '删除';
$lang->close = '关闭';
$lang->link = '关联';
$lang->unlink = '移除';
$lang->import = '导入';
$lang->export = '导出';
$lang->setFileName = '文件名:';
$lang->activate = '激活';
$lang->submitting = '稍候...';
$lang->save = '保存';
$lang->confirm = '确认';
$lang->preview = '查看';
$lang->goback = '返回';
$lang->go = 'GO';
$lang->more = '更多';
$lang->actions = '操作';
$lang->comment = '备注';
$lang->history = '历史记录';
$lang->attatch = '附件';
$lang->reverse = '[切换顺序]';
$lang->switchDisplay= '[切换显示]';
$lang->switchHelp = '切换帮助';
$lang->addFiles = '上传了附件 ';
$lang->files = '附件 ';
$lang->unfold = '+';
$lang->fold = '-';
$lang->selectAll = '全选';
$lang->notFound = '抱歉,您访问的对象并不存在!';
$lang->showAll = '++ 全部显示 ++';
$lang->hideClosed = '-- 隐藏已结束 --';
$lang->future = '未来';
$lang->year = '年';
$lang->workingHour = '工时';
$lang->idAB = 'ID';
$lang->priAB = 'P';
$lang->statusAB = '状态';
$lang->openedByAB = '创建';
$lang->assignedToAB = '指派';
$lang->typeAB = '类型';
$lang->common->common = '公有模块';
/* 主导航菜单。*/
$lang->menu->my = '<span id="mainbg">&nbsp;</span>我的地盘|my|index';
$lang->menu->product = '产品视图|product|index';
$lang->menu->project = '项目视图|project|index';
$lang->menu->qa = '测试视图|qa|index';
$lang->menu->doc = '文档视图|doc|index';
$lang->menu->company = '组织视图|company|index';
$lang->menu->admin = '后台管理|admin|index';
/* 查询条中可以选择的对象列表。*/
$lang->searchObjects['bug'] = 'B:Bug';
$lang->searchObjects['story'] = 'S:需求';
$lang->searchObjects['task'] = 'T:任务';
$lang->searchObjects['testcase'] = 'C:用例';
$lang->searchObjects['project'] = 'P:项目';
$lang->searchObjects['product'] = 'P:产品';
$lang->searchObjects['user'] = 'U:用户';
$lang->searchObjects['build'] = 'B:Build';
$lang->searchObjects['release'] = 'R:发布';
$lang->searchObjects['productplan'] = 'P:产品计划';
$lang->searchObjects['testtask'] = 'T:测试任务';
$lang->searchObjects['doc'] = 'D:文档';
$lang->searchTips = '输入编号';
/* 导出文件的类型列表。*/
$lang->exportFileTypeList['csv'] = 'csv';
$lang->exportFileTypeList['xml'] = 'xml';
$lang->exportFileTypeList['html'] = 'html';
/* 风格列表。*/
$lang->themes['default'] = '默认';
$lang->themes['green'] = '绿色';
$lang->themes['red'] = '红色';
$lang->themes['classblue'] = '经典蓝';
/* 首页菜单设置。*/
$lang->index->menu->product = '浏览产品|product|browse';
$lang->index->menu->project = '浏览项目|project|browse';
/* 我的地盘菜单设置。*/
$lang->my->menu->account = '<span id="mybg">&nbsp;</span>%s' . $lang->arrow;
$lang->my->menu->index = '首页|my|index';
$lang->my->menu->todo = array('link' => '我的TODO|my|todo|', 'subModule' => 'todo');
$lang->my->menu->task = '我的任务|my|task|';
$lang->my->menu->bug = '我的Bug|my|bug|';
$lang->my->menu->testtask = '我的测试|my|testtask|';
$lang->my->menu->story = '我的需求|my|story|';
$lang->my->menu->myProject = '我的项目|my|project|';
$lang->my->menu->dynamic = '我的动态|my|dynamic|';
$lang->my->menu->profile = array('link' => '我的档案|my|profile|', 'alias' => 'editprofile');
$lang->todo->menu = $lang->my->menu;
/* 产品视图设置。*/
$lang->product->menu->list = '%s';
$lang->product->menu->story = array('link' => '需求|product|browse|productID=%s', 'subModule' => 'story');
$lang->product->menu->dynamic = '动态|product|dynamic|productID=%s';
$lang->product->menu->plan = array('link' => '计划|productplan|browse|productID=%s', 'subModule' => 'productplan');
$lang->product->menu->release = array('link' => '发布|release|browse|productID=%s', 'subModule' => 'release');
$lang->product->menu->roadmap = '路线图|product|roadmap|productID=%s';
$lang->product->menu->doc = array('link' => '文档|product|doc|productID=%s', 'subModule' => 'doc');
$lang->product->menu->view = '概况|product|view|productID=%s';
$lang->product->menu->edit = '编辑|product|edit|productID=%s';
$lang->product->menu->delete = array('link' => '删除|product|delete|productID=%s', 'target' => 'hiddenwin');
$lang->product->menu->module = '模块|tree|browse|productID=%s&view=story';
$lang->product->menu->order = '排序|product|order|productID=%s';
$lang->product->menu->create = array('link' => '<span class="icon-add1">&nbsp;</span>新增产品|product|create', 'float' => 'right');
$lang->product->menu->project = array('link' => '<span class="icon-title">&nbsp;</span>项目列表|product|project|status=all&productID=%s', 'float' => 'right');
$lang->product->menu->all = array('link' => '<span class="icon-all">&nbsp;</span>所有产品|product|index|locate=false', 'float' => 'right');
$lang->story->menu = $lang->product->menu;
$lang->productplan->menu = $lang->product->menu;
$lang->release->menu = $lang->product->menu;
/* 项目视图菜单设置。*/
$lang->project->menu->list = '%s';
$lang->project->menu->task = array('link' => '任务|project|task|projectID=%s', 'subModule' => 'task', 'alias' => 'grouptask,importtask');
$lang->project->menu->story = array('link' => '需求|project|story|projectID=%s');
$lang->project->menu->bug = 'Bug|project|bug|projectID=%s';
$lang->project->menu->dynamic = '动态|project|dynamic|projectID=%s';
$lang->project->menu->build = array('link' => 'Build|project|build|projectID=%s', 'subModule' => 'build');
$lang->project->menu->testtask = '测试申请|project|testtask|projectID=%s';
$lang->project->menu->burn = '燃尽图|project|burn|projectID=%s';
$lang->project->menu->team = array('link' => '团队|project|team|projectID=%s', 'alias' => 'managemembers');
$lang->project->menu->doc = array('link' => '文档|project|doc|porjectID=%s', 'subModule' => 'doc');
$lang->project->menu->product = '产品|project|manageproducts|projectID=%s';
$lang->project->menu->linkstory = array('link' => '关联需求|project|linkstory|projectID=%s');
$lang->project->menu->view = '概况|project|view|projectID=%s';
$lang->project->menu->edit = '编辑|project|edit|projectID=%s';
$lang->project->menu->delete = array('link' => '删除|project|delete|projectID=%s', 'target' => 'hiddenwin');
$lang->project->menu->order = '排序|project|order|projectID=%s';
$lang->project->menu->create = array('link' => '<span class="icon-add1">&nbsp;</span>新增项目|project|create', 'float' => 'right');
$lang->project->menu->copy = array('link' => '<span class="icon-copy">&nbsp;</span>复制项目|project|create|projectID=&copyProjectID=%s', 'float' => 'right');
$lang->project->menu->all = array('link' => '<span class="icon-all">&nbsp;</span>所有项目|project|index|locate=false', 'float' => 'right');
$lang->task->menu = $lang->project->menu;
$lang->build->menu = $lang->project->menu;
/* QA视图菜单设置。*/
$lang->bug->menu->product = '%s';
$lang->bug->menu->bug = array('link' => '缺陷管理|bug|browse|productID=%s', 'alias' => 'view,create,edit,resolve,close,activate,report', 'subModule' => 'tree');
$lang->bug->menu->testcase = array('link' => '用例管理|testcase|browse|productID=%s', 'alias' => 'view,create,edit');
$lang->bug->menu->testtask = array('link' => '测试任务|testtask|browse|productID=%s');
$lang->testcase->menu->product = '%s';
$lang->testcase->menu->bug = array('link' => '缺陷管理|bug|browse|productID=%s');
$lang->testcase->menu->testcase = array('link' => '用例管理|testcase|browse|productID=%s', 'alias' => 'view,create,batchcreate,edit', 'subModule' => 'tree');
$lang->testcase->menu->testtask = array('link' => '测试任务|testtask|browse|productID=%s');
$lang->testtask->menu->product = '%s';
$lang->testtask->menu->bug = array('link' => '缺陷管理|bug|browse|productID=%s');
$lang->testtask->menu->testcase = array('link' => '用例管理|testcase|browse|productID=%s');
$lang->testtask->menu->testtask = array('link' => '测试任务|testtask|browse|productID=%s', 'alias' => 'view,create,edit,linkcase,cases');
/* 文档视图菜单设置。*/
$lang->doc->menu->list = '%s';
$lang->doc->menu->browse = array('link' => '文档列表|doc|browse|libID=%s');
$lang->doc->menu->edit = '编辑文档库|doc|editLib|libID=%s';
$lang->doc->menu->module = '维护模块|tree|browse|libID=%s&viewType=doc';
$lang->doc->menu->delete = array('link' => '删除文档库|doc|deleteLib|libID=%s', 'target' => 'hiddenwin');
$lang->doc->menu->create = array('link' => '<span class="icon-add1">&nbsp;</span>新增文档库|doc|createLib', 'float' => 'right');
/* 组织结构视图菜单设置。*/
$lang->company->menu->name = '%s' . $lang->arrow;
$lang->company->menu->browseUser = array('link' => '用户列表|company|browse', 'subModule' => 'user');
$lang->company->menu->dept = array('link' => '部门维护|dept|browse', 'subModule' => 'dept');
$lang->company->menu->browseGroup = array('link' => '权限分组|group|browse', 'subModule' => 'group');
$lang->company->menu->edit = array('link' => '公司管理|company|edit');
$lang->company->menu->dynamic = '组织动态|company|dynamic|';
$lang->company->menu->addGroup = array('link' => '<span class="icon-add1">&nbsp;</span>添加分组|group|create', 'float' => 'right');
$lang->company->menu->addUser = array('link' => '<span class="icon-add1">&nbsp;</span>添加用户|user|create|dept=%s', 'subModule' => 'user', 'float' => 'right');
$lang->dept->menu = $lang->company->menu;
$lang->group->menu = $lang->company->menu;
/* 用户信息菜单设置。*/
$lang->user->menu->account = '%s' . $lang->arrow;
$lang->user->menu->todo = array('link' => 'TODO列表|user|todo|account=%s', 'subModule' => 'todo');
$lang->user->menu->task = '任务列表|user|task|account=%s';
$lang->user->menu->bug = 'Bug列表|user|bug|account=%s';
$lang->user->menu->dynamic = '用户动态|user|dynamic|type=today&account=%s';
$lang->user->menu->projectList = '项目列表|user|project|account=%s';
$lang->user->menu->profile = array('link' => '用户信息|user|profile|account=%s', 'alias' => 'edit');
$lang->user->menu->browse = array('link' => '<span class="icon-title">&nbsp;</span>用户管理|company|browse|', 'float' => 'right');
/* 后台管理菜单设置。*/
$lang->admin->menu->index = array('link' => '首页|admin|index', 'subModule' => 'admin');
$lang->admin->menu->extension = array('link' => '插件管理|extension|browse', 'subModule' => 'extension');
$lang->admin->menu->editor = array('link' => '扩展编辑器|editor|index', 'subModule' => 'editor');
$lang->admin->menu->mail = array('link' => 'Email配置|mail|set', 'subModule' => 'mail');
$lang->admin->menu->convert = array('link' => '从其他系统导入|convert|index', 'subModule' => 'convert');
$lang->admin->menu->trashes = array('link' => '回收站|action|trash', 'subModule' => 'action');
$lang->convert->menu = $lang->admin->menu;
$lang->upgrade->menu = $lang->admin->menu;
$lang->action->menu = $lang->admin->menu;
$lang->extension->menu = $lang->admin->menu;
$lang->editor->menu = $lang->admin->menu;
$lang->mail->menu = $lang->admin->menu;
/*菜单设置:分组设置。*/
$lang->menugroup->release = 'product';
$lang->menugroup->story = 'product';
$lang->menugroup->productplan = 'product';
$lang->menugroup->task = 'project';
$lang->menugroup->build = 'project';
$lang->menugroup->convert = 'admin';
$lang->menugroup->upgrade = 'admin';
$lang->menugroup->user = 'company';
$lang->menugroup->group = 'company';
$lang->menugroup->bug = 'qa';
$lang->menugroup->testcase = 'qa';
$lang->menugroup->testtask = 'qa';
$lang->menugroup->people = 'company';
$lang->menugroup->dept = 'company';
$lang->menugroup->todo = 'my';
$lang->menugroup->action = 'admin';
$lang->menugroup->extension = 'admin';
$lang->menugroup->editor = 'admin';
$lang->menugroup->mail = 'admin';
/* 错误提示信息。*/
$lang->error->companyNotFound = "您访问的域名 %s 没有对应的公司。";
$lang->error->length = array("『%s』长度错误应当为『%s』", "『%s』长度应当不超过『%s』且不小于『%s』。");
$lang->error->reg = "『%s』不符合格式应当为:『%s』。";
$lang->error->unique = "『%s』已经有『%s』这条记录了。";
$lang->error->gt = "『%s』应当大于『%s』。";
$lang->error->notempty = "『%s』不能为空。";
$lang->error->empty = "『%s』必须为空。";
$lang->error->equal = "『%s』必须为『%s』。";
$lang->error->int = array("『%s』应当是数字。", "『%s』应当介于『%s-%s』之间。");
$lang->error->float = "『%s』应当是数字可以是小数。";
$lang->error->email = "『%s』应当为合法的EMAIL。";
$lang->error->date = "『%s』应当为合法的日期。";
$lang->error->account = "『%s』应当为合法的用户名。";
$lang->error->passwordsame = "两次密码应当相等。";
$lang->error->passwordrule = "密码应该符合规则,长度至少为六位。";
$lang->error->accessDenied = '您没有访问权限';
/* 分页信息。*/
$lang->pager->noRecord = "暂时没有记录";
$lang->pager->digest = "共<strong>%s</strong>条记录,每页 <strong>%s</strong>条,页面:<strong>%s/%s</strong> ";
$lang->pager->first = "首页";
$lang->pager->pre = "上页";
$lang->pager->next = "下页";
$lang->pager->last = "末页";
$lang->pager->locate = "GO!";
$lang->zentaoSite = "官方网站";
$lang->chinaScrum = "<a href='http://www.zentao.net/goto.php?item=chinascrum' target='_blank'>Scrum社区</a> ";
$lang->agileTraining = "<a href='http://www.zentao.net/goto.php?item=agiletrain' target='_blank'>培训</a> ";
$lang->donate = "<a href='http://www.zentao.net/goto.php?item=donate' target='_blank'>捐助禅道</a> ";
$lang->zentaoKeywords = "开源项目管理软件,项目管理,项目管理软件,pmp,pms,php框架国产php框架scrum工具,scrum管理工具,scrum管理软件,敏捷项目管理,禅道";
$lang->zentaoDESC = "禅道项目管理软件(ZenTaoPMS)是一款国产的基于LGPL协议开源免费的项目管理软件(工具、系统)同时也是一款scrum管理工具。
它集产品管理、项目管理、测试管理于一体同时还包含了事务管理、组织管理等诸多功能是中小型企业项目管理的首选。禅道项目管理软件使用PHP + MySQL开发
基于自主的PHP开发框架──ZenTaoPHP而成。第三方开发者或者企业可以非常方便的开发插件或者进行定制。禅道在手项目无忧";
/* 时间格式设置。*/
define('DT_DATETIME1', 'Y-m-d H:i:s');
define('DT_DATETIME2', 'y-m-d H:i');
define('DT_MONTHTIME1', 'n/d H:i');
define('DT_MONTHTIME2', 'n月d日 H:i');
define('DT_DATE1', 'Y-m-d');
define('DT_DATE2', 'Ymd');
define('DT_DATE3', 'Y年m月d日');
define('DT_DATE4', 'n月j日');
define('DT_TIME1', 'H:i:s');
define('DT_TIME2', 'H:i');
<?php
/**
* The common simplified chinese file of ZenTaoPMS.
*
* @copyright Copyright 2009-2012 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
* @package ZenTaoPMS
* @version $Id$
* @link http://www.zentao.net
*/
$lang->arrow = '<span class="icon-arrow">&nbsp;</span>';
$lang->colon = '::';
$lang->comma = '';
$lang->dot = '。';
$lang->at = ' 于 ';
$lang->downArrow = '↓';
$lang->ZenTaoPMS = '禅道管理';
$lang->welcome = "欢迎使用『%s』{$lang->colon} {$lang->ZenTaoPMS}";
$lang->myControl = "我的地盘";
$lang->currentPos = '当前位置:';
$lang->logout = '退出';
$lang->login = '登录';
$lang->aboutZenTao = '关于';
$lang->todayIs = '今天是%s';
$lang->runInfo = "<div class='row'><div class='u-1 a-center' id='debugbar'>时间: %s 毫秒, 内存: %s KB, 查询: %s. </div></div>";
$lang->reset = '重填';
$lang->edit = '编辑';
$lang->copy = '复制';
$lang->delete = '删除';
$lang->close = '关闭';
$lang->link = '关联';
$lang->unlink = '移除';
$lang->import = '导入';
$lang->export = '导出';
$lang->setFileName = '文件名:';
$lang->activate = '激活';
$lang->submitting = '稍候...';
$lang->save = '保存';
$lang->confirm = '确认';
$lang->preview = '查看';
$lang->goback = '返回';
$lang->go = 'GO';
$lang->more = '更多';
$lang->actions = '操作';
$lang->comment = '备注';
$lang->history = '历史记录';
$lang->attatch = '附件';
$lang->reverse = '[切换顺序]';
$lang->switchDisplay= '[切换显示]';
$lang->switchHelp = '切换帮助';
$lang->addFiles = '上传了附件 ';
$lang->files = '附件 ';
$lang->unfold = '+';
$lang->fold = '-';
$lang->selectAll = '全选';
$lang->notFound = '抱歉,您访问的对象并不存在!';
$lang->showAll = '++ 全部显示 ++';
$lang->hideClosed = '-- 隐藏已结束 --';
$lang->future = '未来';
$lang->year = '年';
$lang->workingHour = '工时';
$lang->idAB = 'ID';
$lang->priAB = 'P';
$lang->statusAB = '状态';
$lang->openedByAB = '创建';
$lang->assignedToAB = '指派';
$lang->typeAB = '类型';
$lang->common->common = '公有模块';
/* 主导航菜单。*/
$lang->menu->my = '<span id="mainbg">&nbsp;</span>我的地盘|my|index';
$lang->menu->product = '产品视图|product|index';
$lang->menu->project = '项目视图|project|index';
$lang->menu->qa = '测试视图|qa|index';
$lang->menu->doc = '文档视图|doc|index';
$lang->menu->company = '组织视图|company|index';
$lang->menu->admin = '后台管理|admin|index';
/* 查询条中可以选择的对象列表。*/
$lang->searchObjects['bug'] = 'B:Bug';
$lang->searchObjects['story'] = 'S:需求';
$lang->searchObjects['task'] = 'T:任务';
$lang->searchObjects['testcase'] = 'C:用例';
$lang->searchObjects['project'] = 'P:项目';
$lang->searchObjects['product'] = 'P:产品';
$lang->searchObjects['user'] = 'U:用户';
$lang->searchObjects['build'] = 'B:Build';
$lang->searchObjects['release'] = 'R:发布';
$lang->searchObjects['productplan'] = 'P:产品计划';
$lang->searchObjects['testtask'] = 'T:测试任务';
$lang->searchObjects['doc'] = 'D:文档';
$lang->searchTips = '输入编号';
/* 导出文件的类型列表。*/
$lang->exportFileTypeList['csv'] = 'csv';
$lang->exportFileTypeList['xml'] = 'xml';
$lang->exportFileTypeList['html'] = 'html';
/* 风格列表。*/
$lang->themes['default'] = '默认';
$lang->themes['green'] = '绿色';
$lang->themes['red'] = '红色';
$lang->themes['classblue'] = '经典蓝';
/* 首页菜单设置。*/
$lang->index->menu->product = '浏览产品|product|browse';
$lang->index->menu->project = '浏览项目|project|browse';
/* 我的地盘菜单设置。*/
$lang->my->menu->account = '<span id="mybg">&nbsp;</span>%s' . $lang->arrow;
$lang->my->menu->index = '首页|my|index';
$lang->my->menu->todo = array('link' => '我的TODO|my|todo|', 'subModule' => 'todo');
$lang->my->menu->task = '我的任务|my|task|';
$lang->my->menu->bug = '我的Bug|my|bug|';
$lang->my->menu->testtask = '我的测试|my|testtask|';
$lang->my->menu->story = '我的需求|my|story|';
$lang->my->menu->myProject = '我的项目|my|project|';
$lang->my->menu->dynamic = '我的动态|my|dynamic|';
$lang->my->menu->profile = array('link' => '我的档案|my|profile|', 'alias' => 'editprofile');
$lang->todo->menu = $lang->my->menu;
/* 产品视图设置。*/
$lang->product->menu->list = '%s';
$lang->product->menu->story = array('link' => '需求|product|browse|productID=%s', 'subModule' => 'story');
$lang->product->menu->dynamic = '动态|product|dynamic|productID=%s';
$lang->product->menu->plan = array('link' => '计划|productplan|browse|productID=%s', 'subModule' => 'productplan');
$lang->product->menu->release = array('link' => '发布|release|browse|productID=%s', 'subModule' => 'release');
$lang->product->menu->roadmap = '路线图|product|roadmap|productID=%s';
$lang->product->menu->doc = array('link' => '文档|product|doc|productID=%s', 'subModule' => 'doc');
$lang->product->menu->view = '概况|product|view|productID=%s';
$lang->product->menu->edit = '编辑|product|edit|productID=%s';
$lang->product->menu->delete = array('link' => '删除|product|delete|productID=%s', 'target' => 'hiddenwin');
$lang->product->menu->module = '模块|tree|browse|productID=%s&view=story';
$lang->product->menu->order = '排序|product|order|productID=%s';
$lang->product->menu->create = array('link' => '<span class="icon-add1">&nbsp;</span>新增产品|product|create', 'float' => 'right');
$lang->product->menu->project = array('link' => '<span class="icon-title">&nbsp;</span>项目列表|product|project|status=all&productID=%s', 'float' => 'right');
$lang->product->menu->all = array('link' => '<span class="icon-all">&nbsp;</span>所有产品|product|index|locate=false', 'float' => 'right');
$lang->story->menu = $lang->product->menu;
$lang->productplan->menu = $lang->product->menu;
$lang->release->menu = $lang->product->menu;
/* 项目视图菜单设置。*/
$lang->project->menu->list = '%s';
$lang->project->menu->task = array('link' => '任务|project|task|projectID=%s', 'subModule' => 'task', 'alias' => 'grouptask,importtask');
$lang->project->menu->story = array('link' => '需求|project|story|projectID=%s');
$lang->project->menu->bug = 'Bug|project|bug|projectID=%s';
$lang->project->menu->dynamic = '动态|project|dynamic|projectID=%s';
$lang->project->menu->build = array('link' => 'Build|project|build|projectID=%s', 'subModule' => 'build');
$lang->project->menu->testtask = '测试申请|project|testtask|projectID=%s';
$lang->project->menu->burn = '燃尽图|project|burn|projectID=%s';
$lang->project->menu->team = array('link' => '团队|project|team|projectID=%s', 'alias' => 'managemembers');
$lang->project->menu->doc = array('link' => '文档|project|doc|porjectID=%s', 'subModule' => 'doc');
$lang->project->menu->product = '产品|project|manageproducts|projectID=%s';
$lang->project->menu->linkstory = array('link' => '关联需求|project|linkstory|projectID=%s');
$lang->project->menu->view = '概况|project|view|projectID=%s';
$lang->project->menu->edit = '编辑|project|edit|projectID=%s';
$lang->project->menu->delete = array('link' => '删除|project|delete|projectID=%s', 'target' => 'hiddenwin');
$lang->project->menu->order = '排序|project|order|projectID=%s';
$lang->project->menu->create = array('link' => '<span class="icon-add1">&nbsp;</span>新增项目|project|create', 'float' => 'right');
$lang->project->menu->copy = array('link' => '<span class="icon-copy">&nbsp;</span>复制项目|project|create|projectID=&copyProjectID=%s', 'float' => 'right');
$lang->project->menu->all = array('link' => '<span class="icon-all">&nbsp;</span>所有项目|project|index|locate=false', 'float' => 'right');
$lang->task->menu = $lang->project->menu;
$lang->build->menu = $lang->project->menu;
/* QA视图菜单设置。*/
$lang->bug->menu->product = '%s';
$lang->bug->menu->bug = array('link' => '缺陷管理|bug|browse|productID=%s', 'alias' => 'view,create,edit,resolve,close,activate,report', 'subModule' => 'tree');
$lang->bug->menu->testcase = array('link' => '用例管理|testcase|browse|productID=%s', 'alias' => 'view,create,edit');
$lang->bug->menu->testtask = array('link' => '测试任务|testtask|browse|productID=%s');
$lang->testcase->menu->product = '%s';
$lang->testcase->menu->bug = array('link' => '缺陷管理|bug|browse|productID=%s');
$lang->testcase->menu->testcase = array('link' => '用例管理|testcase|browse|productID=%s', 'alias' => 'view,create,batchcreate,edit', 'subModule' => 'tree');
$lang->testcase->menu->testtask = array('link' => '测试任务|testtask|browse|productID=%s');
$lang->testtask->menu->product = '%s';
$lang->testtask->menu->bug = array('link' => '缺陷管理|bug|browse|productID=%s');
$lang->testtask->menu->testcase = array('link' => '用例管理|testcase|browse|productID=%s');
$lang->testtask->menu->testtask = array('link' => '测试任务|testtask|browse|productID=%s', 'alias' => 'view,create,edit,linkcase,cases');
/* 文档视图菜单设置。*/
$lang->doc->menu->list = '%s';
$lang->doc->menu->browse = array('link' => '文档列表|doc|browse|libID=%s');
$lang->doc->menu->edit = '编辑文档库|doc|editLib|libID=%s';
$lang->doc->menu->module = '维护模块|tree|browse|libID=%s&viewType=doc';
$lang->doc->menu->delete = array('link' => '删除文档库|doc|deleteLib|libID=%s', 'target' => 'hiddenwin');
$lang->doc->menu->create = array('link' => '<span class="icon-add1">&nbsp;</span>新增文档库|doc|createLib', 'float' => 'right');
/* 组织结构视图菜单设置。*/
$lang->company->menu->name = '%s' . $lang->arrow;
$lang->company->menu->browseUser = array('link' => '用户列表|company|browse', 'subModule' => 'user');
$lang->company->menu->dept = array('link' => '部门维护|dept|browse', 'subModule' => 'dept');
$lang->company->menu->browseGroup = array('link' => '权限分组|group|browse', 'subModule' => 'group');
$lang->company->menu->edit = array('link' => '公司管理|company|edit');
$lang->company->menu->dynamic = '组织动态|company|dynamic|';
$lang->company->menu->addGroup = array('link' => '<span class="icon-add1">&nbsp;</span>添加分组|group|create', 'float' => 'right');
$lang->company->menu->addUser = array('link' => '<span class="icon-add1">&nbsp;</span>添加用户|user|create|dept=%s', 'subModule' => 'user', 'float' => 'right');
$lang->dept->menu = $lang->company->menu;
$lang->group->menu = $lang->company->menu;
/* 用户信息菜单设置。*/
$lang->user->menu->account = '%s' . $lang->arrow;
$lang->user->menu->todo = array('link' => 'TODO列表|user|todo|account=%s', 'subModule' => 'todo');
$lang->user->menu->task = '任务列表|user|task|account=%s';
$lang->user->menu->bug = 'Bug列表|user|bug|account=%s';
$lang->user->menu->dynamic = '用户动态|user|dynamic|type=today&account=%s';
$lang->user->menu->projectList = '项目列表|user|project|account=%s';
$lang->user->menu->profile = array('link' => '用户信息|user|profile|account=%s', 'alias' => 'edit');
$lang->user->menu->browse = array('link' => '<span class="icon-title">&nbsp;</span>用户管理|company|browse|', 'float' => 'right');
/* 后台管理菜单设置。*/
$lang->admin->menu->index = array('link' => '首页|admin|index', 'subModule' => 'admin');
$lang->admin->menu->extension = array('link' => '插件管理|extension|browse', 'subModule' => 'extension');
$lang->admin->menu->editor = array('link' => '扩展编辑器|editor|index', 'subModule' => 'editor');
$lang->admin->menu->mail = array('link' => 'Email配置|mail|set', 'subModule' => 'mail');
$lang->admin->menu->convert = array('link' => '从其他系统导入|convert|index', 'subModule' => 'convert');
$lang->admin->menu->trashes = array('link' => '回收站|action|trash', 'subModule' => 'action');
$lang->convert->menu = $lang->admin->menu;
$lang->upgrade->menu = $lang->admin->menu;
$lang->action->menu = $lang->admin->menu;
$lang->extension->menu = $lang->admin->menu;
$lang->editor->menu = $lang->admin->menu;
$lang->mail->menu = $lang->admin->menu;
/*菜单设置:分组设置。*/
$lang->menugroup->release = 'product';
$lang->menugroup->story = 'product';
$lang->menugroup->productplan = 'product';
$lang->menugroup->task = 'project';
$lang->menugroup->build = 'project';
$lang->menugroup->convert = 'admin';
$lang->menugroup->upgrade = 'admin';
$lang->menugroup->user = 'company';
$lang->menugroup->group = 'company';
$lang->menugroup->bug = 'qa';
$lang->menugroup->testcase = 'qa';
$lang->menugroup->testtask = 'qa';
$lang->menugroup->people = 'company';
$lang->menugroup->dept = 'company';
$lang->menugroup->todo = 'my';
$lang->menugroup->action = 'admin';
$lang->menugroup->extension = 'admin';
$lang->menugroup->editor = 'admin';
$lang->menugroup->mail = 'admin';
/* 错误提示信息。*/
$lang->error->companyNotFound = "您访问的域名 %s 没有对应的公司。";
$lang->error->length = array("『%s』长度错误应当为『%s』", "『%s』长度应当不超过『%s』且不小于『%s』。");
$lang->error->reg = "『%s』不符合格式应当为:『%s』。";
$lang->error->unique = "『%s』已经有『%s』这条记录了。";
$lang->error->gt = "『%s』应当大于『%s』。";
$lang->error->notempty = "『%s』不能为空。";
$lang->error->empty = "『%s』必须为空。";
$lang->error->equal = "『%s』必须为『%s』。";
$lang->error->int = array("『%s』应当是数字。", "『%s』应当介于『%s-%s』之间。");
$lang->error->float = "『%s』应当是数字可以是小数。";
$lang->error->email = "『%s』应当为合法的EMAIL。";
$lang->error->date = "『%s』应当为合法的日期。";
$lang->error->account = "『%s』应当为合法的用户名。";
$lang->error->passwordsame = "两次密码应当相等。";
$lang->error->passwordrule = "密码应该符合规则,长度至少为六位。";
$lang->error->accessDenied = '您没有访问权限';
/* 分页信息。*/
$lang->pager->noRecord = "暂时没有记录";
$lang->pager->digest = "共<strong>%s</strong>条记录,每页 <strong>%s</strong>条,页面:<strong>%s/%s</strong> ";
$lang->pager->first = "首页";
$lang->pager->pre = "上页";
$lang->pager->next = "下页";
$lang->pager->last = "末页";
$lang->pager->locate = "GO!";
$lang->zentaoSite = "官方网站";
$lang->chinaScrum = "<a href='http://www.zentao.net/goto.php?item=chinascrum' target='_blank'>Scrum社区</a> ";
$lang->agileTraining = "<a href='http://www.zentao.net/goto.php?item=agiletrain' target='_blank'>培训</a> ";
$lang->donate = "<a href='http://www.zentao.net/goto.php?item=donate' target='_blank'>捐助禅道</a> ";
$lang->zentaoKeywords = "开源项目管理软件,项目管理,项目管理软件,pmp,pms,php框架国产php框架scrum工具,scrum管理工具,scrum管理软件,敏捷项目管理,禅道";
$lang->zentaoDESC = "禅道项目管理软件(ZenTaoPMS)是一款国产的基于LGPL协议开源免费的项目管理软件(工具、系统)同时也是一款scrum管理工具。
它集产品管理、项目管理、测试管理于一体同时还包含了事务管理、组织管理等诸多功能是中小型企业项目管理的首选。禅道项目管理软件使用PHP + MySQL开发
基于自主的PHP开发框架──ZenTaoPHP而成。第三方开发者或者企业可以非常方便的开发插件或者进行定制。禅道在手项目无忧";
/* 时间格式设置。*/
define('DT_DATETIME1', 'Y-m-d H:i:s');
define('DT_DATETIME2', 'y-m-d H:i');
define('DT_MONTHTIME1', 'n/d H:i');
define('DT_MONTHTIME2', 'n月d日 H:i');
define('DT_DATE1', 'Y-m-d');
define('DT_DATE2', 'Ymd');
define('DT_DATE3', 'Y年m月d日');
define('DT_DATE4', 'n月j日');
define('DT_TIME1', 'H:i:s');
define('DT_TIME2', 'H:i');

View File

@@ -1,300 +1,300 @@
<?php
/**
* The common simplified chinese file of ZenTaoPMS.
*
* @copyright Copyright 2009-2012 青島易軟天創網絡科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
* @package ZenTaoPMS
* @version $Id: zh-tw.php 2686 2012-03-02 05:45:14Z wyd621@gmail.com $
* @link http://www.zentao.net
*/
$lang->arrow = '<span class="icon-arrow">&nbsp;</span>';
$lang->colon = '::';
$lang->comma = '';
$lang->dot = '。';
$lang->at = ' 于 ';
$lang->downArrow = '↓';
$lang->ZenTaoPMS = '禪道管理';
$lang->welcome = "歡迎使用『%s』{$lang->colon} {$lang->ZenTaoPMS}";
$lang->myControl = "我的地盤";
$lang->currentPos = '當前位置:';
$lang->logout = '退出';
$lang->login = '登錄';
$lang->aboutZenTao = '關於';
$lang->todayIs = '今天是%s';
$lang->runInfo = "<div class='row'><div class='u-1 a-center' id='debugbar'>時間: %s 毫秒, 內存: %s KB, 查詢: %s. </div></div>";
$lang->reset = '重填';
$lang->edit = '編輯';
$lang->copy = '複製';
$lang->delete = '刪除';
$lang->close = '關閉';
$lang->link = '關聯';
$lang->unlink = '移除';
$lang->import = '導入';
$lang->export = '導出';
$lang->setFileName = '檔案名:';
$lang->activate = '激活';
$lang->submitting = '稍候...';
$lang->save = '保存';
$lang->confirm = '確認';
$lang->preview = '查看';
$lang->goback = '返回';
$lang->go = 'GO';
$lang->more = '更多';
$lang->actions = '操作';
$lang->comment = '備註';
$lang->history = '歷史記錄';
$lang->attatch = '附件';
$lang->reverse = '[切換順序]';
$lang->switchDisplay= '[切換顯示]';
$lang->switchHelp = '切換幫助';
$lang->addFiles = '上傳了附件 ';
$lang->files = '附件 ';
$lang->unfold = '+';
$lang->fold = '-';
$lang->selectAll = '全選';
$lang->notFound = '抱歉,您訪問的對象並不存在!';
$lang->showAll = '++ 全部顯示 ++';
$lang->hideClosed = '-- 隱藏已結束 --';
$lang->future = '未來';
$lang->year = '年';
$lang->workingHour = '工時';
$lang->idAB = 'ID';
$lang->priAB = 'P';
$lang->statusAB = '狀態';
$lang->openedByAB = '創建';
$lang->assignedToAB = '指派';
$lang->typeAB = '類型';
$lang->common->common = '公有模組';
/* 主導航菜單。*/
$lang->menu->my = '<span id="mainbg">&nbsp;</span>我的地盤|my|index';
$lang->menu->product = '產品視圖|product|index';
$lang->menu->project = '項目視圖|project|index';
$lang->menu->qa = '測試視圖|qa|index';
$lang->menu->doc = '文檔視圖|doc|index';
$lang->menu->company = '組織視圖|company|index';
$lang->menu->admin = '後台管理|admin|index';
/* 查詢條中可以選擇的對象列表。*/
$lang->searchObjects['bug'] = 'B:Bug';
$lang->searchObjects['story'] = 'S:需求';
$lang->searchObjects['task'] = 'T:任務';
$lang->searchObjects['testcase'] = 'C:用例';
$lang->searchObjects['project'] = 'P:項目';
$lang->searchObjects['product'] = 'P:產品';
$lang->searchObjects['user'] = 'U:用戶';
$lang->searchObjects['build'] = 'B:Build';
$lang->searchObjects['release'] = 'R:發佈';
$lang->searchObjects['productplan'] = 'P:產品計劃';
$lang->searchObjects['testtask'] = 'T:測試任務';
$lang->searchObjects['doc'] = 'D:文檔';
$lang->searchTips = '輸入編號';
/* 導出檔案的類型列表。*/
$lang->exportFileTypeList['csv'] = 'csv';
$lang->exportFileTypeList['xml'] = 'xml';
$lang->exportFileTypeList['html'] = 'html';
/* 風格列表。*/
$lang->themes['default'] = '預設';
$lang->themes['green'] = '綠色';
$lang->themes['red'] = '紅色';
$lang->themes['classblue'] = '經典藍';
/* 首頁菜單設置。*/
$lang->index->menu->product = '瀏覽產品|product|browse';
$lang->index->menu->project = '瀏覽項目|project|browse';
/* 我的地盤菜單設置。*/
$lang->my->menu->account = '<span id="mybg">&nbsp;</span>%s' . $lang->arrow;
$lang->my->menu->index = '首頁|my|index';
$lang->my->menu->todo = array('link' => '我的TODO|my|todo|', 'subModule' => 'todo');
$lang->my->menu->task = '我的任務|my|task|';
$lang->my->menu->bug = '我的Bug|my|bug|';
$lang->my->menu->testtask = '我的測試|my|testtask|';
$lang->my->menu->story = '我的需求|my|story|';
$lang->my->menu->myProject = '我的項目|my|project|';
$lang->my->menu->dynamic = '我的動態|my|dynamic|';
$lang->my->menu->profile = array('link' => '我的檔案|my|profile|', 'alias' => 'editprofile');
$lang->todo->menu = $lang->my->menu;
/* 產品視圖設置。*/
$lang->product->menu->list = '%s';
$lang->product->menu->story = array('link' => '需求|product|browse|productID=%s', 'subModule' => 'story');
$lang->product->menu->dynamic = '動態|product|dynamic|productID=%s';
$lang->product->menu->plan = array('link' => '計劃|productplan|browse|productID=%s', 'subModule' => 'productplan');
$lang->product->menu->release = array('link' => '發佈|release|browse|productID=%s', 'subModule' => 'release');
$lang->product->menu->roadmap = '路線圖|product|roadmap|productID=%s';
$lang->product->menu->doc = array('link' => '文檔|product|doc|productID=%s', 'subModule' => 'doc');
$lang->product->menu->view = '概況|product|view|productID=%s';
$lang->product->menu->edit = '編輯|product|edit|productID=%s';
$lang->product->menu->delete = array('link' => '刪除|product|delete|productID=%s', 'target' => 'hiddenwin');
$lang->product->menu->module = '模組|tree|browse|productID=%s&view=story';
$lang->product->menu->order = '排序|product|order|productID=%s';
$lang->product->menu->create = array('link' => '<span class="icon-add1">&nbsp;</span>新增產品|product|create', 'float' => 'right');
$lang->product->menu->project = array('link' => '<span class="icon-title">&nbsp;</span>項目列表|product|project|status=all&productID=%s', 'float' => 'right');
$lang->product->menu->all = array('link' => '<span class="icon-all">&nbsp;</span>所有產品|product|index|locate=false', 'float' => 'right');
$lang->story->menu = $lang->product->menu;
$lang->productplan->menu = $lang->product->menu;
$lang->release->menu = $lang->product->menu;
/* 項目視圖菜單設置。*/
$lang->project->menu->list = '%s';
$lang->project->menu->task = array('link' => '任務|project|task|projectID=%s', 'subModule' => 'task', 'alias' => 'grouptask,importtask');
$lang->project->menu->story = array('link' => '需求|project|story|projectID=%s');
$lang->project->menu->bug = 'Bug|project|bug|projectID=%s';
$lang->project->menu->dynamic = '動態|project|dynamic|projectID=%s';
$lang->project->menu->build = array('link' => 'Build|project|build|projectID=%s', 'subModule' => 'build');
$lang->project->menu->testtask = '測試申請|project|testtask|projectID=%s';
$lang->project->menu->burn = '燃盡圖|project|burn|projectID=%s';
$lang->project->menu->team = array('link' => '團隊|project|team|projectID=%s', 'alias' => 'managemembers');
$lang->project->menu->doc = array('link' => '文檔|project|doc|porjectID=%s', 'subModule' => 'doc');
$lang->project->menu->product = '產品|project|manageproducts|projectID=%s';
$lang->project->menu->linkstory = array('link' => '關聯需求|project|linkstory|projectID=%s');
$lang->project->menu->view = '概況|project|view|projectID=%s';
$lang->project->menu->edit = '編輯|project|edit|projectID=%s';
$lang->project->menu->delete = array('link' => '刪除|project|delete|projectID=%s', 'target' => 'hiddenwin');
$lang->project->menu->order = '排序|project|order|projectID=%s';
$lang->project->menu->create = array('link' => '<span class="icon-add1">&nbsp;</span>新增項目|project|create', 'float' => 'right');
$lang->project->menu->copy = array('link' => '<span class="icon-copy">&nbsp;</span>複製項目|project|create|projectID=&copyProjectID=%s', 'float' => 'right');
$lang->project->menu->all = array('link' => '<span class="icon-all">&nbsp;</span>所有項目|project|index|locate=false', 'float' => 'right');
$lang->task->menu = $lang->project->menu;
$lang->build->menu = $lang->project->menu;
/* QA視圖菜單設置。*/
$lang->bug->menu->product = '%s';
$lang->bug->menu->bug = array('link' => '缺陷管理|bug|browse|productID=%s', 'alias' => 'view,create,edit,resolve,close,activate,report', 'subModule' => 'tree');
$lang->bug->menu->testcase = array('link' => '用例管理|testcase|browse|productID=%s', 'alias' => 'view,create,edit');
$lang->bug->menu->testtask = array('link' => '測試任務|testtask|browse|productID=%s');
$lang->testcase->menu->product = '%s';
$lang->testcase->menu->bug = array('link' => '缺陷管理|bug|browse|productID=%s');
$lang->testcase->menu->testcase = array('link' => '用例管理|testcase|browse|productID=%s', 'alias' => 'view,create,batchcreate,edit', 'subModule' => 'tree');
$lang->testcase->menu->testtask = array('link' => '測試任務|testtask|browse|productID=%s');
$lang->testtask->menu->product = '%s';
$lang->testtask->menu->bug = array('link' => '缺陷管理|bug|browse|productID=%s');
$lang->testtask->menu->testcase = array('link' => '用例管理|testcase|browse|productID=%s');
$lang->testtask->menu->testtask = array('link' => '測試任務|testtask|browse|productID=%s', 'alias' => 'view,create,edit,linkcase,cases');
/* 文檔視圖菜單設置。*/
$lang->doc->menu->list = '%s';
$lang->doc->menu->browse = array('link' => '文檔列表|doc|browse|libID=%s');
$lang->doc->menu->edit = '編輯文檔庫|doc|editLib|libID=%s';
$lang->doc->menu->module = '維護模組|tree|browse|libID=%s&viewType=doc';
$lang->doc->menu->delete = array('link' => '刪除文檔庫|doc|deleteLib|libID=%s', 'target' => 'hiddenwin');
$lang->doc->menu->create = array('link' => '<span class="icon-add1">&nbsp;</span>新增文檔庫|doc|createLib', 'float' => 'right');
/* 組織結構視圖菜單設置。*/
$lang->company->menu->name = '%s' . $lang->arrow;
$lang->company->menu->browseUser = array('link' => '用戶列表|company|browse', 'subModule' => 'user');
$lang->company->menu->dept = array('link' => '部門維護|dept|browse', 'subModule' => 'dept');
$lang->company->menu->browseGroup = array('link' => '權限分組|group|browse', 'subModule' => 'group');
$lang->company->menu->edit = array('link' => '公司管理|company|edit');
$lang->company->menu->dynamic = '組織動態|company|dynamic|';
$lang->company->menu->addGroup = array('link' => '<span class="icon-add1">&nbsp;</span>添加分組|group|create', 'float' => 'right');
$lang->company->menu->addUser = array('link' => '<span class="icon-add1">&nbsp;</span>添加用戶|user|create|dept=%s', 'subModule' => 'user', 'float' => 'right');
$lang->dept->menu = $lang->company->menu;
$lang->group->menu = $lang->company->menu;
/* 用戶信息菜單設置。*/
$lang->user->menu->account = '%s' . $lang->arrow;
$lang->user->menu->todo = array('link' => 'TODO列表|user|todo|account=%s', 'subModule' => 'todo');
$lang->user->menu->task = '任務列表|user|task|account=%s';
$lang->user->menu->bug = 'Bug列表|user|bug|account=%s';
$lang->user->menu->dynamic = '用戶動態|user|dynamic|type=today&account=%s';
$lang->user->menu->projectList = '項目列表|user|project|account=%s';
$lang->user->menu->profile = array('link' => '用戶信息|user|profile|account=%s', 'alias' => 'edit');
$lang->user->menu->browse = array('link' => '<span class="icon-title">&nbsp;</span>用戶管理|company|browse|', 'float' => 'right');
/* 後台管理菜單設置。*/
$lang->admin->menu->index = array('link' => '首頁|admin|index', 'subModule' => 'admin');
$lang->admin->menu->extension = array('link' => '插件管理|extension|browse', 'subModule' => 'extension');
$lang->admin->menu->editor = array('link' => '擴展編輯器|editor|index', 'subModule' => 'editor');
$lang->admin->menu->mail = array('link' => 'Email配置|mail|set', 'subModule' => 'mail');
$lang->admin->menu->convert = array('link' => '從其他系統導入|convert|index', 'subModule' => 'convert');
$lang->admin->menu->trashes = array('link' => '資源回收筒|action|trash', 'subModule' => 'action');
$lang->convert->menu = $lang->admin->menu;
$lang->upgrade->menu = $lang->admin->menu;
$lang->action->menu = $lang->admin->menu;
$lang->extension->menu = $lang->admin->menu;
$lang->editor->menu = $lang->admin->menu;
$lang->mail->menu = $lang->admin->menu;
/*菜單設置:分組設置。*/
$lang->menugroup->release = 'product';
$lang->menugroup->story = 'product';
$lang->menugroup->productplan = 'product';
$lang->menugroup->task = 'project';
$lang->menugroup->build = 'project';
$lang->menugroup->convert = 'admin';
$lang->menugroup->upgrade = 'admin';
$lang->menugroup->user = 'company';
$lang->menugroup->group = 'company';
$lang->menugroup->bug = 'qa';
$lang->menugroup->testcase = 'qa';
$lang->menugroup->testtask = 'qa';
$lang->menugroup->people = 'company';
$lang->menugroup->dept = 'company';
$lang->menugroup->todo = 'my';
$lang->menugroup->action = 'admin';
$lang->menugroup->extension = 'admin';
$lang->menugroup->editor = 'admin';
$lang->menugroup->mail = 'admin';
/* 錯誤提示信息。*/
$lang->error->companyNotFound = "您訪問的域名 %s 沒有對應的公司。";
$lang->error->length = array("『%s』長度錯誤應當為『%s』", "『%s』長度應當不超過『%s』且不小於『%s』。");
$lang->error->reg = "『%s』不符合格式應當為:『%s』。";
$lang->error->unique = "『%s』已經有『%s』這條記錄了。";
$lang->error->gt = "『%s』應當大於『%s』。";
$lang->error->notempty = "『%s』不能為空。";
$lang->error->empty = "『%s』必須為空。";
$lang->error->equal = "『%s』必須為『%s』。";
$lang->error->int = array("『%s』應當是數字。", "『%s』應當介於『%s-%s』之間。");
$lang->error->float = "『%s』應當是數字可以是小數。";
$lang->error->email = "『%s』應當為合法的EMAIL。";
$lang->error->date = "『%s』應當為合法的日期。";
$lang->error->account = "『%s』應當為合法的用戶名。";
$lang->error->passwordsame = "兩次密碼應當相等。";
$lang->error->passwordrule = "密碼應該符合規則,長度至少為六位。";
$lang->error->accessDenied = '您沒有訪問權限';
/* 分頁信息。*/
$lang->pager->noRecord = "暫時沒有記錄";
$lang->pager->digest = "共<strong>%s</strong>條記錄,每頁 <strong>%s</strong>條,頁面:<strong>%s/%s</strong> ";
$lang->pager->first = "首頁";
$lang->pager->pre = "上頁";
$lang->pager->next = "下頁";
$lang->pager->last = "末頁";
$lang->pager->locate = "GO!";
$lang->zentaoSite = "官方網站";
$lang->chinaScrum = "<a href='http://www.zentao.net/goto.php?item=chinascrum' target='_blank'>Scrum社區</a> ";
$lang->agileTraining = "<a href='http://www.zentao.net/goto.php?item=agiletrain' target='_blank'>培訓</a> ";
$lang->donate = "<a href='http://www.zentao.net/goto.php?item=donate' target='_blank'>捐助禪道</a> ";
$lang->zentaoKeywords = "開源項目管理軟件,項目管理,項目管理軟件,pmp,pms,php框架國產php框架scrum工具,scrum管理工具,scrum管理軟件,敏捷項目管理,禪道";
$lang->zentaoDESC = "禪道項目管理軟件(ZenTaoPMS)是一款國產的基于LGPL協議開源免費的項目管理軟件(工具、系統)同時也是一款scrum管理工具。
它集產品管理、項目管理、測試管理於一體同時還包含了事務管理、組織管理等諸多功能是中小型企業項目管理的首選。禪道項目管理軟件使用PHP + MySQL開發
基于自主的PHP開發框架──ZenTaoPHP而成。第三方開發者或者企業可以非常方便的開發插件或者進行定製。禪道在手項目無憂";
/* 時間格式設置。*/
define('DT_DATETIME1', 'Y-m-d H:i:s');
define('DT_DATETIME2', 'y-m-d H:i');
define('DT_MONTHTIME1', 'n/d H:i');
define('DT_MONTHTIME2', 'n月d日 H:i');
define('DT_DATE1', 'Y-m-d');
define('DT_DATE2', 'Ymd');
define('DT_DATE3', 'Y年m月d日');
define('DT_DATE4', 'n月j日');
define('DT_TIME1', 'H:i:s');
define('DT_TIME2', 'H:i');
<?php
/**
* The common simplified chinese file of ZenTaoPMS.
*
* @copyright Copyright 2009-2012 青島易軟天創網絡科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
* @package ZenTaoPMS
* @version $Id: zh-tw.php 2686 2012-03-02 05:45:14Z wyd621@gmail.com $
* @link http://www.zentao.net
*/
$lang->arrow = '<span class="icon-arrow">&nbsp;</span>';
$lang->colon = '::';
$lang->comma = '';
$lang->dot = '。';
$lang->at = ' 于 ';
$lang->downArrow = '↓';
$lang->ZenTaoPMS = '禪道管理';
$lang->welcome = "歡迎使用『%s』{$lang->colon} {$lang->ZenTaoPMS}";
$lang->myControl = "我的地盤";
$lang->currentPos = '當前位置:';
$lang->logout = '退出';
$lang->login = '登錄';
$lang->aboutZenTao = '關於';
$lang->todayIs = '今天是%s';
$lang->runInfo = "<div class='row'><div class='u-1 a-center' id='debugbar'>時間: %s 毫秒, 內存: %s KB, 查詢: %s. </div></div>";
$lang->reset = '重填';
$lang->edit = '編輯';
$lang->copy = '複製';
$lang->delete = '刪除';
$lang->close = '關閉';
$lang->link = '關聯';
$lang->unlink = '移除';
$lang->import = '導入';
$lang->export = '導出';
$lang->setFileName = '檔案名:';
$lang->activate = '激活';
$lang->submitting = '稍候...';
$lang->save = '保存';
$lang->confirm = '確認';
$lang->preview = '查看';
$lang->goback = '返回';
$lang->go = 'GO';
$lang->more = '更多';
$lang->actions = '操作';
$lang->comment = '備註';
$lang->history = '歷史記錄';
$lang->attatch = '附件';
$lang->reverse = '[切換順序]';
$lang->switchDisplay= '[切換顯示]';
$lang->switchHelp = '切換幫助';
$lang->addFiles = '上傳了附件 ';
$lang->files = '附件 ';
$lang->unfold = '+';
$lang->fold = '-';
$lang->selectAll = '全選';
$lang->notFound = '抱歉,您訪問的對象並不存在!';
$lang->showAll = '++ 全部顯示 ++';
$lang->hideClosed = '-- 隱藏已結束 --';
$lang->future = '未來';
$lang->year = '年';
$lang->workingHour = '工時';
$lang->idAB = 'ID';
$lang->priAB = 'P';
$lang->statusAB = '狀態';
$lang->openedByAB = '創建';
$lang->assignedToAB = '指派';
$lang->typeAB = '類型';
$lang->common->common = '公有模組';
/* 主導航菜單。*/
$lang->menu->my = '<span id="mainbg">&nbsp;</span>我的地盤|my|index';
$lang->menu->product = '產品視圖|product|index';
$lang->menu->project = '項目視圖|project|index';
$lang->menu->qa = '測試視圖|qa|index';
$lang->menu->doc = '文檔視圖|doc|index';
$lang->menu->company = '組織視圖|company|index';
$lang->menu->admin = '後台管理|admin|index';
/* 查詢條中可以選擇的對象列表。*/
$lang->searchObjects['bug'] = 'B:Bug';
$lang->searchObjects['story'] = 'S:需求';
$lang->searchObjects['task'] = 'T:任務';
$lang->searchObjects['testcase'] = 'C:用例';
$lang->searchObjects['project'] = 'P:項目';
$lang->searchObjects['product'] = 'P:產品';
$lang->searchObjects['user'] = 'U:用戶';
$lang->searchObjects['build'] = 'B:Build';
$lang->searchObjects['release'] = 'R:發佈';
$lang->searchObjects['productplan'] = 'P:產品計劃';
$lang->searchObjects['testtask'] = 'T:測試任務';
$lang->searchObjects['doc'] = 'D:文檔';
$lang->searchTips = '輸入編號';
/* 導出檔案的類型列表。*/
$lang->exportFileTypeList['csv'] = 'csv';
$lang->exportFileTypeList['xml'] = 'xml';
$lang->exportFileTypeList['html'] = 'html';
/* 風格列表。*/
$lang->themes['default'] = '預設';
$lang->themes['green'] = '綠色';
$lang->themes['red'] = '紅色';
$lang->themes['classblue'] = '經典藍';
/* 首頁菜單設置。*/
$lang->index->menu->product = '瀏覽產品|product|browse';
$lang->index->menu->project = '瀏覽項目|project|browse';
/* 我的地盤菜單設置。*/
$lang->my->menu->account = '<span id="mybg">&nbsp;</span>%s' . $lang->arrow;
$lang->my->menu->index = '首頁|my|index';
$lang->my->menu->todo = array('link' => '我的TODO|my|todo|', 'subModule' => 'todo');
$lang->my->menu->task = '我的任務|my|task|';
$lang->my->menu->bug = '我的Bug|my|bug|';
$lang->my->menu->testtask = '我的測試|my|testtask|';
$lang->my->menu->story = '我的需求|my|story|';
$lang->my->menu->myProject = '我的項目|my|project|';
$lang->my->menu->dynamic = '我的動態|my|dynamic|';
$lang->my->menu->profile = array('link' => '我的檔案|my|profile|', 'alias' => 'editprofile');
$lang->todo->menu = $lang->my->menu;
/* 產品視圖設置。*/
$lang->product->menu->list = '%s';
$lang->product->menu->story = array('link' => '需求|product|browse|productID=%s', 'subModule' => 'story');
$lang->product->menu->dynamic = '動態|product|dynamic|productID=%s';
$lang->product->menu->plan = array('link' => '計劃|productplan|browse|productID=%s', 'subModule' => 'productplan');
$lang->product->menu->release = array('link' => '發佈|release|browse|productID=%s', 'subModule' => 'release');
$lang->product->menu->roadmap = '路線圖|product|roadmap|productID=%s';
$lang->product->menu->doc = array('link' => '文檔|product|doc|productID=%s', 'subModule' => 'doc');
$lang->product->menu->view = '概況|product|view|productID=%s';
$lang->product->menu->edit = '編輯|product|edit|productID=%s';
$lang->product->menu->delete = array('link' => '刪除|product|delete|productID=%s', 'target' => 'hiddenwin');
$lang->product->menu->module = '模組|tree|browse|productID=%s&view=story';
$lang->product->menu->order = '排序|product|order|productID=%s';
$lang->product->menu->create = array('link' => '<span class="icon-add1">&nbsp;</span>新增產品|product|create', 'float' => 'right');
$lang->product->menu->project = array('link' => '<span class="icon-title">&nbsp;</span>項目列表|product|project|status=all&productID=%s', 'float' => 'right');
$lang->product->menu->all = array('link' => '<span class="icon-all">&nbsp;</span>所有產品|product|index|locate=false', 'float' => 'right');
$lang->story->menu = $lang->product->menu;
$lang->productplan->menu = $lang->product->menu;
$lang->release->menu = $lang->product->menu;
/* 項目視圖菜單設置。*/
$lang->project->menu->list = '%s';
$lang->project->menu->task = array('link' => '任務|project|task|projectID=%s', 'subModule' => 'task', 'alias' => 'grouptask,importtask');
$lang->project->menu->story = array('link' => '需求|project|story|projectID=%s');
$lang->project->menu->bug = 'Bug|project|bug|projectID=%s';
$lang->project->menu->dynamic = '動態|project|dynamic|projectID=%s';
$lang->project->menu->build = array('link' => 'Build|project|build|projectID=%s', 'subModule' => 'build');
$lang->project->menu->testtask = '測試申請|project|testtask|projectID=%s';
$lang->project->menu->burn = '燃盡圖|project|burn|projectID=%s';
$lang->project->menu->team = array('link' => '團隊|project|team|projectID=%s', 'alias' => 'managemembers');
$lang->project->menu->doc = array('link' => '文檔|project|doc|porjectID=%s', 'subModule' => 'doc');
$lang->project->menu->product = '產品|project|manageproducts|projectID=%s';
$lang->project->menu->linkstory = array('link' => '關聯需求|project|linkstory|projectID=%s');
$lang->project->menu->view = '概況|project|view|projectID=%s';
$lang->project->menu->edit = '編輯|project|edit|projectID=%s';
$lang->project->menu->delete = array('link' => '刪除|project|delete|projectID=%s', 'target' => 'hiddenwin');
$lang->project->menu->order = '排序|project|order|projectID=%s';
$lang->project->menu->create = array('link' => '<span class="icon-add1">&nbsp;</span>新增項目|project|create', 'float' => 'right');
$lang->project->menu->copy = array('link' => '<span class="icon-copy">&nbsp;</span>複製項目|project|create|projectID=&copyProjectID=%s', 'float' => 'right');
$lang->project->menu->all = array('link' => '<span class="icon-all">&nbsp;</span>所有項目|project|index|locate=false', 'float' => 'right');
$lang->task->menu = $lang->project->menu;
$lang->build->menu = $lang->project->menu;
/* QA視圖菜單設置。*/
$lang->bug->menu->product = '%s';
$lang->bug->menu->bug = array('link' => '缺陷管理|bug|browse|productID=%s', 'alias' => 'view,create,edit,resolve,close,activate,report', 'subModule' => 'tree');
$lang->bug->menu->testcase = array('link' => '用例管理|testcase|browse|productID=%s', 'alias' => 'view,create,edit');
$lang->bug->menu->testtask = array('link' => '測試任務|testtask|browse|productID=%s');
$lang->testcase->menu->product = '%s';
$lang->testcase->menu->bug = array('link' => '缺陷管理|bug|browse|productID=%s');
$lang->testcase->menu->testcase = array('link' => '用例管理|testcase|browse|productID=%s', 'alias' => 'view,create,batchcreate,edit', 'subModule' => 'tree');
$lang->testcase->menu->testtask = array('link' => '測試任務|testtask|browse|productID=%s');
$lang->testtask->menu->product = '%s';
$lang->testtask->menu->bug = array('link' => '缺陷管理|bug|browse|productID=%s');
$lang->testtask->menu->testcase = array('link' => '用例管理|testcase|browse|productID=%s');
$lang->testtask->menu->testtask = array('link' => '測試任務|testtask|browse|productID=%s', 'alias' => 'view,create,edit,linkcase,cases');
/* 文檔視圖菜單設置。*/
$lang->doc->menu->list = '%s';
$lang->doc->menu->browse = array('link' => '文檔列表|doc|browse|libID=%s');
$lang->doc->menu->edit = '編輯文檔庫|doc|editLib|libID=%s';
$lang->doc->menu->module = '維護模組|tree|browse|libID=%s&viewType=doc';
$lang->doc->menu->delete = array('link' => '刪除文檔庫|doc|deleteLib|libID=%s', 'target' => 'hiddenwin');
$lang->doc->menu->create = array('link' => '<span class="icon-add1">&nbsp;</span>新增文檔庫|doc|createLib', 'float' => 'right');
/* 組織結構視圖菜單設置。*/
$lang->company->menu->name = '%s' . $lang->arrow;
$lang->company->menu->browseUser = array('link' => '用戶列表|company|browse', 'subModule' => 'user');
$lang->company->menu->dept = array('link' => '部門維護|dept|browse', 'subModule' => 'dept');
$lang->company->menu->browseGroup = array('link' => '權限分組|group|browse', 'subModule' => 'group');
$lang->company->menu->edit = array('link' => '公司管理|company|edit');
$lang->company->menu->dynamic = '組織動態|company|dynamic|';
$lang->company->menu->addGroup = array('link' => '<span class="icon-add1">&nbsp;</span>添加分組|group|create', 'float' => 'right');
$lang->company->menu->addUser = array('link' => '<span class="icon-add1">&nbsp;</span>添加用戶|user|create|dept=%s', 'subModule' => 'user', 'float' => 'right');
$lang->dept->menu = $lang->company->menu;
$lang->group->menu = $lang->company->menu;
/* 用戶信息菜單設置。*/
$lang->user->menu->account = '%s' . $lang->arrow;
$lang->user->menu->todo = array('link' => 'TODO列表|user|todo|account=%s', 'subModule' => 'todo');
$lang->user->menu->task = '任務列表|user|task|account=%s';
$lang->user->menu->bug = 'Bug列表|user|bug|account=%s';
$lang->user->menu->dynamic = '用戶動態|user|dynamic|type=today&account=%s';
$lang->user->menu->projectList = '項目列表|user|project|account=%s';
$lang->user->menu->profile = array('link' => '用戶信息|user|profile|account=%s', 'alias' => 'edit');
$lang->user->menu->browse = array('link' => '<span class="icon-title">&nbsp;</span>用戶管理|company|browse|', 'float' => 'right');
/* 後台管理菜單設置。*/
$lang->admin->menu->index = array('link' => '首頁|admin|index', 'subModule' => 'admin');
$lang->admin->menu->extension = array('link' => '插件管理|extension|browse', 'subModule' => 'extension');
$lang->admin->menu->editor = array('link' => '擴展編輯器|editor|index', 'subModule' => 'editor');
$lang->admin->menu->mail = array('link' => 'Email配置|mail|set', 'subModule' => 'mail');
$lang->admin->menu->convert = array('link' => '從其他系統導入|convert|index', 'subModule' => 'convert');
$lang->admin->menu->trashes = array('link' => '資源回收筒|action|trash', 'subModule' => 'action');
$lang->convert->menu = $lang->admin->menu;
$lang->upgrade->menu = $lang->admin->menu;
$lang->action->menu = $lang->admin->menu;
$lang->extension->menu = $lang->admin->menu;
$lang->editor->menu = $lang->admin->menu;
$lang->mail->menu = $lang->admin->menu;
/*菜單設置:分組設置。*/
$lang->menugroup->release = 'product';
$lang->menugroup->story = 'product';
$lang->menugroup->productplan = 'product';
$lang->menugroup->task = 'project';
$lang->menugroup->build = 'project';
$lang->menugroup->convert = 'admin';
$lang->menugroup->upgrade = 'admin';
$lang->menugroup->user = 'company';
$lang->menugroup->group = 'company';
$lang->menugroup->bug = 'qa';
$lang->menugroup->testcase = 'qa';
$lang->menugroup->testtask = 'qa';
$lang->menugroup->people = 'company';
$lang->menugroup->dept = 'company';
$lang->menugroup->todo = 'my';
$lang->menugroup->action = 'admin';
$lang->menugroup->extension = 'admin';
$lang->menugroup->editor = 'admin';
$lang->menugroup->mail = 'admin';
/* 錯誤提示信息。*/
$lang->error->companyNotFound = "您訪問的域名 %s 沒有對應的公司。";
$lang->error->length = array("『%s』長度錯誤應當為『%s』", "『%s』長度應當不超過『%s』且不小於『%s』。");
$lang->error->reg = "『%s』不符合格式應當為:『%s』。";
$lang->error->unique = "『%s』已經有『%s』這條記錄了。";
$lang->error->gt = "『%s』應當大於『%s』。";
$lang->error->notempty = "『%s』不能為空。";
$lang->error->empty = "『%s』必須為空。";
$lang->error->equal = "『%s』必須為『%s』。";
$lang->error->int = array("『%s』應當是數字。", "『%s』應當介於『%s-%s』之間。");
$lang->error->float = "『%s』應當是數字可以是小數。";
$lang->error->email = "『%s』應當為合法的EMAIL。";
$lang->error->date = "『%s』應當為合法的日期。";
$lang->error->account = "『%s』應當為合法的用戶名。";
$lang->error->passwordsame = "兩次密碼應當相等。";
$lang->error->passwordrule = "密碼應該符合規則,長度至少為六位。";
$lang->error->accessDenied = '您沒有訪問權限';
/* 分頁信息。*/
$lang->pager->noRecord = "暫時沒有記錄";
$lang->pager->digest = "共<strong>%s</strong>條記錄,每頁 <strong>%s</strong>條,頁面:<strong>%s/%s</strong> ";
$lang->pager->first = "首頁";
$lang->pager->pre = "上頁";
$lang->pager->next = "下頁";
$lang->pager->last = "末頁";
$lang->pager->locate = "GO!";
$lang->zentaoSite = "官方網站";
$lang->chinaScrum = "<a href='http://www.zentao.net/goto.php?item=chinascrum' target='_blank'>Scrum社區</a> ";
$lang->agileTraining = "<a href='http://www.zentao.net/goto.php?item=agiletrain' target='_blank'>培訓</a> ";
$lang->donate = "<a href='http://www.zentao.net/goto.php?item=donate' target='_blank'>捐助禪道</a> ";
$lang->zentaoKeywords = "開源項目管理軟件,項目管理,項目管理軟件,pmp,pms,php框架國產php框架scrum工具,scrum管理工具,scrum管理軟件,敏捷項目管理,禪道";
$lang->zentaoDESC = "禪道項目管理軟件(ZenTaoPMS)是一款國產的基于LGPL協議開源免費的項目管理軟件(工具、系統)同時也是一款scrum管理工具。
它集產品管理、項目管理、測試管理於一體同時還包含了事務管理、組織管理等諸多功能是中小型企業項目管理的首選。禪道項目管理軟件使用PHP + MySQL開發
基于自主的PHP開發框架──ZenTaoPHP而成。第三方開發者或者企業可以非常方便的開發插件或者進行定製。禪道在手項目無憂";
/* 時間格式設置。*/
define('DT_DATETIME1', 'Y-m-d H:i:s');
define('DT_DATETIME2', 'y-m-d H:i');
define('DT_MONTHTIME1', 'n/d H:i');
define('DT_MONTHTIME2', 'n月d日 H:i');
define('DT_DATE1', 'Y-m-d');
define('DT_DATE2', 'Ymd');
define('DT_DATE3', 'Y年m月d日');
define('DT_DATE4', 'n月j日');
define('DT_TIME1', 'H:i:s');
define('DT_TIME2', 'H:i');

View File

@@ -1,367 +1,367 @@
<?php
/**
* The model file of common module of ZenTaoPMS.
*
* @copyright Copyright 2009-2012 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
* @package common
* @version $Id$
* @link http://www.zentao.net
*/
class commonModel extends model
{
/**
* Start the session.
*
* @access public
* @return void
*/
public function startSession()
{
session_name($this->config->sessionVar);
if(isset($_GET[$this->config->sessionVar])) session_id($_GET[$this->config->sessionVar]);
session_start();
}
/**
* Set the header info.
*
* @access public
* @return void
*/
public function sendHeader()
{
header("Content-Type: text/html; Language={$this->config->encoding}");
header("Cache-control: private");
}
/**
* Set the commpany.
*
* First, search company by the http host. If not found, search by the default domain. Last, use the first as the default.
* After get the company, save it to session.
* @access public
* @return void
*/
public function setCompany()
{
$httpHost = $this->server->http_host;
if(strpos($httpHost, ":"))
{
$httpHost = explode(":", $httpHost);
$httpHost = $httpHost[0];
}
if($this->session->company and $this->session->company->pms == $httpHost)
{
$this->app->company = $this->session->company;
}
else
{
$company = $this->loadModel('company')->getByDomain();
if(!$company and isset($this->config->default->domain)) $company = $this->company->getByDomain($this->config->default->domain);
if(!$company) $company = $this->company->getFirst();
if(!$company) $this->app->error(sprintf($this->lang->error->companyNotFound, $httpHost), __FILE__, __LINE__, $exit = true);
$this->session->set('company', $company);
$this->app->company = $company;
}
}
/**
* Set the user info.
*
* @access public
* @return void
*/
public function setUser()
{
if($this->session->user)
{
$this->app->user = $this->session->user;
}
elseif($this->app->company->guest)
{
$user = new stdClass();
$user->id = 0;
$user->account = 'guest';
$user->realname = 'guest';
$user->rights = $this->loadModel('user')->authorize('guest');
$this->session->set('user', $user);
$this->app->user = $this->session->user;
}
}
/**
* Juage a method of one module is open or not?
*
* @param string $module
* @param string $method
* @access public
* @return bool
*/
public function isOpenMethod($module, $method)
{
if($module == 'user' and strpos('login|logout|deny', $method) !== false) return true;
if($module == 'api' and $method == 'getsessionid') return true;
if($module == 'misc' and $method == 'about') return true;
if($module == 'misc' and $method == 'checkupdate') return true;
if($module == 'help' and $method == 'field') return true;
return false;
}
/**
* Deny access.
*
* @access public
* @return void
*/
public function deny($module, $method)
{
$vars = "module=$module&method=$method";
if(isset($this->server->http_referer))
{
$referer = helper::safe64Encode($this->server->http_referer);
$vars .= "&referer=$referer";
}
$denyLink = helper::createLink('user', 'deny', $vars);
/* Fix the bug of IE: use js locate, can't get the referer. */
if(strpos($this->server->http_user_agent, 'MSIE') !== false)
{
echo "<a href='$denyLink' id='denylink' style='display:none'>deny</a>";
echo "<script language='javascript'>document.getElementById('denylink').click();</script>";
}
else
{
echo js::locate($denyLink);
}
exit;
}
/**
* Get the run info.
*
* @param mixed $startTime the start time of this execution
* @access public
* @return array the run info array.
*/
public function getRunInfo($startTime)
{
$info['timeUsed'] = round(getTime() - $startTime, 4) * 1000;
$info['memory'] = round(memory_get_peak_usage() / 1024, 1);
$info['querys'] = count(dao::$querys);
return $info;
}
/**
* Print top bar.
*
* @static
* @access public
* @return void
*/
public static function printTopBar()
{
global $lang, $app;
printf($lang->todayIs, date(DT_DATE3));
if(isset($app->user)) echo $app->user->realname . ' ';
if(isset($app->user) and $app->user->account != 'guest')
{
echo html::a(helper::createLink('my', 'index'), $lang->myControl);
echo html::a(helper::createLink('user', 'logout'), $lang->logout);
}
else
{
echo html::a(helper::createLink('user', 'login'), $lang->login);
}
echo html::a(helper::createLink('misc', 'about'), $lang->aboutZenTao, '', "class='about'");
echo $lang->agileTraining;
echo $lang->donate;
}
/**
* Print the main menu.
*
* @param string $moduleName
* @static
* @access public
* @return void
*/
public static function printMainmenu($moduleName)
{
global $app, $lang;
echo "<ul>\n";
/* Set the main main menu. */
$mainMenu = $moduleName;
if(isset($lang->menugroup->$moduleName)) $mainMenu = $lang->menugroup->$moduleName;
/* Print all main menus. */
foreach($lang->menu as $menuKey => $menu)
{
$active = $menuKey == $mainMenu ? "class='active'" : '';
list($menuLabel, $module, $method) = explode('|', $menu);
if(common::hasPriv($module, $method))
{
$link = helper::createLink($module, $method);
echo "<li $active><nobr><a href='$link' id='menu$menuKey'>$menuLabel</a></nobr></li>\n";
}
}
}
/**
* Print the search box.
*
* @static
* @access public
* @return void
*/
public static function printSearchBox()
{
global $app, $lang;
$moduleName = $app->getModuleName();
$methodName = $app->getMethodName();
$searchObject = $moduleName;
if($moduleName == 'product')
{
if($methodName == 'browse') $searchObject = 'story';
}
elseif($moduleName == 'project')
{
if(strpos('task|story|bug|build', $methodName) !== false) $searchObject = $methodName;
}
elseif($moduleName == 'my' or $moduleName == 'user')
{
$searchObject = $methodName;
}
echo "<li id='searchbox'>";
echo html::select('searchType', $lang->searchObjects, $searchObject);
echo html::input('searchQuery', $lang->searchTips, "onclick=this.value='' onkeydown='if(event.keyCode==13) shortcut()' class='w-60px'");
echo "<input type='button' id='objectSwitcher' onclick='shortcut()' />";
echo "</li>";
echo "</ul>\n";
}
/**
* Print the module menu.
*
* @param string $moduleName
* @static
* @access public
* @return void
*/
public static function printModuleMenu($moduleName)
{
global $lang, $app;
if(!isset($lang->$moduleName->menu)) {echo "<ul></ul>"; return;}
/* Get the sub menus of the module, and get current module and method. */
$submenus = $lang->$moduleName->menu;
$currentModule = $app->getModuleName();
$currentMethod = $app->getMethodName();
/* The beginning of the menu. */
echo "<ul>\n";
/* Cycling to print every sub menus. */
foreach($submenus as $subMenuKey => $submenu)
{
/* Init the these vars. */
$link = $submenu;
$subModule = '';
$alias = '';
$float = '';
$active = '';
$target = '';
if(is_array($submenu)) extract($submenu); // If the sub menu is an array, extract it.
/* Print the menu. */
if(strpos($link, '|') === false)
{
echo "<li>$link</li>\n";
}
else
{
$link = explode('|', $link);
list($label, $module, $method) = $link;
$vars = isset($link[3]) ? $link[3] : '';
if(common::hasPriv($module, $method))
{
/* Is the currentModule active? */
if($currentModule == $subModule and $float != 'right') $active = 'active';
if($module == $currentModule and ($method == $currentMethod or strpos($alias, $currentMethod) !== false) and $float != 'right') $active = 'active';
echo "<li class='$float $active'>" . html::a(helper::createLink($module, $method, $vars), $label, $target, "id=submenu$subMenuKey") . "</li>\n";
}
}
}
echo "</ul>\n";
}
/**
* Print the bread menu.
*
* @param string $moduleName
* @param string $position
* @static
* @access public
* @return void
*/
public static function printBreadMenu($moduleName, $position)
{
global $lang;
$mainMenu = $moduleName;
if(isset($lang->menugroup->$moduleName)) $mainMenu = $lang->menugroup->$moduleName;
echo html::a(helper::createLink('my', 'index'), $lang->ZenTaoPMS) . $lang->arrow;
if($moduleName != 'index')
{
list($menuLabel, $module, $method) = explode('|', $lang->menu->$mainMenu);
echo html::a(helper::createLink($module, $method), $menuLabel);
}
else
{
echo $lang->index->common;
}
if(empty($position)) return;
echo $lang->arrow;
foreach($position as $key => $link)
{
echo $link;
if(isset($position[$key + 1])) echo $lang->arrow;
}
}
/**
* Diff two string. (see phpt)
*
* @param string $text1
* @param string $text2
* @static
* @access public
* @return string
*/
public static function diff($text1, $text2)
{
$text1 = str_replace('&nbsp;', '', trim($text1));
$text2 = str_replace('&nbsp;', '', trim($text2));
$w = explode("\n", $text1);
$o = explode("\n", $text2);
$w1 = array_diff_assoc($w,$o);
$o1 = array_diff_assoc($o,$w);
$w2 = array();
$o2 = array();
foreach($w1 as $idx => $val) $w2[sprintf("%03d<",$idx)] = sprintf("%03d- ", $idx+1) . "<del>" . trim($val) . "</del>";
foreach($o1 as $idx => $val) $o2[sprintf("%03d>",$idx)] = sprintf("%03d+ ", $idx+1) . "<ins>" . trim($val) . "</ins>";
$diff = array_merge($w2, $o2);
ksort($diff);
return implode("\n", $diff);
}
}
<?php
/**
* The model file of common module of ZenTaoPMS.
*
* @copyright Copyright 2009-2012 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
* @package common
* @version $Id$
* @link http://www.zentao.net
*/
class commonModel extends model
{
/**
* Start the session.
*
* @access public
* @return void
*/
public function startSession()
{
session_name($this->config->sessionVar);
if(isset($_GET[$this->config->sessionVar])) session_id($_GET[$this->config->sessionVar]);
session_start();
}
/**
* Set the header info.
*
* @access public
* @return void
*/
public function sendHeader()
{
header("Content-Type: text/html; Language={$this->config->encoding}");
header("Cache-control: private");
}
/**
* Set the commpany.
*
* First, search company by the http host. If not found, search by the default domain. Last, use the first as the default.
* After get the company, save it to session.
* @access public
* @return void
*/
public function setCompany()
{
$httpHost = $this->server->http_host;
if(strpos($httpHost, ":"))
{
$httpHost = explode(":", $httpHost);
$httpHost = $httpHost[0];
}
if($this->session->company and $this->session->company->pms == $httpHost)
{
$this->app->company = $this->session->company;
}
else
{
$company = $this->loadModel('company')->getByDomain();
if(!$company and isset($this->config->default->domain)) $company = $this->company->getByDomain($this->config->default->domain);
if(!$company) $company = $this->company->getFirst();
if(!$company) $this->app->error(sprintf($this->lang->error->companyNotFound, $httpHost), __FILE__, __LINE__, $exit = true);
$this->session->set('company', $company);
$this->app->company = $company;
}
}
/**
* Set the user info.
*
* @access public
* @return void
*/
public function setUser()
{
if($this->session->user)
{
$this->app->user = $this->session->user;
}
elseif($this->app->company->guest)
{
$user = new stdClass();
$user->id = 0;
$user->account = 'guest';
$user->realname = 'guest';
$user->rights = $this->loadModel('user')->authorize('guest');
$this->session->set('user', $user);
$this->app->user = $this->session->user;
}
}
/**
* Juage a method of one module is open or not?
*
* @param string $module
* @param string $method
* @access public
* @return bool
*/
public function isOpenMethod($module, $method)
{
if($module == 'user' and strpos('login|logout|deny', $method) !== false) return true;
if($module == 'api' and $method == 'getsessionid') return true;
if($module == 'misc' and $method == 'about') return true;
if($module == 'misc' and $method == 'checkupdate') return true;
if($module == 'help' and $method == 'field') return true;
return false;
}
/**
* Deny access.
*
* @access public
* @return void
*/
public function deny($module, $method)
{
$vars = "module=$module&method=$method";
if(isset($this->server->http_referer))
{
$referer = helper::safe64Encode($this->server->http_referer);
$vars .= "&referer=$referer";
}
$denyLink = helper::createLink('user', 'deny', $vars);
/* Fix the bug of IE: use js locate, can't get the referer. */
if(strpos($this->server->http_user_agent, 'MSIE') !== false)
{
echo "<a href='$denyLink' id='denylink' style='display:none'>deny</a>";
echo "<script language='javascript'>document.getElementById('denylink').click();</script>";
}
else
{
echo js::locate($denyLink);
}
exit;
}
/**
* Get the run info.
*
* @param mixed $startTime the start time of this execution
* @access public
* @return array the run info array.
*/
public function getRunInfo($startTime)
{
$info['timeUsed'] = round(getTime() - $startTime, 4) * 1000;
$info['memory'] = round(memory_get_peak_usage() / 1024, 1);
$info['querys'] = count(dao::$querys);
return $info;
}
/**
* Print top bar.
*
* @static
* @access public
* @return void
*/
public static function printTopBar()
{
global $lang, $app;
printf($lang->todayIs, date(DT_DATE3));
if(isset($app->user)) echo $app->user->realname . ' ';
if(isset($app->user) and $app->user->account != 'guest')
{
echo html::a(helper::createLink('my', 'index'), $lang->myControl);
echo html::a(helper::createLink('user', 'logout'), $lang->logout);
}
else
{
echo html::a(helper::createLink('user', 'login'), $lang->login);
}
echo html::a(helper::createLink('misc', 'about'), $lang->aboutZenTao, '', "class='about'");
echo $lang->agileTraining;
echo $lang->donate;
}
/**
* Print the main menu.
*
* @param string $moduleName
* @static
* @access public
* @return void
*/
public static function printMainmenu($moduleName)
{
global $app, $lang;
echo "<ul>\n";
/* Set the main main menu. */
$mainMenu = $moduleName;
if(isset($lang->menugroup->$moduleName)) $mainMenu = $lang->menugroup->$moduleName;
/* Print all main menus. */
foreach($lang->menu as $menuKey => $menu)
{
$active = $menuKey == $mainMenu ? "class='active'" : '';
list($menuLabel, $module, $method) = explode('|', $menu);
if(common::hasPriv($module, $method))
{
$link = helper::createLink($module, $method);
echo "<li $active><nobr><a href='$link' id='menu$menuKey'>$menuLabel</a></nobr></li>\n";
}
}
}
/**
* Print the search box.
*
* @static
* @access public
* @return void
*/
public static function printSearchBox()
{
global $app, $lang;
$moduleName = $app->getModuleName();
$methodName = $app->getMethodName();
$searchObject = $moduleName;
if($moduleName == 'product')
{
if($methodName == 'browse') $searchObject = 'story';
}
elseif($moduleName == 'project')
{
if(strpos('task|story|bug|build', $methodName) !== false) $searchObject = $methodName;
}
elseif($moduleName == 'my' or $moduleName == 'user')
{
$searchObject = $methodName;
}
echo "<li id='searchbox'>";
echo html::select('searchType', $lang->searchObjects, $searchObject);
echo html::input('searchQuery', $lang->searchTips, "onclick=this.value='' onkeydown='if(event.keyCode==13) shortcut()' class='w-60px'");
echo "<input type='button' id='objectSwitcher' onclick='shortcut()' />";
echo "</li>";
echo "</ul>\n";
}
/**
* Print the module menu.
*
* @param string $moduleName
* @static
* @access public
* @return void
*/
public static function printModuleMenu($moduleName)
{
global $lang, $app;
if(!isset($lang->$moduleName->menu)) {echo "<ul></ul>"; return;}
/* Get the sub menus of the module, and get current module and method. */
$submenus = $lang->$moduleName->menu;
$currentModule = $app->getModuleName();
$currentMethod = $app->getMethodName();
/* The beginning of the menu. */
echo "<ul>\n";
/* Cycling to print every sub menus. */
foreach($submenus as $subMenuKey => $submenu)
{
/* Init the these vars. */
$link = $submenu;
$subModule = '';
$alias = '';
$float = '';
$active = '';
$target = '';
if(is_array($submenu)) extract($submenu); // If the sub menu is an array, extract it.
/* Print the menu. */
if(strpos($link, '|') === false)
{
echo "<li>$link</li>\n";
}
else
{
$link = explode('|', $link);
list($label, $module, $method) = $link;
$vars = isset($link[3]) ? $link[3] : '';
if(common::hasPriv($module, $method))
{
/* Is the currentModule active? */
if($currentModule == $subModule and $float != 'right') $active = 'active';
if($module == $currentModule and ($method == $currentMethod or strpos($alias, $currentMethod) !== false) and $float != 'right') $active = 'active';
echo "<li class='$float $active'>" . html::a(helper::createLink($module, $method, $vars), $label, $target, "id=submenu$subMenuKey") . "</li>\n";
}
}
}
echo "</ul>\n";
}
/**
* Print the bread menu.
*
* @param string $moduleName
* @param string $position
* @static
* @access public
* @return void
*/
public static function printBreadMenu($moduleName, $position)
{
global $lang;
$mainMenu = $moduleName;
if(isset($lang->menugroup->$moduleName)) $mainMenu = $lang->menugroup->$moduleName;
echo html::a(helper::createLink('my', 'index'), $lang->ZenTaoPMS) . $lang->arrow;
if($moduleName != 'index')
{
list($menuLabel, $module, $method) = explode('|', $lang->menu->$mainMenu);
echo html::a(helper::createLink($module, $method), $menuLabel);
}
else
{
echo $lang->index->common;
}
if(empty($position)) return;
echo $lang->arrow;
foreach($position as $key => $link)
{
echo $link;
if(isset($position[$key + 1])) echo $lang->arrow;
}
}
/**
* Diff two string. (see phpt)
*
* @param string $text1
* @param string $text2
* @static
* @access public
* @return string
*/
public static function diff($text1, $text2)
{
$text1 = str_replace('&nbsp;', '', trim($text1));
$text2 = str_replace('&nbsp;', '', trim($text2));
$w = explode("\n", $text1);
$o = explode("\n", $text2);
$w1 = array_diff_assoc($w,$o);
$o1 = array_diff_assoc($o,$w);
$w2 = array();
$o2 = array();
foreach($w1 as $idx => $val) $w2[sprintf("%03d<",$idx)] = sprintf("%03d- ", $idx+1) . "<del>" . trim($val) . "</del>";
foreach($o1 as $idx => $val) $o2[sprintf("%03d>",$idx)] = sprintf("%03d+ ", $idx+1) . "<ins>" . trim($val) . "</ins>";
$diff = array_merge($w2, $o2);
ksort($diff);
return implode("\n", $diff);
}
}

View File

@@ -1,31 +1,31 @@
</div>
<?php if($extView = $this->getExtViewFile(__FILE__)){include $extView; return helper::cd();}?>
<div id='divider'></div>
</div>
<iframe frameborder='0' name='hiddenwin' id='hiddenwin' scrolling='no' class='<?php $config->debug ? print("debugwin") : print('hidden')?>'></iframe>
<div id='footer'>
<table class='cont' >
<tr>
<td class='w-p50 'id='crumbs'><?php commonModel::printBreadMenu($this->moduleName, isset($position) ? $position : ''); ?></td>
<td class='a-right' id='poweredby'>
<span>Powered by <a href='http://www.zentao.net' target='_blank'>ZenTaoPMS</a> (<?php echo $config->version;?>)</span>
<?php echo $lang->donate;?>
</td>
</tr>
</table>
</div>
<script laguage='Javascript'>
$().ready(function(){
setDebugWin('white');
setOuterBox();
})
<?php if(isset($pageJS)) echo $pageJS;?>
</script>
<?php
$extPath = dirname(dirname(dirname(realpath($viewFile)))) . '/common/ext/view/';
$extHookFile = $extPath . 'footer.*.hook.php';
$files = glob($extHookFile);
if($files) foreach($files as $file) include $file;
?>
</body>
</html>
</div>
<?php if($extView = $this->getExtViewFile(__FILE__)){include $extView; return helper::cd();}?>
<div id='divider'></div>
</div>
<iframe frameborder='0' name='hiddenwin' id='hiddenwin' scrolling='no' class='<?php $config->debug ? print("debugwin") : print('hidden')?>'></iframe>
<div id='footer'>
<table class='cont' >
<tr>
<td class='w-p50 'id='crumbs'><?php commonModel::printBreadMenu($this->moduleName, isset($position) ? $position : ''); ?></td>
<td class='a-right' id='poweredby'>
<span>Powered by <a href='http://www.zentao.net' target='_blank'>ZenTaoPMS</a> (<?php echo $config->version;?>)</span>
<?php echo $lang->donate;?>
</td>
</tr>
</table>
</div>
<script laguage='Javascript'>
$().ready(function(){
setDebugWin('white');
setOuterBox();
})
<?php if(isset($pageJS)) echo $pageJS;?>
</script>
<?php
$extPath = dirname(dirname(dirname(realpath($viewFile)))) . '/common/ext/view/';
$extHookFile = $extPath . 'footer.*.hook.php';
$files = glob($extHookFile);
if($files) foreach($files as $file) include $file;
?>
</body>
</html>

View File

@@ -1,30 +1,30 @@
<?php
if($extView = $this->getExtViewFile(__FILE__)){include $extView; return helper::cd();}
include 'header.lite.html.php';
include 'colorbox.html.php';
?>
<div id='header'>
<table class='cont' id='topbar'>
<tr>
<td class='w-p50'>
<?php
echo $app->company->name . $lang->colon;
if($app->company->website) echo html::a($app->company->website, $lang->company->website, '_blank');
if($app->company->backyard) echo html::a($app->company->backyard, $lang->company->backyard, '_blank');
echo html::a('#', $lang->switchHelp, '', "onclick='toggleHelpLink();'");
echo html::select('', $app->config->langs, $this->cookie->lang, 'onchange="selectLang(this.value)"');
echo html::select('', $app->lang->themes, $this->cookie->theme, 'onchange="selectTheme(this.value)"');
?>
</td>
<td class='a-right'><?php commonModel::printTopBar();?></td>
</tr>
</table>
<table class='cont' id='navbar'>
<tr><td id='mainmenu'><?php commonModel::printMainmenu($this->moduleName); commonModel::printSearchBox();?></td></tr>
</table>
</div>
<table class='cont' id='navbar'>
<tr><td id='modulemenu'><?php commonModel::printModuleMenu($this->moduleName);?></td></tr>
</table>
<div id='wrap'>
<div class='outer'>
<?php
if($extView = $this->getExtViewFile(__FILE__)){include $extView; return helper::cd();}
include 'header.lite.html.php';
include 'colorbox.html.php';
?>
<div id='header'>
<table class='cont' id='topbar'>
<tr>
<td class='w-p50'>
<?php
echo $app->company->name . $lang->colon;
if($app->company->website) echo html::a($app->company->website, $lang->company->website, '_blank');
if($app->company->backyard) echo html::a($app->company->backyard, $lang->company->backyard, '_blank');
echo html::a('#', $lang->switchHelp, '', "onclick='toggleHelpLink();'");
echo html::select('', $app->config->langs, $this->cookie->lang, 'onchange="selectLang(this.value)"');
echo html::select('', $app->lang->themes, $this->cookie->theme, 'onchange="selectTheme(this.value)"');
?>
</td>
<td class='a-right'><?php commonModel::printTopBar();?></td>
</tr>
</table>
<table class='cont' id='navbar'>
<tr><td id='mainmenu'><?php commonModel::printMainmenu($this->moduleName); commonModel::printSearchBox();?></td></tr>
</table>
</div>
<table class='cont' id='navbar'>
<tr><td id='modulemenu'><?php commonModel::printModuleMenu($this->moduleName);?></td></tr>
</table>
<div id='wrap'>
<div class='outer'>

View File

@@ -1,98 +1,98 @@
<?php
/**
* The control file of svn currentModule of ZenTaoPMS.
*
* @copyright Copyright 2009-2012 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
* @package svn
* @version $Id$
* @link http://www.zentao.net
*/
class svn extends control
{
/**
* Sync svn.
*
* @access public
* @return void
*/
public function run()
{
$this->svn->run();
}
/**
* Diff a file.
*
* @param string $url
* @param int $revision
* @access public
* @return void
*/
public function diff($url, $revision)
{
$url = helper::safe64Decode($url);
$this->view->url = $url;
$this->view->revision = $revision;
$this->view->diff = $this->svn->diff($url, $revision);
$this->display();
}
/**
* Cat a file.
*
* @param string $url
* @param int $revision
* @access public
* @return void
*/
public function cat($url, $revision)
{
$url = helper::safe64Decode($url);
$this->view->url = $url;
$this->view->revision = $revision;
$this->view->code = $this->svn->cat($url, $revision);
$this->display();
}
/**
* Sync from the syncer by api.
*
* @access public
* @return void
*/
public function apiSync()
{
if($this->post->logs)
{
$repoRoot = $this->post->repoRoot;
$logs = stripslashes($this->post->logs);
$logs = simplexml_load_string($logs);
foreach($logs->logentry as $entry)
{
$parsedLogs[] = $this->svn->convertLog($entry);
}
$parsedObjects = array('stories' => array(), 'tasks' => array(), 'bugs' => array());
foreach($parsedLogs as $log)
{
$objects = $this->svn->parseComment($log->msg);
if($objects)
{
$this->svn->saveAction2PMS($objects, $log, $repoRoot);
if($objects['stories']) $parsedObjects['stories'] = array_merge($parsedObjects['stories'], $objects['stories']);
if($objects['tasks']) $parsedObjects['tasks' ] = array_merge($parsedObjects['tasks'], $objects['tasks']);
if($objects['bugs']) $parsedObjects['bugs'] = array_merge($parsedObjects['bugs'], $objects['bugs']);
}
}
$parsedObjects['stories'] = array_unique($parsedObjects['stories']);
$parsedObjects['tasks'] = array_unique($parsedObjects['tasks']);
$parsedObjects['bugs'] = array_unique($parsedObjects['bugs']);
$this->view->parsedObjects = $parsedObjects;
$this->display();
exit;
}
}
}
<?php
/**
* The control file of svn currentModule of ZenTaoPMS.
*
* @copyright Copyright 2009-2012 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
* @package svn
* @version $Id$
* @link http://www.zentao.net
*/
class svn extends control
{
/**
* Sync svn.
*
* @access public
* @return void
*/
public function run()
{
$this->svn->run();
}
/**
* Diff a file.
*
* @param string $url
* @param int $revision
* @access public
* @return void
*/
public function diff($url, $revision)
{
$url = helper::safe64Decode($url);
$this->view->url = $url;
$this->view->revision = $revision;
$this->view->diff = $this->svn->diff($url, $revision);
$this->display();
}
/**
* Cat a file.
*
* @param string $url
* @param int $revision
* @access public
* @return void
*/
public function cat($url, $revision)
{
$url = helper::safe64Decode($url);
$this->view->url = $url;
$this->view->revision = $revision;
$this->view->code = $this->svn->cat($url, $revision);
$this->display();
}
/**
* Sync from the syncer by api.
*
* @access public
* @return void
*/
public function apiSync()
{
if($this->post->logs)
{
$repoRoot = $this->post->repoRoot;
$logs = stripslashes($this->post->logs);
$logs = simplexml_load_string($logs);
foreach($logs->logentry as $entry)
{
$parsedLogs[] = $this->svn->convertLog($entry);
}
$parsedObjects = array('stories' => array(), 'tasks' => array(), 'bugs' => array());
foreach($parsedLogs as $log)
{
$objects = $this->svn->parseComment($log->msg);
if($objects)
{
$this->svn->saveAction2PMS($objects, $log, $repoRoot);
if($objects['stories']) $parsedObjects['stories'] = array_merge($parsedObjects['stories'], $objects['stories']);
if($objects['tasks']) $parsedObjects['tasks' ] = array_merge($parsedObjects['tasks'], $objects['tasks']);
if($objects['bugs']) $parsedObjects['bugs'] = array_merge($parsedObjects['bugs'], $objects['bugs']);
}
}
$parsedObjects['stories'] = array_unique($parsedObjects['stories']);
$parsedObjects['tasks'] = array_unique($parsedObjects['tasks']);
$parsedObjects['bugs'] = array_unique($parsedObjects['bugs']);
$this->view->parsedObjects = $parsedObjects;
$this->display();
exit;
}
}
}

View File

@@ -1,16 +1,16 @@
<?php
/**
* The svn module zh-cn file of ZenTaoPMS.
*
* @copyright Copyright 2009-2012 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
* @package svn
* @version $Id$
* @link http://www.zentao.net
*/
/* Methods. */
$lang->svn->common = 'Subversion';
$lang->svn->cat = 'View code';
$lang->svn->diff = 'Diff code';
$lang->svn->apiSync = 'API: sync svn log';
<?php
/**
* The svn module zh-cn file of ZenTaoPMS.
*
* @copyright Copyright 2009-2012 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
* @package svn
* @version $Id$
* @link http://www.zentao.net
*/
/* Methods. */
$lang->svn->common = 'Subversion';
$lang->svn->cat = 'View code';
$lang->svn->diff = 'Diff code';
$lang->svn->apiSync = 'API: sync svn log';

View File

@@ -1,16 +1,16 @@
<?php
/**
* The svn module zh-cn file of ZenTaoPMS.
*
* @copyright Copyright 2009-2012 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
* @package svn
* @version $Id$
* @link http://www.zentao.net
*/
/* 方法列表。*/
$lang->svn->common = 'Subversion';
$lang->svn->cat = '查看源代码';
$lang->svn->diff = '比较源代码';
$lang->svn->apiSync = '接口同步svn日志';
<?php
/**
* The svn module zh-cn file of ZenTaoPMS.
*
* @copyright Copyright 2009-2012 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
* @package svn
* @version $Id$
* @link http://www.zentao.net
*/
/* 方法列表。*/
$lang->svn->common = 'Subversion';
$lang->svn->cat = '查看源代码';
$lang->svn->diff = '比较源代码';
$lang->svn->apiSync = '接口同步svn日志';

View File

@@ -1,16 +1,16 @@
<?php
/**
* The svn module zh-tw file of ZenTaoPMS.
*
* @copyright Copyright 2009-2012 青島易軟天創網絡科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
* @package svn
* @version $Id$
* @link http://www.zentao.net
*/
/* 方法列表。*/
$lang->svn->common = 'Subversion';
$lang->svn->cat = '查看原始碼';
$lang->svn->diff = '比較原始碼';
$lang->svn->apiSync = '介面同步svn日誌';
<?php
/**
* The svn module zh-tw file of ZenTaoPMS.
*
* @copyright Copyright 2009-2012 青島易軟天創網絡科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
* @package svn
* @version $Id$
* @link http://www.zentao.net
*/
/* 方法列表。*/
$lang->svn->common = 'Subversion';
$lang->svn->cat = '查看原始碼';
$lang->svn->diff = '比較原始碼';
$lang->svn->apiSync = '介面同步svn日誌';

File diff suppressed because it is too large Load Diff

View File

@@ -1,299 +1,299 @@
<?php
/**
* The syncer of svn.
*
* @copyright Copyright 2009-2012 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
* @package svn
* @version $Id$
* @link http://www.zentao.net
*/
error_reporting(E_ALL ^ E_STRICT ^ E_WARNING);
include './config.php';
include './api.class.php';
$syncer = new syncer($config);
$syncer->run();
class syncer
{
/**
* The svn binary svnClient.
*
* @var string
* @access public
*/
public $svnClient;
/**
* The zentao client.
*
* @var string
* @access public
*/
public $zentaoClient;
/**
* Repos.
*
* @var array
* @access public
*/
public $repos = array();
/**
* The log root.
*
* @var string
* @access public
*/
public $logRoot = '';
/**
* The construct function.
*
* @access public
* @return void
*/
public function __construct($config)
{
$this->setConfig($config);
$this->setTimeZone();
$this->setRepos();
$this->setLogRoot();
$this->loginZentao();
}
/**
* Set config.
*
* @param object $config
* @access public
* @return void
*/
public function setConfig($config)
{
$this->config = $config;
}
/**
* Set timezone.
*
* @access public
* @return void
*/
public function setTimeZone()
{
date_default_timezone_set($this->config->timezone);
}
/**
* Set the repos.
*
* @access public
* @return void
*/
public function setRepos()
{
if(!$this->config->svn->repos) die("You must set one svn repo.\n");
$this->repos = $this->config->svn->repos;
}
/**
* Set the log root.
*
* @access public
* @return void
*/
public function setLogRoot()
{
$this->logRoot = './log/';
if(!is_dir($this->logRoot)) mkdir($this->logRoot);
}
/**
* Login to zentao.
*
* @access public
* @return void
*/
public function loginZentao()
{
if(!$this->config->zentao->path or !$this->config->zentao->user) die("You must set the zentao path and user.\n");
$zentaoConfig = $this->config->zentao;
$this->zentaoClient = new ztclient($zentaoConfig->path, $zentaoConfig->user, $zentaoConfig->password);
}
/**
* Run.
*
* @access public
* @return void
*/
public function run()
{
while(true)
{
foreach($this->repos as $name => $repo)
{
$this->printLog("begin repo $name");
$repo = (object)$repo;
$repo->name = $name;
$this->setRepo($repo);
$savedRevision = $this->getSavedRevision();
$this->printLog("start from revision $savedRevision");
$logs = $this->getRepoLogs($repo, $savedRevision);
$revisions = $this->getRevisionsFromLogs($logs);
if(!$revisions)
{
$this->printLog("no logs");
continue;
}
$this->printLog('fetched ' . count($revisions) . ' logs');
$this->printLog('begin posting logs');
$objects = $this->zentaoClient->post('svn', 'apiSync', array('logs' => $logs, 'repoRoot' => $this->repoRoot));
$objects = $objects->parsedObjects;
$this->printLog('parsed objects:');
echo 'story: ' . join(',', (array)$objects->stories) . "\n";
echo 'task: ' . join(',', (array)$objects->tasks) . "\n";
echo 'bugs: ' . join(',', (array)$objects->bugs) . "\n";
$this->saveLastRevision(max($revisions));
echo "----------------------\n";
}
$this->printLog("sleeping {$this->config->sleep} seconds");
sleep($this->config->sleep);
}
}
/**
* Set repo.
*
* @param object $repo
* @access public
* @return void
*/
public function setRepo($repo)
{
$this->setClient($repo);
$this->setLogFile($repo->name);
$this->setRepoRoot($repo);
}
/**
* Set the svn binary svnClient of a repo.
*
* @param object $repo
* @access public
* @return void
*/
public function setClient($repo)
{
if($this->config->svn->client == '') die("You must set the svn svnClient file.\n");
$this->svnClient = $this->config->svn->client . " --non-interactive";
if(isset($repo->username)) $this->svnClient .= " --username $repo->username --password $repo->password --no-auth-cache";
}
/**
* Set the log file of a repo.
*
* @param string $repoName
* @access public
* @return void
*/
public function setLogFile($repoName)
{
$this->logFile = $this->logRoot . $repoName;
}
/**
* set the root path of a repo.
*
* @param object $repo
* @access public
* @return void
*/
public function setRepoRoot($repo)
{
$cmd = $this->svnClient . " info --xml $repo->path";
$info = `$cmd`;
$info = simplexml_load_string($info);
$repoRoot = (string)$info->entry->repository->root;
$this->repoRoot = $repoRoot;
}
/**
* Get repo logs.
*
* @param object $repo
* @param int $fromRevision
* @access public
* @return string
*/
public function getRepoLogs($repo, $fromRevision)
{
$parsedLogs = array();
/* The svn log command. */
$cmd = $this->svnClient . " log -r $fromRevision:HEAD -v --xml $repo->path";
$logs = `$cmd`;
return $logs;
}
/**
* Get the saved revision.
*
* @access public
* @return int
*/
public function getSavedRevision()
{
if(!file_exists($this->logFile)) return 0;
return (int)trim(file_get_contents($this->logFile));
}
/**
* Get revisons from logs.
*
* @param string $logs
* @access public
* @return array|bool
*/
public function getRevisionsFromLogs($logs)
{
if(!preg_match_all('|revision="(.*)"|', $logs, $results)) return false;
$revisions = $results[1];
return $revisions;
}
/**
* Save the last revision.
*
* @param int $revision
* @access public
* @return void
*/
public function saveLastRevision($revision)
{
file_put_contents($this->logFile, $revision);
}
/**
* Pring log.
*
* @param sting $log
* @access public
* @return void
*/
public function printLog($log)
{
echo date('Y-m-d H:i:s') . " $log\n";
}
}
<?php
/**
* The syncer of svn.
*
* @copyright Copyright 2009-2012 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
* @package svn
* @version $Id$
* @link http://www.zentao.net
*/
error_reporting(E_ALL ^ E_STRICT ^ E_WARNING);
include './config.php';
include './api.class.php';
$syncer = new syncer($config);
$syncer->run();
class syncer
{
/**
* The svn binary svnClient.
*
* @var string
* @access public
*/
public $svnClient;
/**
* The zentao client.
*
* @var string
* @access public
*/
public $zentaoClient;
/**
* Repos.
*
* @var array
* @access public
*/
public $repos = array();
/**
* The log root.
*
* @var string
* @access public
*/
public $logRoot = '';
/**
* The construct function.
*
* @access public
* @return void
*/
public function __construct($config)
{
$this->setConfig($config);
$this->setTimeZone();
$this->setRepos();
$this->setLogRoot();
$this->loginZentao();
}
/**
* Set config.
*
* @param object $config
* @access public
* @return void
*/
public function setConfig($config)
{
$this->config = $config;
}
/**
* Set timezone.
*
* @access public
* @return void
*/
public function setTimeZone()
{
date_default_timezone_set($this->config->timezone);
}
/**
* Set the repos.
*
* @access public
* @return void
*/
public function setRepos()
{
if(!$this->config->svn->repos) die("You must set one svn repo.\n");
$this->repos = $this->config->svn->repos;
}
/**
* Set the log root.
*
* @access public
* @return void
*/
public function setLogRoot()
{
$this->logRoot = './log/';
if(!is_dir($this->logRoot)) mkdir($this->logRoot);
}
/**
* Login to zentao.
*
* @access public
* @return void
*/
public function loginZentao()
{
if(!$this->config->zentao->path or !$this->config->zentao->user) die("You must set the zentao path and user.\n");
$zentaoConfig = $this->config->zentao;
$this->zentaoClient = new ztclient($zentaoConfig->path, $zentaoConfig->user, $zentaoConfig->password);
}
/**
* Run.
*
* @access public
* @return void
*/
public function run()
{
while(true)
{
foreach($this->repos as $name => $repo)
{
$this->printLog("begin repo $name");
$repo = (object)$repo;
$repo->name = $name;
$this->setRepo($repo);
$savedRevision = $this->getSavedRevision();
$this->printLog("start from revision $savedRevision");
$logs = $this->getRepoLogs($repo, $savedRevision);
$revisions = $this->getRevisionsFromLogs($logs);
if(!$revisions)
{
$this->printLog("no logs");
continue;
}
$this->printLog('fetched ' . count($revisions) . ' logs');
$this->printLog('begin posting logs');
$objects = $this->zentaoClient->post('svn', 'apiSync', array('logs' => $logs, 'repoRoot' => $this->repoRoot));
$objects = $objects->parsedObjects;
$this->printLog('parsed objects:');
echo 'story: ' . join(',', (array)$objects->stories) . "\n";
echo 'task: ' . join(',', (array)$objects->tasks) . "\n";
echo 'bugs: ' . join(',', (array)$objects->bugs) . "\n";
$this->saveLastRevision(max($revisions));
echo "----------------------\n";
}
$this->printLog("sleeping {$this->config->sleep} seconds");
sleep($this->config->sleep);
}
}
/**
* Set repo.
*
* @param object $repo
* @access public
* @return void
*/
public function setRepo($repo)
{
$this->setClient($repo);
$this->setLogFile($repo->name);
$this->setRepoRoot($repo);
}
/**
* Set the svn binary svnClient of a repo.
*
* @param object $repo
* @access public
* @return void
*/
public function setClient($repo)
{
if($this->config->svn->client == '') die("You must set the svn svnClient file.\n");
$this->svnClient = $this->config->svn->client . " --non-interactive";
if(isset($repo->username)) $this->svnClient .= " --username $repo->username --password $repo->password --no-auth-cache";
}
/**
* Set the log file of a repo.
*
* @param string $repoName
* @access public
* @return void
*/
public function setLogFile($repoName)
{
$this->logFile = $this->logRoot . $repoName;
}
/**
* set the root path of a repo.
*
* @param object $repo
* @access public
* @return void
*/
public function setRepoRoot($repo)
{
$cmd = $this->svnClient . " info --xml $repo->path";
$info = `$cmd`;
$info = simplexml_load_string($info);
$repoRoot = (string)$info->entry->repository->root;
$this->repoRoot = $repoRoot;
}
/**
* Get repo logs.
*
* @param object $repo
* @param int $fromRevision
* @access public
* @return string
*/
public function getRepoLogs($repo, $fromRevision)
{
$parsedLogs = array();
/* The svn log command. */
$cmd = $this->svnClient . " log -r $fromRevision:HEAD -v --xml $repo->path";
$logs = `$cmd`;
return $logs;
}
/**
* Get the saved revision.
*
* @access public
* @return int
*/
public function getSavedRevision()
{
if(!file_exists($this->logFile)) return 0;
return (int)trim(file_get_contents($this->logFile));
}
/**
* Get revisons from logs.
*
* @param string $logs
* @access public
* @return array|bool
*/
public function getRevisionsFromLogs($logs)
{
if(!preg_match_all('|revision="(.*)"|', $logs, $results)) return false;
$revisions = $results[1];
return $revisions;
}
/**
* Save the last revision.
*
* @param int $revision
* @access public
* @return void
*/
public function saveLastRevision($revision)
{
file_put_contents($this->logFile, $revision);
}
/**
* Pring log.
*
* @param sting $log
* @access public
* @return void
*/
public function printLog($log)
{
echo date('Y-m-d H:i:s') . " $log\n";
}
}

View File

@@ -1,16 +1,16 @@
<?php
/**
* The export view file of file module of ZenTaoPMS.
*
* @copyright Copyright 2009-2012 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
* @author Congzhi Chen <congzhi@cnezsoft.com>
* @package file
* @version $Id$
* @link http://www.zentao.net
*/
?>
<?php include '../../common/view/header.lite.html.php';?>
<div class='box-title'><?php echo "$url@$revision";?></div>
<div class='box-content'><xmp><?php echo $code;?></xmp></div>
<?php include '../../common/view/footer.lite.html.php';?>
<?php
/**
* The export view file of file module of ZenTaoPMS.
*
* @copyright Copyright 2009-2012 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
* @author Congzhi Chen <congzhi@cnezsoft.com>
* @package file
* @version $Id$
* @link http://www.zentao.net
*/
?>
<?php include '../../common/view/header.lite.html.php';?>
<div class='box-title'><?php echo "$url@$revision";?></div>
<div class='box-content'><xmp><?php echo $code;?></xmp></div>
<?php include '../../common/view/footer.lite.html.php';?>

View File

@@ -1,17 +1,17 @@
<?php
/**
* The export view file of file module of ZenTaoPMS.
*
* @copyright Copyright 2009-2012 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
* @author Congzhi Chen <congzhi@cnezsoft.com>
* @package file
* @version $Id$
* @link http://www.zentao.net
*/
?>
<?php include '../../common/view/header.lite.html.php';?>
<?php $catLink = inlink('cat', 'url=' . helper::safe64Encode($url) . "&revision=$revision");?>
<div class='box-title'><?php echo html::a($catLink, "$url@$revision");?></div>
<div class='box-content'><xmp><?php echo $diff;?></xmp></div>
<?php include '../../common/view/footer.lite.html.php';?>
<?php
/**
* The export view file of file module of ZenTaoPMS.
*
* @copyright Copyright 2009-2012 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
* @author Congzhi Chen <congzhi@cnezsoft.com>
* @package file
* @version $Id$
* @link http://www.zentao.net
*/
?>
<?php include '../../common/view/header.lite.html.php';?>
<?php $catLink = inlink('cat', 'url=' . helper::safe64Encode($url) . "&revision=$revision");?>
<div class='box-title'><?php echo html::a($catLink, "$url@$revision");?></div>
<div class='box-content'><xmp><?php echo $diff;?></xmp></div>
<?php include '../../common/view/footer.lite.html.php';?>