Commit b0348f2c5da83dca912de7edcfe5dd8b877b4471
1 parent
8d3bc892
Exists in
staging
and in
42 other branches
Makes it possible for the admin to see pending submissions
Showing
4 changed files
with
48 additions
and
2 deletions
Show diff stats
plugins/custom_forms/controllers/custom_forms_plugin_myprofile_controller.rb
@@ -93,6 +93,14 @@ class CustomFormsPluginMyprofileController < MyProfileController | @@ -93,6 +93,14 @@ class CustomFormsPluginMyprofileController < MyProfileController | ||
93 | @form = @submission.form | 93 | @form = @submission.form |
94 | end | 94 | end |
95 | 95 | ||
96 | + def pending | ||
97 | + @form = CustomFormsPlugin::Form.find(params[:id]) | ||
98 | + @pendings = CustomFormsPlugin::AdmissionSurvey.from(@form.profile).pending.select {|task| task.form_id == @form.id}.map {|a| {:profile => a.target, :time => a.created_at} } | ||
99 | + | ||
100 | + @sort_by = params[:sort_by] | ||
101 | + @pendings = @pendings.sort_by { |s| s[:profile].name } if @sort_by == 'user' | ||
102 | + end | ||
103 | + | ||
96 | private | 104 | private |
97 | 105 | ||
98 | def normalize_positions(form) | 106 | def normalize_positions(form) |
plugins/custom_forms/test/functional/custom_forms_plugin_myprofile_controller_test.rb
@@ -216,5 +216,14 @@ class CustomFormsPluginMyprofileControllerTest < ActionController::TestCase | @@ -216,5 +216,14 @@ class CustomFormsPluginMyprofileControllerTest < ActionController::TestCase | ||
216 | assert_not_nil assigns(:sort_by) | 216 | assert_not_nil assigns(:sort_by) |
217 | assert_select 'table.action-table', /Author\W*Time\W*bob[\W\dh]*john[\W\dh]*/ | 217 | assert_select 'table.action-table', /Author\W*Time\W*bob[\W\dh]*john[\W\dh]*/ |
218 | end | 218 | end |
219 | -end | ||
220 | 219 | ||
220 | + should 'list pending submissions for a form' do | ||
221 | + person = fast_create(Person) | ||
222 | + form = CustomFormsPlugin::Form.create!(:profile => profile, :name => 'Free Software', :for_admission => true) | ||
223 | + task = CustomFormsPlugin::AdmissionSurvey.create!(:form_id => form.id, :target => person, :requestor => profile) | ||
224 | + | ||
225 | + get :pending, :profile => profile.identifier, :id => form.id | ||
226 | + | ||
227 | + assert_tag :td, :content => person.name | ||
228 | + end | ||
229 | +end |
plugins/custom_forms/views/custom_forms_plugin_myprofile/index.html.erb
@@ -17,7 +17,9 @@ | @@ -17,7 +17,9 @@ | ||
17 | <td><%= access_text(form) %></td> | 17 | <td><%= access_text(form) %></td> |
18 | <td class="actions"> | 18 | <td class="actions"> |
19 | <%= button_without_text :edit, _('Edit'), :action => 'edit', :id => form.id %> | 19 | <%= button_without_text :edit, _('Edit'), :action => 'edit', :id => form.id %> |
20 | - <%= button_without_text :remove, _('Remove'), {:action => 'remove', :id => form.id}, :confirm => _('Are you sure you want to remove this form?') %></td> | 20 | + <%= button_without_text :remove, _('Remove'), {:action => 'remove', :id => form.id}, :confirm => _('Are you sure you want to remove this form?') %> |
21 | + <%= button_without_text :search, _('Pending'), :action => 'pending', :id => form.id if form.for_admission %> | ||
22 | + </td> | ||
21 | </tr> | 23 | </tr> |
22 | <% end %> | 24 | <% end %> |
23 | <tr id="new-item"> | 25 | <tr id="new-item"> |
plugins/custom_forms/views/custom_forms_plugin_myprofile/pending.html.erb
0 → 100644
@@ -0,0 +1,27 @@ | @@ -0,0 +1,27 @@ | ||
1 | +<% self.extend CustomFormsPlugin::Helper %> | ||
2 | + | ||
3 | +<h1><%= _('Pending submissions for %s') % @form.name %></h1> | ||
4 | + | ||
5 | +<% if @pendings.empty? %> | ||
6 | + <%= _('There are no pending submissions for this form.') %> | ||
7 | +<% else %> | ||
8 | + <p> | ||
9 | + <%= labelled_select(_('Sort by')+': ', :sort_by, :first, :last, @sort_by, [['time', _('Time')], ['user', _('User')]], :onchange => 'document.location.href = "?sort_by="+this.value') %> | ||
10 | + </p> | ||
11 | + <table class="action-table"> | ||
12 | + <tr> | ||
13 | + <th style='width: 50%'><%= _('User') %></th> | ||
14 | + <th style='width: 50%'><%= _('Time') %></th> | ||
15 | + </tr> | ||
16 | + <% @pendings.each do |pending| %> | ||
17 | + <tr> | ||
18 | + <td><%= link_to(pending[:profile].name, {:controller => :profile, :profile => pending[:profile].identifier}) %></td> | ||
19 | + <td><%= time_format(pending[:time]) %></td> | ||
20 | + </tr> | ||
21 | + <% end %> | ||
22 | + </table> | ||
23 | +<% end %> | ||
24 | + | ||
25 | +<% button_bar do %> | ||
26 | + <%= button :back, _('Back to forms'), :action => 'index' %> | ||
27 | +<% end %> |