diff --git a/controllers/myprofile/proposals_discussion_plugin_confirm_tasks_controller.rb b/controllers/myprofile/proposals_discussion_plugin_confirm_tasks_controller.rb new file mode 100644 index 0000000..64d06f0 --- /dev/null +++ b/controllers/myprofile/proposals_discussion_plugin_confirm_tasks_controller.rb @@ -0,0 +1,43 @@ +class ProposalsDiscussionPluginConfirmTasksController < MyProfileController + protect :perform_task, :profile, :only => [:approve_proposal, :reprove_proposal] + + def approve_proposal + result = {} + if request.post? + result = process_decision(params, :finish) + end + render json: result + end + + def reprove_proposal + result = {} + if request.post? + result = process_decision(params, :cancel) + end + render json: result + end + +private + + def process_decision(params, decision) + result = { + success: false, + message: _('Error flagging proposal. Please, contact the system admin') + } + if params[:task_id] and request.post? + begin + task = profile.find_in_all_tasks(params[:task_id]) + task.tag_list = params[:tag_list] + task.article_parent_id = params[:article_parent_id] + task.email_template_id = params[:email_template_id] + task.send(decision, current_person) + result = {:success => true } + rescue Exception => ex + message = "#{task.title} (#{task.requestor ? task.requestor.name : task.author_name})" if task + message = "#{message} #{ex.message}" + result[:message] += ". #{message}" + end + return result + end + end +end diff --git a/controllers/myprofile/proposals_discussion_plugin_evaluate_tasks_controller.rb b/controllers/myprofile/proposals_discussion_plugin_evaluate_tasks_controller.rb index 6bd7fbf..9562e85 100644 --- a/controllers/myprofile/proposals_discussion_plugin_evaluate_tasks_controller.rb +++ b/controllers/myprofile/proposals_discussion_plugin_evaluate_tasks_controller.rb @@ -1,14 +1,15 @@ class ProposalsDiscussionPluginEvaluateTasksController < MyProfileController + protect :view_tasks, :profile, :only => [:approve_proposal, :reprove_proposal] - protect :view_tasks, :profile, :only => [:flag_approve_proposal, :flag_reject_proposal] - - def flag_approve_proposal + def approve_proposal + result = {} if request.post? && params[:task_id] result = { success: false, message: _('Error flagging proposal. Please, contact the system admin') } + task = Task.to(profile).find_by_id params[:task_id] save = task.flag_accept_proposal(current_person) @@ -20,7 +21,8 @@ class ProposalsDiscussionPluginEvaluateTasksController < MyProfileController render json: result end - def flag_reprove_proposal + def reprove_proposal + result = {} if request.post? && params[:task_id] result = { success: false, diff --git a/public/style.css b/public/style.css index 14b3b28..38046fe 100644 --- a/public/style.css +++ b/public/style.css @@ -326,6 +326,7 @@ form .proposals-discussion-plugin .body textarea { width: auto; float: left; padding: 5px; + border: 1px solid #EEEEEE; } .evaluation_button img { @@ -344,7 +345,8 @@ form .proposals-discussion-plugin .body textarea { } div.evaluation_button.checked { - border: 1px dotted black; + border: 1px dashed black; + background-color: white; } .evaluation_button.approval span { @@ -367,8 +369,9 @@ div.evaluation_button.checked { } div.confirm_evaluation_button a { - text-decoration: none; + text-decoration: underline; color: #003366; + font-size: 28px; } div.confirm_evaluation_button a:hover { diff --git a/views/proposals_discussion_plugin_tasks/_task.html.erb b/views/proposals_discussion_plugin_tasks/_task.html.erb index a1f1651..10deb9c 100644 --- a/views/proposals_discussion_plugin_tasks/_task.html.erb +++ b/views/proposals_discussion_plugin_tasks/_task.html.erb @@ -19,28 +19,6 @@ <% end %> -
- <% unless @view_only %> - <%= - labelled_radio_button(_("Accept"), "tasks[#{task.id}][decision]", 'finish', task.flagged_for_approval? || task.default_decision == 'accept', - :id => "decision-finish-#{task.id}", - :class => 'task_accept_radio', - :disabled => task.accept_disabled?, - :task_id => "#{task.id}") + - labelled_radio_button(_("Reject"), "tasks[#{task.id}][decision]", 'cancel', task.flagged_for_reproval? || task.default_decision == 'reject', - :id => "decision-cancel-#{task.id}", - :class => 'task_reject_radio', - :disabled => task.reject_disabled?, - :task_id => "#{task.id}") + - labelled_radio_button(_("Skip"), "tasks[#{task.id}][decision]", 'skip', task.default_decision == 'skip' && task.unflagged?, - :id => "decision-skip-#{task.id}", - :class => 'task_skip_radio', - :disabled => task.skip_disabled?, - :task_id => "#{task.id}") - %> - <% end %> -
-
<%= show_time(task.created_at) %>
<%= render :partial => 'task_title', :locals => {:task => task} %> @@ -49,59 +27,60 @@ <%= task_information(task) %> - - <%= fields_for "tasks[#{task.id}][task]", task do |f| %> - <% if task.accept_details and !@view_only %> - - <% end %> - - <% if task.reject_details and !@view_only %> - - <% end %> - - <% if @view_only %> -
+
+ data-flag-action="approve_proposal"> Aprovar
+ data-task-id="<%= task.id %>" data-flag-action="reprove_proposal"> Reprovar
- <% end %> - <%#= select_tag "tasks[#{task.id}][setting][evaluation_flag]", - options_for_select( - [_('FLAGGED_FOR_APPROVAL'),_('FLAGGED_FOR_REPROVAL')],(task.flagged_status.present? ? task.flagged_status : nil) - ), - { - :include_blank => true, - :onchange => "change_flagged_status(this);", - 'data-old-responsible' => task.flagged_status.present? ? task.flagged_status.id : nil, - 'data-task' => task.id, 'data-url' => 'change_flagged_status_url' - } %> - - -
-
- <%= labelled_text_field(_('Tags'),"tasks[#{task.id}][task][tag_list]", task.tags_from(nil).to_s, :size => 36, :class => 'tag-list','data-submit-values'=>"{'task_id':'#{task.id}'}") %> + + + + + <%= fields_for "tasks[#{task.id}][task]", task do |f| %> + <% if task.accept_details %> + + <% end %> + + <% if task.reject_details %> + + <% end %> + +
+
+ <%= labelled_text_field(_('Tags'),"tasks[#{task.id}][task][tag_list]", task.tags_from(nil).to_s, :size => 36, :class => 'tag-list','data-submit-values'=>"{'task_id':'#{task.id}'}") %> +
+ + <% end %> + + <% unless @view_only #MODERATOR VIEW %> + + <% end %> + <% if @view_only # EVALUATOR VIEW %> diff --git a/views/proposals_discussion_plugin_tasks/_task_accept_details.html.erb b/views/proposals_discussion_plugin_tasks/_task_accept_details.html.erb index e69de29..978b5c5 100644 --- a/views/proposals_discussion_plugin_tasks/_task_accept_details.html.erb +++ b/views/proposals_discussion_plugin_tasks/_task_accept_details.html.erb @@ -0,0 +1,5 @@ +<% unless @view_only %> + <%= f.fields_for 'article', OpenStruct.new(task.article) do |a| %> + <%= select_profile_folder(_('Select the folder where the article must be published'), "tasks[#{task.id}][task][article_parent_id]", task.target, task.article[:parent_id]) %> + <% end %> +<% end %> diff --git a/views/proposals_discussion_plugin_tasks/index.html.erb b/views/proposals_discussion_plugin_tasks/index.html.erb index fbdb0de..5582dfe 100644 --- a/views/proposals_discussion_plugin_tasks/index.html.erb +++ b/views/proposals_discussion_plugin_tasks/index.html.erb @@ -128,9 +128,31 @@ taskElement.find('div.confirm_evaluation_button a').removeClass('disabled'); - $(el).addClass("checked"); + var checkedButton = $(el); + checkedButton.addClass("checked"); + + var flag_action = checkedButton.data('flag-action'); + var animation_options = {duration:'fast', queue: true}; + if(flag_action == 'approve_proposal'){ + $('#on-reject-information-' + task_id).hide(animation_options); + $('#on-skip-information-' + task_id).hide(animation_options); + $('#on-accept-information-' + task_id).show(animation_options); + + } else if(flag_action == 'reprove_proposal') { + $('#on-skip-information-' + task_id).hide(animation_options); + $('#on-accept-information-' + task_id) + .hide( + { + duration:'fast', + complete: function() { + $('#on-reject-information-' + task_id).show('fast'); + } + }); + + } } + function evaluate_task(el) { if($(el).hasClass('disabled')) { @@ -147,10 +169,21 @@ var flag_action = checkedButton.data('flag-action'); + var form = $(el).closest("form"); + + var tag_list = form.find("input.tag-list[type='text']").val(); + var params = { - task_id: task_id + task_id: task_id, + tag_list: tag_list }; + if(flag_action == 'approve_proposal'){ + params['article_parent_id'] = form.find('#tasks_' + task_id + '_task_article_parent_id').val(); + } else if(flag_action == 'reprove_proposal') { + params['email_template_id'] = form.find('#tasks_' + task_id + '_task_email_template_id').val(); + } + jQuery.post(url + "/" + flag_action, params , function(data) { if (data.success) { @@ -159,8 +192,8 @@ } else { $(el).effect("highlight", {color: 'red'}); } - if (data.notice) { - display_notice(data.notice); + if (data.message) { + display_notice(data.message); } }); } -- libgit2 0.21.2