Merge branch '15.0.beta3' of https://gitlab.zcorp.cc/easycorp/zentaopms into 15.0.beta3

This commit is contained in:
tianshujie98
2021-03-30 16:59:03 +08:00
53 changed files with 471 additions and 422 deletions
+13 -224
View File
@@ -1,226 +1,15 @@
VERSION = $(shell head -n 1 VERSION)
XUANPATH = $(shell head -n 1 XUANPATH)
XUANVERSION = $(shell head -n 1 XUANVERSION)
XVERSION = $(shell head -n 1 XVERSION)
all: pms
all: flow
clean:
rm -fr zentaopms
rm -fr zentaostory
rm -fr zentaotask
rm -fr zentaotest
rm -fr *.tar.gz
rm -fr max
rm -fr *.zip
rm -fr api*
rm -fr build/linux/lampp
rm -fr lampp
common:
mkdir zentaopms
cp -fr bin zentaopms/
cp -fr config zentaopms/ && rm -fr zentaopms/config/my.php
cp -fr db zentaopms/
cp -fr doc zentaopms/ && rm -fr zentaopms/doc/phpdoc && rm -fr zentaopms/doc/doxygen
cp -fr framework zentaopms/
cp -fr lib zentaopms/
cp -fr module zentaopms/
cp -fr sdk zentaopms/
cp -fr www zentaopms && rm -fr zentaopms/www/data/ && mkdir -p zentaopms/www/data/upload
mkdir zentaopms/tmp
mkdir zentaopms/tmp/cache/
mkdir zentaopms/tmp/extension/
mkdir zentaopms/tmp/log/
mkdir zentaopms/tmp/model/
mv zentaopms/www/install.php.tmp zentaopms/www/install.php
mv zentaopms/www/upgrade.php.tmp zentaopms/www/upgrade.php
cp VERSION zentaopms/
# create index.html of each folder.
for path in `find zentaopms/ -type d`; do touch "$$path/index.html"; done
rm zentaopms/www/index.html
# combine js and css files.
cp -fr tools zentaopms/tools && cd zentaopms/tools/ && php ./minifyfront.php
rm -fr zentaopms/tools
# create the restart file for svn.
# touch zentaopms/module/svn/restart
# delee the unused files.
find zentaopms -name .gitkeep |xargs rm -fr
find zentaopms -name tests |xargs rm -fr
# notify.zip.
mkdir zentaopms/www/data/notify/
zentaoxx:
#xuanxuan
mkdir -p zentaoxx/config/ext
mkdir -p zentaoxx/lib
mkdir -p zentaoxx/module
mkdir -p zentaoxx/framework
mkdir -p zentaoxx/db
mkdir -p zentaoxx/www
mkdir -p zentaoxx/module/common/ext/model/
cd $(XUANPATH); git archive --format=zip --prefix=xuan/ $(XUANVERSION) > xuan.zip
mv $(XUANPATH)/xuan.zip .
unzip xuan.zip
cp xuan/xxb/config/ext/xuanxuan.php zentaoxx/config/ext/
cp -r xuan/xxb/lib/phpaes zentaoxx/lib/
cp -r xuan/xxb/framework/xuanxuan.class.php zentaoxx/framework/
cp -r xuan/xxb/db/*.sql zentaoxx/db/
cp -r xuan/xxb/module/im zentaoxx/module/
cp -r xuan/xxb/module/client zentaoxx/module/
cp -r xuan/xxb/module/license zentaoxx/module/
cp -r xuan/xxb/module/owt zentaoxx/module/
mkdir -p zentaoxx/module/common/view
cp -r xuan/xxb/module/common/view/header.modal.html.php zentaoxx/module/common/view
cp -r xuan/xxb/module/common/view/marked.html.php zentaoxx/module/common/view
cp -r xuan/xxb/module/common/view/footer.modal.html.php zentaoxx/module/common/view
cp -r xuan/xxb/module/common/view/version.html.php zentaoxx/module/common/view
cp -r xuan/xxb/module/license zentaoxx/module/
mkdir -p zentaoxx/www/js/
cp -r xuan/xxb/www/js/markedjs zentaoxx/www/js/
cp -r xuan/xxb/www/js/version.js zentaoxx/www/js/
cp -r xuan/xxb/www/x.php zentaoxx/www/
mkdir zentaoxx/module/action
cp -r xuan/xxb/module/action/ext zentaoxx/module/action
cp -r xuan/xxb/config/ext/xxb.php zentaoxx/config/ext/
cp -r xuan/xxb/config/ext/maps.php zentaoxx/config/ext/
cp -r xuanxuan/config/* zentaoxx/config/
cp -r xuanxuan/module/* zentaoxx/module/
cp -r xuanxuan/www/* zentaoxx/www/
mv zentaoxx/db/ zentaoxx/db_bak
mkdir zentaoxx/db/
cp zentaoxx/db_bak/upgradexuanxuan*.sql zentaoxx/db_bak/xuanxuan.sql zentaoxx/db/
rm -rf zentaoxx/db_bak/
sed -i 's/XXBVERSION/$(XVERSION)/g' zentaoxx/config/ext/xuanxuan.php
sed -i "/\$$config->xuanxuan->backend /c\\\$$config->xuanxuan->backend = 'zentao';" zentaoxx/config/ext/xuanxuan.php
sed -i 's/site,//' zentaoxx/module/im/model/user.php
sed -i 's/admin, g/g/' zentaoxx/module/im/model/user.php
sed -i '/password = md5/d' zentaoxx/module/im/model/user.php
sed -i 's/md5(\$$user->password.*$$/\$$user->password;/g' zentaoxx/module/im/model/user.php
sed -i '/getSignedTime/d' zentaoxx/module/im/control.php
sed -i "/loadModel('push')/d" zentaoxx/module/im/control.php
sed -i "/this->push/d" zentaoxx/module/im/control.php
sed -i "s/'yahoo', //g" zentaoxx/module/im/config.php
sed -i "s/'gtalk', //g" zentaoxx/module/im/config.php
sed -i "s/'wangwang', //g" zentaoxx/module/im/config.php
sed -i "s/'site', //g" zentaoxx/module/im/config.php
sed -i "s/'reload'/inlink('browse')/g" zentaoxx/module/client/control.php
sed -i 's/tree/dept/' zentaoxx/module/im/model.php
sed -i 's/tree/dept/' zentaoxx/module/im/control.php
sed -i 's/im_/zt_im_/g' zentaoxx/db/*.sql
sed -i 's/xxb_user/zt_user/g' zentaoxx/db/*.sql
sed -i 's/xxb_file/zt_file/g' zentaoxx/db/*.sql
sed -i '/xxb_entry/d' zentaoxx/db/*.sql
sed -i '/deviceToken/d' zentaoxx/db/*.sql
sed -i '/deviceType/d' zentaoxx/db/*.sql
sed -i "/fetch('push', 'pushMessage');/d" zentaoxx/module/im/control.php
sed -i "s/marked\.html\.php';?>/marked\.html\.php';?>\n<div id='mainMenu' class='clearfix'><div class='btn-toolbar pull-left'><?php common::printAdminSubMenu('xuanxuan');?><\/div><\/div>/g" zentaoxx/module/client/view/checkupgrade.html.php
sed -i '/var serverVersions/d' zentaoxx/module/client/js/checkupgrade.js
sed -i '/var currentVersion/d' zentaoxx/module/client/js/checkupgrade.js
sed -i '/setRequiredFields(/d' zentaoxx/module/common/view/header.modal.html.php
sed -i 's/header.html.php/header.lite.html.php/g' zentaoxx/module/common/view/header.modal.html.php
sed -i 's/footer.html.php/footer.lite.html.php/g' zentaoxx/module/common/view/footer.modal.html.php
sed -i 's/v\.//g' zentaoxx/module/im/js/debug.js
sed -i 's/helper::jsonEncode(/json_encode(/g' zentaoxx/framework/xuanxuan.class.php
sed -i "s/lang->goback,/lang->goback, '',/g" zentaoxx/module/im/view/debug.html.php
sed -i 's/v\.//g' zentaoxx/module/client/js/checkupgrade.js
sed -i 's/xxb_/zt_/g' zentaoxx/db/*.sql
mkdir zentaoxx/tools; cp tools/cn2tw.php zentaoxx/tools; cd zentaoxx/tools; php cn2tw.php
cp tools/en2de.php zentaoxx/tools; cd zentaoxx/tools; php en2de.php ../
rm -rf zentaoxx/tools
zip -rqm -9 zentaoxx.$(VERSION).zip zentaoxx/*
rm -rf xuan.zip xuan zentaoxx
package:
# change mode.
chmod -R 777 zentaopms/tmp/
chmod -R 777 zentaopms/www/data
chmod -R 777 zentaopms/config
chmod 777 zentaopms/module
chmod 777 zentaopms/www
chmod a+rx zentaopms/bin/*
if [ ! -d "zentaopms/config/ext" ]; then mkdir zentaopms/config/ext; fi
for module in `ls zentaopms/module/`; do if [ ! -d "zentaopms/module/$$module/ext" ]; then mkdir zentaopms/module/$$module/ext; fi done
find zentaopms/ -name ext |xargs chmod -R 777
mkdir zentaopms/tools; cp tools/cn2tw.php zentaopms/tools; cd zentaopms/tools; php cn2tw.php
#rm -r zentaopms/module/misc/ext
rm -rf zentaopms/tools
pms:
make common
make zentaoxx
unzip zentaoxx.*.zip
cp zentaoxx/* zentaopms/ -r
cat zentaoxx/db/xuanxuan.sql >> zentaopms/db/zentao.sql
make package
zip -rq -9 ZenTaoPMS.$(VERSION).zip zentaopms
rm -fr zentaopms zentaoxx zentaoxx.*.zip
deb:
mkdir buildroot
cp -r build/debian/DEBIAN buildroot
sed -i '/^Version/cVersion: ${VERSION}' buildroot/DEBIAN/control
mkdir buildroot/opt
mkdir buildroot/etc/apache2/sites-enabled/ -p
cp build/debian/zentaopms.conf buildroot/etc/apache2/sites-enabled/
cp ZenTaoPMS.${VERSION}.zip buildroot/opt
cd buildroot/opt; unzip ZenTaoPMS.${VERSION}.zip; mv zentaopms zentao; rm ZenTaoPMS.${VERSION}.zip
sed -i 's/index.php/\/zentao\/index.php/' buildroot/opt/zentao/www/.htaccess
sudo dpkg -b buildroot/ ZenTaoPMS_${VERSION}_1_all.deb
rm -rf buildroot
rpm:
mkdir ~/rpmbuild/SPECS -p
cp build/rpm/zentaopms.spec ~/rpmbuild/SPECS
sed -i '/^Version/cVersion:${VERSION}' ~/rpmbuild/SPECS/zentaopms.spec
mkdir ~/rpmbuild/SOURCES
cp ZenTaoPMS.${VERSION}.zip ~/rpmbuild/SOURCES
mkdir ~/rpmbuild/SOURCES/etc/httpd/conf.d/ -p
cp build/debian/zentaopms.conf ~/rpmbuild/SOURCES/etc/httpd/conf.d/
mkdir ~/rpmbuild/SOURCES/opt/ -p
cd ~/rpmbuild/SOURCES; unzip ZenTaoPMS.${VERSION}.zip; mv zentaopms opt/zentao;
sed -i 's/index.php/\/zentao\/index.php/' ~/rpmbuild/SOURCES/opt/zentao/www/.htaccess
cd ~/rpmbuild/SOURCES; tar -czvf zentaopms-${VERSION}.tar.gz etc opt; rm -rf ZenTaoPMS.${VERSION}.zip etc opt;
rpmbuild -ba ~/rpmbuild/SPECS/zentaopms.spec
cp ~/rpmbuild/RPMS/noarch/zentaopms-${VERSION}-1.noarch.rpm ./
rm -rf ~/rpmbuild
en:
make common
cd zentaopms/; grep -rl 'zentao.net'|xargs sed -i 's/zentao.net/zentao.pm/g';
cd zentaopms/; grep -rl 'http://www.zentao.pm'|xargs sed -i 's/http:\/\/www.zentao.pm/https:\/\/www.zentao.pm/g';
cd zentaopms/config/; echo >> config.php; echo '$$config->isINT = true;' >> config.php
make package
mv zentaopms zentaoalm
zip -r -9 ZenTaoALM.$(VERSION).int.zip zentaoalm
rm -fr zentaoalm
echo $(VERSION).int > VERSION
make endeb
make enrpm
echo $(VERSION) > VERSION
endeb:
mkdir buildroot
cp -r build/debian/DEBIAN buildroot
sed -i '/^Version/cVersion: ${VERSION}' buildroot/DEBIAN/control
mkdir buildroot/opt
mkdir buildroot/etc/apache2/sites-enabled/ -p
cp build/debian/zentaopms.conf buildroot/etc/apache2/sites-enabled/
cp ZenTaoALM.${VERSION}.zip buildroot/opt
cd buildroot/opt; unzip ZenTaoALM.${VERSION}.zip; mv zentaoalm zentao; rm ZenTaoALM.${VERSION}.zip
sed -i 's/index.php/\/zentao\/index.php/' buildroot/opt/zentao/www/.htaccess
sudo dpkg -b buildroot/ ZenTaoALM_${VERSION}_1_all.deb
rm -rf buildroot
enrpm:
mkdir ~/rpmbuild/SPECS -p
cp build/rpm/zentaopms.spec ~/rpmbuild/SPECS
sed -i '/^Version/cVersion:${VERSION}' ~/rpmbuild/SPECS/zentaopms.spec
sed -i '/^Name:/cName:zentaoalm' ~/rpmbuild/SPECS/zentaopms.spec
mkdir ~/rpmbuild/SOURCES
cp ZenTaoALM.${VERSION}.zip ~/rpmbuild/SOURCES
mkdir ~/rpmbuild/SOURCES/etc/httpd/conf.d/ -p
cp build/debian/zentaopms.conf ~/rpmbuild/SOURCES/etc/httpd/conf.d/zentaoalm.conf
mkdir ~/rpmbuild/SOURCES/opt/ -p
cd ~/rpmbuild/SOURCES; unzip ZenTaoALM.${VERSION}.zip; mv zentaoalm opt/zentao;
sed -i 's/index.php/\/zentao\/index.php/' ~/rpmbuild/SOURCES/opt/zentao/www/.htaccess
cd ~/rpmbuild/SOURCES; tar -czvf zentaoalm-${VERSION}.tar.gz etc opt; rm -rf ZenTaoALM.${VERSION}.zip etc opt;
rpmbuild -ba ~/rpmbuild/SPECS/zentaopms.spec
cp ~/rpmbuild/RPMS/noarch/zentaoalm-${VERSION}-1.noarch.rpm ./
rm -rf ~/rpmbuild
patchphpdoc:
sudo cp misc/doc/phpdoc/*.tpl /usr/share/php/data/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phphtmllib/templates/
phpdoc:
phpdoc -d bin,framework,config,lib,module,www -t api -o HTML:frames:phphtmllib -ti ZenTaoPMSAPI参考手册 -s on -pp on -i *test*
phpdoc -d bin,framework,config,lib,module,www -t api.chm -o chm:default:default -ti ZenTaoPMSAPI参考手册 -s on -pp on -i *test*
doxygen:
doxygen doc/doxygen/doxygen.conf
flow:
ifneq ($(wildcard ranzhi),)
rm ranzhi -r
endif
mkdir -p max/www
# move max extension to max.
cp -fr config max
cp -fr db max
cp -fr module max
cp -fr www/* max/www
cp www/favicon.ico max/www
+3
View File
@@ -32,6 +32,9 @@ $lang->action->editComment = '修改备注';
$lang->action->create = '添加备注';
$lang->action->comment = '备注';
$lang->action->undeleteAction = '还原数据';
$lang->action->hideOneAction = '隐藏数据';
$lang->action->trashTips = '提示:为了保证系统的完整性,禅道系统的删除都是标记删除。';
$lang->action->textDiff = '文本格式';
$lang->action->original = '原始格式';
+4 -2
View File
@@ -1,5 +1,5 @@
<?php
$lang->backup->common = '备份';
$lang->backup->common = '系统备份';
$lang->backup->index = '备份首页';
$lang->backup->history = '备份历史';
$lang->backup->delete = '删除备份';
@@ -8,6 +8,9 @@ $lang->backup->restore = '还原';
$lang->backup->change = '保留时间';
$lang->backup->changeAB = '修改';
$lang->backup->rmPHPHeader = '去除安全设置';
$lang->backup->setting = '设置';
$lang->backup->settingAction = '备份设置';
$lang->backup->time = '备份时间';
$lang->backup->files = '备份文件';
@@ -19,7 +22,6 @@ $lang->backup->status = '状态';
$lang->backup->statusList['success'] = '成功';
$lang->backup->statusList['fail'] = '失败';
$lang->backup->setting = '设置';
$lang->backup->settingDir = '备份目录';
$lang->backup->settingList['nofile'] = '不备份附件和代码';
$lang->backup->settingList['nosafe'] = '不需要防下载PHP文件头';
+2 -1
View File
@@ -1150,9 +1150,10 @@ class bugModel extends model
$openedBuilds = $this->post->openedBuild;
if($openedBuilds)
{
$this->loadModel('build');
foreach($openedBuilds as $openedBuild)
{
$build = $this->getByID($openedBuild);
$build = $this->build->getByID($openedBuild);
$build->bugs = trim(str_replace(",$bugID,", ',', ",$build->bugs,"), ',');
$this->dao->update(TABLE_BUILD)->set('bugs')->eq($build->bugs)->where('id')->eq((int)$openedBuild)->exec();
}
+6 -2
View File
@@ -15,7 +15,7 @@ $lang->caselib->all = '所有用例库';
$lang->caselib->index = "用例库首页";
$lang->caselib->create = "创建用例库";
$lang->caselib->edit = '编辑用例库';
$lang->caselib->browse = '浏览库用例';
$lang->caselib->browse = '浏览用例库';
$lang->caselib->view = '查看库概况';
$lang->caselib->createCase = '创建用例';
$lang->caselib->delete = "删除";
@@ -24,9 +24,13 @@ $lang->caselib->deleted = '已删除';
$lang->caselib->exportTemplet = '导出模板';
$lang->caselib->batchCreateCase = '批量创建用例';
$lang->caselib->import = '导入';
$lang->caselib->importAction = '导入用例';
$lang->caselib->showImport = '显示导入数据';
$lang->caselib->browseAction = '用例库列表';
$lang->caselib->deleteAction = "删除用例库";
$lang->caselib->importAction = '导入用例';
$lang->caselib->linkVersion = "版本";
$lang->caselib->id = '编号';
$lang->caselib->name = '名称';
$lang->caselib->desc = '描述';
+10 -8
View File
@@ -457,22 +457,15 @@ $lang->navGroup->productplan = 'product';
$lang->navGroup->release = 'product';
$lang->navGroup->branch = 'product';
$lang->navGroup->story = 'product';
$lang->navGroup->tree = 'product';
$lang->navGroup->project = 'project';
$lang->navGroup->testcase = 'project';
$lang->navGroup->testtask = 'project';
$lang->navGroup->testreport = 'project';
$lang->navGroup->testsuite = 'project';
$lang->navGroup->caselib = 'project';
$lang->navGroup->feedback = 'project';
$lang->navGroup->deploy = 'project';
$lang->navGroup->stakeholder = 'project';
$lang->navGroup->projectbuild = 'project';
$lang->navGroup->projectstory = 'project';
$lang->navGroup->review = 'project';
$lang->navGroup->reviewissue = 'project';
$lang->navGroup->milestone = 'project';
$lang->navGroup->pssp = 'project';
$lang->navGroup->auditplan = 'project';
$lang->navGroup->cm = 'project';
@@ -480,6 +473,7 @@ $lang->navGroup->nc = 'project';
$lang->navGroup->projectrelease = 'project';
$lang->navGroup->build = 'project';
$lang->navGroup->measrecord = 'project';
$lang->navGroup->milestone = 'project';
$lang->navGroup->execution = 'execution';
$lang->navGroup->task = 'execution';
@@ -494,12 +488,20 @@ $lang->navGroup->bug = 'qa';
$lang->navGroup->testcase = 'qa';
$lang->navGroup->testtask = 'qa';
$lang->navGroup->automation = 'qa';
$lang->navGroup->testreport = 'qa';
$lang->navGroup->testcase = 'qa';
$lang->navGroup->testtask = 'qa';
$lang->navGroup->testsuite = 'qa';
$lang->navGroup->caselib = 'qa';
$lang->navGroup->devops = 'devops';
$lang->navGroup->repo = 'devops';
$lang->navGroup->job = 'devops';
$lang->navGroup->jenkins = 'devops';
$lang->navGroup->compile = 'devops';
$lang->navGroup->ci = 'devops';
$lang->navGroup->svn = 'devops';
$lang->navGroup->git = 'devops';
$lang->navGroup->company = 'system';
$lang->navGroup->sqlbuilder = 'system';
+1 -1
View File
@@ -1,5 +1,5 @@
<?php
$lang->cron->common = '计划任务';
$lang->cron->common = '定时任务';
$lang->cron->index = '首页';
$lang->cron->list = '任务列表';
$lang->cron->create = '添加';
+2
View File
@@ -82,6 +82,8 @@ $lang->doc->collect = '收藏';
$lang->doc->cancelCollection = '取消收藏';
$lang->doc->deleteFile = '删除附件';
$lang->doc->collectAction = '收藏文档';
$lang->doc->libName = '文档库名称';
$lang->doc->libType = '文档库类型';
$lang->doc->custom = '自定义文档库';
+2 -2
View File
@@ -198,9 +198,9 @@ $lang->execution->deleteAB = "删除执行";
$lang->execution->browse = "浏览执行";
$lang->execution->list = "{$lang->executionCommon}列表";
$lang->execution->edit = "编辑{$lang->executionCommon}";
$lang->execution->editAB = "编辑执行";
$lang->execution->editAction = "编辑执行";
$lang->execution->batchEdit = "编辑";
$lang->execution->batchEditAB = "批量编辑";
$lang->execution->batchEditAction = "批量编辑";
$lang->execution->manageMembers = '团队管理';
$lang->execution->unlinkMember = '移除成员';
$lang->execution->unlinkStory = "移除{$lang->SRCommon}";
+3 -1
View File
@@ -29,6 +29,8 @@ $lang->extension->eraseAction = '清除插件';
$lang->extension->upgrade = '升级插件';
$lang->extension->agreeLicense = '我同意该授权';
$lang->extension->browseAction = '插件列表';
$lang->extension->structure = '目录结构';
$lang->extension->structureAction = '目录结构';
$lang->extension->installed = '已安装';
@@ -95,7 +97,7 @@ $lang->extension->noticeOkFile = '<h5>为了安全起见,系统需
<ol>
<li>文件内容为空。</li>
<li>如果之前文件存在,删除之后重新创建。</li>
</ol>';
</ol>';
$lang->extension->upgradeExt = '升级';
$lang->extension->installExt = '安装';
+7
View File
@@ -146,6 +146,13 @@ class group extends control
$this->view->projects = $this->dao->select('*')->from(TABLE_PROJECT)->where('deleted')->eq('0')->andWhere('type')->eq('project')->orderBy('order_desc')->fetchPairs('id', 'name');
$this->view->products = $this->dao->select('*')->from(TABLE_PRODUCT)->where('deleted')->eq('0')->orderBy('order_desc')->fetchPairs('id', 'name');
$navGroup = array();
foreach($this->lang->navGroup as $moduleName => $groupName)
{
if($groupName == $moduleName) continue;
$navGroup[$groupName][$moduleName] = $moduleName;
}
$this->view->navGroup = $navGroup;
$this->display();
}
+124 -105
View File
@@ -21,9 +21,9 @@ $lang->moduleOrder[25] = 'product';
$lang->moduleOrder[30] = 'story';
$lang->moduleOrder[35] = 'productplan';
$lang->moduleOrder[40] = 'release';
$lang->moduleOrder[45] = 'projectstory';
$lang->moduleOrder[50] = 'project';
$lang->moduleOrder[45] = 'project';
$lang->moduleOrder[50] = 'projectstory';
$lang->moduleOrder[55] = 'execution';
$lang->moduleOrder[60] = 'task';
$lang->moduleOrder[65] = 'build';
@@ -73,26 +73,28 @@ $lang->index->methodOrder[0] = 'index';
/* My module. */
$lang->resource->my = new stdclass();
$lang->resource->my->index = 'index';
$lang->resource->my->index = 'indexAction';
$lang->resource->my->todo = 'todo';
$lang->resource->my->calendar = 'calendar';
$lang->resource->my->work = 'work';
$lang->resource->my->contribute = 'contribute';
$lang->resource->my->calendar = 'calendarAction';
$lang->resource->my->work = 'workAction';
$lang->resource->my->contribute = 'contributeAction';
$lang->resource->my->project = 'project';
$lang->resource->my->profile = 'profile';
$lang->resource->my->profile = 'profileAction';
$lang->resource->my->uploadAvatar = 'uploadAvatar';
$lang->resource->my->preference = 'preference';
$lang->resource->my->dynamic = 'dynamic';
$lang->resource->my->dynamic = 'dynamicAction';
$lang->resource->my->editProfile = 'editProfile';
$lang->resource->my->changePassword = 'changePassword';
$lang->resource->my->manageContacts = 'manageContacts';
$lang->resource->my->deleteContacts = 'deleteContacts';
$lang->resource->my->score = 'score';
$lang->resource->my->unbind = 'unbind';
$lang->resource->my->team = 'team';
$lang->resource->my->story = 'story';
$lang->resource->my->task = 'task';
$lang->resource->my->bug = 'bug';
$lang->resource->my->doc = 'doc';
$lang->resource->my->issue = 'issue';
$lang->resource->my->risk = 'risk';
$lang->resource->my->testtask = 'testtask';
$lang->resource->my->testcase = 'testcase';
$lang->resource->my->execution = 'execution';
@@ -119,6 +121,9 @@ $lang->my->methodOrder[90] = 'bug';
$lang->my->methodOrder[95] = 'testtask';
$lang->my->methodOrder[100] = 'testcase';
$lang->my->methodOrder[105] = 'execution';
$lang->my->methodOrder[110] = 'doc';
$lang->my->methodOrder[115] = 'issue';
$lang->my->methodOrder[120] = 'risk';
/* Todo. */
$lang->resource->todo = new stdclass();
@@ -145,6 +150,7 @@ if($config->systemMode == 'new')
/* Program. */
$lang->resource->program = new stdclass();
$lang->resource->program->browse = 'browse';
$lang->resource->program->view = 'view';
$lang->resource->program->product = 'product';
$lang->resource->program->create = 'create';
$lang->resource->program->edit = 'edit';
@@ -158,16 +164,18 @@ if($config->systemMode == 'new')
$lang->resource->program->createStakeholder = 'createStakeholder';
$lang->resource->program->unlinkStakeholder = 'unlinkStakeholder';
$lang->resource->program->batchUnlinkStakeholders = 'batchUnlinkStakeholders';
$lang->resource->program->unbindWhitelist = 'unbindWhitelist';
$lang->resource->program->export = 'export';
$lang->program->methodOrder[10] = 'browse';
$lang->program->methodOrder[15] = 'product';
$lang->program->methodOrder[20] = 'create';
$lang->program->methodOrder[25] = 'edit';
$lang->program->methodOrder[30] = 'start';
$lang->program->methodOrder[35] = 'suspend';
$lang->program->methodOrder[40] = 'close';
$lang->program->methodOrder[45] = 'activate';
$lang->program->methodOrder[30] = 'view';
$lang->program->methodOrder[35] = 'start';
$lang->program->methodOrder[40] = 'suspend';
$lang->program->methodOrder[45] = 'close';
$lang->program->methodOrder[50] = 'activate';
$lang->program->methodOrder[55] = 'delete';
$lang->program->methodOrder[60] = 'project';
$lang->program->methodOrder[65] = 'stakeholder';
@@ -175,46 +183,47 @@ if($config->systemMode == 'new')
$lang->program->methodOrder[70] = 'unlinkStakeholder';
$lang->program->methodOrder[75] = 'batchUnlinkStakeholders';
$lang->program->methodOrder[80] = 'export';
$lang->program->methodOrder[85] = 'unbindWhitelist';
/* Project. */
$lang->resource->project = new stdclass();
$lang->resource->project->index = 'index';
$lang->resource->project->browse = 'browse';
$lang->resource->project->programTitle = 'moduleOpen';
$lang->resource->project->create = 'create';
$lang->resource->project->edit = 'edit';
$lang->resource->project->batchEdit = 'batchEdit';
$lang->resource->project->group = 'group';
$lang->resource->project->createGroup = 'createGroup';
$lang->resource->project->manageView = 'manageView';
$lang->resource->project->managePriv = 'managePriv';
$lang->resource->project->manageMembers = 'manageMembers';
$lang->resource->project->manageGroupMember = 'manageGroupMember';
$lang->resource->project->copyGroup = 'copyGroup';
$lang->resource->project->editGroup = 'editGroup';
$lang->resource->project->start = 'start';
$lang->resource->project->suspend = 'suspend';
$lang->resource->project->close = 'close';
$lang->resource->project->activate = 'activate';
$lang->resource->project->delete = 'delete';
$lang->resource->project->view = 'view';
$lang->resource->project->whitelist = 'whitelist';
$lang->resource->project->addWhitelist = 'addWhitelist';
$lang->resource->project->unbindWhitelist = 'unbindWhitelist';
$lang->resource->project->manageProducts = 'manageProducts';
$lang->resource->project->view = 'view';
$lang->resource->project->dynamic = 'dynamic';
$lang->resource->project->build = 'build';
$lang->resource->project->qa = 'qa';
$lang->resource->project->bug = 'bug';
$lang->resource->project->testcase = 'testcase';
$lang->resource->project->testtask = 'testtask';
$lang->resource->project->execution = 'execution';
$lang->resource->project->testreport = 'testreport';
$lang->resource->project->index = 'index';
$lang->resource->project->browse = 'browse';
$lang->resource->project->projectTitle = 'moduleOpen';
$lang->resource->project->create = 'create';
$lang->resource->project->edit = 'edit';
$lang->resource->project->batchEdit = 'batchEdit';
$lang->resource->project->group = 'group';
$lang->resource->project->createGroup = 'createGroup';
$lang->resource->project->manageView = 'manageView';
$lang->resource->project->managePriv = 'managePriv';
$lang->resource->project->manageMembers = 'manageMembers';
$lang->resource->project->manageGroupMember = 'manageGroupMember';
$lang->resource->project->copyGroup = 'copyGroup';
$lang->resource->project->editGroup = 'editGroup';
$lang->resource->project->start = 'start';
$lang->resource->project->suspend = 'suspend';
$lang->resource->project->close = 'close';
$lang->resource->project->activate = 'activate';
$lang->resource->project->delete = 'delete';
$lang->resource->project->view = 'view';
$lang->resource->project->whitelist = 'whitelist';
$lang->resource->project->addWhitelist = 'addWhitelist';
$lang->resource->project->unbindWhitelist = 'unbindWhitelist';
$lang->resource->project->manageProducts = 'manageProducts';
$lang->resource->project->dynamic = 'dynamic';
$lang->resource->project->build = 'build';
$lang->resource->project->qa = 'qa';
$lang->resource->project->bug = 'bug';
$lang->resource->project->testcase = 'testcase';
$lang->resource->project->testtask = 'testtask';
$lang->resource->project->execution = 'execution';
$lang->resource->project->export = 'export';
$lang->resource->project->createGuide = 'createGuide';
$lang->project->methodOrder[0] = 'index';
$lang->project->methodOrder[5] = 'browse';
$lang->project->methodOrder[10] = 'programTitle';
$lang->project->methodOrder[10] = 'projectTitle';
$lang->project->methodOrder[15] = 'create';
$lang->project->methodOrder[20] = 'edit';
$lang->project->methodOrder[25] = 'batchEdit';
@@ -246,6 +255,13 @@ if($config->systemMode == 'new')
$lang->project->methodOrder[155] = 'testtask';
$lang->project->methodOrder[160] = 'execution';
$lang->project->methodOrder[165] = 'testreport';
$lang->project->methodOrder[170] = 'export';
$lang->project->methodOrder[175] = 'createGuide';
$lang->resource->projectbuild = new stdclass();
$lang->resource->projectbuild->browse = 'browse';
$lang->projectbuild->methodOrder[5] = 'browse';
/* Personnel . */
$lang->resource->personnel = new stdclass();
@@ -264,7 +280,7 @@ if($config->systemMode == 'new')
/* Project Story. */
$lang->resource->projectstory = new stdclass();
$lang->resource->projectstory->story = 'story';
$lang->resource->projectstory->track = 'track';
$lang->resource->projectstory->track = 'trackAction';
$lang->resource->projectstory->view = 'view';
$lang->resource->projectstory->linkStory = 'linkStory';
$lang->resource->projectstory->unlinkStory = 'unlinkStory';
@@ -279,7 +295,7 @@ if($config->systemMode == 'new')
/* Release. */
$lang->resource->projectrelease = new stdclass();
$lang->resource->projectrelease->browse = 'browse';
$lang->resource->projectrelease->browse = 'browseAction';
$lang->resource->projectrelease->create = 'create';
$lang->resource->projectrelease->edit = 'edit';
$lang->resource->projectrelease->delete = 'delete';
@@ -310,7 +326,7 @@ if($config->systemMode == 'new')
/* Product. */
$lang->resource->product = new stdclass();
$lang->resource->product->index = 'index';
$lang->resource->product->index = 'indexAction';
$lang->resource->product->browse = 'browse';
$lang->resource->product->create = 'create';
$lang->resource->product->view = 'view';
@@ -369,9 +385,9 @@ $lang->resource->stakeholder->create = 'create';
$lang->resource->stakeholder->batchCreate = 'batchCreate';
$lang->resource->stakeholder->edit = 'edit';
$lang->resource->stakeholder->delete = 'delete';
$lang->resource->stakeholder->view = 'view';
$lang->resource->stakeholder->view = 'viewAction';
$lang->resource->stakeholder->issue = 'issue';
$lang->resource->stakeholder->viewIssue = 'viewIssue';
$lang->resource->stakeholder->viewIssue = 'viewIssueAction';
$lang->resource->stakeholder->communicate = 'communicate';
$lang->resource->stakeholder->expect = 'expect';
$lang->resource->stakeholder->expectation = 'expectation';
@@ -400,26 +416,26 @@ $lang->stakeholder->methodOrder[80] = 'userIssue';
/* Story. */
$lang->resource->story = new stdclass();
$lang->resource->story->create = 'create';
$lang->resource->story->batchCreate = 'batchCreate';
$lang->resource->story->edit = 'editAB';
$lang->resource->story->linkStory = 'linkStory';
$lang->resource->story->batchEdit = 'batchEdit';
$lang->resource->story->export = 'exportAction';
$lang->resource->story->delete = 'deleteAction';
$lang->resource->story->view = 'view';
$lang->resource->story->change = 'changeAction';
$lang->resource->story->review = 'reviewAction';
$lang->resource->story->batchReview = 'batchReview';
$lang->resource->story->assignTo = 'assignAction';
$lang->resource->story->close = 'closeAction';
$lang->resource->story->batchClose = 'batchClose';
$lang->resource->story->activate = 'activateAction';
$lang->resource->story->tasks = 'tasks';
$lang->resource->story->bugs = 'bugs';
$lang->resource->story->cases = 'cases';
$lang->resource->story->zeroCase = 'zeroCase';
$lang->resource->story->report = 'reportAction';
$lang->resource->story->create = 'create';
$lang->resource->story->batchCreate = 'batchCreate';
$lang->resource->story->edit = 'editAction';
$lang->resource->story->linkStory = 'linkStory';
$lang->resource->story->batchEdit = 'batchEdit';
$lang->resource->story->export = 'exportAction';
$lang->resource->story->delete = 'deleteAction';
$lang->resource->story->view = 'view';
$lang->resource->story->change = 'changeAction';
$lang->resource->story->review = 'reviewAction';
$lang->resource->story->batchReview = 'batchReview';
$lang->resource->story->assignTo = 'assignAction';
$lang->resource->story->close = 'closeAction';
$lang->resource->story->batchClose = 'batchClose';
$lang->resource->story->activate = 'activateAction';
$lang->resource->story->tasks = 'tasks';
$lang->resource->story->bugs = 'bugs';
$lang->resource->story->cases = 'cases';
$lang->resource->story->zeroCase = 'zeroCase';
$lang->resource->story->report = 'reportAction';
$lang->resource->story->batchChangePlan = 'batchChangePlan';
$lang->resource->story->batchChangeBranch = 'batchChangeBranch';
$lang->resource->story->batchChangeStage = 'batchChangeStage';
@@ -521,8 +537,8 @@ $lang->resource->execution->index = 'index';
$lang->resource->execution->view = 'view';
$lang->resource->execution->browse = 'browse';
$lang->resource->execution->create = 'createExec';
$lang->resource->execution->edit = 'editAB';
$lang->resource->execution->batchedit = 'batchEditAB';
$lang->resource->execution->edit = 'editAction';
$lang->resource->execution->batchedit = 'batchEditAction';
$lang->resource->execution->start = 'startAction';
$lang->resource->execution->activate = 'activateAction';
$lang->resource->execution->putoff = 'delayAction';
@@ -648,7 +664,7 @@ $lang->resource->task->delete = 'deleteAction';
$lang->resource->task->view = 'view';
$lang->resource->task->export = 'exportAction';
$lang->resource->task->confirmStoryChange = 'confirmStoryChange';
$lang->resource->task->recordEstimate = 'recordEstimate';
$lang->resource->task->recordEstimate = 'recordEstimateAction';
$lang->resource->task->editEstimate = 'editEstimate';
$lang->resource->task->deleteEstimate = 'deleteEstimate';
$lang->resource->task->report = 'reportChart';
@@ -703,13 +719,12 @@ $lang->build->methodOrder[50] = 'batchUnlinkBug';
/* QA. */
$lang->resource->qa = new stdclass();
$lang->resource->qa->index = 'index';
$lang->resource->qa->index = 'indexAction';
$lang->qa->methodOrder[0] = 'index';
/* Bug. */
$lang->resource->bug = new stdclass();
$lang->resource->bug->index = 'index';
$lang->resource->bug->browse = 'browse';
$lang->resource->bug->create = 'create';
$lang->resource->bug->batchCreate = 'batchCreate';
@@ -761,7 +776,6 @@ $lang->bug->methodOrder[110] = 'batchChangeBranch';
/* Test case. */
$lang->resource->testcase = new stdclass();
$lang->resource->testcase->index = 'index';
$lang->resource->testcase->browse = 'browse';
$lang->resource->testcase->groupCase = 'groupCase';
$lang->resource->testcase->create = 'create';
@@ -816,11 +830,10 @@ $lang->testcase->methodOrder[115] = 'batchCaseTypeChange';
/* Test task. */
$lang->resource->testtask = new stdclass();
$lang->resource->testtask->index = 'index';
$lang->resource->testtask->create = 'create';
$lang->resource->testtask->browse = 'browse';
$lang->resource->testtask->view = 'view';
$lang->resource->testtask->cases = 'cases';
$lang->resource->testtask->view = 'viewAction';
$lang->resource->testtask->cases = 'casesAction';
$lang->resource->testtask->groupCase = 'groupCase';
$lang->resource->testtask->edit = 'edit';
$lang->resource->testtask->start = 'startAction';
@@ -899,10 +912,10 @@ $lang->testsuite->methodOrder[40] = 'batchUnlinkCases';
$lang->resource->caselib = new stdclass();
$lang->resource->caselib->index = 'index';
$lang->resource->caselib->browse = 'browse';
$lang->resource->caselib->browse = 'browseAction';
$lang->resource->caselib->create = 'create';
$lang->resource->caselib->edit = 'edit';
$lang->resource->caselib->delete = 'delete';
$lang->resource->caselib->delete = 'deleteAction';
$lang->resource->caselib->view = 'view';
$lang->resource->caselib->createCase = 'createCase';
$lang->resource->caselib->batchCreateCase = 'batchCreateCase';
@@ -928,7 +941,7 @@ $lang->resource->automation->browse = 'browse';
$lang->automation->methodOrder[0] = 'browse';
$lang->resource->repo = new stdclass();
$lang->resource->repo->browse = 'browse';
$lang->resource->repo->browse = 'browseAction';
$lang->resource->repo->view = 'view';
$lang->resource->repo->log = 'log';
$lang->resource->repo->revision = 'revisionAction';
@@ -938,7 +951,7 @@ $lang->resource->repo->edit = 'editAction';
$lang->resource->repo->delete = 'delete';
$lang->resource->repo->showSyncCommit = 'showSyncCommit';
$lang->resource->repo->diff = 'diffAction';
$lang->resource->repo->download = 'download';
$lang->resource->repo->download = 'downloadAction';
$lang->resource->repo->maintain = 'maintain';
$lang->resource->repo->setRules = 'setRules';
@@ -969,10 +982,10 @@ $lang->compile->methodOrder[5] = 'browse';
$lang->compile->methodOrder[10] = 'logs';
$lang->resource->jenkins = new stdclass();
$lang->resource->jenkins->browse = 'browse';
$lang->resource->jenkins->browse = 'browseAction';
$lang->resource->jenkins->create = 'create';
$lang->resource->jenkins->edit = 'edit';
$lang->resource->jenkins->delete = 'delete';
$lang->resource->jenkins->delete = 'deleteAction';
$lang->jenkins->methodOrder[5] = 'browse';
$lang->jenkins->methodOrder[10] = 'create';
@@ -980,7 +993,7 @@ $lang->jenkins->methodOrder[15] = 'edit';
$lang->jenkins->methodOrder[20] = 'delete';
$lang->resource->job = new stdclass();
$lang->resource->job->browse = 'browse';
$lang->resource->job->browse = 'browseAction';
$lang->resource->job->create = 'create';
$lang->resource->job->edit = 'edit';
$lang->resource->job->delete = 'delete';
@@ -1009,7 +1022,7 @@ $lang->resource->doc->allLibs = 'allLibs';
$lang->resource->doc->objectLibs = 'objectLibs';
$lang->resource->doc->showFiles = 'showFiles';
$lang->resource->doc->sort = 'sort';
$lang->resource->doc->collect = 'collect';
$lang->resource->doc->collect = 'collectAction';
//$lang->resource->doc->diff = 'diff';
$lang->doc->methodOrder[0] = 'index';
@@ -1073,6 +1086,7 @@ $lang->resource->custom->timezone = 'timezone';
$lang->resource->custom->setStoryConcept = 'setStoryConcept';
$lang->resource->custom->editStoryConcept = 'editStoryConcept';
$lang->resource->custom->browseStoryConcept = 'browseStoryConcept';
$lang->resource->custom->setDefaultConcept = 'setDefaultConcept';
$lang->resource->custom->deleteStoryConcept = 'deleteStoryConcept';
$lang->custom->methodOrder[5] = 'index';
@@ -1084,10 +1098,11 @@ $lang->custom->methodOrder[30] = 'flow';
$lang->custom->methodOrder[35] = 'working';
$lang->custom->methodOrder[40] = 'setPublic';
$lang->custom->methodOrder[45] = 'timezone';
$lang->custom->methodOrder[50] = 'setStoryContcept';
$lang->custom->methodOrder[55] = 'editStoryContcept';
$lang->custom->methodOrder[60] = 'browseStoryContcept';
$lang->custom->methodOrder[65] = 'deleteStoryContcept';
$lang->custom->methodOrder[50] = 'setStoryConcept';
$lang->custom->methodOrder[55] = 'editStoryConcept';
$lang->custom->methodOrder[60] = 'browseStoryConcept';
$lang->custom->methodOrder[65] = 'setDefaultConcept';
$lang->custom->methodOrder[70] = 'deleteStoryConcept';
$lang->resource->datatable = new stdclass();
$lang->resource->datatable->setGlobal = 'setGlobal';
@@ -1182,6 +1197,8 @@ $lang->resource->user->cropAvatar = 'cropAvatar';
$lang->resource->user->profile = 'profile';
$lang->resource->user->batchEdit = 'batchEdit';
$lang->resource->user->unbind = 'unbind';
$lang->resource->user->issue = 'issue';
$lang->resource->user->risk = 'risk';
$lang->resource->user->setPublicTemplate = 'setPublicTemplate';
$lang->user->methodOrder[5] = 'create';
@@ -1194,12 +1211,14 @@ $lang->user->methodOrder[30] = 'todo';
$lang->user->methodOrder[35] = 'task';
$lang->user->methodOrder[40] = 'bug';
$lang->user->methodOrder[45] = 'project';
$lang->user->methodOrder[50] = 'dynamic';
$lang->user->methodOrder[55] = 'cropAvatar';
$lang->user->methodOrder[60] = 'profile';
$lang->user->methodOrder[65] = 'batchEdit';
$lang->user->methodOrder[70] = 'unbind';
$lang->user->methodOrder[75] = 'setPublicTemplate';
$lang->user->methodOrder[50] = 'issue';
$lang->user->methodOrder[55] = 'risk';
$lang->user->methodOrder[60] = 'dynamic';
$lang->user->methodOrder[65] = 'cropAvatar';
$lang->user->methodOrder[70] = 'profile';
$lang->user->methodOrder[75] = 'batchEdit';
$lang->user->methodOrder[80] = 'unbind';
$lang->user->methodOrder[85] = 'setPublicTemplate';
/* Tree. */
$lang->resource->tree = new stdclass();
@@ -1271,7 +1290,7 @@ $lang->admin->methodOrder[30] = 'ztCompany';
/* Extension. */
$lang->resource->extension = new stdclass();
$lang->resource->extension->browse = 'browse';
$lang->resource->extension->browse = 'browseAction';
$lang->resource->extension->obtain = 'obtain';
$lang->resource->extension->structure = 'structureAction';
$lang->resource->extension->install = 'install';
@@ -1295,11 +1314,11 @@ $lang->extension->methodOrder[50] = 'upgrade';
/* Webhook. */
$lang->resource->webhook = new stdclass();
$lang->resource->webhook->browse = 'browse';
$lang->resource->webhook->browse = 'list';
$lang->resource->webhook->create = 'create';
$lang->resource->webhook->edit = 'edit';
$lang->resource->webhook->delete = 'delete';
$lang->resource->webhook->log = 'log';
$lang->resource->webhook->log = 'logAction';
$lang->resource->webhook->bind = 'bind';
$lang->resource->webhook->chooseDept = 'chooseDept';
@@ -1350,8 +1369,8 @@ $lang->message->methodOrder[15] = 'setting';
$lang->resource->action = new stdclass();
$lang->resource->action->trash = 'trash';
$lang->resource->action->undelete = 'undelete';
$lang->resource->action->hideOne = 'hideOne';
$lang->resource->action->undelete = 'undeleteAction';
$lang->resource->action->hideOne = 'hideOneAction';
$lang->resource->action->hideAll = 'hideAll';
$lang->resource->action->comment = 'comment';
$lang->resource->action->editComment = 'editComment';
@@ -1369,7 +1388,7 @@ $lang->resource->backup->backup = 'backup';
$lang->resource->backup->restore = 'restore';
$lang->resource->backup->change = 'change';
$lang->resource->backup->delete = 'delete';
$lang->resource->backup->setting = 'setting';
$lang->resource->backup->setting = 'settingAction';
$lang->resource->backup->rmPHPHeader = 'rmPHPHeader';
$lang->backup->methodOrder[5] = 'index';
+6 -1
View File
@@ -92,13 +92,14 @@
<table class='table table-form'>
<?php foreach($lang->mainNav as $module => $title):?>
<?php if(!is_string($title)) continue;?>
<?php if(!isset($lang->action->dynamicAction->$module) and !isset($navGroup[$module])) continue;?>
<?php if($module == 'admin') continue;?>
<tr id='<?php echo "{$module}ActionBox";?>'>
<th class='w-100px text-left text-top'>
<div class='action-item'>
<div class='checkbox-primary'>
<input type="checkbox" id='allchecker' onclick="selectAll(this)"/>
<label class='priv' for='allchecker'><?php echo $module == 'project' ? "<i class='icon icon-menu-doc'></i> " . $lang->executionCommon : substr($title, 0, strpos($title, '|'));?></label>
<label class='priv' for='allchecker'><?php echo substr($title, 0, strpos($title, '|'));?></label>
</div>
</div>
</th>
@@ -115,6 +116,8 @@
<?php endforeach;?>
</div>
<?php endif;?>
<?php if(isset($navGroup[$module])):?>
<?php foreach($navGroup[$module] as $subModule):?>
<?php if(isset($lang->action->dynamicAction->$subModule)):?>
<div class='clearfix'>
<?php foreach($lang->action->dynamicAction->$subModule as $action => $actionTitle):?>
@@ -127,6 +130,8 @@
<?php endforeach;?>
</div>
<?php endif;?>
<?php endforeach;?>
<?php endif;?>
</td>
</tr>
<?php endforeach;?>
+2 -2
View File
@@ -56,14 +56,14 @@
<?php foreach($lang->mainNav as $module => $title):?>
<?php if(!is_string($title)) continue;?>
<?php $active = $menu == $module ? 'btn-active-text' : '';?>
<?php echo html::a(inlink('managePriv', sprintf($params, $module)), "<span class='text'>" . substr($title, 0, strpos($title, '|')) . '</span>', '', "class='btn btn-link $active'")?>
<?php echo html::a(inlink('managePriv', sprintf($params, $module)), "<span class='text'>" . strip_tags(substr($title, 0, strpos($title, '|'))) . '</span>', '', "class='btn btn-link $active'")?>
<?php endforeach;?>
<?php $active = $menu == 'other' ? 'btn-active-text' : '';?>
<?php echo html::a(inlink('managePriv', sprintf($params, 'other')), "<span class='text'>{$lang->group->other}</span>", '', "class='btn btn-link $active'");?>
<div class='input-control space w-150px'>
<?php echo html::select('version', $this->lang->group->versions, $version, "onchange=showPriv(this.value) class='form-control chosen'");?>
<?php echo html::select('version', $this->lang->group->versions, $version, "onchange=showPriv(this.value) class='form-control chosen'");?>
</div>
</div>
</div>
+3
View File
@@ -6,6 +6,9 @@ $lang->jenkins->edit = '编辑Jenkins';
$lang->jenkins->delete = '删除';
$lang->jenkins->confirmDelete = '确认删除该Jenkins吗?';
$lang->jenkins->browseAction = 'Jenkins列表';
$lang->jenkins->deleteAction = '删除Jenkins';
$lang->jenkins->id = 'ID';
$lang->jenkins->name = '名称';
$lang->jenkins->url = '服务地址';
+2
View File
@@ -10,6 +10,8 @@ $lang->job->confirmDelete = '确认删除该构建任务';
$lang->job->dirChange = '目录改动';
$lang->job->buildTag = '打标签';
$lang->job->browseAction = '构建任务列表';
$lang->job->id = 'ID';
$lang->job->name = '名称';
$lang->job->repo = '代码库';
+7
View File
@@ -41,6 +41,13 @@ $lang->my->testtask = '我的测试单';
$lang->my->testcase = '我的用例';
$lang->my->storyConcept = $config->URAndSR ? '默认需求概念组合' : '默认需求概念';
$lang->my->indexAction = '地盘仪表盘';
$lang->my->calendarAction = '我的日程';
$lang->my->workAction = '我的待处理';
$lang->my->contributeAction = '我的贡献';
$lang->my->profileAction = '个人档案';
$lang->my->dynamicAction = '动态';
$lang->my->myExecutions = "我参与的阶段/冲刺/迭代";
$lang->my->name = '名称';
$lang->my->code = '代号';
+24 -22
View File
@@ -9,29 +9,33 @@
* @version $Id: zh-cn.php 5091 2013-07-10 06:06:46Z chencongzhi520@gmail.com $
* @link http://www.zentao.net
*/
$lang->product->index = $lang->productCommon . '主页';
$lang->product->browse = "{$lang->SRCommon}列表";
$lang->product->dynamic = $lang->productCommon . '动态';
$lang->product->view = "{$lang->productCommon}概况";
$lang->product->edit = "编辑{$lang->productCommon}";
$lang->product->batchEdit = '批量编辑';
$lang->product->create = "添加{$lang->productCommon}";
$lang->product->delete = "删除{$lang->productCommon}";
$lang->product->deleted = '已删除';
$lang->product->close = '关闭';
$lang->product->index = $lang->productCommon . '主页';
$lang->product->browse = "{$lang->SRCommon}列表";
$lang->product->dynamic = $lang->productCommon . '动态';
$lang->product->view = "{$lang->productCommon}概况";
$lang->product->edit = "编辑{$lang->productCommon}";
$lang->product->batchEdit = '批量编辑';
$lang->product->create = "添加{$lang->productCommon}";
$lang->product->delete = "删除{$lang->productCommon}";
$lang->product->deleted = '已删除';
$lang->product->close = '关闭';
$lang->product->select = "请选择{$lang->productCommon}";
$lang->product->mine = '我负责:';
$lang->product->other = '其他:';
$lang->product->closed = '已关闭';
$lang->product->updateOrder = '排序';
$lang->product->all = "所有{$lang->productCommon}";
$lang->product->manageLine = "维护{$lang->productCommon}线";
$lang->product->export = '导出数据';
$lang->product->dashboard = "{$lang->productCommon}仪表盘";
$lang->product->changeProgram = "{$lang->productCommon}调整所属项目集影响范围确认";
$lang->product->addWhitelist = '添加白名单';
$lang->product->unbindWhitelist = '移除白名单';
$lang->product->indexAction = "所有{$lang->productCommon}仪表盘";
$lang->product->closeAction = "关闭{$lang->productCommon}";
$lang->product->select = "请选择{$lang->productCommon}";
$lang->product->mine = '我负责:';
$lang->product->other = '其他:';
$lang->product->closed = '已关闭';
$lang->product->updateOrder = '排序';
$lang->product->orderAction = "{$lang->productCommon}排序";
$lang->product->all = "所有{$lang->productCommon}";
$lang->product->manageLine = "维护{$lang->productCommon}线";
$lang->product->export = '导出数据';
$lang->product->exportAction = "导出{$lang->productCommon}";
$lang->product->dashboard = "{$lang->productCommon}仪表盘";
$lang->product->changeProgram = "{$lang->productCommon}调整所属项目集影响范围确认";
$lang->product->basicInfo = '基本信息';
$lang->product->otherInfo = '其他信息';
@@ -90,8 +94,6 @@ $lang->product->QD = '测试负责人';
$lang->product->RD = '发布负责人';
$lang->product->acl = '访问控制';
$lang->product->whitelist = '白名单';
$lang->product->addWhitelist = '添加白名单';
$lang->product->unbindWhitelist = '删除白名单';
$lang->product->branch = '所属%s';
$lang->product->qa = '测试';
$lang->product->release = '发布';
+1 -1
View File
@@ -55,7 +55,7 @@
<?php
if($config->systemMode == 'new')
{
echo html::a($this->createLink('project', explode('-', $config->projectLink)[1], 'project=' . $project->id, '', false, $project->id), $project->name, '_parent');
echo html::a($this->createLink('project', 'index', 'project=' . $project->id, '', false, $project->id), $project->name, '_parent');
}
else
{
+2
View File
@@ -43,6 +43,8 @@ $lang->program->confirmBatchUnlink = "您确定要批量移除这些干系
$lang->program->stakeholderType = '干系人类型';
$lang->program->isStakeholderKey = '关键干系人';
$lang->program->importStakeholder = '从父项目集导入';
$lang->program->unbindWhitelist = '移除白名单';
$lang->program->importStakeholder = '从父项目集导入';
$lang->program->manageMembers = '项目集团队';
$lang->program->beyondParentBudget = '已超出所属项目集的剩余预算';
$lang->program->parentBudget = '所属项目集剩余预算:';
+13
View File
@@ -0,0 +1,13 @@
<?php
/**
* The project build module en file of ZenTaoPMS.
*
* @copyright Copyright 2009-2020 青岛易软天创网络科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com)
* @license ZPL (http://zpl.pub/page/zplv12.html)
* @author Yuchun Li <liyuchun@cnezsoft.com>
* @package projectrelease
* @version $Id: zh-cn.php 4129 2020-11-27 01:58:14Z wwccss $
* @link http://www.zentao.net
*/
$lang->projectbuild->common = 'Project Build';
$lang->projectbuild->browse = 'Build List';
+13
View File
@@ -0,0 +1,13 @@
<?php
/**
* The project build module en file of ZenTaoPMS.
*
* @copyright Copyright 2009-2020 青岛易软天创网络科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com)
* @license ZPL (http://zpl.pub/page/zplv12.html)
* @author Yuchun Li <liyuchun@cnezsoft.com>
* @package projectrelease
* @version $Id: zh-cn.php 4129 2020-11-27 01:58:14Z wwccss $
* @link http://www.zentao.net
*/
$lang->projectbuild->common = 'Project Build';
$lang->projectbuild->browse = 'Build List';
+13
View File
@@ -0,0 +1,13 @@
<?php
/**
* The project build module en file of ZenTaoPMS.
*
* @copyright Copyright 2009-2020 青岛易软天创网络科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com)
* @license ZPL (http://zpl.pub/page/zplv12.html)
* @author Yuchun Li <liyuchun@cnezsoft.com>
* @package projectrelease
* @version $Id: zh-cn.php 4129 2020-11-27 01:58:14Z wwccss $
* @link http://www.zentao.net
*/
$lang->projectbuild->common = 'Project Build';
$lang->projectbuild->browse = 'Build List';
+13
View File
@@ -0,0 +1,13 @@
<?php
/**
* The project build module en file of ZenTaoPMS.
*
* @copyright Copyright 2009-2020 青岛易软天创网络科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com)
* @license ZPL (http://zpl.pub/page/zplv12.html)
* @author Yuchun Li <liyuchun@cnezsoft.com>
* @package projectrelease
* @version $Id: zh-cn.php 4129 2020-11-27 01:58:14Z wwccss $
* @link http://www.zentao.net
*/
$lang->projectbuild->common = 'Project Build';
$lang->projectbuild->browse = 'Build List';
+13
View File
@@ -0,0 +1,13 @@
<?php
/**
* The project build module zh-cn file of ZenTaoPMS.
*
* @copyright Copyright 2009-2020 青岛易软天创网络科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com)
* @license ZPL (http://zpl.pub/page/zplv12.html)
* @author Yuchun Li <liyuchun@cnezsoft.com>
* @package projectrelease
* @version $Id: zh-cn.php 4129 2020-11-27 01:58:14Z wwccss $
* @link http://www.zentao.net
*/
$lang->projectbuild->common = '项目版本';
$lang->projectbuild->browse = '版本列表';
+27
View File
@@ -0,0 +1,27 @@
<?php
/**
* The release module zh-tw file of ZenTaoPMS.
*
* @copyright Copyright 2009-2020 青島易軟天創網絡科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com)
* @license ZPL (http://zpl.pub/page/zplv12.html)
* @author Yuchun Li <liyuchun@cnezsoft.com>
* @package release
* @version $Id: zh-tw.php 4129 2020-11-27 01:58:14Z wwccss $
* @link http://www.zentao.net
*/
$lang->projectrelease->common = '項目發佈';
$lang->projectrelease->create = "創建發佈";
$lang->projectrelease->edit = "編輯發佈";
$lang->projectrelease->linkStory = "關聯{$lang->SRCommon}";
$lang->projectrelease->linkBug = "關聯Bug";
$lang->projectrelease->delete = "刪除發佈";
$lang->projectrelease->deleted = '已刪除';
$lang->projectrelease->view = "發佈詳情";
$lang->projectrelease->browse = "瀏覽發佈";
$lang->projectrelease->changeStatus = "修改狀態";
$lang->projectrelease->batchUnlink = "批量移除";
$lang->projectrelease->batchUnlinkStory = "批量移除{$lang->SRCommon}";
$lang->projectrelease->batchUnlinkBug = "批量移除Bug";
$lang->projectrelease->unlinkStory = "移除{$lang->SRCommon}";
$lang->projectrelease->unlinkBug = '移除Bug';
$lang->projectrelease->export = '導出HTML';
+2
View File
@@ -25,3 +25,5 @@ $lang->projectrelease->batchUnlinkBug = "批量移除Bug";
$lang->projectrelease->unlinkStory = "移除{$lang->SRCommon}";
$lang->projectrelease->unlinkBug = '移除Bug';
$lang->projectrelease->export = '导出HTML';
$lang->projectrelease->browseAction = "发布列表";
+2
View File
@@ -9,6 +9,8 @@ $lang->projectstory->unlinkStory = '移除' . $lang->SRCommon;
$lang->projectstory->importplanstories = '按计划关联' . $lang->SRCommon;
$lang->projectstory->whyNoStories = "看起来没有{$lang->SRCommon}可以关联。请检查下项目关联的{$lang->productCommon}中有没有{$lang->SRCommon},而且要确保它们已经审核通过。";
$lang->projectstory->trackAction = '跟踪矩阵';
global $app;
$app->loadLang('product');
$lang->projectstory->featureBar['story']['allstory'] = $lang->product->allStory;
+2
View File
@@ -10,3 +10,5 @@
* @link http://www.zentao.net
*/
$lang->qa->index = '测试主页';
$lang->qa->indexAction = '测试仪表盘';
+1 -1
View File
@@ -9,7 +9,7 @@
* @version $Id: en.php 4129 2013-01-18 01:58:14Z wwccss $
* @link http://www.zentao.net
*/
$lang->release->common = 'Release';
$lang->release->common = 'Product Release';
$lang->release->create = "Erstellen";
$lang->release->edit = "Bearbeiten";
$lang->release->linkStory = "Story verknüpfen";
+1 -1
View File
@@ -9,7 +9,7 @@
* @version $Id: en.php 4129 2013-01-18 01:58:14Z wwccss $
* @link http://www.zentao.net
*/
$lang->release->common = 'Release';
$lang->release->common = 'Product Release';
$lang->release->create = "Create Release";
$lang->release->edit = "Edit Release";
$lang->release->linkStory = "Link Story";
+1 -1
View File
@@ -9,7 +9,7 @@
* @version $Id: en.php 4129 2013-01-18 01:58:14Z wwccss $
* @link https://www.zentao.pm
*/
$lang->release->common = 'Release';
$lang->release->common = 'Product Release';
$lang->release->create = "Créer Release";
$lang->release->edit = "Editer Release";
$lang->release->linkStory = "Intégrer Story";
+1 -1
View File
@@ -9,7 +9,7 @@
* @version $Id: vi.php 4129 2013-01-18 01:58:14Z wwccss $
* @link http://www.zentao.net
*/
$lang->release->common = 'Phát hành';
$lang->release->common = 'Product Release';
$lang->release->create = "Tạo phát hành";
$lang->release->edit = "Sửa phát hành";
$lang->release->linkStory = "Liên kết câu chuyện";
+1 -1
View File
@@ -9,7 +9,7 @@
* @version $Id: zh-cn.php 4129 2013-01-18 01:58:14Z wwccss $
* @link http://www.zentao.net
*/
$lang->release->common = '发布';
$lang->release->common = '产品发布';
$lang->release->create = "创建发布";
$lang->release->edit = "编辑发布";
$lang->release->linkStory = "关联{$lang->SRCommon}";
+9 -5
View File
@@ -4,19 +4,14 @@ $lang->repo->browse = '浏览';
$lang->repo->viewRevision = '查看修订';
$lang->repo->product = '所属产品';
$lang->repo->create = '创建';
$lang->repo->createAction = '创建版本库';
$lang->repo->maintain = '版本库列表';
$lang->repo->edit = '编辑';
$lang->repo->editAction = '编辑版本库';
$lang->repo->delete = '删除版本库';
$lang->repo->showSyncCommit = '显示同步进度';
$lang->repo->ajaxSyncCommit = '接口:AJAX同步注释';
$lang->repo->setRules = '指令配置';
$lang->repo->download = '下载';
$lang->repo->downloadDiff = '下载Diff';
$lang->repo->diffAction = '版本对比';
$lang->repo->revisionAction = '版本详情';
$lang->repo->blameAction = '版本追溯';
$lang->repo->addBug = '添加评审';
$lang->repo->editBug = '编辑评审';
$lang->repo->deleteBug = '删除评审';
@@ -24,6 +19,15 @@ $lang->repo->addComment = '添加备注';
$lang->repo->editComment = '编辑备注';
$lang->repo->deleteComment = '删除备注';
$lang->repo->browseAction = '浏览版本库';
$lang->repo->createAction = '创建版本库';
$lang->repo->editAction = '编辑版本库';
$lang->repo->diffAction = '版本对比';
$lang->repo->downloadAction = '下载代码库文件';
$lang->repo->revisionAction = '版本详情';
$lang->repo->blameAction = '版本追溯';
$lang->repo->reviewAction = '评审列表';
$lang->repo->submit = '提交';
$lang->repo->cancel = '取消';
$lang->repo->addComment = '添加评论';
+3
View File
@@ -26,6 +26,9 @@ $lang->stakeholder->issue = '问题管理';
$lang->stakeholder->viewIssue = '活动问题列表';
$lang->stakeholder->userIssue = '干系人问题列表';
$lang->stakeholder->viewAction = '干系人详情';
$lang->stakeholder->viewIssueAction = '问题列表';
/* Fields. */
$lang->stakeholder->id = '编号';
$lang->stakeholder->user = '用户';
+2 -3
View File
@@ -747,11 +747,10 @@ class story extends control
* Change a story.
*
* @param int $storyID
* @param string $from product|project
* @access public
* @return void
*/
public function change($storyID, $from = 'product')
public function change($storyID)
{
if(!empty($_POST))
{
@@ -771,7 +770,7 @@ class story extends control
$this->executeHooks($storyID);
$module = $from == 'project' ? 'projectstory' : 'story';
$module = $this->app->openApp == 'project' ? 'projectstory' : 'story';
die(js::locate($this->createLink($module, 'view', "storyID=$storyID"), 'parent'));
}
+11 -10
View File
@@ -22,16 +22,12 @@ $lang->story->affectedStories = "影响的{$lang->story->story}";
$lang->story->batchCreate = "批量创建";
$lang->story->change = "变更";
$lang->story->changeAction = "变更{$lang->SRCommon}";
$lang->story->changed = "{$lang->SRCommon}变更";
$lang->story->assignTo = '指派';
$lang->story->assignAction = "指派{$lang->SRCommon}";
$lang->story->review = '评审';
$lang->story->reviewAction = "评审{$lang->SRCommon}";
$lang->story->needReview = '需要评审';
$lang->story->batchReview = '批量评审';
$lang->story->edit = "编辑";
$lang->story->editAB = "编辑{$lang->SRCommon}";
$lang->story->batchEdit = "批量编辑";
$lang->story->subdivide = '细分';
$lang->story->link = '关联';
@@ -39,15 +35,11 @@ $lang->story->unlink = '移除';
$lang->story->track = '跟踪矩阵';
$lang->story->trackAB = '矩阵';
$lang->story->processStoryChange = '处理需求变更';
$lang->story->subdivideAction = "细分{$lang->SRCommon}";
$lang->story->splitRequirent = '拆分';
$lang->story->close = '关闭';
$lang->story->closeAction = "关闭{$lang->SRCommon}";
$lang->story->batchClose = '批量关闭';
$lang->story->activate = '激活';
$lang->story->activateAction = "激活{$lang->SRCommon}";
$lang->story->delete = "删除";
$lang->story->deleteAction = "删除{$lang->SRCommon}";
$lang->story->view = "{$lang->SRCommon}详情";
$lang->story->setting = "设置";
$lang->story->tasks = "相关任务";
@@ -62,11 +54,9 @@ $lang->story->caseCountAB = 'C';
$lang->story->linkStory = "关联{$lang->SRCommon}";
$lang->story->unlinkStory = "移除相关{$lang->SRCommon}";
$lang->story->export = "导出数据";
$lang->story->exportAction = "导出{$lang->SRCommon}";
$lang->story->zeroCase = "零用例{$lang->SRCommon}";
$lang->story->zeroTask = "只列零任务{$lang->SRCommon}";
$lang->story->reportChart = "统计报表";
$lang->story->reportAction = "统计报表";
$lang->story->copyTitle = "同{$lang->SRCommon}名称";
$lang->story->batchChangePlan = "批量修改计划";
$lang->story->batchChangeBranch = "批量修改分支";
@@ -78,6 +68,17 @@ $lang->story->toTask = '转任务';
$lang->story->batchToTask = '批量转任务';
$lang->story->convertRelations = '换算关系';
$lang->story->editAction = "编辑{$lang->SRCommon}";
$lang->story->changeAction = "变更{$lang->SRCommon}";
$lang->story->assignAction = "指派{$lang->SRCommon}";
$lang->story->reviewAction = "评审{$lang->SRCommon}";
$lang->story->subdivideAction = "细分{$lang->SRCommon}";
$lang->story->closeAction = "关闭{$lang->SRCommon}";
$lang->story->activateAction = "激活{$lang->SRCommon}";
$lang->story->deleteAction = "删除{$lang->SRCommon}";
$lang->story->exportAction = "导出{$lang->SRCommon}";
$lang->story->reportAction = "统计报表";
$lang->story->skipStory = '需求:%s 为父需求,将不会被关闭。';
$lang->story->closedStory = '需求:%s 已关闭,将不会被关闭。';
$lang->story->batchToTaskTips = "此操作会创建与所选{$lang->SRCommon}同名的任务,并将{$lang->SRCommon}关联到任务中,已关闭的需求不会转为任务。";
+2
View File
@@ -131,6 +131,8 @@ $lang->task->lblPri = 'P';
$lang->task->lblHour = '(h)';
$lang->task->lblTestStory = "测试{$lang->SRCommon}";
$lang->task->recordEstimateAction = '添加工时';
$lang->task->ditto = '同上';
$lang->task->dittoNotice = "该任务与上一任务不属于同一%s!";
$lang->task->selectTestStory = "选择测试{$lang->SRCommon}";
+9 -6
View File
@@ -12,7 +12,6 @@
$lang->testtask->index = "测试单首页";
$lang->testtask->create = "提交测试";
$lang->testtask->reportChart = '报表统计';
$lang->testtask->reportAction = '用例报表统计';
$lang->testtask->delete = "删除测试单";
$lang->testtask->importUnitResult = "导入单元测试结果";
$lang->testtask->importunitresult = "导入单元测试"; //Fix bug custom required testtask.
@@ -29,7 +28,6 @@ $lang->testtask->batchAssign = "批量指派";
$lang->testtask->runCase = "执行";
$lang->testtask->batchRun = "批量执行";
$lang->testtask->results = "结果";
$lang->testtask->resultsAction = "用例结果";
$lang->testtask->createBug = "提Bug";
$lang->testtask->assign = '指派';
$lang->testtask->cases = '用例';
@@ -37,14 +35,10 @@ $lang->testtask->groupCase = "分组浏览用例";
$lang->testtask->pre = '上一个';
$lang->testtask->next = '下一个';
$lang->testtask->start = "开始";
$lang->testtask->startAction = "开始测试单";
$lang->testtask->close = "关闭";
$lang->testtask->closeAction = "关闭测试单";
$lang->testtask->wait = "待测测试单";
$lang->testtask->block = "阻塞";
$lang->testtask->blockAction = "阻塞测试单";
$lang->testtask->activate = "激活";
$lang->testtask->activateAction = "激活测试单";
$lang->testtask->testing = "测试中测试单";
$lang->testtask->blocked = "被阻塞测试单";
$lang->testtask->done = "已测测试单";
@@ -54,6 +48,15 @@ $lang->testtask->allTasks = '所有测试';
$lang->testtask->collapseAll = '全部折叠';
$lang->testtask->expandAll = '全部展开';
$lang->testtask->viewAction = "测试单概况";
$lang->testtask->casesAction = '查看用例';
$lang->testtask->activateAction = "激活测试单";
$lang->testtask->blockAction = "阻塞测试单";
$lang->testtask->closeAction = "关闭测试单";
$lang->testtask->startAction = "开始测试单";
$lang->testtask->resultsAction = "用例结果";
$lang->testtask->reportAction = '用例报表统计';
$lang->testtask->id = '编号';
$lang->testtask->common = '测试单';
$lang->testtask->product = '所属' . $lang->productCommon;
+8 -2
View File
@@ -134,6 +134,12 @@ $(function()
})
$('#dataform .chosen').chosen();
$("#dataform .picker-select[data-pickertype!='remote']").picker({chosenMode: true});
$("#dataform [data-pickertype='remote']").each(function()
{
var pickerremote = $(this).attr('data-pickerremote');
$(this).picker({chosenMode: true, remote: pickerremote});
})
// hide #parent chosen dropdown on root dropdown show
$('#root').on('chosen:showing_dropdown', function()
@@ -144,8 +150,8 @@ $(function()
/**
* Load branches by product.
*
* @param object $obj
*
* @param object $obj
* @access public
* @return void
*/
+76
View File
@@ -3965,6 +3965,82 @@ class upgradeModel extends model
return true;
}
/**
* Adjust priv 15.0.
*
* @access public
* @return true
*/
public function adjustPriv15_0()
{
$this->dao->update(TABLE_GROUPPRIV)->set('module')->eq('execution')->where('module')->eq('project')->exec();
$stmt = $this->dao->select('*')->from(TABLE_GROUPPRIV)->where('module')->eq('program')->andWhere('method')->like('PGM%')->query();
while($grouppriv = $stmt->fetch())
{
$this->dao->delete()->from(TABLE_GROUPPRIV)->where('module')->eq($grouppriv->module)->andWhere('method')->eq($grouppriv->method)->exec();
$grouppriv->method = strtolower(str_ireplace('PGM', '', $grouppriv->method));
$this->dao->replace(TABLE_GROUPPRIV)->data($grouppriv)->exec();
$grouppriv->method = 'index';
$this->dao->replace(TABLE_GROUPPRIV)->data($grouppriv)->exec();
}
$stmt = $this->dao->select('*')->from(TABLE_GROUPPRIV)->where('module')->eq('program')->andWhere('method')->like('PRJ%')->query();
while($grouppriv = $stmt->fetch())
{
$this->dao->delete()->from(TABLE_GROUPPRIV)->where('module')->eq($grouppriv->module)->andWhere('method')->eq($grouppriv->method)->exec();
$grouppriv->module = 'project';
$grouppriv->method = strtolower(str_ireplace('PRJ', '', $grouppriv->method));
$this->dao->replace(TABLE_GROUPPRIV)->data($grouppriv)->exec();
$grouppriv->method = 'index';
$this->dao->replace(TABLE_GROUPPRIV)->data($grouppriv)->exec();
}
$stmt = $this->dao->select('*')->from(TABLE_GROUPPRIV)->where('module')->eq('project')->andWhere('method')->eq('story')->query();
while($grouppriv = $stmt->fetch())
{
$grouppriv->module = 'projectstory';
$grouppriv->method = 'story';
$this->dao->replace(TABLE_GROUPPRIV)->data($grouppriv)->exec();
}
$stmt = $this->dao->select('*')->from(TABLE_GROUPPRIV)->where('module')->eq('story')->andWhere('method')->eq('view')->query();
while($grouppriv = $stmt->fetch())
{
$grouppriv->module = 'projectstory';
$grouppriv->method = 'view';
$this->dao->replace(TABLE_GROUPPRIV)->data($grouppriv)->exec();
}
$stmt = $this->dao->select('*')->from(TABLE_GROUPPRIV)->where('module')->eq('project')->andWhere('method')->eq('linkstory')->query();
while($grouppriv = $stmt->fetch())
{
$grouppriv->module = 'projectstory';
$grouppriv->method = 'linkstory';
$this->dao->replace(TABLE_GROUPPRIV)->data($grouppriv)->exec();
}
$stmt = $this->dao->select('*')->from(TABLE_GROUPPRIV)->where('module')->eq('project')->andWhere('method')->eq('unlinkstory')->query();
while($grouppriv = $stmt->fetch())
{
$grouppriv->module = 'projectstory';
$grouppriv->method = 'unlinkstory';
$this->dao->replace(TABLE_GROUPPRIV)->data($grouppriv)->exec();
}
$stmt = $this->dao->select('*')->from(TABLE_GROUPPRIV)->where('module')->eq('execution')->andWhere('method')->eq('all')->query();
while($grouppriv = $stmt->fetch())
{
$grouppriv->module = 'project';
$grouppriv->method = 'execution';
$this->dao->replace(TABLE_GROUPPRIV)->data($grouppriv)->exec();
}
return true;
}
/**
* Save Logs.
*
+2
View File
@@ -814,6 +814,7 @@ class userModel extends model
$user->rights = $this->authorize($account);
$user->groups = $this->getGroups($account);
$user->view = $this->grantUserView($user->account, $user->rights['acls']);
$this->session->set('user', $user);
$this->app->user = $this->session->user;
$this->loadModel('action')->create('user', $user->id, 'login');
@@ -836,6 +837,7 @@ class userModel extends model
$user->rights = $this->authorize($account);
$user->groups = $this->getGroups($account);
$user->view = $this->grantUserView($user->account, $user->rights['acls']);
$this->session->set('user', $user);
$this->app->user = $this->session->user;
$this->loadModel('action')->create('user', $user->id, 'login');
+2
View File
@@ -9,6 +9,8 @@ $lang->webhook->chooseDept = '选择同步部门';
$lang->webhook->assigned = '指派给';
$lang->webhook->setting = '设置';
$lang->webhook->logAction = 'Webhook日志';
$lang->webhook->browse = '浏览Webhook';
$lang->webhook->create = '添加Webhook';
$lang->webhook->edit = '编辑Webhook';
+4 -3
View File
@@ -11,6 +11,7 @@ $config->programLink = '-';
$config->productLink = '-';
$config->projectLink = '-';
$config->executionLink = '-';
$config->systemMode = 'new';
/* set module root path and included the resource of group module. */
$moduleRoot = '../module/';
@@ -48,8 +49,8 @@ $whiteList[] = 'help-field';
$whiteList[] = 'index-testext';
$whiteList[] = 'productplan-commonaction';
$whiteList[] = 'project-managechilds';
$whiteList[] = 'project-tips';
$whiteList[] = 'project-commonaction';
$whiteList[] = 'execution-tips';
$whiteList[] = 'execution-commonaction';
$whiteList[] = 'project-sendmail';
$whiteList[] = 'release-commonaction';
$whiteList[] = 'task-commonaction';
@@ -293,7 +294,7 @@ foreach($demoSQL as $line => $sql)
if(strpos($sql, $config->db->prefix . 'config') !== false or
strpos($sql, $config->db->prefix . 'company') !== false or
strpos($sql, $config->db->prefix . 'group') !== false)
strpos($sql, $config->db->prefix . 'group') !== false)
{
die('line ' . ($line + 1) . " has error\n");
}
+1 -4
View File
@@ -50,6 +50,7 @@ KindEditor.lang({
unlink : '取消超级链接',
fullscreen : '全屏显示',
about : '关于',
holder: '插入系统数据',
print : '打印(Ctrl+P)',
filemanager : '文件空间',
code : '插入程序代码',
@@ -122,13 +123,11 @@ KindEditor.lang({
'flash.upload' : '上传',
'flash.viewServer' : '文件空间',
'media.url' : 'URL',
'media.urlTip': '多个 URL 使用英文逗号分隔',
'media.width' : '宽度',
'media.height' : '高度',
'media.autostart' : '自动播放',
'media.upload' : '上传',
'media.viewServer' : '文件空间',
'media.controls': '播放控件',
'image.remoteImage' : '网络图片',
'image.localImage' : '本地上传',
'image.remoteUrl' : '图片地址',
@@ -213,8 +212,6 @@ KindEditor.lang({
'FangSong_GB2312' : '仿宋_GB2312',
'KaiTi_GB2312' : '楷体_GB2312',
'SimHei' : '黑体',
'Source Han Sans': '思源黑体',
'Source Han Serif': '思源宋体',
'Microsoft YaHei' : '微软雅黑',
'Arial' : 'Arial',
'Arial Black' : 'Arial Black',
File diff suppressed because one or more lines are too long
Binary file not shown.
+1 -1
View File
@@ -191,7 +191,7 @@
<glyph unicode="&#xe9a7;" glyph-name="more-alt" d="M36.571 804.571v-1024M73.143 804.571v-1024M109.714 804.571v-1024M146.286 804.571v-1024M182.857 804.571v-1024M219.429 804.571v-1024M256 804.571v-1024M292.571 804.571v-1024M329.143 804.571v-1024M365.714 804.571v-1024M402.286 804.571v-1024M438.857 804.571v-1024M475.429 804.571v-1024M512 804.571v-1024M548.571 804.571v-1024M585.143 804.571v-1024M621.714 804.571v-1024M658.286 804.571v-1024M694.857 804.571v-1024M731.429 804.571v-1024M768 804.571v-1024M804.571 804.571v-1024M841.143 804.571v-1024M877.714 804.571v-1024M914.286 804.571v-1024M950.857 804.571v-1024M987.429 804.571v-1024M0 768h1024M0 731.428h1024M0 694.857h1024M0 658.285h1024M0 621.714h1024M0 585.142h1024M0 548.571h1024M0 512h1024M0 475.428h1024M0 438.857h1024M0 402.285h1024M0 365.714h1024M0 329.142h1024M0 292.571h1024M0 256h1024M0 219.428h1024M0 182.857h1024M0 146.285h1024M0 109.714h1024M0 73.142h1024M0 36.571h1024M0 0h1024M0-36.572h1024M0-73.143h1024M0-109.715h1024M0-146.286h1024M0-182.858h1024M512-219.429c-282.331 0-512 229.669-512 512s229.669 512 512 512c282.331 0 512-229.669 512-512s-229.669-512-512-512zM512 731.428c-242.003 0-438.857-196.854-438.857-438.857s196.854-438.857 438.857-438.857c242.001 0 438.857 196.854 438.857 438.857s-196.854 438.857-438.857 438.857zM742.857 270.107c0-3.707-1.851-7.878-4.626-10.659l-215.59-215.957c-2.776-2.781-6.94-4.634-10.641-4.634s-7.865 1.854-10.641 4.634l-215.59 215.957c-2.776 2.781-4.626 6.951-4.626 10.659s1.851 7.878 4.626 10.659l23.132 23.171c2.776 2.781 6.477 4.634 10.641 4.634 3.701 0 7.865-1.854 10.641-4.634l181.817-182.127 181.817 182.127c2.776 2.781 6.94 4.634 10.641 4.634s7.865-1.854 10.641-4.634l23.132-23.171c2.776-2.781 4.626-6.951 4.626-10.659zM742.857 473.535c0-3.707-1.851-7.878-4.626-10.659l-215.59-215.957c-2.776-2.781-6.94-4.634-10.641-4.634s-7.865 1.854-10.641 4.634l-215.59 215.957c-2.776 2.781-4.626 6.951-4.626 10.659s1.851 7.878 4.626 10.659l23.132 23.171c2.776 2.781 6.477 4.634 10.641 4.634 3.701 0 7.865-1.854 10.641-4.634l181.817-182.127 181.817 182.127c2.776 2.781 6.94 4.634 10.641 4.634s7.865-1.854 10.641-4.634l23.132-23.171c2.776-2.781 4.626-6.951 4.626-10.659z" />
<glyph unicode="&#xe9a8;" glyph-name="list, format-list-bulleted" d="M74.278 678.363c-41.028 0-74.278-33.069-74.278-73.84s33.25-73.83 74.278-73.83c41.028 0 74.278 33.059 74.278 73.83s-33.25 73.84-74.278 73.84zM993.42 682.6h-730.258c-16.912 0-30.58-13.615-30.58-30.398v-84.171c0-16.793 13.667-30.398 30.58-30.398h730.258c16.89 0 30.58 13.605 30.58 30.398v84.171c0 16.784-13.692 30.398-30.58 30.398zM993.42 360.399h-730.258c-16.912 0-30.58-13.605-30.58-30.408v-84.172c0-16.783 13.667-30.398 30.58-30.398h730.258c16.89 0 30.58 13.615 30.58 30.398v84.172c0 16.806-13.692 30.408-30.58 30.408zM993.42 38.187h-730.258c-16.912 0-30.58-13.604-30.58-30.388v-84.172c0-16.781 13.667-30.407 30.58-30.407h730.258c16.89 0 30.58 13.626 30.58 30.407v84.172c0 16.783-13.692 30.388-30.58 30.388zM74.278 356.161c-41.028 0-74.278-33.058-74.278-73.841 0-40.773 33.25-73.83 74.278-73.83s74.278 33.058 74.278 73.83c0 40.781-33.25 73.841-74.278 73.841v0zM74.278 33.947c-41.028 0-74.278-33.058-74.278-73.828 0-40.773 33.25-73.83 74.278-73.83s74.278 33.058 74.278 73.83c0 40.771-33.25 73.828-74.278 73.828z" />
<glyph unicode="&#xe9a9;" glyph-name="run" d="M748.118 179.312l-132.404 64.575c44.564 15.435 103.161 50.2 103.048 126.351v7.566c7.566 6.809 15.132 13.58 22.697 20.428 26.48 23.757 23.681 58.9-5.675 78.572-55.231 36.998-110.803 73.465-166.11 110.386v0c-11.761 8.195-26.594 10.641-40.364 6.658-55.534-15.397-111.030-31.021-166.072-48.006v0c-10.618-3.971-19.828-10.985-26.48-20.163-12.030-15.888-10.214-38.737 1.475-54.324v0c12.265-16.322 33.46-23.18 52.962-17.137 44.942 12.522 89.656 25.724 134.636 38.057v0c5.216 1.174 10.682 0.351 15.321-2.308 25.989-16.494 51.486-33.706 77.135-50.73 4.35-2.875 8.511-5.977 13.391-9.419-3.783-3.783-6.771-6.544-9.836-9.306l-43.277-38.587h-416.202v-23.265h390.402c-27.112-24.161-54.21-48.359-81.295-72.595v0c-9.441-7.941-16.149-18.646-19.179-30.604h-452.292v-23.416h453.578c4.274-12.333 14.299-23.379 29.999-31.058 36.821-18.032 73.68-35.988 110.576-53.87 23.114-11.349 46.228-22.697 70.325-34.463-2.572-4.464-4.539-8.020-6.658-11.349-30.491-49.456-60.994-98.912-91.509-148.368-19.709-32.118-4.426-68.093 31.777-75.659 18.688-3.783 37.83 5.41 49.746 24.665 41.184 66.529 82.267 133.11 123.25 199.741 19.974 32.496 11.614 60.754-22.962 77.627v0.001zM585.866 259.058l14.489 13.013c31.423 28.019 62.861 56.038 94.31 84.057-8.209-65.71-73.806-89.165-108.799-97.033v-0.037zM429.857 219.374c-3.405-4.88-5.826-8.209-8.057-11.651-21.639-33.479-43.050-67.109-65.067-100.324v0c-4.152-6.226-9.63-11.459-16.040-15.321-71.385-41.613-143.109-83.035-214.646-124.838-25.081-14.602-32.95-42.937-19.218-66.581s42.672-30.756 67.299-16.645c77.273 44.564 154.433 89.291 231.48 134.181v0c8.396 5.093 15.575 11.962 21.033 20.125 24.703 36.922 48.497 74.449 72.595 111.749 1.551 2.383 2.762 4.956 4.464 8.057-29.621 14.602-61.511 25.119-73.843 61.247v0zM818.329 483.613v0c62.155-0.146 112.662 50.123 112.808 112.279s-50.123 112.662-112.279 112.808c-62.155 0.146-112.662-50.123-112.808-112.279 0-0.164 0-0.328 0-0.491v0.001c0.187-61.938 50.34-112.109 112.278-112.318h0.001zM1022.609 488.985c-4.313 18.461-15.813 31.247-34.274 36.014-19.218 4.956-35.901-0.302-49.481-15.132-31.814-34.954-63.781-69.758-95.747-104.94l-52.28 34.765c1.929-39.267-21.261-61.965-48.46-83.225 29.81-19.861 57.69-39.57 86.705-57.388 18.082-11.122 41.613-6.507 56.291 9.571 42.47 46.001 84.688 92.342 126.654 139.024v0c10.363 11.053 14.358 26.635 10.592 41.31h0.001z" />
<glyph unicode="&#xe9aa;" glyph-name="program" d="M356.409 332h-236.327c-65.188 0.094-118.023 52.891-118.164 118.078v236.327c0 65.134 53.029 118.164 118.164 118.164h236.327c65.134 0 118.078-53.029 118.078-118.164v-236.327c0-65.134-52.943-118.078-118.078-118.078v0zM120.082 725.879v0c-21.767-0.048-39.388-17.706-39.388-39.473v-236.327c0-21.655 17.648-39.388 39.388-39.388h236.327c21.734 0.046 39.341 17.654 39.388 39.388v236.327c-0.046 21.734-17.654 39.341-39.388 39.388l-236.327 0.086zM356.409-219.429h-236.327c-65.221 0.094-118.070 52.942-118.164 118.164v236.327c0 65.134 53.029 118.164 118.164 118.164h236.327c65.134 0 118.078-53.029 118.078-118.164v-236.327c0-65.134-52.943-118.164-118.078-118.164v0zM120.082 174.535v0c-21.753 0-39.388-17.635-39.388-39.388v-236.327c0-21.74 17.648-39.388 39.388-39.388h236.327c21.753 0 39.388 17.635 39.388 39.388v236.242c0 21.753-17.635 39.388-39.388 39.388l-236.327 0.085zM903.917 332.087h-236.327c-65.188 0.094-118.023 52.891-118.164 118.078v236.242c0 65.134 53.029 118.164 118.164 118.164h236.327c65.134 0 118.164-53.029 118.164-118.164v-236.327c0-65.134-53.029-118.078-118.164-118.078v0.085zM667.59 725.88v0c-21.753 0-39.388-17.635-39.388-39.388 0-0.029 0-0.057 0-0.086v-236.327c0-21.655 17.648-39.388 39.388-39.388h236.327c21.753 0 39.388 17.635 39.388 39.388v236.327c0 21.753-17.635 39.388-39.388 39.388 0 0 0 0 0 0l-236.327 0.086zM903.917-219.428h-236.327c-65.221 0.094-118.070 52.942-118.164 118.164v236.327c0 65.134 53.029 118.164 118.164 118.164h236.327c65.134 0 118.164-53.029 118.164-118.164v-236.327c0-65.134-53.029-118.164-118.164-118.164v0zM667.59 174.536v0c-21.753 0-39.388-17.635-39.388-39.388v-236.327c0-21.74 17.648-39.388 39.388-39.388h236.327c21.753 0 39.388 17.635 39.388 39.388v236.242c0 21.753-17.635 39.388-39.388 39.388l-236.327 0.085z" />
<glyph unicode="&#xe9aa;" glyph-name="program" d="M378.639 326.367h-202.57c-55.876 0.076-101.163 45.335-101.284 101.21v202.57c0 55.828 45.448 101.284 101.284 101.284h202.57c55.828 0 101.21-45.448 101.21-101.284v-202.57c0-55.828-45.376-101.21-101.21-101.21v0zM176.072 663.975v0c-18.652-0.040-33.76-15.172-33.76-33.832v-202.57c0-18.556 15.124-33.76 33.76-33.76h202.57c18.628 0.040 33.721 15.132 33.76 33.76v202.57c-0.040 18.628-15.132 33.721-33.76 33.76l-202.57 0.074zM378.639-146.288h-202.57c-55.9 0.076-101.205 45.376-101.284 101.284v202.57c0 55.828 45.448 101.284 101.284 101.284h202.57c55.828 0 101.21-45.448 101.21-101.284v-202.57c0-55.828-45.376-101.284-101.21-101.284v0zM176.072 191.396v0c-18.64 0-33.76-15.112-33.76-33.76v-202.57c0-18.634 15.124-33.76 33.76-33.76h202.57c18.64 0 33.76 15.112 33.76 33.76v202.498c0 18.64-15.112 33.76-33.76 33.76l-202.57 0.073zM847.929 326.439h-202.57c-55.876 0.076-101.163 45.335-101.284 101.21v202.498c0 55.828 45.448 101.284 101.284 101.284h202.57c55.828 0 101.284-45.448 101.284-101.284v-202.57c0-55.828-45.448-101.21-101.284-101.21v0.073zM645.361 663.975v0c-18.64 0-33.76-15.112-33.76-33.76 0-0.025 0-0.049 0-0.074v-202.57c0-18.556 15.124-33.76 33.76-33.76h202.57c18.64 0 33.76 15.112 33.76 33.76v202.57c0 18.64-15.112 33.76-33.76 33.76 0 0 0 0 0 0l-202.57 0.074zM847.929-146.286h-202.57c-55.9 0.076-101.205 45.376-101.284 101.284v202.57c0 55.828 45.448 101.284 101.284 101.284h202.57c55.828 0 101.284-45.448 101.284-101.284v-202.57c0-55.828-45.448-101.284-101.284-101.284v0zM645.361 191.397v0c-18.64 0-33.76-15.112-33.76-33.76v-202.57c0-18.634 15.124-33.76 33.76-33.76h202.57c18.64 0 33.76 15.112 33.76 33.76v202.498c0 18.64-15.112 33.76-33.76 33.76l-202.57 0.073z" />
<glyph unicode="&#xe9ab;" glyph-name="alter" d="M207.461-190.178l200.355 202.59h-148.075v332.852c0 20.361 16.506 36.866 36.866 36.866h371.016v97.533h-425.961c-24.062 0-46.609-11.74-60.406-31.453-4.477-6.398-8.065-12.407-10.762-18.029-6.749-14.067-10.023-30.084-9.823-48.051v0-369.718h-160.671l207.461-202.59zM816.539 775.319l-200.355-202.59h148.075v-332.852c0-20.361-16.506-36.866-36.866-36.866h-371.016v-97.533h443.634c28.279 0 52.263 20.776 56.294 48.767l5.769 40.051c0.836 5.803 1.255 11.658 1.255 17.52v360.913h160.671l-207.461 202.59z" />
<glyph unicode="&#xf016;" glyph-name="file, file-empty" horiz-adv-x="878" d="M838.857 587.428c21.143-21.143 38.857-63.429 38.857-93.714v-658.286c0-30.286-24.571-54.857-54.857-54.857h-768c-30.286 0-54.857 24.571-54.857 54.857v914.286c0 30.286 24.571 54.857 54.857 54.857h512c30.286 0 72.571-17.714 93.714-38.857zM585.143 726.857v-214.857h214.857c-3.429 9.714-8.571 19.429-12.571 23.429l-178.857 178.857c-4 4-13.714 9.143-23.429 12.571zM804.571-146.286v585.143h-237.714c-30.286 0-54.857 24.571-54.857 54.857v237.714h-438.857v-877.714h731.429z" />
<glyph unicode="&#xf02d;" glyph-name="book" d="M948.764 510.653c13.529-19.482 17.318-44.918 9.741-69.81l-148.822-490.3c-13.529-45.999-61.152-81.716-107.693-81.716h-499.501c-55.199 0-114.186 43.835-134.21 100.116-8.658 24.352-8.658 48.165-1.083 68.728 1.083 10.823 3.248 21.647 3.789 34.635 0.541 8.658-4.329 15.694-3.248 22.188 2.165 12.988 13.529 22.188 22.188 36.799 16.235 27.058 34.635 70.893 40.587 99.033 2.706 10.281-2.706 22.188 0 31.388 2.706 10.281 12.988 17.859 18.401 27.6 14.612 24.894 33.554 73.058 36.259 98.493 1.083 11.364-4.329 23.811-1.083 32.471 3.789 12.447 15.694 17.859 23.811 28.682 12.988 17.859 34.635 69.269 37.881 97.952 1.083 9.199-4.329 18.401-2.706 28.14 2.165 10.281 15.153 21.106 23.811 33.554 22.728 33.554 27.058 107.693 95.787 88.211l-0.541-1.623c9.199 2.165 18.401 4.871 27.6 4.871h411.831c25.434 0 48.165-11.364 61.694-30.306 14.070-19.482 17.318-44.918 9.741-70.352l-148.281-490.3c-25.434-83.34-39.505-101.74-108.235-101.74h-470.277c-7.035 0-15.694-1.623-20.565-8.117-4.329-6.495-4.871-11.364-0.541-23.269 10.823-31.388 48.165-37.881 77.93-37.881h499.501c20.024 0 43.293 11.364 49.247 30.846l162.352 534.135c3.248 10.281 3.248 21.106 2.706 30.846 12.447-4.871 23.811-12.447 31.929-23.269zM372.959 509.57c-3.248-9.741 2.165-17.318 11.905-17.318h329.032c9.199 0 19.482 7.576 22.728 17.318l11.364 34.635c3.248 9.741-2.165 17.318-11.905 17.318h-329.032c-9.199 0-19.482-7.576-22.728-17.318zM328.043 371.031c-3.248-9.741 2.165-17.318 11.905-17.318h329.032c9.199 0 19.482 7.576 22.728 17.318l11.364 34.635c3.248 9.741-2.165 17.318-11.905 17.318h-329.032c-9.199 0-19.482-7.576-22.728-17.318z" />

Before

Width:  |  Height:  |  Size: 189 KiB

After

Width:  |  Height:  |  Size: 189 KiB

Binary file not shown.
Binary file not shown.
@@ -1,4 +1,4 @@
<?php
$lang->client->menu = $lang->admin->menu;
$lang->client->common = '客户端版本更新';
$lang->client->browseVersion = '版本列表';
@@ -3,14 +3,17 @@ $lang->xuanxuan = new stdclass();
$lang->admin->menu->xuanxuan = array('link' => '客户端|admin|xuanxuan', 'subModule' => 'client,setting');
$lang->admin->menuOrder[6] = 'xuanxuan';
$lang->admin->subMenu->xuanxuan = new stdclass();
$lang->admin->subMenu->xuanxuan->index = array('link' => '首页|admin|xuanxuan');
$lang->admin->subMenu->xuanxuan->setting = array('link' => '参数|setting|xuanxuan');
$lang->admin->subMenu->xuanxuan->update = array('link' => '更新|client|browse', 'subModule' => 'client');
$lang->admin->subMenuOrder->xuanxuan[0] = 'index';
$lang->admin->subMenuOrder->xuanxuan[5] = 'setting';
$lang->admin->subMenuOrder->xuanxuan[10] = 'update';
$lang->admin->menu->xuanxuan['subMenu'] = new stdclass();
$lang->admin->menu->xuanxuan['subMenu']->index = array('link' => '首页|admin|xuanxuan');
$lang->admin->menu->xuanxuan['subMenu']->setting = array('link' => '参数|setting|xuanxuan');
$lang->admin->menu->xuanxuan['subMenu']->update = array('link' => '更新|client|browse', 'subModule' => 'client');
$lang->menugroup->client = 'admin';
$lang->admin->menu->xuanxuan['menuOrder'][0] = 'index';
$lang->admin->menu->xuanxuan['menuOrder'][5] = 'setting';
$lang->admin->menu->xuanxuan['menuOrder'][10] = 'update';
$lang->navGroup->im = 'admin';
$lang->navGroup->setting = 'admin';
$lang->navGroup->client = 'admin';
$lang->confirmDelete = '您确定要执行删除操作吗?';