This commit is contained in:
daitingting
2017-05-15 16:35:45 +08:00
15 changed files with 174 additions and 74 deletions
+1 -1
View File
@@ -45,7 +45,7 @@ $lang->admin->bind->caption = 'Link an Account';
$lang->admin->bind->success = "Account has been linked!";
$lang->admin->safe = new stdclass();
$lang->admin->safe->common = 'Security';
$lang->admin->safe->common = 'Security Policy';
$lang->admin->safe->set = 'Password Security Settings';
$lang->admin->safe->password = 'Password Security';
$lang->admin->safe->weak = 'Weak Password';
+2 -2
View File
@@ -45,13 +45,13 @@ $lang->admin->bind->caption = '关联社区帐号';
$lang->admin->bind->success = "关联账户成功";
$lang->admin->safe = new stdclass();
$lang->admin->safe->common = '安全';
$lang->admin->safe->common = '安全策略';
$lang->admin->safe->set = '密码安全设置';
$lang->admin->safe->password = '密码安全';
$lang->admin->safe->weak = '常用弱口令';
$lang->admin->safe->reason = '类型';
$lang->admin->safe->checkWeak = '弱口令扫描';
$lang->admin->safe->changeWeak = '修改弱口令秘密';
$lang->admin->safe->changeWeak = '修改弱口令密码';
$lang->admin->safe->modifyPasswordFirstLogin = '首次登陆修改密码';
$lang->admin->safe->modeList[0] = '不检查';
+6 -1
View File
@@ -276,6 +276,11 @@ class adminModel extends model
$weaks[$weak] = $weak;
}
return isset($weaks[$user->password]);
if(isset($weaks[$user->password])) return true;
if($user->password == md5($user->account)) return true;
if($user->phone and $user->password == md5($user->phone)) return true;
if($user->mobile and $user->password == md5($user->mobile)) return true;
if($user->birthday and $user->password == md5($user->birthday)) return true;
return false;
}
}
+1 -1
View File
@@ -25,6 +25,7 @@
<div class='panel'>
<div class='panel-heading'>
<strong><?php echo $lang->backup->history?></strong>
<span class='label label-info'><?php echo $lang->backup->restoreTip;?></span>
</div>
<table class='table table-condensed table-bordered active-disabled table-fixed'>
<thead>
@@ -69,7 +70,6 @@
</tfoot>
</table>
</div>
<div class='alert alert-info'><?php echo $lang->backup->restoreTip;?></div>
<div class="modal fade" id="waitting" tabindex="-1" role="dialog" aria-hidden="true">
<div class="modal-dialog w-300px">
<div class="modal-content">
+73 -25
View File
@@ -93,31 +93,79 @@ $lang->block->default['qa']['3']['params']['num'] = 15;
$lang->block->default['qa']['3']['params']['orderBy'] = 'id_desc';
$lang->block->default['qa']['3']['params']['type'] = 'wait';
$lang->block->default['my']['1']['title'] = 'Flowchart';
$lang->block->default['my']['1']['block'] = 'flowchart';
$lang->block->default['my']['1']['grid'] = 8;
$lang->block->default['my']['1']['source'] = '';
$lang->block->default['my']['2']['title'] = 'Dynamic';
$lang->block->default['my']['2']['block'] = 'dynamic';
$lang->block->default['my']['2']['grid'] = 4;
$lang->block->default['my']['2']['source'] = '';
$lang->block->default['my']['3'] = $lang->block->default['project']['1'];
$lang->block->default['my']['3']['source'] = 'project';
$lang->block->default['my']['4']['title'] = 'My To-Dos';
$lang->block->default['my']['4']['block'] = 'list';
$lang->block->default['my']['4']['grid'] = 4;
$lang->block->default['my']['4']['source'] = 'todo';
$lang->block->default['my']['4']['params']['num'] = '20';
$lang->block->default['my']['5'] = $lang->block->default['product']['1'];
$lang->block->default['my']['5']['source'] = 'product';
$lang->block->default['my']['6'] = $lang->block->default['project']['2'];
$lang->block->default['my']['6']['source'] = 'project';
$lang->block->default['my']['7'] = $lang->block->default['qa']['1'];
$lang->block->default['my']['7']['source'] = 'qa';
$lang->block->default['my']['8'] = $lang->block->default['product']['2'];
$lang->block->default['my']['8']['source'] = 'product';
$lang->block->default['my']['9'] = $lang->block->default['qa']['2'];
$lang->block->default['my']['9']['source'] = 'qa';
$lang->block->default['full']['my']['1']['title'] = 'Flowchart';
$lang->block->default['full']['my']['1']['block'] = 'flowchart';
$lang->block->default['full']['my']['1']['grid'] = 8;
$lang->block->default['full']['my']['1']['source'] = '';
$lang->block->default['full']['my']['2']['title'] = 'Dynamic';
$lang->block->default['full']['my']['2']['block'] = 'dynamic';
$lang->block->default['full']['my']['2']['grid'] = 4;
$lang->block->default['full']['my']['2']['source'] = '';
$lang->block->default['full']['my']['3'] = $lang->block->default['project']['1'];
$lang->block->default['full']['my']['3']['source'] = 'project';
$lang->block->default['full']['my']['4']['title'] = 'My To-Dos';
$lang->block->default['full']['my']['4']['block'] = 'list';
$lang->block->default['full']['my']['4']['grid'] = 4;
$lang->block->default['full']['my']['4']['source'] = 'todo';
$lang->block->default['full']['my']['4']['params']['num'] = '20';
$lang->block->default['full']['my']['5'] = $lang->block->default['product']['1'];
$lang->block->default['full']['my']['5']['source'] = 'product';
$lang->block->default['full']['my']['6'] = $lang->block->default['project']['2'];
$lang->block->default['full']['my']['6']['source'] = 'project';
$lang->block->default['full']['my']['7'] = $lang->block->default['qa']['1'];
$lang->block->default['full']['my']['7']['source'] = 'qa';
$lang->block->default['full']['my']['8'] = $lang->block->default['product']['2'];
$lang->block->default['full']['my']['8']['source'] = 'product';
$lang->block->default['full']['my']['9'] = $lang->block->default['qa']['2'];
$lang->block->default['full']['my']['9']['source'] = 'qa';
$lang->block->default['onlyTest']['my']['1'] = $lang->block->default['qa']['1'];
$lang->block->default['onlyTest']['my']['1']['source'] = 'qa';
$lang->block->default['onlyTest']['my']['1']['grid'] = '8';
$lang->block->default['onlyTest']['my']['2']['title'] = 'Dynamic';
$lang->block->default['onlyTest']['my']['2']['block'] = 'dynamic';
$lang->block->default['onlyTest']['my']['2']['grid'] = 4;
$lang->block->default['onlyTest']['my']['2']['source'] = '';
$lang->block->default['onlyTest']['my']['3']['title'] = 'My To-Dos';
$lang->block->default['onlyTest']['my']['3']['block'] = 'list';
$lang->block->default['onlyTest']['my']['3']['grid'] = 6;
$lang->block->default['onlyTest']['my']['3']['source'] = 'todo';
$lang->block->default['onlyTest']['my']['3']['params']['num'] = '20';
$lang->block->default['onlyTest']['my']['4'] = $lang->block->default['qa']['2'];
$lang->block->default['onlyTest']['my']['4']['source'] = 'qa';
$lang->block->default['onlyTest']['my']['4']['grid'] = 6;
$lang->block->default['onlyStory']['my']['1'] = $lang->block->default['project']['1'];
$lang->block->default['onlyStory']['my']['1']['source'] = 'project';
$lang->block->default['onlyStory']['my']['1']['grid'] = 8;
$lang->block->default['onlyStory']['my']['2']['title'] = 'Dynamic';
$lang->block->default['onlyStory']['my']['2']['block'] = 'dynamic';
$lang->block->default['onlyStory']['my']['2']['grid'] = 4;
$lang->block->default['onlyStory']['my']['2']['source'] = '';
$lang->block->default['onlyStory']['my']['3']['title'] = 'My To-Dos';
$lang->block->default['onlyStory']['my']['3']['block'] = 'list';
$lang->block->default['onlyStory']['my']['3']['grid'] = 6;
$lang->block->default['onlyStory']['my']['3']['source'] = 'todo';
$lang->block->default['onlyStory']['my']['3']['params']['num'] = '20';
$lang->block->default['onlyStory']['my']['4'] = $lang->block->default['product']['2'];
$lang->block->default['onlyStory']['my']['4']['source'] = 'product';
$lang->block->default['onlyStory']['my']['4']['grid'] = 6;
$lang->block->default['onlyTask']['my']['1'] = $lang->block->default['project']['1'];
$lang->block->default['onlyTask']['my']['1']['source'] = 'project';
$lang->block->default['onlyTask']['my']['1']['grid'] = 8;
$lang->block->default['onlyTask']['my']['2']['title'] = 'Dynamic';
$lang->block->default['onlyTask']['my']['2']['block'] = 'dynamic';
$lang->block->default['onlyTask']['my']['2']['grid'] = 4;
$lang->block->default['onlyTask']['my']['2']['source'] = '';
$lang->block->default['onlyTask']['my']['3']['title'] = 'My To-Dos';
$lang->block->default['onlyTask']['my']['3']['block'] = 'list';
$lang->block->default['onlyTask']['my']['3']['grid'] = 6;
$lang->block->default['onlyTask']['my']['3']['source'] = 'todo';
$lang->block->default['onlyTask']['my']['3']['params']['num'] = '20';
$lang->block->default['onlyTask']['my']['4'] = $lang->block->default['project']['2'];
$lang->block->default['onlyTask']['my']['4']['source'] = 'project';
$lang->block->default['onlyTask']['my']['4']['grid'] = 6;
$lang->block->num = 'Number';
$lang->block->type = 'Type';
+73 -25
View File
@@ -93,31 +93,79 @@ $lang->block->default['qa']['3']['params']['num'] = 15;
$lang->block->default['qa']['3']['params']['orderBy'] = 'id_desc';
$lang->block->default['qa']['3']['params']['type'] = 'wait';
$lang->block->default['my']['1']['title'] = '流程图';
$lang->block->default['my']['1']['block'] = 'flowchart';
$lang->block->default['my']['1']['grid'] = 8;
$lang->block->default['my']['1']['source'] = '';
$lang->block->default['my']['2']['title'] = '最新动态';
$lang->block->default['my']['2']['block'] = 'dynamic';
$lang->block->default['my']['2']['grid'] = 4;
$lang->block->default['my']['2']['source'] = '';
$lang->block->default['my']['3'] = $lang->block->default['project']['1'];
$lang->block->default['my']['3']['source'] = 'project';
$lang->block->default['my']['4']['title'] = '我的待办';
$lang->block->default['my']['4']['block'] = 'list';
$lang->block->default['my']['4']['grid'] = 4;
$lang->block->default['my']['4']['source'] = 'todo';
$lang->block->default['my']['4']['params']['num'] = '20';
$lang->block->default['my']['5'] = $lang->block->default['product']['1'];
$lang->block->default['my']['5']['source'] = 'product';
$lang->block->default['my']['6'] = $lang->block->default['project']['2'];
$lang->block->default['my']['6']['source'] = 'project';
$lang->block->default['my']['7'] = $lang->block->default['qa']['1'];
$lang->block->default['my']['7']['source'] = 'qa';
$lang->block->default['my']['8'] = $lang->block->default['product']['2'];
$lang->block->default['my']['8']['source'] = 'product';
$lang->block->default['my']['9'] = $lang->block->default['qa']['2'];
$lang->block->default['my']['9']['source'] = 'qa';
$lang->block->default['full']['my']['1']['title'] = '流程图';
$lang->block->default['full']['my']['1']['block'] = 'flowchart';
$lang->block->default['full']['my']['1']['grid'] = 8;
$lang->block->default['full']['my']['1']['source'] = '';
$lang->block->default['full']['my']['2']['title'] = '最新动态';
$lang->block->default['full']['my']['2']['block'] = 'dynamic';
$lang->block->default['full']['my']['2']['grid'] = 4;
$lang->block->default['full']['my']['2']['source'] = '';
$lang->block->default['full']['my']['3'] = $lang->block->default['project']['1'];
$lang->block->default['full']['my']['3']['source'] = 'project';
$lang->block->default['full']['my']['4']['title'] = '我的待办';
$lang->block->default['full']['my']['4']['block'] = 'list';
$lang->block->default['full']['my']['4']['grid'] = 4;
$lang->block->default['full']['my']['4']['source'] = 'todo';
$lang->block->default['full']['my']['4']['params']['num'] = '20';
$lang->block->default['full']['my']['5'] = $lang->block->default['product']['1'];
$lang->block->default['full']['my']['5']['source'] = 'product';
$lang->block->default['full']['my']['6'] = $lang->block->default['project']['2'];
$lang->block->default['full']['my']['6']['source'] = 'project';
$lang->block->default['full']['my']['7'] = $lang->block->default['qa']['1'];
$lang->block->default['full']['my']['7']['source'] = 'qa';
$lang->block->default['full']['my']['8'] = $lang->block->default['product']['2'];
$lang->block->default['full']['my']['8']['source'] = 'product';
$lang->block->default['full']['my']['9'] = $lang->block->default['qa']['2'];
$lang->block->default['full']['my']['9']['source'] = 'qa';
$lang->block->default['onlyTest']['my']['1'] = $lang->block->default['qa']['1'];
$lang->block->default['onlyTest']['my']['1']['source'] = 'qa';
$lang->block->default['onlyTest']['my']['1']['grid'] = '8';
$lang->block->default['onlyTest']['my']['2']['title'] = '最新动态';
$lang->block->default['onlyTest']['my']['2']['block'] = 'dynamic';
$lang->block->default['onlyTest']['my']['2']['grid'] = 4;
$lang->block->default['onlyTest']['my']['2']['source'] = '';
$lang->block->default['onlyTest']['my']['3']['title'] = '我的待办';
$lang->block->default['onlyTest']['my']['3']['block'] = 'list';
$lang->block->default['onlyTest']['my']['3']['grid'] = 6;
$lang->block->default['onlyTest']['my']['3']['source'] = 'todo';
$lang->block->default['onlyTest']['my']['3']['params']['num'] = '20';
$lang->block->default['onlyTest']['my']['4'] = $lang->block->default['qa']['2'];
$lang->block->default['onlyTest']['my']['4']['source'] = 'qa';
$lang->block->default['onlyTest']['my']['4']['grid'] = '6';
$lang->block->default['onlyStory']['my']['1'] = $lang->block->default['product']['1'];
$lang->block->default['onlyStory']['my']['1']['source'] = 'product';
$lang->block->default['onlyStory']['my']['1']['grid'] = '8';
$lang->block->default['onlyStory']['my']['2']['title'] = '最新动态';
$lang->block->default['onlyStory']['my']['2']['block'] = 'dynamic';
$lang->block->default['onlyStory']['my']['2']['grid'] = 4;
$lang->block->default['onlyStory']['my']['2']['source'] = '';
$lang->block->default['onlyStory']['my']['3']['title'] = '我的待办';
$lang->block->default['onlyStory']['my']['3']['block'] = 'list';
$lang->block->default['onlyStory']['my']['3']['grid'] = 6;
$lang->block->default['onlyStory']['my']['3']['source'] = 'todo';
$lang->block->default['onlyStory']['my']['3']['params']['num'] = '20';
$lang->block->default['onlyStory']['my']['4'] = $lang->block->default['product']['2'];
$lang->block->default['onlyStory']['my']['4']['source'] = 'product';
$lang->block->default['onlyStory']['my']['4']['grid'] = '4';
$lang->block->default['onlyTask']['my']['1'] = $lang->block->default['project']['1'];
$lang->block->default['onlyTask']['my']['1']['source'] = 'project';
$lang->block->default['onlyTask']['my']['1']['grid'] = '8';
$lang->block->default['onlyTask']['my']['2']['title'] = '最新动态';
$lang->block->default['onlyTask']['my']['2']['block'] = 'dynamic';
$lang->block->default['onlyTask']['my']['2']['grid'] = 4;
$lang->block->default['onlyTask']['my']['2']['source'] = '';
$lang->block->default['onlyTask']['my']['3']['title'] = '我的待办';
$lang->block->default['onlyTask']['my']['3']['block'] = 'list';
$lang->block->default['onlyTask']['my']['3']['grid'] = 6;
$lang->block->default['onlyTask']['my']['3']['source'] = 'todo';
$lang->block->default['onlyTask']['my']['3']['params']['num'] = '20';
$lang->block->default['onlyTask']['my']['4'] = $lang->block->default['project']['2'];
$lang->block->default['onlyTask']['my']['4']['source'] = 'project';
$lang->block->default['onlyTask']['my']['4']['grid'] = 6;
$lang->block->num = '数量';
$lang->block->type = '类型';
+2 -1
View File
@@ -146,7 +146,8 @@ class blockModel extends model
*/
public function initBlock($module)
{
$blocks = $this->lang->block->default[$module];
$flow = isset($this->config->global->flow) ? $this->config->global->flow : 'full';
$blocks = $module == 'my' ? $this->lang->block->default[$flow][$module] : $this->lang->block->default[$module];
$account = $this->app->user->account;
/* Mark this app has init. */
+4 -12
View File
@@ -24,17 +24,9 @@ js::set('flow', $this->config->global->flow);
<li class='pull-right'>
<div class='btn-group' id='createActionMenu'>
<?php
if(commonModel::isTutorialMode())
{
$wizardParams = helper::safe64Encode("productID=$productID&branch=$branch&extra=moduleID=$moduleID");
echo html::a($this->createLink('tutorial', 'wizard', "module=bug&method=create&params=$wizardParams"), "<i class='icon-plus'></i>" . $lang->bug->create, '', "class='btn btn-primary btn-bug-create'");
}
else
{
$misc = common::hasPriv('bug', 'create') ? "class='btn btn-primary'" : "class='btn btn-primary disabled'";
$link = common::hasPriv('bug', 'create') ? $this->createLink('bug', 'create', "productID=$productID&branch=$branch&extra=moduleID=$moduleID") : '#';
echo html::a($link, "<i class='icon icon-plus'></i>" . $lang->bug->create, '', $misc);
}
$misc = common::hasPriv('bug', 'create') ? "class='btn btn-primary'" : "class='btn btn-primary disabled'";
$link = common::hasPriv('bug', 'create') ? $this->createLink('bug', 'create', "productID=$productID&branch=$branch&extra=moduleID=$moduleID") : '#';
echo html::a($link, "<i class='icon icon-plus'></i>" . $lang->bug->create, '', $misc);
?>
<button type='button' class='btn btn-primary dropdown-toggle' data-toggle='dropdown'>
<span class='caret'></span>
@@ -308,7 +300,7 @@ if($shortcut.size() > 0)
}
<?php endif;?>
<?php $this->app->loadConfig('qa', '', false);?>
<?php if(isset($this->config->qa->homepage) and $this->config->qa->homepage != 'browse'):?>
<?php if(isset($config->qa->homepage) and $config->qa->homepage != 'browse' and $config->global->flow == 'full'):?>
$(function(){$('#modulemenu .nav li:last').after("<li class='right'><a style='font-size:12px' href='javascript:setHomepage(\"qa\", \"browse\")'><i class='icon icon-cog'></i> <?php echo $lang->homepage?></a></li>")});
<?php endif;?>
</script>
+1 -1
View File
@@ -673,7 +673,7 @@ if(isset($config->global->flow) and $config->global->flow == 'onlyTest')
$lang->bug->menu->all = '所有|bug|browse|productID=%s&branch=%s&browseType=all&param=%s';
$lang->bug->menu->assigntome = '指派给我|bug|browse|productID=%s&branch=%s&browseType=assigntome&param=%s';
$lang->bug->menu->openedbyme = '由我创建|bug|browse|productID=%s&branch=%s&browseType=openedbyme&param=%s';
$lang->bug->menu->resolvedbyme = '由我创建|bug|browse|productID=%s&branch=%s&browseType=resolvedbyme&param=%s';
$lang->bug->menu->resolvedbyme = '由我解决|bug|browse|productID=%s&branch=%s&browseType=resolvedbyme&param=%s';
$lang->bug->menu->unconfirmed = '未确认|bug|browse|productID=%s&branch=%s&browseType=unconfirmed&param=%s';
$lang->bug->menu->assigntonull = '未指派|bug|browse|productID=%s&branch=%s&browseType=assigntonull&param=%s';
$lang->bug->menu->unresolved = '未解决|bug|browse|productID=%s&branch=%s&browseType=unresolved&param=%s';
+1 -1
View File
@@ -1112,7 +1112,7 @@ class commonModel extends model
{
$module = $this->app->getModuleName();
$method = $this->app->getMethodName();
if(isset($this->app->user->modifyPassword) and $this->app->user->modifyPassword and $module != 'my' and $method != 'changepassword') die(js::locate(helper::createLink('my', 'changepassword')));
if(isset($this->app->user->modifyPassword) and $this->app->user->modifyPassword and ($module != 'my' or $method != 'changepassword')) die(js::locate(helper::createLink('my', 'changepassword')));
if($this->isOpenMethod($module, $method)) return true;
if(!$this->loadModel('user')->isLogon() and $this->server->php_auth_user) $this->user->identifyByPhpAuth();
if(!$this->loadModel('user')->isLogon() and $this->cookie->za) $this->user->identifyByCookie();
+1
View File
@@ -46,6 +46,7 @@
<?php if(!empty($this->app->user->modifyPasswordReason)):?>
<?php $this->app->loadLang('admin');?>
<div class='alert alert-info'>
<?php echo $lang->admin->safe->common . ' : ';?>
<?php echo $this->app->user->modifyPasswordReason == 'weak' ? $lang->admin->safe->changeWeak : $lang->admin->safe->modifyPasswordFirstLogin;?>
</div>
<?php endif;?>
+1
View File
@@ -30,6 +30,7 @@
<tbody>
<?php foreach($allStories as $story):?>
<?php if(strpos(",{$release->stories},", ",{$story->id},") !== false) continue; ?>
<?php if($release->product != $story->product) continue; ?>
<tr>
<td class='cell-id'>
<input class='ml-10px' type='checkbox' name='stories[]' value='<?php echo $story->id;?>' <?php if($story->stage == 'developed' or $story->status == 'closed') echo 'checked';?> />
+1 -1
View File
@@ -1313,7 +1313,7 @@ class testcaseModel extends model
case 'actions':
common::printIcon('testtask', 'runCase', "runID=0&caseID=$case->id&version=$case->version", '', 'list', 'play', '', 'runCase iframe', false, "data-width='95%'");
common::printIcon('testtask', 'results', "runID=0&caseID=$case->id", '', 'list', '', '', 'results iframe', '', "data-width='90%'");
if($config->testcase->needReview or !empty($config->testcase->forceReview)) common::printIcon('testcase', 'review', "caseID=$case->id", $case, 'list', 'review', '', 'iframe');
if($this->config->testcase->needReview or !empty($this->config->testcase->forceReview)) common::printIcon('testcase', 'review', "caseID=$case->id", $case, 'list', 'review', '', 'iframe');
common::printIcon('testcase', 'edit', "caseID=$case->id", $case, 'list');
common::printIcon('testcase', 'create', "productID=$case->product&branch=$case->branch&moduleID=$case->module&from=testcase&param=$case->id", $case, 'list', 'copy');
+1
View File
@@ -3,4 +3,5 @@
.table-form > tbody > tr > th, .table-form > tbody > tr > td {border-bottom: 1px solid #ddd}
.outer .table.table-form tbody > tr:last-child td{border:1px solid #ddd;}
.wordwrap{word-wrap:break-word; white-space:normal !important;}
.step-item{padding-left: 20px;}
+6 -3
View File
@@ -105,16 +105,19 @@ $(function()
{
/* Readjust precondition width by cases precondition. */
preconditionWidth = $('th.precondition').width();
$('tbody td.precondition').each(function()
$precondition = $('tbody td.precondition');
length = $precondition.length;
for(i = 0; i < length; i++)
{
width = $(this).find('span:first').width();
width = $precondition.eq(i).find('span:first').width();
if(width > preconditionWidth)
{
preconditionWidth = width;
if(preconditionWidth > 200) preconditionWidth = 200;
$('th.precondition').width(preconditionWidth);
}
});
}
$('tbody td.precondition').addClass('wordwrap');
})
</script>
<?php include '../../common/view/footer.html.php';?>