+ finish task #2279.

This commit is contained in:
wangyidong
2015-09-07 09:23:21 +08:00
parent 84987d9019
commit 474e1fe5bd
28 changed files with 1190 additions and 2 deletions
+34
View File
@@ -158,4 +158,38 @@ class admin extends control
$this->view->weakUsers = $this->loadModel('user')->getWeakUsers();
$this->display();
}
/**
* Config sso for ranzhi.
*
* @access public
* @return void
*/
public function sso()
{
if(!empty($_POST))
{
$ssoConfig = new stdclass();
$ssoConfig->turnon = $this->post->turnon;
$ssoConfig->addr = $this->post->addr;
$ssoConfig->code = trim($this->post->code);
$ssoConfig->key = trim($this->post->key);
$this->loadModel('setting')->setItems('system.sso', $ssoConfig);
if(dao::isError()) die(js::error(dao::getError()));
die($this->locate(inlink('sso')));
}
$this->loadModel('sso');
if(!isset($this->config->sso)) $this->config->sso = new stdclass();
$this->view->title = $this->lang->admin->sso;
$this->view->position[] = $this->lang->admin->sso;
$this->view->turnon = isset($this->config->sso->turnon) ? $this->config->sso->turnon : 1;
$this->view->addr = isset($this->config->sso->addr) ? $this->config->sso->addr : '';
$this->view->key = isset($this->config->sso->key) ? $this->config->sso->key : '';
$this->view->code = isset($this->config->sso->code) ? $this->config->sso->code : '';
$this->display();
}
}
+1
View File
@@ -15,6 +15,7 @@ $lang->admin->checkDB = 'Repair data';
$lang->admin->company = 'Company';
$lang->admin->user = 'User';
$lang->admin->group = 'Group';
$lang->admin->sso = 'Integrate RanZhi';
$lang->admin->safeIndex = 'Safe';
$lang->admin->checkWeak = 'Check weak';
$lang->admin->welcome = 'Welcome to ZenTaoPMS.';
+1
View File
@@ -15,6 +15,7 @@ $lang->admin->checkDB = '检查数据库';
$lang->admin->company = '公司管理';
$lang->admin->user = '用户管理';
$lang->admin->group = '分组管理';
$lang->admin->sso = '然之集成';
$lang->admin->safeIndex = '安全';
$lang->admin->checkWeak = '弱口令检查';
$lang->admin->welcome = '欢迎使用禅道管理软件后台管理系统';
+47
View File
@@ -0,0 +1,47 @@
<?php
/**
* The sso view file of admin module of ZenTaoPMS.
*
* @copyright Copyright 2009-2015 青岛易软天创网络科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com)
* @license ZPL (http://zpl.pub/page/zplv11.html)
* @author Yidong Wang <yidong@cnezsoft.com>
* @package admin
* @version $Id$
* @link http://www.zentao.net
*/
?>
<?php include '../../common/view/header.html.php'; ?>
<div class='container mw-700px'>
<div id='titlebar'>
<div class='heading'>
<strong><?php echo $lang->admin->sso;?></strong>
<small class='text-muted'> <?php echo $lang->sso->settings;?> <?php echo html::icon('pencil');?></small>
</div>
</div>
<form class='form-condensed' method='post' id='dataform'>
<table class='table table-form'>
<tr>
<th class='rowhead w-120px'><?php echo $lang->sso->turnon; ?></th>
<td><?php echo html::radio('turnon', $lang->sso->turnonList, $turnon);?></td>
</tr>
<tr>
<th><?php echo $lang->sso->addr; ?></th>
<td><?php echo html::input('addr', $addr, "class='form-control' placeholder='{$lang->sso->addrNotice}'");?></td>
</tr>
<tr>
<th><?php echo $lang->sso->code; ?></th>
<td><?php echo html::input('code', $code, "class='form-control'");?></td>
</tr>
<tr>
<th><?php echo $lang->sso->key; ?></th>
<td><?php echo html::input('key', $key, "class='form-control'");?></td>
</tr>
<tr>
<td colspan='2' class='text-center'>
<?php echo html::submitButton(); ?>
</td>
</tr>
</table>
</form>
</div>
<?php include '../../common/view/footer.html.php';?>
+174
View File
@@ -0,0 +1,174 @@
<?php
/**
* The control file of block of ZenTaoPMS.
*
* @copyright Copyright 2009-2015 青岛易软天创网络科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com)
* @license ZPL (http://zpl.pub/page/zplv11.html)
* @author Yidong Wang <yidong@cnezsoft.com>
* @package block
* @version $Id$
* @link http://www.zentao.net
*/
class block extends control
{
/**
* Main function.
*
* @access public
* @return void
*/
public function main()
{
$lang = $this->get->lang;
$this->app->setClientLang($lang);
$this->app->loadLang('common');
$this->app->loadLang('block');
$mode = strtolower($this->get->mode);
if($mode == 'getblocklist')
{
echo $this->block->getAvailableBlocks();
}
elseif($mode == 'getblockform')
{
$code = strtolower($this->get->blockid);
$func = 'get' . ucfirst($code) . 'Params';
echo $this->block->$func();
}
elseif($mode == 'getblockdata')
{
$code = strtolower($this->get->blockid);
$params = $this->get->param;
$params = json_decode(base64_decode($params));
$sso = base64_decode($this->get->sso);
if(!isset($this->app->user)) $this->app->user = new stdclass();
if(!isset($this->app->user->account) or $this->app->user->account != $params->account) $this->app->user->account = $params->account;
$this->params = $params;
$this->view->sso = $sso;
$this->view->sign = strpos($sso, '&') === false ? '?' : '&';
$this->view->code = $this->get->blockid;
$func = 'print' . ucfirst($code) . 'Block';
$this->$func();
}
}
/**
* Print todo block.
*
* @access public
* @return void
*/
public function printTodoBlock()
{
$this->view->todos = $this->loadModel('todo')->getList('all', $this->app->user->account, 'wait, doing', $this->params->num);
$this->display();
}
/**
* Print task block.
*
* @access public
* @return void
*/
public function printTaskBlock()
{
$this->view->tasks = $this->loadModel('task')->getUserTasks($this->app->user->account, $this->params->type, $this->params->num, null, $this->params->orderBy);
$this->display();
}
/**
* Print bug block.
*
* @access public
* @return void
*/
public function printBugBlock()
{
$this->view->bugs = $this->loadModel('bug')->getUserBugs($this->app->user->account, $this->params->type, $this->params->orderBy, $this->params->num);
$this->display();
}
/**
* Print case block.
*
* @access public
* @return void
*/
public function printCaseBlock()
{
$this->app->loadLang('testcase');
$this->app->loadLang('testtask');
$cases = array();
if($this->params->type == 'assigntome')
{
$cases = $this->dao->select('t1.assignedTo AS assignedTo, t2.*')->from(TABLE_TESTRUN)->alias('t1')
->leftJoin(TABLE_CASE)->alias('t2')->on('t1.case = t2.id')
->leftJoin(TABLE_TESTTASK)->alias('t3')->on('t1.task = t3.id')
->Where('t1.assignedTo')->eq($this->app->user->account)
->andWhere('t1.status')->ne('done')
->andWhere('t3.status')->ne('done')
->andWhere('t3.deleted')->eq(0)
->andWhere('t2.deleted')->eq(0)
->orderBy($this->params->orderBy)->limit($this->params->num)->fetchAll();
}
elseif($this->params->type == 'openedbyme')
{
$cases = $this->dao->findByOpenedBy($this->app->user->account)->from(TABLE_CASE)
->andWhere('deleted')->eq(0)
->orderBy($this->params->orderBy)->limit($this->params->num)->fetchAll();
}
$this->view->cases = $cases;
$this->display();
}
/**
* Print story block.
*
* @access public
* @return void
*/
public function printStoryBlock()
{
$this->app->loadClass('pager', $static = true);
$pager = pager::init(0, $this->params->num, 1);
$this->view->stories = $this->loadModel('story')->getUserStories($this->app->user->account, $this->params->type, $this->params->orderBy, $pager);
$this->display();
}
/**
* Print product block.
*
* @access public
* @return void
*/
public function printProductBlock()
{
$this->app->loadClass('pager', $static = true);
$pager = pager::init(0, $this->params->num, 1);
$this->view->productStats = $this->loadModel('product')->getStats('code_asc', $pager);
$this->display();
}
/**
* Print project block.
*
* @access public
* @return void
*/
public function printProjectBlock()
{
$this->app->loadClass('pager', $static = true);
$pager = pager::init(0, $this->params->num, 1);
$this->view->projectStats = $this->loadModel('project')->getProjectStats($status = 'undone', $productID = 0, $itemCounts = 30, $orderBy = 'code', $pager);
$this->display();
}
}
+86
View File
@@ -0,0 +1,86 @@
<?php
/**
* The en file of crm block module of RanZhi.
*
* @copyright Copyright 2009-2015 青岛易软天创网络科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com)
* @license ZPL (http://zpl.pub/page/zplv11.html)
* @author Yidong Wang <yidong@cnezsoft.com>
* @package block
* @version $Id$
* @link http://www.ranzhi.org
*/
$lang->block = new stdclass();
$lang->block->num = 'Number';
$lang->block->type = 'Type';
$lang->block->orderBy = 'Order';
$lang->block->status = 'Status';
$lang->block->actions = 'Action';
$lang->block->availableBlocks = new stdclass();
$lang->block->availableBlocks->todo = 'My todo';
$lang->block->availableBlocks->task = 'My task';
$lang->block->availableBlocks->bug = 'My bug';
$lang->block->availableBlocks->case = 'My case';
$lang->block->availableBlocks->story = 'My story';
$lang->block->availableBlocks->product = $lang->productCommon;
$lang->block->availableBlocks->project = $lang->projectCommon;
$lang->block->orderByList = new stdclass();
$lang->block->orderByList->task = array();
$lang->block->orderByList->task['id_asc'] = 'ID Increment';
$lang->block->orderByList->task['id_desc'] = 'ID Decreasing';
$lang->block->orderByList->task['pri_asc'] = 'Priority Increment';
$lang->block->orderByList->task['pri_desc'] = 'Priority Decreasing';
$lang->block->orderByList->task['estimate_asc'] = 'Estimate Increment';
$lang->block->orderByList->task['estimate_desc'] = 'Estimate Decreasing';
$lang->block->orderByList->task['status_asc'] = 'Status Increment';
$lang->block->orderByList->task['status_desc'] = 'Status Decreasing';
$lang->block->orderByList->task['deadline_asc'] = 'Deadline Increment';
$lang->block->orderByList->task['deadline_desc'] = 'Deadline Decreasing';
$lang->block->orderByList->bug = array();
$lang->block->orderByList->bug['id_asc'] = 'ID Increment';
$lang->block->orderByList->bug['id_desc'] = 'ID Decreasing';
$lang->block->orderByList->bug['pri_asc'] = 'Priority Increment';
$lang->block->orderByList->bug['pri_desc'] = 'Priority Decreasing';
$lang->block->orderByList->bug['severity_asc'] = 'Severity Increment';
$lang->block->orderByList->bug['severity_desc'] = 'Severity Decreasing';
$lang->block->orderByList->case = array();
$lang->block->orderByList->case['id_asc'] = 'ID Increment';
$lang->block->orderByList->case['id_desc'] = 'ID Decreasing';
$lang->block->orderByList->case['pri_asc'] = 'Priority Increment';
$lang->block->orderByList->case['pri_desc'] = 'Priority Decreasing';
$lang->block->orderByList->story = array();
$lang->block->orderByList->story['id_asc'] = 'ID Increment';
$lang->block->orderByList->story['id_desc'] = 'ID Decreasing';
$lang->block->orderByList->story['pri_asc'] = 'Priority Increment';
$lang->block->orderByList->story['pri_desc'] = 'Priority Decreasing';
$lang->block->orderByList->story['status_asc'] = 'Status Increment';
$lang->block->orderByList->story['status_desc'] = 'Status Decreasing';
$lang->block->orderByList->story['stage_asc'] = 'Stage Increment';
$lang->block->orderByList->story['stage_desc'] = 'Stage Decreasing';
$lang->block->typeList = new stdclass();
$lang->block->typeList->task['assignedTo'] = 'Assigned to';
$lang->block->typeList->task['openedBy'] = 'Opened by';
$lang->block->typeList->task['finishedBy'] = 'Finished by';
$lang->block->typeList->task['closedBy'] = 'Closed by';
$lang->block->typeList->task['canceledBy'] = 'Canceled by';
$lang->block->typeList->bug['assignedTo'] = 'Assigned to';
$lang->block->typeList->bug['openedBy'] = 'Opened by';
$lang->block->typeList->bug['resolvedBy'] = 'Resolved by';
$lang->block->typeList->bug['closedBy'] = 'Closed by';
$lang->block->typeList->case['assigntome'] = 'Assign to me';
$lang->block->typeList->case['openedbyme'] = 'Opened by me';
$lang->block->typeList->story['assignedTo'] = 'Assigned to';
$lang->block->typeList->story['openedBy'] = 'Opened by';
$lang->block->typeList->story['reviewedBy'] = 'Reviewed by';
$lang->block->typeList->story['closedBy'] = 'Closed by';
+86
View File
@@ -0,0 +1,86 @@
<?php
/**
* The zh-cn file of crm block module of RanZhi.
*
* @copyright Copyright 2009-2015 青岛易软天创网络科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com)
* @license ZPL (http://zpl.pub/page/zplv11.html)
* @author Yidong Wang <yidong@cnezsoft.com>
* @package block
* @version $Id$
* @link http://www.ranzhi.org
*/
$lang->block = new stdclass();
$lang->block->num = '数量';
$lang->block->type = '类型';
$lang->block->orderBy = '排序';
$lang->block->status = '状态';
$lang->block->actions = '操作';
$lang->block->availableBlocks = new stdclass();
$lang->block->availableBlocks->todo = '我的待办';
$lang->block->availableBlocks->task = '我的任务';
$lang->block->availableBlocks->bug = '我的Bug';
$lang->block->availableBlocks->case = '我的用例';
$lang->block->availableBlocks->story = '我的需求';
$lang->block->availableBlocks->product = $lang->productCommon . '列表';
$lang->block->availableBlocks->project = $lang->projectCommon . '列表';
$lang->block->orderByList = new stdclass();
$lang->block->orderByList->task = array();
$lang->block->orderByList->task['id_asc'] = 'ID 递增';
$lang->block->orderByList->task['id_desc'] = 'ID 递减';
$lang->block->orderByList->task['pri_asc'] = '优先级递增';
$lang->block->orderByList->task['pri_desc'] = '优先级递减';
$lang->block->orderByList->task['estimate_asc'] = '预计时间递增';
$lang->block->orderByList->task['estimate_desc'] = '预计时间递减';
$lang->block->orderByList->task['status_asc'] = '状态正序';
$lang->block->orderByList->task['status_desc'] = '状态倒序';
$lang->block->orderByList->task['deadline_asc'] = '截止日期递增';
$lang->block->orderByList->task['deadline_desc'] = '截止日期递减';
$lang->block->orderByList->bug = array();
$lang->block->orderByList->bug['id_asc'] = 'ID 递增';
$lang->block->orderByList->bug['id_desc'] = 'ID 递减';
$lang->block->orderByList->bug['pri_asc'] = '优先级递增';
$lang->block->orderByList->bug['pri_desc'] = '优先级递减';
$lang->block->orderByList->bug['severity_asc'] = '级别递增';
$lang->block->orderByList->bug['severity_desc'] = '级别递减';
$lang->block->orderByList->case = array();
$lang->block->orderByList->case['id_asc'] = 'ID 递增';
$lang->block->orderByList->case['id_desc'] = 'ID 递减';
$lang->block->orderByList->case['pri_asc'] = '优先级递增';
$lang->block->orderByList->case['pri_desc'] = '优先级递减';
$lang->block->orderByList->story = array();
$lang->block->orderByList->story['id_asc'] = 'ID 递增';
$lang->block->orderByList->story['id_desc'] = 'ID 递减';
$lang->block->orderByList->story['pri_asc'] = '优先级递增';
$lang->block->orderByList->story['pri_desc'] = '优先级递减';
$lang->block->orderByList->story['status_asc'] = '状态正序';
$lang->block->orderByList->story['status_desc'] = '状态倒序';
$lang->block->orderByList->story['stage_asc'] = '阶段正序';
$lang->block->orderByList->story['stage_desc'] = '阶段倒序';
$lang->block->typeList = new stdclass();
$lang->block->typeList->task['assignedTo'] = '指派给我';
$lang->block->typeList->task['openedBy'] = '由我创建';
$lang->block->typeList->task['finishedBy'] = '由我完成';
$lang->block->typeList->task['closedBy'] = '由我关闭';
$lang->block->typeList->task['canceledBy'] = '由我取消';
$lang->block->typeList->bug['assignedTo'] = '指派给我';
$lang->block->typeList->bug['openedBy'] = '由我创建';
$lang->block->typeList->bug['resolvedBy'] = '由我解决';
$lang->block->typeList->bug['closedBy'] = '由我关闭';
$lang->block->typeList->case['assigntome'] = '指派给我';
$lang->block->typeList->case['openedbyme'] = '由我创建';
$lang->block->typeList->story['assignedTo'] = '指派给我';
$lang->block->typeList->story['openedBy'] = '由我创建';
$lang->block->typeList->story['reviewedBy'] = '由我评审';
$lang->block->typeList->story['closedBy'] = '由我关闭';
+86
View File
@@ -0,0 +1,86 @@
<?php
/**
* The zh-tw file of crm block module of RanZhi.
*
* @copyright Copyright 2009-2015 青島易軟天創網絡科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com)
* @license ZPL (http://zpl.pub/page/zplv11.html)
* @author Yidong Wang <yidong@cnezsoft.com>
* @package block
* @version $Id$
* @link http://www.ranzhi.org
*/
$lang->block = new stdclass();
$lang->block->num = '數量';
$lang->block->type = '類型';
$lang->block->orderBy = '排序';
$lang->block->status = '狀態';
$lang->block->actions = '操作';
$lang->block->availableBlocks = new stdclass();
$lang->block->availableBlocks->todo = '我的待辦';
$lang->block->availableBlocks->task = '我的任務';
$lang->block->availableBlocks->bug = '我的Bug';
$lang->block->availableBlocks->case = '我的用例';
$lang->block->availableBlocks->story = '我的需求';
$lang->block->availableBlocks->product = $lang->productCommon . '列表';
$lang->block->availableBlocks->project = $lang->projectCommon . '列表';
$lang->block->orderByList = new stdclass();
$lang->block->orderByList->task = array();
$lang->block->orderByList->task['id_asc'] = 'ID 遞增';
$lang->block->orderByList->task['id_desc'] = 'ID 遞減';
$lang->block->orderByList->task['pri_asc'] = '優先順序遞增';
$lang->block->orderByList->task['pri_desc'] = '優先順序遞減';
$lang->block->orderByList->task['estimate_asc'] = '預計時間遞增';
$lang->block->orderByList->task['estimate_desc'] = '預計時間遞減';
$lang->block->orderByList->task['status_asc'] = '狀態正序';
$lang->block->orderByList->task['status_desc'] = '狀態倒序';
$lang->block->orderByList->task['deadline_asc'] = '截止日期遞增';
$lang->block->orderByList->task['deadline_desc'] = '截止日期遞減';
$lang->block->orderByList->bug = array();
$lang->block->orderByList->bug['id_asc'] = 'ID 遞增';
$lang->block->orderByList->bug['id_desc'] = 'ID 遞減';
$lang->block->orderByList->bug['pri_asc'] = '優先順序遞增';
$lang->block->orderByList->bug['pri_desc'] = '優先順序遞減';
$lang->block->orderByList->bug['severity_asc'] = '級別遞增';
$lang->block->orderByList->bug['severity_desc'] = '級別遞減';
$lang->block->orderByList->case = array();
$lang->block->orderByList->case['id_asc'] = 'ID 遞增';
$lang->block->orderByList->case['id_desc'] = 'ID 遞減';
$lang->block->orderByList->case['pri_asc'] = '優先順序遞增';
$lang->block->orderByList->case['pri_desc'] = '優先順序遞減';
$lang->block->orderByList->story = array();
$lang->block->orderByList->story['id_asc'] = 'ID 遞增';
$lang->block->orderByList->story['id_desc'] = 'ID 遞減';
$lang->block->orderByList->story['pri_asc'] = '優先順序遞增';
$lang->block->orderByList->story['pri_desc'] = '優先順序遞減';
$lang->block->orderByList->story['status_asc'] = '狀態正序';
$lang->block->orderByList->story['status_desc'] = '狀態倒序';
$lang->block->orderByList->story['stage_asc'] = '階段正序';
$lang->block->orderByList->story['stage_desc'] = '階段倒序';
$lang->block->typeList = new stdclass();
$lang->block->typeList->task['assignedTo'] = '指派給我';
$lang->block->typeList->task['openedBy'] = '由我創建';
$lang->block->typeList->task['finishedBy'] = '由我完成';
$lang->block->typeList->task['closedBy'] = '由我關閉';
$lang->block->typeList->task['canceledBy'] = '由我取消';
$lang->block->typeList->bug['assignedTo'] = '指派給我';
$lang->block->typeList->bug['openedBy'] = '由我創建';
$lang->block->typeList->bug['resolvedBy'] = '由我解決';
$lang->block->typeList->bug['closedBy'] = '由我關閉';
$lang->block->typeList->case['assigntome'] = '指派給我';
$lang->block->typeList->case['openedbyme'] = '由我創建';
$lang->block->typeList->story['assignedTo'] = '指派給我';
$lang->block->typeList->story['openedBy'] = '由我創建';
$lang->block->typeList->story['reviewedBy'] = '由我評審';
$lang->block->typeList->story['closedBy'] = '由我關閉';
+162
View File
@@ -0,0 +1,162 @@
<?php
/**
* The model file of block module of ZenTaoPMS.
*
* @copyright Copyright 2009-2015 青岛易软天创网络科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com)
* @license ZPL (http://zpl.pub/page/zplv11.html)
* @author Yidong Wang <yidong@cnezsoft.com>
* @package block
* @version $Id$
* @link http://www.zentao.net
*/
class blockModel extends model
{
/**
* Get block list.
*
* @access public
* @return string
*/
public function getAvailableBlocks()
{
return json_encode($this->lang->block->availableBlocks);
}
/**
* Get todo params.
*
* @access public
* @return json
*/
public function getTodoParams()
{
return $this->getProductParams();
}
/**
* Get task params.
*
* @access public
* @return string
*/
public function getTaskParams()
{
$params = new stdclass();
$params->type['name'] = $this->lang->block->type;
$params->type['options'] = $this->lang->block->typeList->task;
$params->type['control'] = 'select';
$params->num['name'] = $this->lang->block->num;
$params->num['default'] = 20;
$params->num['control'] = 'input';
$params->orderBy['name'] = $this->lang->block->orderBy;
$params->orderBy['default'] = 'id_desc';
$params->orderBy['options'] = $this->lang->block->orderByList->task;
$params->orderBy['control'] = 'select';
return json_encode($params);
}
/**
* Get Bug Params.
*
* @access public
* @return json
*/
public function getBugParams()
{
$params = new stdclass();
$params->type['name'] = $this->lang->block->type;
$params->type['options'] = $this->lang->block->typeList->bug;
$params->type['control'] = 'select';
$params->num['name'] = $this->lang->block->num;
$params->num['default'] = 20;
$params->num['control'] = 'input';
$params->orderBy['name'] = $this->lang->block->orderBy;
$params->orderBy['default'] = 'id_desc';
$params->orderBy['options'] = $this->lang->block->orderByList->bug;
$params->orderBy['control'] = 'select';
return json_encode($params);
}
/**
* Get case params.
*
* @access public
* @return json
*/
public function getCaseParams()
{
$params = new stdclass();
$params->type['name'] = $this->lang->block->type;
$params->type['options'] = $this->lang->block->typeList->case;
$params->type['control'] = 'select';
$params->num['name'] = $this->lang->block->num;
$params->num['default'] = 20;
$params->num['control'] = 'input';
$params->orderBy['name'] = $this->lang->block->orderBy;
$params->orderBy['default'] = 'id_desc';
$params->orderBy['options'] = $this->lang->block->orderByList->case;
$params->orderBy['control'] = 'select';
return json_encode($params);
}
/**
* Get story params.
*
* @access public
* @return json
*/
public function getStoryParams()
{
$params = new stdclass();
$params->type['name'] = $this->lang->block->type;
$params->type['options'] = $this->lang->block->typeList->story;
$params->type['control'] = 'select';
$params->num['name'] = $this->lang->block->num;
$params->num['default'] = 20;
$params->num['control'] = 'input';
$params->orderBy['name'] = $this->lang->block->orderBy;
$params->orderBy['default'] = 'id_desc';
$params->orderBy['options'] = $this->lang->block->orderByList->story;
$params->orderBy['control'] = 'select';
return json_encode($params);
}
/**
* Get product params.
*
* @access public
* @return json
*/
public function getProductParams()
{
$params = new stdclass();
$params->num['name'] = $this->lang->block->num;
$params->num['default'] = 20;
$params->num['control'] = 'input';
return json_encode($params);
}
/**
* Get project params.
*
* @access public
* @return json
*/
public function getProjectParams()
{
return $this->getProductParams();
}
}
+32
View File
@@ -0,0 +1,32 @@
<?php
/**
* The bug block view file of block module of RanZhi.
*
* @copyright Copyright 2009-2015 青岛易软天创网络科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com)
* @license ZPL (http://zpl.pub/page/zplv11.html)
* @author Yidong Wang <yidong@cnezsoft.com>
* @package block
* @version $Id$
* @link http://www.ranzhi.org
*/
?>
<table class='table table-data table-hover block-bug table-fixed'>
<thead>
<tr>
<th width='50'><?php echo $lang->idAB?></th>
<th width='40'><?php echo $lang->bug->severityAB?></th>
<th width='40'><?php echo $lang->priAB?></th>
<th> <?php echo $lang->bug->title;?></th>
</tr>
</thead>
<?php foreach($bugs as $bug):?>
<?php $appid = isset($_GET['entry']) ? "class='app-btn' data-id='{$this->get->entry}'" : ''?>
<tr data-url='<?php echo $sso . $sign . 'referer=' . base64_encode($this->createLink('bug', 'view', "bugID={$bug->id}")); ?>' <?php echo $appid?>>
<td><?php echo $bug->id;?></td>
<td><?php echo zget($lang->bug->severityList, $bug->severity, $bug->severity)?></td>
<td><?php echo zget($lang->bug->priList, $bug->pri, $bug->pri)?></td>
<td title='<?php echo $bug->title?>'><?php echo $bug->title?></td>
</tr>
<?php endforeach;?>
</table>
<script>$('.block-bug').dataTable();</script>
+36
View File
@@ -0,0 +1,36 @@
<?php
/**
* The case block view file of block module of RanZhi.
*
* @copyright Copyright 2009-2015 青岛易软天创网络科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com)
* @license ZPL (http://zpl.pub/page/zplv11.html)
* @author Yidong Wang <yidong@cnezsoft.com>
* @package block
* @version $Id$
* @link http://www.ranzhi.org
*/
?>
<table class='table table-data table-hover block-case table-fixed'>
<thead>
<tr>
<th width='50'><?php echo $lang->idAB?></th>
<th width='40'><?php echo $lang->priAB?></th>
<th> <?php echo $lang->case->title;?></th>
<th width='120'> <?php echo $lang->testtask->lastRunTime;?></th>
<th width='60'> <?php echo $lang->testtask->lastRunResult;?></th>
<th width='50'><?php echo $lang->statusAB;?></th>
</tr>
</thead>
<?php foreach($cases as $case):?>
<?php $appid = isset($_GET['entry']) ? "class='app-btn' data-id='{$this->get->entry}'" : ''?>
<tr data-url='<?php echo $sso . $sign . 'referer=' . base64_encode($this->createLink('testcase', 'view', "caseID={$case->id}")); ?>' <?php echo $appid?>>
<td><?php echo $case->id;?></td>
<td><?php echo zget($lang->case->priList, $case->pri, $case->pri)?></td>
<td title='<?php echo $case->title?>'><?php echo $case->title?></td>
<td><?php if(!helper::isZeroDate($case->lastRunDate)) echo date(DT_MONTHTIME1, strtotime($case->lastRunDate));?></td>
<td><?php if($case->lastRunResult) echo $lang->testcase->resultList[$case->lastRunResult];?></td>
<td><?php echo $lang->testcase->statusList[$case->status];?></td>
</tr>
<?php endforeach;?>
</table>
<script>$('.block-case').dataTable();</script>
+13
View File
@@ -0,0 +1,13 @@
<?php
/**
* The main view file of block module of ZentaoPMS.
*
* @copyright Copyright 2009-2015 青岛易软天创网络科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com)
* @license ZPL (http://zpl.pub/page/zplv11.html)
* @author Yidong Wang <yidong@cnezsoft.com>
* @package block
* @version $Id$
* @link http://www.ranzhi.org
*/
include "{$code}block.html.php";
?>
+42
View File
@@ -0,0 +1,42 @@
<?php
/**
* The product block view file of block module of ZenTaoPMS.
*
* @copyright Copyright 2009-2015 青岛易软天创网络科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com)
* @license ZPL (http://zpl.pub/page/zplv11.html)
* @author Yidong Wang <yidong@cnezsoft.com>
* @package block
* @version $Id$
* @link http://www.zentao.net
*/
?>
<table class='table table-data table-condensed table-hover table-striped table-fixed block-product'>
<thead>
<tr class='text-center'>
<th class='text-left'><i class="icon icon-cube"></i> <?php echo $lang->product->name;?></th>
<th width='35' title='<?php echo $lang->story->common;?>'><?php echo $lang->story->statusList['active'];?></th>
<th width='45' title='<?php echo $lang->story->common;?>'><?php echo $lang->story->statusList['changed'];?></th>
<th width='35' title='<?php echo $lang->story->common;?>'><?php echo $lang->story->statusList['draft'];?></th>
<th width='45'><?php echo $lang->product->plans;?></th>
<th width='45'><?php echo $lang->product->releases;?></th>
<th width='55' title='<?php echo $lang->bug->common;?>'><?php echo $lang->product->bugs;?></th>
<th width='45' title='<?php echo $lang->bug->common;?>'><?php echo $lang->bug->unResolved;?></th>
</tr>
</thead>
<tbody>
<?php foreach($productStats as $product):?>
<?php $appid = isset($_GET['entry']) ? "class='app-btn text-center' data-id='{$this->get->entry}'" : "class='text-center'"?>
<tr data-url='<?php echo $sso . $sign . 'referer=' . base64_encode($this->createLink('product', 'browse', 'productID=' . $product->id)); ?>' <?php echo $appid?>>
<td class='text-left' title='<?php echo $product->name?>'><?php echo $product->name?></td>
<td><?php echo $product->stories['active']?></td>
<td><?php echo $product->stories['changed']?></td>
<td><?php echo $product->stories['draft']?></td>
<td><?php echo $product->plans?></td>
<td><?php echo $product->releases?></td>
<td><?php echo $product->bugs?></td>
<td><?php echo $product->unResolved?></td>
</tr>
<?php endforeach;?>
</tbody>
</table>
<script>$('.block-product').dataTable();</script>
+41
View File
@@ -0,0 +1,41 @@
<?php
/**
* The project block view file of block module of ZenTaoPMS.
*
* @copyright Copyright 2009-2015 青岛易软天创网络科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com)
* @license ZPL (http://zpl.pub/page/zplv11.html)
* @author Yidong Wang <yidong@cnezsoft.com>
* @package block
* @version $Id$
* @link http://www.zentao.net
*/
?>
<table class='table table-data table-condensed table-hover table-striped table-fixed block-project'>
<thead>
<tr class='text-center'>
<th><div class='text-left'><i class="icon-folder-close-alt icon"></i> <?php echo $lang->project->name;?></div></th>
<th width='80'><?php echo $lang->project->end;?></th>
<th width='50'><?php echo $lang->statusAB;?></th>
<th width='45'><?php echo $lang->project->totalEstimate;?></th>
<th width='45'><?php echo $lang->project->totalConsumed;?></th>
<th width='45'><?php echo $lang->project->totalLeft;?></th>
<th width='45'><?php echo $lang->project->progess;?></th>
</tr>
</thead>
<tbody>
<?php $id = 0; ?>
<?php foreach($projectStats as $project):?>
<?php $appid = isset($_GET['entry']) ? "class='app-btn text-center' data-id='{$this->get->entry}'" : "class='text-center'"?>
<tr data-url='<?php echo $sso . $sign . 'referer=' . base64_encode($this->createLink('project', 'task', 'project=' . $project->id)); ?>' <?php echo $appid?>>
<td class='text-left' title='<?php echo $project->name;?>'><?php echo $project->name;?></td>
<td><?php echo $project->end;?></td>
<td><?php echo $lang->project->statusList[$project->status];?></td>
<td><?php echo $project->hours->totalEstimate;?></td>
<td><?php echo $project->hours->totalConsumed;?></td>
<td><?php echo $project->hours->totalLeft;?></td>
<td class='text-left'><?php echo $project->hours->progress;?>%</td>
</tr>
<?php endforeach;?>
</tbody>
</table>
<script>$('.block-project').dataTable();</script>
+36
View File
@@ -0,0 +1,36 @@
<?php
/**
* The story block view file of block module of RanZhi.
*
* @copyright Copyright 2009-2015 青岛易软天创网络科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com)
* @license ZPL (http://zpl.pub/page/zplv11.html)
* @author Yidong Wang <yidong@cnezsoft.com>
* @package block
* @version $Id$
* @link http://www.ranzhi.org
*/
?>
<table class='table table-data table-hover block-story table-fixed'>
<thead>
<tr>
<th width='50'><?php echo $lang->idAB?></th>
<th width='30'><?php echo $lang->priAB?></th>
<th> <?php echo $lang->story->title;?></th>
<th width='50'><?php echo $lang->story->estimateAB;?></th>
<th width='50'><?php echo $lang->statusAB;?></th>
<th width='60'><?php echo $lang->story->stageAB;?></th>
</tr>
</thead>
<?php foreach($stories as $story):?>
<?php $appid = isset($_GET['entry']) ? "class='app-btn' data-id='{$this->get->entry}'" : ''?>
<tr data-url='<?php echo $sso . $sign . 'referer=' . base64_encode($this->createLink('story', 'view', "storyID={$story->id}")); ?>' <?php echo $appid?>>
<td><?php echo $story->id;?></td>
<td><?php echo zget($lang->story->priList, $story->pri, $story->pri)?></td>
<td title='<?php echo $story->title?>'><?php echo $story->title?></td>
<td><?php echo $story->estimate?></td>
<td ><?php echo zget($lang->story->statusList, $story->status, $story->status);?></th>
<td ><?php echo zget($lang->story->stageList, $story->stage, $story->stage);?></th>
</tr>
<?php endforeach;?>
</table>
<script>$('.block-story').dataTable();</script>
+39
View File
@@ -0,0 +1,39 @@
<?php
/**
* The task block view file of block module of RanZhi.
*
* @copyright Copyright 2009-2015 青岛易软天创网络科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com)
* @license ZPL (http://zpl.pub/page/zplv11.html)
* @author Yidong Wang <yidong@cnezsoft.com>
* @package block
* @version $Id$
* @link http://www.ranzhi.org
*/
?>
<style>
td.delayed{background: #e84e0f!important; color: white;}
</style>
<table class='table table-data table-hover block-task table-fixed'>
<thead>
<tr>
<th width='50'><?php echo $lang->idAB?></th>
<th width='30'><?php echo $lang->priAB?></th>
<th> <?php echo $lang->task->name;?></th>
<th width='40'><?php echo $lang->task->estimateAB;?></th>
<th width='75'><?php echo $lang->task->deadline;?></th>
<th width='50'><?php echo $lang->statusAB;?></th>
</tr>
</thead>
<?php foreach($tasks as $task):?>
<?php $appid = isset($_GET['entry']) ? "class='app-btn' data-id='{$this->get->entry}'" : ''?>
<tr data-url='<?php echo $sso . $sign . 'referer=' . base64_encode($this->createLink('task', 'view', "taskID={$task->id}")); ?>' <?php echo $appid?>>
<td><?php echo $task->id;?></td>
<td><?php echo zget($lang->task->priList, $task->pri, $task->pri)?></td>
<td title='<?php echo $task->name?>'><?php echo $task->name?></td>
<td><?php echo $task->estimate?></td>
<td class='<?php if(isset($task->delay)) echo 'delayed';?>'><?php if(substr($task->deadline, 0, 4) > 0) echo $task->deadline;?></td>
<td ><?php echo zget($lang->task->statusList, $task->status, $task->status);?></th>
</tr>
<?php endforeach;?>
</table>
<script>$('.block-task').dataTable();</script>
+34
View File
@@ -0,0 +1,34 @@
<?php
/**
* The todo block view file of block module of RanZhi.
*
* @copyright Copyright 2009-2015 青岛易软天创网络科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com)
* @license ZPL (http://zpl.pub/page/zplv11.html)
* @author Yidong Wang <yidong@cnezsoft.com>
* @package block
* @version $Id$
* @link http://www.ranzhi.org
*/
?>
<table class='table table-data table-hover block-todo table-fixed'>
<thead>
<tr>
<th width='90'><?php echo $lang->todo->date?></th>
<th width='40'><?php echo $lang->priAB?></th>
<th> <?php echo $lang->todo->name;?></th>
<th width='50'><?php echo $lang->todo->beginAB;?></th>
<th width='50'><?php echo $lang->todo->endAB;?></th>
</tr>
</thead>
<?php foreach($todos as $id => $todo):?>
<?php $appid = isset($_GET['entry']) ? "class='app-btn' data-id='{$this->get->entry}'" : ''?>
<tr data-url='<?php echo $sso . $sign . 'referer=' . base64_encode($this->createLink('todo', 'view', "todoID={$todo->id}")); ?>' <?php echo $appid?>>
<td><?php echo $todo->date == '2030-01-01' ? $lang->todo->periods['future'] : $todo->date;?></td>
<td><?php echo zget($lang->todo->priList, $todo->pri, $todo->pri)?></td>
<td><?php echo $todo->name?></td>
<td><?php echo $todo->begin?></td>
<td><?php echo $todo->end?></td>
</tr>
<?php endforeach;?>
</table>
<script>$('.block-todo').dataTable();</script>
+1
View File
@@ -288,6 +288,7 @@ $lang->admin->menu->safe = array('link' => 'Safe|admin|safe', 'alias' => 'c
$lang->admin->menu->cron = array('link' => 'Cron|cron|index', 'subModule' => 'cron');
$lang->admin->menu->trashes = array('link' => 'Trash|action|trash', 'subModule' => 'action');
$lang->admin->menu->dev = array('link' => 'Develop|dev|api', 'alias' => 'db', 'subModule' => 'dev,editor');
$lang->admin->menu->sso = 'Integrate RanZhi|admin|sso';
$lang->convert = new stdclass();
$lang->upgrade = new stdclass();
+2 -1
View File
@@ -116,7 +116,8 @@ $lang->admin->menuOrder[45] = 'cron';
$lang->admin->menuOrder[50] = 'backup';
$lang->admin->menuOrder[55] = 'dev';
$lang->admin->menuOrder[60] = 'safe';
$lang->admin->menuOrder[65] = 'trashes';
$lang->admin->menuOrder[65] = 'sso';
$lang->admin->menuOrder[70] = 'trashes';
$lang->convert->menuOrder = $lang->admin->menuOrder;
$lang->upgrade->menuOrder = $lang->admin->menuOrder;
$lang->action->menuOrder = $lang->admin->menuOrder;
+1
View File
@@ -288,6 +288,7 @@ $lang->admin->menu->safe = array('link' => '安全|admin|safe', 'alias' =>
$lang->admin->menu->cron = array('link' => '计划任务|cron|index', 'subModule' => 'cron');
$lang->admin->menu->trashes = array('link' => '回收站|action|trash', 'subModule' => 'action');
$lang->admin->menu->dev = array('link' => '二次开发|dev|api', 'alias' => 'db', 'subModule' => 'dev,editor');
$lang->admin->menu->sso = '然之集成|admin|sso';
$lang->convert = new stdclass();
$lang->upgrade = new stdclass();
+4 -1
View File
@@ -147,7 +147,10 @@ class commonModel extends model
{
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 == 'ping') return true;
if($module == 'misc' and $method == 'ping') return true;
if($module == 'block' and $method == 'main') return true;
if($module == 'sso' and $method == 'login') return true;
if($module == 'sso' and $method == 'logout') return true;
if($this->loadModel('user')->isLogon())
{
+5
View File
@@ -725,9 +725,13 @@ $lang->resource->admin->index = 'index';
$lang->resource->admin->checkDB = 'checkDB';
$lang->resource->admin->safe = 'safeIndex';
$lang->resource->admin->checkWeak = 'checkWeak';
$lang->resource->admin->sso = 'sso';
$lang->admin->methodOrder[0] = 'index';
$lang->admin->methodOrder[5] = 'checkDB';
$lang->admin->methodOrder[10] = 'safeIndex';
$lang->admin->methodOrder[15] = 'checkWeak';
$lang->admin->methodOrder[20] = 'sso';
/* Extension. */
$lang->resource->extension = new stdclass();
@@ -1080,3 +1084,4 @@ $lang->changelog['7.2'][] = 'project-updateOrder';
$lang->changelog['7.3'][] = 'project-fixFirst';
$lang->changelog['7.3'][] = 'productplan-batchEdit';
$lang->changelog['7.3'][] = 'admin-sso';
+1
View File
@@ -0,0 +1 @@
<?php
+156
View File
@@ -0,0 +1,156 @@
<?php
/**
* The control file of sso module of ZenTaoPMS.
*
* @copyright Copyright 2009-2015 青岛易软天创网络科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com)
* @license ZPL (http://zpl.pub/page/zplv11.html)
* @author Yidong Wang <yidong@cnezsoft.com>
* @package sso
* @version $Id: control.php 4460 2013-02-26 02:28:02Z chencongzhi520@gmail.com $
* @link http://www.zentao.net
*/
class sso extends control
{
/**
* SSO login.
*
* @param string $type
* @access public
* @return void
*/
public function login($type = 'notify')
{
$referer = empty($_GET['referer']) ? '' : $this->get->referer;
$locate = empty($referer) ? '/' : base64_decode($referer);
if($this->loadModel('user')->isLogon()) die($this->locate($locate));
$this->app->loadConfig('sso');
if(!$this->config->sso->turnon) die($this->locate($locate));
$userIP = $this->server->remote_addr;
if($type != 'return')
{
$code = $this->config->sso->code;
$token = $this->get->token;
$key = $this->config->sso->key;
$auth = md5($code . $userIP . $token . $key);
$callback = urlencode(common::getSysURL() . inlink('login', "type=return"));
$location = $this->config->sso->addr;
if(strpos($location, '&') !== false)
{
$location = rtrim($location, '&') . "&token=$token&auth=$auth&userIP=$userIP&callback=$callback&referer=$referer";
}
else
{
$location = rtrim($location, '?') . "?token=$token&auth=$auth&userIP=$userIP&callback=$callback&referer=$referer";
}
$this->locate($location);
}
if($this->get->status == 'success' and md5($this->get->data) == $this->get->md5)
{
$last = $this->server->request_time;
$data = json_decode(base64_decode($this->get->data));
$user = $this->loadModel('user')->getById($data->account);
if(!$user)
{
$user = new stdclass();
$user->account = $data->account;
$user->password = $data->password;
$user->realname = $data->realname;
$user->email = $data->email;
$user->visits = 1;
$user->last = $this->server->request_time;
$user->mobile = $data->mobile;
$user->phone = $data->phone;
$user->address = $data->address;
$user->skype = $data->skype;
$user->qq = $data->qq;
$user->birthday = $data->birthday;
$user->gender = $data->gender != 'u' ? $data->gender : 'm';
$this->dao->insert(TABLE_USER)->data($user)->exec();
$user->id = $this->dao->lastInsertID();
$user->rights = array();
}
else
{
$this->user->cleanLocked($user->account);
/* Authorize him and save to session. */
$user->rights = $this->user->authorize($user->account);
$user->groups = $this->user->getGroups($user->account);
$this->dao->update(TABLE_USER)->set('visits = visits + 1')->set('ip')->eq($userIP)->set('last')->eq($last)->where('account')->eq($user->account)->exec();
}
$user->last = date(DT_DATETIME1, $last);
$this->session->set('user', $user);
$this->app->user = $this->session->user;
$this->loadModel('action')->create('user', $user->id, 'login');
die($this->locate($locate));
}
$this->locate($this->createLink('user', 'login', empty($referer) ? '' : "referer=$referer"));
}
/**
* SSO logout.
*
* @param string $type
* @access public
* @return void
*/
public function logout($type = 'notify')
{
if($type != 'return')
{
$code = $this->config->sso->code;
$userIP = $this->server->remote_addr;
$token = $this->get->token;
$key = $this->config->sso->key;
$auth = md5($code . $userIP . $token . $key);
$callback = urlencode($common->getSysURL() . inlink('logout', "type=return"));
$location = $this->config->sso->addr;
if(strpos($location, '&') !== false)
{
$location = rtrim($location, '&') . "&token=$token&auth=$auth&userIP=$userIP&callback=$callback";
}
else
{
$location = rtrim($location, '?') . "?token=$token&auth=$auth&userIP=$userIP&callback=$callback";
}
$this->locate($location);
}
if($this->get->status == 'success')
{
session_destroy();
setcookie('za', false);
setcookie('zp', false);
$this->locate($this->createLink('user', 'login'));
}
$this->locate($this->createLink('user', 'logout'));
}
/**
* Ajax set config.
*
* @access public
* @return void
*/
public function ajaxSetConfig()
{
if($_POST)
{
$ssoConfig = new stdclass();
$ssoConfig->turnon = 1;
$ssoConfig->addr = $this->post->addr;
$ssoConfig->code = trim($this->post->code);
$ssoConfig->key = trim($this->post->key);
$this->loadModel('setting')->setItems('system.sso', $ssoConfig);
if(dao::isError()) die('fail');
die('success');
}
}
}
+22
View File
@@ -0,0 +1,22 @@
<?php
/**
* The sso module English file of ZenTaoPMS.
*
* @copyright Copyright 2009-2015 青岛易软天创网络科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com)
* @license ZPL (http://zpl.pub/page/zplv11.html)
* @author Yidong Wang <yidong@cnezsoft.com>
* @package sso
* @version $Id$
* @link http://www.zentao.net
*/
$lang->sso = new stdclass();
$lang->sso->settings = 'Settings';
$lang->sso->turnon = 'Turnon';
$lang->sso->code = 'Code';
$lang->sso->key = 'Key';
$lang->sso->addr = 'Address';
$lang->sso->addrNotice = 'Example: http://www.ranzhi.com/sys/sso-check.html';
$lang->sso->turnonList = array();
$lang->sso->turnonList[1] = 'on';
$lang->sso->turnonList[0] = 'off';
+22
View File
@@ -0,0 +1,22 @@
<?php
/**
* The sso module zh-cn file of ZenTaoPMS.
*
* @copyright Copyright 2009-2015 青岛易软天创网络科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com)
* @license ZPL (http://zpl.pub/page/zplv11.html)
* @author Yidong Wang <yidong@cnezsoft.com>
* @package sso
* @version $Id$
* @link http://www.zentao.net
*/
$lang->sso = new stdclass();
$lang->sso->settings = '配置';
$lang->sso->turnon = '是否打开';
$lang->sso->code = '代号';
$lang->sso->key = '密钥';
$lang->sso->addr = '接口地址';
$lang->sso->addrNotice = '比如:http://www.ranzhi.com/sys/sso-check.html';
$lang->sso->turnonList = array();
$lang->sso->turnonList[1] = '打开';
$lang->sso->turnonList[0] = '关闭';
+22
View File
@@ -0,0 +1,22 @@
<?php
/**
* The sso module zh-tw file of ZenTaoPMS.
*
* @copyright Copyright 2009-2015 青島易軟天創網絡科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com)
* @license ZPL (http://zpl.pub/page/zplv11.html)
* @author Yidong Wang <yidong@cnezsoft.com>
* @package sso
* @version $Id$
* @link http://www.zentao.net
*/
$lang->sso = new stdclass();
$lang->sso->settings = '配置';
$lang->sso->turnon = '是否打開';
$lang->sso->code = '代號';
$lang->sso->key = '密鑰';
$lang->sso->addr = '介面地址';
$lang->sso->addrNotice = '比如:http://www.ranzhi.com/sys/sso-check.html';
$lang->sso->turnonList = array();
$lang->sso->turnonList[1] = '打開';
$lang->sso->turnonList[0] = '關閉';
+4
View File
@@ -0,0 +1,4 @@
<?php
class ssoModel extends model
{
}