diff --git a/module/story/control.php b/module/story/control.php index a97bad0cb6..ef6da62ed6 100644 --- a/module/story/control.php +++ b/module/story/control.php @@ -2591,4 +2591,27 @@ class story extends control } echo $status; } + + /** + * Ajax get story assignee. + * + * @param $type create|review|change + * + * @access public + * @return void + */ + public function ajaxGetAssignedTo($type = '', $assignees = '') + { + $users = $this->loadModel('user')->getPairs('noletter|noclosed'); + + if($type = 'create') + { + $selectUser = is_array($assignees) ? current($assignees) : ''; + + return print(html::select('assignedTo', $users, $selectUser, "class='from-control picker-select'")); + } + + return false; + + } } diff --git a/module/story/js/create.js b/module/story/js/create.js index 938aa71652..6ba0258b5f 100644 --- a/module/story/js/create.js +++ b/module/story/js/create.js @@ -16,6 +16,12 @@ $(function() }); $('#needNotReview').change(); + $('#reviewer').on('change', function() + { + loadAssignedTo(); + }); + $('#reviewer').change(); + // init pri selector $('#pri').on('change', function() { @@ -33,16 +39,42 @@ $(function() if($.inArray(source, feedbackSource) != -1) { $('#feedbackBox').removeClass('hidden'); - $('#reviewerBox').attr('colspan', 2); + $('#reviewerBox').attr('colspan', 1); + $('#assignedToBox').attr('colspan', 1); } else { $('#feedbackBox').addClass('hidden'); - $('#reviewerBox').attr('colspan', 4); + $('#reviewerBox').attr('colspan', 2); + $('#assignedToBox').attr('colspan', 2); } }); }); +function loadAssignedTo() +{ + var assignees = $('#reviewer').val(); + var link = createLink('story', 'ajaxGetAssignedTo', 'type=create&assignees=' + assignees); + $.post(link, function(data) + { + $('#assignedTo').replaceWith(data); + $('#assignedToBox .picker').remove(); + $('#assignedTo').picker(); + }); + + var colspan = $('#assignedToBox').attr('colspan'); + if(assignees && assignees.length == 1) + { + $('#assignedToBox').addClass('hidden'); + $('#reviewerBox').attr('colspan', colspan * 2); + } + else + { + $('#assignedToBox').removeClass('hidden'); + $('#reviewerBox').attr('colspan', colspan); + } +} + function refreshPlan() { loadProductPlans($('#product').val(), $('#branch').val()); diff --git a/module/story/model.php b/module/story/model.php index a667e0c34f..73373cf96f 100644 --- a/module/story/model.php +++ b/module/story/model.php @@ -219,6 +219,7 @@ class storyModel extends model ->setIF(!in_array($this->post->source, $this->config->story->feedbackSource), 'notifyEmail', '') ->setIF($executionID > 0, 'stage', 'projected') ->setIF($bugID > 0, 'fromBug', $bugID) + ->join('assignedTo', '') ->join('mailto', ',') ->stripTags($this->config->story->editor->create['id'], $this->config->allowedTags) ->remove('files,labels,reviewer,needNotReview,newStory,uid,contactListMenu,URS,region,lane') diff --git a/module/story/view/create.html.php b/module/story/view/create.html.php index 65afdf1cae..d86cb8df14 100644 --- a/module/story/view/create.html.php +++ b/module/story/view/create.html.php @@ -103,7 +103,7 @@