@transitions = Internal.issues.listTransitions(@issue.key)
render :partial => 'issue/view'
else
+ # TODO
render :status => 400
end
end
+ #
+ #
+ # ACTIONS FROM ISSUES TAB OF RESOURCE VIEWER
+ #
+ #
+
+ def issue_transition_form
+ require_parameters :id, :transition
+
+ init_issue(params[:id])
+ @transition = params[:transition]
+ bad_request('Missing transition') if @transition.blank?
+
+ render :partial => 'issue/code_viewer/transition_form'
+ end
+
+ # POST
+ def issue_transition
+ verify_post_request
+ require_parameters :id, :transition
+ issue = Internal.issues.doTransition(params[:id], params[:transition])
+ if issue
+ init_issue(params[:id])
+ @transitions = Internal.issues.listTransitions(@issue.key)
+ render :partial => 'resource/issue', :locals => {:issue => @issue}
+ else
+ # TODO
+ render :status => 400
+ end
+ end
+
+ # GET
+ def display_issue
+ init_issue(params[:id])
+ render :partial => 'resource/issue', :locals => {:issue => @issue}
+ end
+
protected
def init_issue(issue_key)
@filtered = !@expanded
rule_param = params[:rule]
- options = {'components' => @resource.key, 'resolutions' => 'OPEN'}
+ options = {'components' => @resource.key, 'resolutions' => ['OPEN', 'FIXED']}
if rule_param.blank? && params[:metric]
metric = Metric.by_id(params[:metric])
--- /dev/null
+<form method="POST"
+ onsubmit="new Ajax.Updater('issue-key<%= params[:id] -%>', '<%= url_for :controller => 'issue', :action => 'issue_transition' -%>', {asynchronous:true, evalScripts:true, parameters:Form.serialize(this)});return false;">
+ <input type="hidden" name="id" value="<%= params[:id] -%>"/>
+ <input type="hidden" name="transition" value="<%= params[:transition] -%>"/>
+
+ <table class="width100">
+ <tr>
+ <td style="vertical-align:top">
+ <textarea id="commentText<%= params[:id] -%>" rows="4" name="text" style="width: 100%"></textarea>
+ </td>
+ <td class="sep"></td>
+ <td style="vertical-align:top;width: 90px">
+ <%= render :partial => 'markdown/tips' -%>
+ </td>
+ </tr>
+ </table>
+
+ <div>
+ <%= submit_to_remote "submit_btn"+params[:id],
+ message("issues.transition.#{params[:transition]}.button"),
+ :url => {:controller => 'issue', :action => 'issue_transition'},
+ :html => {:id => "submit_btn"+params[:id]},
+ :update => 'issue-key'+params[:id] -%>
+
+ <%= link_to_function message('cancel'), "cancelIssueAction('#{params[:id]}')" -%>
+ </div>
+</form>
-<div id="vId<%= issue.key -%>">
+<div id="issue-key<%= issue.key -%>">
<div class="violation">
<div class="vtitle">
- <%
- # TODO
- #if violation.review
- if false
- %>
<div class="review_permalink">
+ <span class="review_permalink"><%= link_to message('issue'), :controller => "issue", :action => "view", :id => issue.key -%></span>
</div>
- <% end %>
<img src="<%= ApplicationController.root_context -%>/images/priority/<%= issue.severity -%>.png">
</div>
<div class="discussionComment first">
- <div id="vMsg<%= issue.key -%>">
+ <div id="issue-description<%= issue.key -%>">
<% issue_description = issue.description ? Api::Utils.split_newlines(h(issue.description)).join('<br/>') : '' %>
<%= issue_description || ' ' -%>
</div>
</div>
- </div>
+ <% if current_user %>
+ <div class="vActions" id="issue-actions<%= issue.key -%>">
+ <% if defined?(error_message) && error_message %>
+ <div id="issue-error-<%= issue.key -%>" class="error"><%= h error_message -%> <a href="#" onclick="$('issue-error-<%= issue.key -%>').hide(); return false;"><%= message('issues.hide_this_message') -%></a></div>
+ <% end %>
+ <% transitions = Internal.issues.listTransitions(issue.key) %>
+ <% transitions.each do |transition| %>
+ <%= link_to_function message("issues.transition.#{transition.key}.button"), "displayIssueTransitionForm('#{issue.key}', '#{transition.key}')",
+ :name => message("issues.transition.#{transition.key}.button"), :class => 'link-action spacer-right' -%>
+ <% end %>
+ </div>
+ <% end %>
+ <div class="discussionComment" id="issue-form<%= issue.key -%>" style="display:none"></div>
+ </div>
</div>
\ No newline at end of file
return false;
}
+/*
+ Functions used in issues code viewer
+ */
+
+// show the form for transition
+function displayIssueTransitionForm(issueKey, transitionKey) {
+ // TODO
+ //hideMoreViolationActions(violation_id);
+ new Ajax.Updater('issue-form' + issueKey,
+ baseUrl + '/issue/issue_transition_form?id=' + issueKey + '&transition='+ transitionKey,
+ {
+ asynchronous:true,
+ evalScripts:true,
+ onComplete:function (request) {
+ $('issue-actions' + issueKey).remove();
+ $('issue-form' + issueKey).show();
+ // TODO
+// $('commentText' + issueKey).focus();
+ }
+ });
+ return false;
+}
+
+// cancel action : hide form and refresh issue
+function cancelIssueAction(issueKey) {
+ new Ajax.Updater(
+ 'issue-key' + issueKey,
+ baseUrl + '/issue/display_issue/' + issueKey,
+ {
+ asynchronous:true,
+ evalScripts:true
+ });
+ return false;
+}
+
/*
Functions used in tests viewer
*/