%div.issue-form-holder %h3.page_title= @issue.new_record? ? "New Issue" : "Edit Issue ##{@issue.id}" = form_for [@project, @issue] do |f| -if @issue.errors.any? .alert.alert-error - @issue.errors.full_messages.each do |msg| %span= msg %br .ui-box.ui-box-show .ui-box-head .clearfix = f.label :title do %strong= "Subject *" .input = f.text_field :title, maxlength: 255, class: "xxlarge js-gfm-input", autofocus: true, required: true .ui-box-body .clearfix .issue_assignee.pull-left = f.label :assignee_id do %i.icon-user Assign to .input= f.select(:assignee_id, @project.users.all.collect {|p| [ p.name, p.id ] }, { include_blank: "Select a user" }, {class: 'chosen'}) .issue_milestone.pull-left = f.label :milestone_id do %i.icon-time Milestone .input= f.select(:milestone_id, @project.milestones.active.all.collect {|p| [ p.title, p.id ] }, { include_blank: "Select milestone" }, {class: 'chosen'}) .ui-box-bottom .clearfix = f.label :label_list do %i.icon-tag Labels .input = f.text_field :label_list, maxlength: 2000, class: "xxlarge" %p.hint Separate with comma. .clearfix = f.label :description, "Details" .input = f.text_area :description, maxlength: 2000, class: "xxlarge js-gfm-input", rows: 14 %p.hint Issues are parsed with #{link_to "GitLab Flavored Markdown", help_markdown_path, target: '_blank'}. .actions - if @issue.new_record? = f.submit 'Submit new issue', class: "btn btn-create" -else = f.submit 'Save changes', class: "btn-save btn" - cancel_path = @issue.new_record? ? project_issues_path(@project) : project_issue_path(@project, @issue) = link_to "Cancel", cancel_path, class: 'btn btn-cancel' :javascript $(function(){ $("#issue_label_list") .bind( "keydown", function( event ) { if ( event.keyCode === $.ui.keyCode.TAB && $( this ).data( "autocomplete" ).menu.active ) { event.preventDefault(); } }) .autocomplete({ minLength: 0, source: function( request, response ) { response( $.ui.autocomplete.filter( #{raw labels_autocomplete_source}, extractLast( request.term ) ) ); }, focus: function() { return false; }, select: function(event, ui) { var terms = split( this.value ); terms.pop(); terms.push( ui.item.value ); terms.push( "" ); this.value = terms.join( ", " ); return false; } }); });