diff --git a/module/task/css/edit.css b/module/task/css/edit.css index 479f0ca21d..7c89a401fb 100644 --- a/module/task/css/edit.css +++ b/module/task/css/edit.css @@ -1,3 +1,4 @@ .pl-10px {padding-left: 10px;} #showAllModuleBox{width:60px;} #showAllModuleBox .no-margin {padding-left:22px;} +#taskTeamEditor .sortable .input-group .input-group-addon.required:after {top: 10px; right: 2px; z-index: 3;} diff --git a/module/task/js/create.js b/module/task/js/create.js index d5a95fd922..08ad7b1547 100644 --- a/module/task/js/create.js +++ b/module/task/js/create.js @@ -530,8 +530,9 @@ $(document).on('click', '#testStory_chosen', function() $('#modalTeam .btn').click(function() { - var team = ''; - var time = 0; + var team = ''; + var time = 0; + var error = false; /* Unique team. */ $('select[name^=team]').each(function(i) @@ -548,9 +549,10 @@ $('#modalTeam .btn').click(function() $('select[name^=team]').each(function() { - if($(this).find('option:selected').text() != '') + var account = $(this).find('option:selected').text(); + if(account != '') { - team += ' ' + $(this).find('option:selected').text(); + team += ' ' + account; } estimate = parseFloat($(this).parents('td').next('td').find('[name^=teamEstimate]').val()); @@ -559,9 +561,16 @@ $('#modalTeam .btn').click(function() time += estimate; } - $('#teamMember').val(team); - $('#estimate').val(time); - }) + var requiredFieldList = ',' + requiredFields + ','; + if(account && requiredFieldList.indexOf(',estimate,') >= 0 && (estimate == 0 || isNaN(estimate))) + { + alert(estimateNotEmpty); + error = true; + return false; + } + }); + + if(error) return false; var teamList = team.split(" "); if(teamList.length <= 2) { @@ -570,6 +579,9 @@ $('#modalTeam .btn').click(function() } else { + $('#teamMember').val(team); + $('#estimate').val(time); + if(config.onlybody == 'yes' && vision == 'lite') { $('.close').parent().click(); diff --git a/module/task/js/edit.js b/module/task/js/edit.js index 4ef575532d..97606c1f2e 100644 --- a/module/task/js/edit.js +++ b/module/task/js/edit.js @@ -176,6 +176,7 @@ $('#confirmButton').click(function() var totalEstimate = 0; var totalConsumed = oldConsumed; var totalLeft = 0; + var error = false; $('select[name^=team]').each(function() { if($(this).find('option:selected').text() == '') return; @@ -190,22 +191,36 @@ $('#confirmButton').click(function() left = parseFloat($(this).parents('td').next('td').find('[name^=teamLeft]').val()); if(!isNaN(left)) totalLeft += left; + + var requiredFieldList = ',' + requiredFields + ','; + if(requiredFieldList.indexOf(',estimate,') >= 0 && (estimate == 0 || isNaN(estimate))) + { + $(this).val('').trigger("chosen:updated"); + alert(estimateNotEmpty); + error = true; + return false; + } }) - $('#estimate').val(totalEstimate); - $('#consumedSpan').html(totalConsumed); - $('#left').val(totalLeft); - updateAssignedTo(); + + if(error) return false; if(memberCount < 2) { alert(teamMemberError); return false; } + if(totalLeft == 0 && (taskStatus == 'doing' || taskStatus == 'pause')) { alert(totalLeftError); return false; } + + $('#estimate').val(totalEstimate); + $('#consumedSpan').html(totalConsumed); + $('#left').val(totalLeft); + updateAssignedTo(); + $('.close').click(); }); diff --git a/module/task/view/create.html.php b/module/task/view/create.html.php index 0f6c3bf5a1..bcd0feddbf 100644 --- a/module/task/view/create.html.php +++ b/module/task/view/create.html.php @@ -18,12 +18,15 @@ task->error->teamMember);?> vision);?> task->create->requiredFields);?> +error->notempty, $lang->task->estimate))?> task->create->requiredFields) as $field) { + if($field) $requiredFields[$field] = ''; if($field and strpos($showFields, $field) === false) $showFields .= ',' . $field; } ?> @@ -283,7 +286,7 @@ foreach(explode(',', $config->task->create->requiredFields) as $field)