diff --git a/module/bug/css/browse.css b/module/bug/css/browse.css index 406bc0ef7e..4c51f2e6b5 100644 --- a/module/bug/css/browse.css +++ b/module/bug/css/browse.css @@ -4,3 +4,8 @@ .confirm0 {color:gray; font-size:9px} .confirm1 {color:green; font-size:9px} .red{color:red;} + +.assign-menu {min-width: 150px; overflow: hidden; max-height: 305px} +.assign-menu.with-search {padding-bottom: 34px;} +.assign-menu > .assign-search {padding: 0; position: absolute; z-index: 0; bottom: 0; left: 0; right: 0} +.assign-menu > .assign-search .input-group-addon {position: absolute; right: 10px; top: 0; z-index: 10; background: none; border: none; color: #666} diff --git a/module/bug/js/browse.js b/module/bug/js/browse.js index b0d47891e5..4dc58de983 100644 --- a/module/bug/js/browse.js +++ b/module/bug/js/browse.js @@ -3,4 +3,18 @@ $(document).ready(function() $('#' + browseType + 'Tab').addClass('active'); $('#module' + moduleID).addClass('active'); if(browseType == 'bysearch') ajaxGetSearchForm(); + + $('.assign-search').click(function(e) + { + e.stopPropagation(); + return false; + }).on('keyup change paste', 'input', function() + { + var val = $(this).val().toLowerCase(); + $('.assign-menu > .option').each(function() + { + var $option = $(this); + $option.toggleClass('hide', $option.text().toLowerCase().indexOf(val) < 0 && $option.data('key').toLowerCase().indexOf(val) < 0); + }); + }); }); diff --git a/module/bug/view/browse.html.php b/module/bug/view/browse.html.php index 8f8ed62caf..013c9dc5b9 100644 --- a/module/bug/view/browse.html.php +++ b/module/bug/view/browse.html.php @@ -226,24 +226,27 @@ js::set('moduleID', $moduleID); } } echo ''; + $canBatchAssignTo = common::hasPriv('bug', 'batchAssignTo'); + if($canBatchAssignTo && count($bugs)) + { + $withSearch = count($memberPairs) > 10; + $actionLink = $this->createLink('bug', 'batchAssignTo', "productID={$productID}&type=product"); + echo html::select('assignedTo', $memberPairs, '', 'class="hidden"'); + echo "