Merge branch 'master' of https://github.com/easysoft/zentaopms
This commit is contained in:
@@ -252,11 +252,6 @@ $lang->bug->typeList['automation'] = 'Script-Test';
|
||||
$lang->bug->typeList['designdefect'] = 'Design Fehler';
|
||||
$lang->bug->typeList['others'] = 'Andere';
|
||||
|
||||
$lang->bug->discardedTypeList['interface'] = 'UI Optimierung';
|
||||
$lang->bug->discardedTypeList['newfeature'] = 'Neues Feature';
|
||||
$lang->bug->discardedTypeList['designchange'] = 'Design Änderung';
|
||||
$lang->bug->discardedTypeList['trackthings'] = 'Arbeit Verfolgen';
|
||||
|
||||
$lang->bug->statusList[''] = '';
|
||||
$lang->bug->statusList['active'] = 'Aktiv';
|
||||
$lang->bug->statusList['resolved'] = 'Gelöst';
|
||||
|
||||
@@ -252,11 +252,6 @@ $lang->bug->typeList['automation'] = 'TestScript';
|
||||
$lang->bug->typeList['designdefect'] = 'DesignDefect';
|
||||
$lang->bug->typeList['others'] = 'Others';
|
||||
|
||||
$lang->bug->discardedTypeList['interface'] = 'Interface';
|
||||
$lang->bug->discardedTypeList['designchange'] = 'DesignChange';
|
||||
$lang->bug->discardedTypeList['newfeature'] = 'NewFeature';
|
||||
$lang->bug->discardedTypeList['trackthings'] = 'Tracking';
|
||||
|
||||
$lang->bug->statusList[''] = '';
|
||||
$lang->bug->statusList['active'] = 'Active';
|
||||
$lang->bug->statusList['resolved'] = 'Resolved';
|
||||
|
||||
@@ -252,11 +252,6 @@ $lang->bug->typeList['automation'] = 'Script automatisation';
|
||||
$lang->bug->typeList['designdefect'] = 'Erreur de Design';
|
||||
$lang->bug->typeList['others'] = 'Autres';
|
||||
|
||||
$lang->bug->discardedTypeList['interface'] = 'Interface';
|
||||
$lang->bug->discardedTypeList['designchange'] = 'Design Change';
|
||||
$lang->bug->discardedTypeList['newfeature'] = 'Nouvelle fonctionnalité';
|
||||
$lang->bug->discardedTypeList['trackthings'] = 'Tracking';
|
||||
|
||||
$lang->bug->statusList[''] = '';
|
||||
$lang->bug->statusList['active'] = 'Actif';
|
||||
$lang->bug->statusList['resolved'] = 'Résolu';
|
||||
|
||||
@@ -252,11 +252,6 @@ $lang->bug->typeList['automation'] = '测试脚本';
|
||||
$lang->bug->typeList['designdefect'] = '设计缺陷';
|
||||
$lang->bug->typeList['others'] = '其他';
|
||||
|
||||
$lang->bug->discardedTypeList['interface'] = '界面优化';
|
||||
$lang->bug->discardedTypeList['designchange'] = '设计变更';
|
||||
$lang->bug->discardedTypeList['newfeature'] = "新增{$lang->storyCommon}";
|
||||
$lang->bug->discardedTypeList['trackthings'] = '事务跟踪';
|
||||
|
||||
$lang->bug->statusList[''] = '';
|
||||
$lang->bug->statusList['active'] = '激活';
|
||||
$lang->bug->statusList['resolved'] = '已解决';
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
$(document).ready(function()
|
||||
{
|
||||
{
|
||||
$('#mainMenu #conceptTab').addClass('btn-active-text');
|
||||
$('#ajaxForm').ajaxForm(
|
||||
{
|
||||
finish:function(response)
|
||||
|
||||
@@ -79,7 +79,7 @@ $lang->custom->user->fields['statusList'] = '状态';
|
||||
$lang->custom->user->fields['contactField'] = '可用联系方式';
|
||||
$lang->custom->user->fields['deleted'] = '列出已删除用户';
|
||||
|
||||
$lang->custom->system = array('flow', 'working', 'required', 'score');
|
||||
$lang->custom->system = array('concept', 'flow', 'working', 'required', 'score');
|
||||
|
||||
$lang->custom->block->fields['closed'] = '关闭的区块';
|
||||
|
||||
|
||||
@@ -8,50 +8,53 @@
|
||||
* @package ZenTaoPMS
|
||||
* @version $Id: deny.html.php 4129 2013-01-18 01:58:14Z wwccss $
|
||||
*/
|
||||
include '../../common/view/header.lite.html.php';
|
||||
?>
|
||||
<?php if($this->config->conceptSetted):?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<?php if(isset($this->config->conceptSetted)):?>
|
||||
<?php include 'header.html.php';?>
|
||||
<?php else:?>
|
||||
<?php include '../../common/view/header.lite.html.php';?>
|
||||
<?php endif;?>
|
||||
<div class='container'>
|
||||
<?php if($_POST):?>
|
||||
<div class='modal-dialog'>
|
||||
<div class='alert alert-success'>
|
||||
<?php printf($lang->custom->notice->conceptResult, $lang->productCommon, $lang->projectCommon, $lang->storyCommon, $lang->hourCommon);?>
|
||||
<?php if(isset($this->config->conceptSetted)):?>
|
||||
<div id='mainContent' class='main-content'>
|
||||
<div class='main-header'>
|
||||
<div class='heading'>
|
||||
<strong><?php echo $lang->custom->concept?></strong>
|
||||
</div>
|
||||
</div>
|
||||
<?php else:?>
|
||||
<div class='container'>
|
||||
<div class='modal-dialog'>
|
||||
<div class='modal-header'>
|
||||
<strong><?php echo $lang->custom->concept?></strong>
|
||||
</div>
|
||||
<?php endif;?>
|
||||
<form id='ajaxForm' method='post'>
|
||||
<div class='modal-dialog'>
|
||||
<div class='modal-header'><strong><?php echo $lang->custom->concept;?></strong></div>
|
||||
<div class='modal-body'>
|
||||
<div class="form-group">
|
||||
<label><?php echo $lang->custom->conceptQuestions['overview']?></label>
|
||||
<div class="checkbox"> <?php echo html::radio('productProject', $lang->custom->productProject->relation, zget($this->config->custom, 'productProject', '0_0'))?> </div>
|
||||
</div>
|
||||
<?php if(!common::checkNotCN()):?>
|
||||
<div class="form-group">
|
||||
<label><?php echo $lang->custom->conceptQuestions['story']?></label>
|
||||
<div class="checkbox"> <?php echo html::radio('storyRequirement', $lang->custom->conceptOptions->story, zget($this->config->custom, 'storyRequirement', '0'));?></div>
|
||||
</div>
|
||||
<?php endif;?>
|
||||
<div class="form-group">
|
||||
<label><?php echo $lang->custom->conceptQuestions['storypoint'];?></label>
|
||||
<div class="checkbox"> <?php echo html::radio('hourPoint', $lang->custom->conceptOptions->hourPoint, '0')?> </div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='modal-footer'>
|
||||
<div class='text-center'><?php echo html::submitButton();?></div>
|
||||
<div class='modal-body'>
|
||||
<div class="form-group">
|
||||
<label><?php echo $lang->custom->conceptQuestions['overview']?></label>
|
||||
<div class="checkbox"> <?php echo html::radio('productProject', $lang->custom->productProject->relation, zget($this->config->custom, 'productProject', '0_0'))?> </div>
|
||||
</div>
|
||||
<?php if(!common::checkNotCN()):?>
|
||||
<div class="form-group">
|
||||
<label><?php echo $lang->custom->conceptQuestions['story']?></label>
|
||||
<div class="checkbox"> <?php echo html::radio('storyRequirement', $lang->custom->conceptOptions->story, zget($this->config->custom, 'storyRequirement', '0'));?></div>
|
||||
</div>
|
||||
<?php endif;?>
|
||||
<div class="form-group">
|
||||
<label><?php echo $lang->custom->conceptQuestions['storypoint'];?></label>
|
||||
<div class="checkbox"> <?php echo html::radio('hourPoint', $lang->custom->conceptOptions->hourPoint, '0')?> </div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label></label>
|
||||
<div><?php echo html::submitButton();?></div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
<?php endif;?>
|
||||
<?php if($this->config->conceptSetted):?>
|
||||
<?php if(isset($this->config->conceptSetted)):?>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
<?php else:?>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
<?php endif;?>
|
||||
|
||||
@@ -22,21 +22,21 @@ function convertStringToDate(dateString)
|
||||
*/
|
||||
function computeEndDate(delta)
|
||||
{
|
||||
beginDate = $('#begin').val();
|
||||
var beginDate = $('#begin').val();
|
||||
if(!beginDate) return;
|
||||
|
||||
delta = parseInt(delta);
|
||||
var delta = parseInt(delta);
|
||||
beginDate = convertStringToDate(beginDate);
|
||||
if((delta == 7 || delta == 14) && (beginDate.getDay() == 1))
|
||||
{
|
||||
delta = (weekend == 2) ? (delta - 2) : (delta - 1);
|
||||
}
|
||||
|
||||
currentBeginDate = beginDate.toString('yyyy-MM-dd');
|
||||
endDate = beginDate.addDays(delta - 1).toString('yyyy-MM-dd');
|
||||
var currentBeginDate = beginDate.toString('yyyy-MM-dd');
|
||||
var endDate = beginDate.addDays(delta - 1).toString('yyyy-MM-dd');
|
||||
|
||||
$('#begin').val(currentBeginDate);
|
||||
$('#end').val(endDate);
|
||||
$('#end').val(endDate).datetimepicker('update');
|
||||
}
|
||||
|
||||
$('#begin').on('change', function()
|
||||
|
||||
@@ -1,10 +1,8 @@
|
||||
$(function()
|
||||
{
|
||||
var boardID = '';
|
||||
var onlybody = config.requestType == 'GET' ? "&onlybody=yes" : "?onlybody=yes";
|
||||
var isFirefox = $.zui.browser.firefox;
|
||||
$.cookie('selfClose', 0, {expires:config.cookieLife, path:config.webRoot});
|
||||
var $kanban = $('#kanban');
|
||||
var kanbanModalTrigger = new $.zui.ModalTrigger({type: 'iframe', width:800});
|
||||
|
||||
var stageMap =
|
||||
{
|
||||
@@ -18,34 +16,6 @@ $(function()
|
||||
}
|
||||
};
|
||||
|
||||
// Get scrollbar width
|
||||
var getScrollbarWidth = function ()
|
||||
{
|
||||
var outer = document.createElement("div");
|
||||
outer.style.visibility = "hidden";
|
||||
outer.style.width = "100px";
|
||||
outer.style.msOverflowStyle = "scrollbar"; // needed for WinJS apps
|
||||
|
||||
document.body.appendChild(outer);
|
||||
|
||||
var widthNoScroll = outer.offsetWidth;
|
||||
// force scrollbars
|
||||
outer.style.overflow = "scroll";
|
||||
|
||||
// add innerdiv
|
||||
var inner = document.createElement("div");
|
||||
inner.style.width = "100%";
|
||||
outer.appendChild(inner);
|
||||
|
||||
var widthWithScroll = inner.offsetWidth;
|
||||
|
||||
// remove divs
|
||||
outer.parentNode.removeChild(outer);
|
||||
|
||||
return widthNoScroll - widthWithScroll;
|
||||
};
|
||||
|
||||
var scrollbarWidth = getScrollbarWidth();
|
||||
var fixBoardWidth = function()
|
||||
{
|
||||
var $table = $kanban.find('.table');
|
||||
@@ -53,12 +23,12 @@ $(function()
|
||||
var $cBoards = $table.find('thead>tr>th.c-board:not(.c-side)');
|
||||
var boardCount = $cBoards.length;
|
||||
var $cSide = $table.find('thead>tr>th.c-board.c-side');
|
||||
var totalWidth = kanbanWidth - scrollbarWidth;
|
||||
var totalWidth = kanbanWidth;
|
||||
if ($cSide.length) totalWidth = totalWidth - ($cSide.outerWidth() + 5);
|
||||
var cBoardWidth = Math.floor(totalWidth/boardCount) - 16;
|
||||
$cBoards.not(':last').width(cBoardWidth);
|
||||
$cBoards.first().width(cBoardWidth + 5);
|
||||
$kanban.find('.boards > .board').width(cBoardWidth + 16 - 22);
|
||||
|
||||
$cBoards.width(cBoardWidth);
|
||||
$kanban.find('.boards > .board').width(cBoardWidth);
|
||||
};
|
||||
fixBoardWidth();
|
||||
$(window).on('resize', fixBoardWidth);
|
||||
@@ -70,12 +40,10 @@ $(function()
|
||||
if(selfClose == 1) $kanban.load(location.href + ' #kanban', fixBoardWidth);
|
||||
};
|
||||
|
||||
var lastOperation;
|
||||
var dropTo = function(id, from, to, type)
|
||||
{
|
||||
if(stageMap[type][from] && stageMap[type][from][to])
|
||||
{
|
||||
lastOperation = {id: id, from: from, to: to};
|
||||
$.post(createLink(type, stageMap[type][from][to], 'stage=' + to), {'storyIDList[]':[id]}, function()
|
||||
{
|
||||
refresh();
|
||||
|
||||
@@ -23,5 +23,30 @@ $config->upgrade->bearychat['zh-tw'] = '倍洽';
|
||||
$config->upgrade->bearychat['en'] = 'Bearychat';
|
||||
$config->upgrade->bearychat['de'] = 'Bearychat';
|
||||
|
||||
$config->upgrade->discardedBugTypes['de']['interface'] = 'UI Optimierung';
|
||||
$config->upgrade->discardedBugTypes['de']['newfeature'] = 'Neues Feature';
|
||||
$config->upgrade->discardedBugTypes['de']['designchange'] = 'Design Änderung';
|
||||
$config->upgrade->discardedBugTypes['de']['trackthings'] = 'Arbeit Verfolgen';
|
||||
|
||||
$config->upgrade->discardedBugTypes['en']['interface'] = 'Interface';
|
||||
$config->upgrade->discardedBugTypes['en']['designchange'] = 'DesignChange';
|
||||
$config->upgrade->discardedBugTypes['en']['newfeature'] = 'NewFeature';
|
||||
$config->upgrade->discardedBugTypes['en']['trackthings'] = 'Tracking';
|
||||
|
||||
$config->upgrade->discardedBugTypes['fr']['interface'] = 'Interface';
|
||||
$config->upgrade->discardedBugTypes['fr']['designchange'] = 'Design Change';
|
||||
$config->upgrade->discardedBugTypes['fr']['newfeature'] = 'Nouvelle fonctionnalité';
|
||||
$config->upgrade->discardedBugTypes['fr']['trackthings'] = 'Tracking';
|
||||
|
||||
$config->upgrade->discardedBugTypes['zh-cn']['interface'] = '界面优化';
|
||||
$config->upgrade->discardedBugTypes['zh-cn']['designchange'] = '设计变更';
|
||||
$config->upgrade->discardedBugTypes['zh-cn']['newfeature'] = "新增需求";
|
||||
$config->upgrade->discardedBugTypes['zh-cn']['trackthings'] = '事务跟踪';
|
||||
|
||||
$config->upgrade->discardedBugTypes['zh-tw']['interface'] = '界面優化';
|
||||
$config->upgrade->discardedBugTypes['zh-tw']['designchange'] = '設計變更';
|
||||
$config->upgrade->discardedBugTypes['zh-tw']['newfeature'] = "新增需求";
|
||||
$config->upgrade->discardedBugTypes['zh-tw']['trackthings'] = '事務跟蹤';
|
||||
|
||||
$config->delete['10.6'][] = 'module/chat/ext/control/extensions.php';
|
||||
$config->delete['10.6'][] = 'module/common/ext/model/xuanxuan.php';
|
||||
|
||||
@@ -536,6 +536,8 @@ class upgradeModel extends model
|
||||
$this->execSQL($this->getUpgradeFile('11.6.5'));
|
||||
$this->fixGroupAcl();
|
||||
$this->appendExec('11_6_5');
|
||||
case '11_6_6':
|
||||
$this->fixBugTypeList();
|
||||
}
|
||||
|
||||
$this->deletePatch();
|
||||
@@ -3444,4 +3446,48 @@ class upgradeModel extends model
|
||||
public function appendExec($zentaoVersion)
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* Fix bug typeList.
|
||||
*
|
||||
* @access public
|
||||
* @return bool
|
||||
*/
|
||||
public function fixBugTypeList()
|
||||
{
|
||||
foreach($this->config->upgrade->discardedBugTypes as $langCode => $types)
|
||||
{
|
||||
$bugs = $this->dao->select('type')->from(TABLE_BUG)->where('type')->in(array_keys($types))->fetchAll('type');
|
||||
if(empty($bugs)) return true;
|
||||
|
||||
$usedTypes = array_keys($bugs);
|
||||
$customedTypeList = $this->dao->select('*')->from(TABLE_LANG)
|
||||
->where('lang')->in("$langCode,all")
|
||||
->andWhere('module')->eq('bug')
|
||||
->andWhere('section')->eq('typeList')
|
||||
->fetchPairs('`key`');
|
||||
|
||||
$typesToSave = array_diff($usedTypes, $customedTypeList);
|
||||
|
||||
if(empty($typesToSave)) continue;
|
||||
|
||||
$langs = array();
|
||||
foreach($typesToSave as $type) $langs[$type] = $types[$type];
|
||||
|
||||
if(empty($customedTypeList))
|
||||
{
|
||||
$lang = new stdclass;
|
||||
$lang->bug = new stdclass;
|
||||
$lang->productCommon = '';
|
||||
$lang->projectCommon = '';
|
||||
$lang->more = '';
|
||||
$langFile = $this->app->getModuleRoot() . DS . 'bug' . DS . 'lang' . DS . $langCode . '.php';
|
||||
if(is_file($langFile)) include $langFile;
|
||||
$langs = array_merge($lang->bug->typeList, $langs);
|
||||
}
|
||||
|
||||
foreach($langs as $type => $typeName) $this->loadModel('custom')->setItem("{$langCode}.bug.typeList.{$type}.1", $typeName);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -21,7 +21,7 @@ $jsFiles[] = $jsRoot . 'my.full.js';
|
||||
/* Combine these js files. */
|
||||
$allJSFile = $jsRoot . 'all.js';
|
||||
$jsCode = '';
|
||||
foreach($jsFiles as $jsFile) $jsCode .= "\n". file_get_contents($jsFile);
|
||||
foreach($jsFiles as $jsFile) $jsCode .= "\n". str_replace('/*!', '/*', file_get_contents($jsFile));
|
||||
file_put_contents($allJSFile, $jsCode);
|
||||
|
||||
/* Compress it. */
|
||||
@@ -33,16 +33,19 @@ file_put_contents($allJSFile, $jsCode);
|
||||
$themeRoot = $baseDir . '/www/theme/';
|
||||
|
||||
/* Iinclude config and lang file to get langs and themes. */
|
||||
$config = new stdclass();
|
||||
include $baseDir . '/config/config.php';
|
||||
|
||||
$lang = new stdclass();
|
||||
$lang->productCommon = '';
|
||||
$lang->projectCommon = '';
|
||||
$lang->storyCommon = '';
|
||||
include $baseDir . '/module/common/lang/zh-cn.php';
|
||||
$langs = array_keys($config->langs);
|
||||
$themes = array_keys($lang->themes);
|
||||
|
||||
/* Create css files for every them and every lang. */
|
||||
$zuiCode = str_replace('../fonts', '../zui/fonts', file_get_contents($themeRoot . 'zui/css/min.css'));
|
||||
$zuiCode = str_replace(array('/*!', '../fonts'), array('/*', '../zui/fonts'), file_get_contents($themeRoot . 'zui/css/min.css'));
|
||||
foreach($langs as $lang)
|
||||
{
|
||||
foreach($themes as $theme)
|
||||
|
||||
Reference in New Issue
Block a user