+ finish task #2279.
This commit is contained in:
@@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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.';
|
||||
|
||||
@@ -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 = '欢迎使用禅道管理软件后台管理系统';
|
||||
|
||||
@@ -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';?>
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
@@ -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';
|
||||
@@ -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'] = '由我关闭';
|
||||
@@ -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'] = '由我關閉';
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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";
|
||||
?>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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();
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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())
|
||||
{
|
||||
|
||||
@@ -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';
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
<?php
|
||||
@@ -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');
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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';
|
||||
@@ -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] = '关闭';
|
||||
@@ -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] = '關閉';
|
||||
@@ -0,0 +1,4 @@
|
||||
<?php
|
||||
class ssoModel extends model
|
||||
{
|
||||
}
|
||||
Reference in New Issue
Block a user