voluntary_scholarship 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (81) hide show
  1. data/MIT-LICENSE +20 -0
  2. data/README.rdoc +3 -0
  3. data/Rakefile +23 -0
  4. data/app/controllers/concerns/scholarship/base_controller.rb +17 -0
  5. data/app/controllers/product/scholarship_controller.rb +6 -0
  6. data/app/controllers/scholarship/iteration_participations_controller.rb +80 -0
  7. data/app/controllers/scholarship/iterations_controller.rb +72 -0
  8. data/app/controllers/scholarship/programs_controller.rb +66 -0
  9. data/app/controllers/scholarship/team_memberships_controller.rb +77 -0
  10. data/app/controllers/scholarship/teams_controller.rb +63 -0
  11. data/app/controllers/scholarship/workflow/organization_owner_controller.rb +10 -0
  12. data/app/controllers/scholarship/workflow/team_leader_controller.rb +10 -0
  13. data/app/controllers/scholarship/workflow_controller.rb +10 -0
  14. data/app/helpers/voluntary_scholarship/iteration_participations_helper.rb +19 -0
  15. data/app/helpers/voluntary_scholarship/team_memberships_helper.rb +19 -0
  16. data/app/models/concerns/scholarship/role_request.rb +36 -0
  17. data/app/models/product/scholarship.rb +2 -0
  18. data/app/models/scholarship/iteration.rb +36 -0
  19. data/app/models/scholarship/iteration_participation.rb +66 -0
  20. data/app/models/scholarship/program.rb +18 -0
  21. data/app/models/scholarship/team.rb +33 -0
  22. data/app/models/scholarship/team_membership.rb +22 -0
  23. data/app/views/product/scholarship/index.html.erb +0 -0
  24. data/app/views/scholarship/iteration_participations/_actions.html.erb +18 -0
  25. data/app/views/scholarship/iteration_participations/_collection.html.erb +51 -0
  26. data/app/views/scholarship/iteration_participations/_form.html.erb +23 -0
  27. data/app/views/scholarship/iteration_participations/edit.html.erb +3 -0
  28. data/app/views/scholarship/iteration_participations/index.html.erb +3 -0
  29. data/app/views/scholarship/iteration_participations/new.html.erb +3 -0
  30. data/app/views/scholarship/iteration_participations/with_state.html.erb +1 -0
  31. data/app/views/scholarship/iterations/_actions.html.erb +19 -0
  32. data/app/views/scholarship/iterations/_form.html.erb +14 -0
  33. data/app/views/scholarship/iterations/edit.html.erb +3 -0
  34. data/app/views/scholarship/iterations/index.html.erb +33 -0
  35. data/app/views/scholarship/iterations/new.html.erb +3 -0
  36. data/app/views/scholarship/iterations/show.html.erb +9 -0
  37. data/app/views/scholarship/programs/_actions.html.erb +19 -0
  38. data/app/views/scholarship/programs/_form.html.erb +13 -0
  39. data/app/views/scholarship/programs/edit.html.erb +3 -0
  40. data/app/views/scholarship/programs/index.html.erb +33 -0
  41. data/app/views/scholarship/programs/new.html.erb +3 -0
  42. data/app/views/scholarship/programs/show.html.erb +11 -0
  43. data/app/views/scholarship/team_memberships/_actions.html.erb +18 -0
  44. data/app/views/scholarship/team_memberships/_collection.html.erb +47 -0
  45. data/app/views/scholarship/team_memberships/_form.html.erb +22 -0
  46. data/app/views/scholarship/team_memberships/edit.html.erb +3 -0
  47. data/app/views/scholarship/team_memberships/index.html.erb +3 -0
  48. data/app/views/scholarship/team_memberships/new.html.erb +3 -0
  49. data/app/views/scholarship/team_memberships/with_state.html.erb +1 -0
  50. data/app/views/scholarship/teams/_actions.html.erb +19 -0
  51. data/app/views/scholarship/teams/_form.html.erb +15 -0
  52. data/app/views/scholarship/teams/edit.html.erb +3 -0
  53. data/app/views/scholarship/teams/index.html.erb +29 -0
  54. data/app/views/scholarship/teams/new.html.erb +3 -0
  55. data/app/views/scholarship/teams/show.html.erb +19 -0
  56. data/app/views/scholarship/workflow/index.html.erb +0 -0
  57. data/app/views/scholarship/workflow/organization_owner/index.html.erb +24 -0
  58. data/app/views/scholarship/workflow/team_leader/index.html.erb +24 -0
  59. data/config/locales/products/scholarship/workflow/en.yml +12 -0
  60. data/config/locales/resources/scholarship_iteration/en.yml +22 -0
  61. data/config/locales/resources/scholarship_iteration_participation/en.yml +39 -0
  62. data/config/locales/resources/scholarship_program/en.yml +16 -0
  63. data/config/locales/resources/scholarship_team/en.yml +23 -0
  64. data/config/locales/resources/scholarship_team_membership/en.yml +30 -0
  65. data/config/main_scholarship_navigation.rb +3 -0
  66. data/config/routes.rb +54 -0
  67. data/db/migrate/20140306201232_add_scholarship_product.rb +12 -0
  68. data/db/migrate/20140310181004_create_scholarship_programs.rb +12 -0
  69. data/db/migrate/20140310192931_create_scholarship_iterations.rb +13 -0
  70. data/db/migrate/20140311173818_create_scholarship_teams.rb +28 -0
  71. data/db/migrate/20140314154216_create_scholarship_iteration_participations.rb +15 -0
  72. data/db/schema.rb +85 -0
  73. data/lib/tasks/voluntary_scholarship_tasks.rake +4 -0
  74. data/lib/voluntary_scholarship.rb +13 -0
  75. data/lib/voluntary_scholarship/ability.rb +34 -0
  76. data/lib/voluntary_scholarship/concerns/model/has_scholarship_programs.rb +13 -0
  77. data/lib/voluntary_scholarship/concerns/model/user/has_scholarship_teams.rb +43 -0
  78. data/lib/voluntary_scholarship/engine.rb +28 -0
  79. data/lib/voluntary_scholarship/navigation.rb +114 -0
  80. data/lib/voluntary_scholarship/version.rb +3 -0
  81. metadata +468 -0
@@ -0,0 +1,33 @@
1
+ <h3><%= t("scholarship_iterations.index.title") %></h3>
2
+ <% if @iterations.none? || @iterations.select{|e| e.id.present? }.none? %>
3
+ <p><%= I18n.t("scholarship_iterations.index.empty_collection")%></p>
4
+ <% else %>
5
+ <table class="table table-striped">
6
+ <thead>
7
+ <tr class="<%= cycle('odd', 'even') %>">
8
+ <th><%= t("activerecord.attributes.general.name") %></th>
9
+ <th><%= t("activerecord.models.scholarship_program") %></th>
10
+ <th></th>
11
+ </tr>
12
+ </thead>
13
+ <tbody>
14
+ <% @iterations.select{|e| e.id.present? }.each do |iteration| %>
15
+ <tr class="<%= cycle('odd', 'even') %>">
16
+ <td>
17
+ <%= link_to iteration.name, scholarship_iteration_path(iteration) %>
18
+ </td>
19
+ <td>
20
+ <%= link_to iteration.program.name, scholarship_program_path(iteration.program) %>
21
+ </td>
22
+ <td>
23
+ <%= render partial: 'actions', locals: { iteration: iteration } %>
24
+ </td>
25
+ </tr>
26
+ <% end %>
27
+ </tbody>
28
+ </table>
29
+ <% end %>
30
+
31
+ <%= will_paginate @iterations %>
32
+
33
+ <%= link_to t("scholarship_iterations.new.title"), new_scholarship_program_iteration_path(@program) %>
@@ -0,0 +1,3 @@
1
+ <h3><%= t('scholarship_iterations.new.title') %></h3>
2
+
3
+ <%= render 'form' %>
@@ -0,0 +1,9 @@
1
+ <h3>
2
+ <a name="top">&nbsp;</a>
3
+ <%= @iteration.name %>
4
+ </h3>
5
+
6
+ <dl class="dl-horizontal">
7
+ <%= show_associations :program %>
8
+ <%= render partial: 'actions', locals: { iteration: @iteration } %>
9
+ </dl>
@@ -0,0 +1,19 @@
1
+ <% if can?(:destroy, program) || can?(:edit, program) %>
2
+ <div class="dropdown">
3
+ <a class="dropdown-toggle" data-toggle="dropdown" href="#"><%= t('general.actions') %></a>
4
+ <ul class="dropdown-menu" role="menu" aria-labelledby="dLabel">
5
+ <% if can? :destroy, program %>
6
+ <li>
7
+ <%= link_to(
8
+ t('general.destroy'), scholarship_program_path(program.id), id: "program_#{program.id}", method: :delete,
9
+ data: { confirm: t('general.questions.are_you_sure') },
10
+ onclick: "delete_link('program_#{program.id}'); return false;"
11
+ ) %>
12
+ </li>
13
+ <% end %>
14
+ <% if can? :edit, program %>
15
+ <li><%= link_to t('general.edit'), eval("edit_scholarship_program_path(program)") %></li>
16
+ <% end %>
17
+ </ul>
18
+ </div>
19
+ <% end %>
@@ -0,0 +1,13 @@
1
+ <%= simple_form_for(@program, html: {class: 'form-horizontal'}) do |f| %>
2
+ <%= render partial: 'shared/form/error_messages', locals: { resource: @program } %>
3
+
4
+ <div class="form-inputs">
5
+ <%= f.input :organization_id, collection: current_user.organizations %>
6
+ <%= f.input :name %>
7
+ <%= f.input :text, input_html: {style: 'width: 500px; height:300px;'} %>
8
+ </div>
9
+
10
+ <div class="form-actions">
11
+ <%= f.button :submit %>
12
+ </div>
13
+ <% end %>
@@ -0,0 +1,3 @@
1
+ <h3><%= t('scholarship_programs.edit.title') %></h3>
2
+
3
+ <%= render 'form' %>
@@ -0,0 +1,33 @@
1
+ <h3><%= t("scholarship_programs.index.title") %></h3>
2
+ <% if @programs.none? || @programs.select{|e| e.id.present? }.none? %>
3
+ <p><%= I18n.t("scholarship_programs.index.empty_collection")%></p>
4
+ <% else %>
5
+ <table class="table table-striped">
6
+ <thead>
7
+ <tr class="<%= cycle('odd', 'even') %>">
8
+ <th><%= t("activerecord.attributes.general.name") %></th>
9
+ <th><%= t("activerecord.models.organization") %></th>
10
+ <th></th>
11
+ </tr>
12
+ </thead>
13
+ <tbody>
14
+ <% @programs.select{|e| e.id.present? }.each do |program| %>
15
+ <tr class="<%= cycle('odd', 'even') %>">
16
+ <td>
17
+ <%= link_to program.name, scholarship_program_path(program) %>
18
+ </td>
19
+ <td>
20
+ <%= link_to program.organization.name, organization_path(program.organization) %>
21
+ </td>
22
+ <td>
23
+ <%= render partial: 'actions', locals: { program: program } %>
24
+ </td>
25
+ </tr>
26
+ <% end %>
27
+ </tbody>
28
+ </table>
29
+ <% end %>
30
+
31
+ <%= will_paginate @programs %>
32
+
33
+ <%= link_to t("scholarship_programs.new.title"), @organization ? new_organization_scholarship_program_path(@organization) : new_scholarship_program_path %>
@@ -0,0 +1,3 @@
1
+ <h3><%= t('scholarship_programs.new.title') %></h3>
2
+
3
+ <%= render 'form' %>
@@ -0,0 +1,11 @@
1
+ <h3>
2
+ <a name="top">&nbsp;</a>
3
+ <%= @program.name %>
4
+ </h3>
5
+
6
+ <dl class="dl-horizontal">
7
+ <%= show_associations :organization %>
8
+ <%= render partial: 'actions', locals: { program: @program } %>
9
+ </dl>
10
+
11
+ <%= markdown @program.text.to_s %>
@@ -0,0 +1,18 @@
1
+ <% if can?(:destroy, team_membership) || can?(:edit, team_membership) %>
2
+ <div class="dropdown">
3
+ <a class="dropdown-toggle" data-toggle="dropdown" href="#"><%= t('general.actions') %></a>
4
+ <ul class="dropdown-menu" role="menu" aria-labelledby="dLabel">
5
+ <% if can? :destroy, team_membership %>
6
+ <li><%= destroy_scholarship_team_membership_link(team_membership) %></li>
7
+ <% end %>
8
+ <% if can? :edit, team_membership %>
9
+ <li><%= link_to t('general.edit'), eval("edit_scholarship_team_membership_path(team_membership)") %></li>
10
+ <% end %>
11
+
12
+ <% if team_membership.state_events.select{|event| can? event, team_membership }.any? %>
13
+ <li class="divider"></li>
14
+ <% end %>
15
+ <%= render 'shared/resource/event_elements', resource: team_membership, type: 'scholarship_team_memberships' %>
16
+ </ul>
17
+ </div>
18
+ <% end %>
@@ -0,0 +1,47 @@
1
+ <% show_team ||= false %>
2
+ <% if @team_memberships.none? || @team_memberships.select{|e| e.id.present? }.none? %>
3
+ <p><%= I18n.t("scholarship_team_memberships.index.empty_collection")%></p>
4
+ <% else %>
5
+ <table class="table table-striped">
6
+ <thead>
7
+ <tr class="<%= cycle('odd', 'even') %>">
8
+ <th><%= t('activerecord.models.user') %></th>
9
+ <% if show_team %>
10
+ <th><%= t('activerecord.models.scholarship/team') %></th>
11
+ <% end %>
12
+ <th><%= t('attributes.roles') %></th>
13
+ <th></th>
14
+ </tr>
15
+ </thead>
16
+ <tbody>
17
+ <% @team_memberships.select{|e| e.id.present? }.each do |team_membership| %>
18
+ <tr class="<%= cycle('odd', 'even') %>">
19
+ <td>
20
+ <%= link_to team_membership.user.full_name, user_path(team_membership.user) %>
21
+ </td>
22
+ <% if show_team %>
23
+ <td>
24
+ <%= link_to team_membership.team, scholarship_team_path(team_membership.team) %>
25
+ </td>
26
+ <% end %>
27
+ <td>
28
+ <%= team_membership.roles.map(&:to_s).map(&:humanize).join(', ') %>
29
+ </td>
30
+ <td>
31
+ <%= render partial: 'scholarship/team_memberships/actions', locals: { team_membership: team_membership } %>
32
+ </td>
33
+ </tr>
34
+ <% end %>
35
+ </tbody>
36
+ </table>
37
+ <% end %>
38
+
39
+ <%= will_paginate @team_memberships %>
40
+
41
+ <% if @team.present? %>
42
+ <% if current_user.is_member_of_scholarship_team?(@team) %>
43
+ <%= destroy_scholarship_team_membership_link(current_user.membership_of_scholarship_team(@team)) %>
44
+ <% elsif can?(:create, Scholarship::TeamMembership) %>
45
+ <%= link_to t("scholarship_team_memberships.new.title"), new_scholarship_team_member_path(@team) %>
46
+ <% end %>
47
+ <% end %>
@@ -0,0 +1,22 @@
1
+ <%= simple_form_for(@team_membership, html: {class: 'form-horizontal'}) do |f| %>
2
+ <%= f.input :team_id, as: :hidden %>
3
+ <%= render partial: 'shared/form/error_messages', locals: { resource: @team_membership } %>
4
+
5
+ <div class="form-inputs">
6
+ <% if can_update_scholarship_team_membership_roles?(@team_membership) %>
7
+ <%= f.input :roles, as: :check_boxes, collection: Scholarship::TeamMembership::ROLES.map { |r| [r.capitalize, r] }, include_hidden: false, label: t('attributes.roles') %>
8
+ <% else %>
9
+ <div class="control-group string required">
10
+ <label class="string required control-label">
11
+ <abbr title="required">*</abbr> Roles
12
+ </label>
13
+ <div class="controls"><%= @team_membership.roles.map(&:to_s).map(&:humanize).join(', ') %></div>
14
+ </div>
15
+ <% end %>
16
+ <%= f.input :text, label: t('attributes.text'), input_html: {style: 'width: 500px; height:300px;'} %>
17
+ </div>
18
+
19
+ <div class="form-actions">
20
+ <%= f.button :submit %>
21
+ </div>
22
+ <% end %>
@@ -0,0 +1,3 @@
1
+ <h3><%= t('scholarship_team_memberships.edit.title') %></h3>
2
+
3
+ <%= render 'form' %>
@@ -0,0 +1,3 @@
1
+ <h3><%= t("scholarship_team_memberships.index.title") %></h3>
2
+
3
+ <%= render 'collection' %>
@@ -0,0 +1,3 @@
1
+ <h3><%= t('scholarship_team_memberships.new.title') %></h3>
2
+
3
+ <%= render 'form' %>
@@ -0,0 +1 @@
1
+ <%= render partial: 'collection', locals: { show_team: true } %>
@@ -0,0 +1,19 @@
1
+ <% if can?(:destroy, team) || can?(:edit, team) %>
2
+ <div class="dropdown">
3
+ <a class="dropdown-toggle" data-toggle="dropdown" href="#"><%= t('general.actions') %></a>
4
+ <ul class="dropdown-menu" role="menu" aria-labelledby="dLabel">
5
+ <% if can? :destroy, team %>
6
+ <li>
7
+ <%= link_to(
8
+ t('general.destroy'), scholarship_team_path(team.id), id: "team_#{team.id}", method: :delete,
9
+ data: { confirm: t('general.questions.are_you_sure') },
10
+ onclick: "delete_link('team_#{team.id}'); return false;"
11
+ ) %>
12
+ </li>
13
+ <% end %>
14
+ <% if can? :edit, team %>
15
+ <li><%= link_to t('general.edit'), eval("edit_scholarship_team_path(team)") %></li>
16
+ <% end %>
17
+ </ul>
18
+ </div>
19
+ <% end %>
@@ -0,0 +1,15 @@
1
+ <%= simple_form_for(@team, html: {class: 'form-horizontal'}) do |f| %>
2
+ <%= render partial: 'shared/form/error_messages', locals: { resource: @team } %>
3
+
4
+ <div class="form-inputs">
5
+ <%= f.input :kind, as: :radio_buttons, collection: Scholarship::Team::KINDS.map { |k| [k.capitalize, k] }, blank: false, label: t('activerecord.attributes.scholarship/team.kind') %>
6
+ <%= f.input :name, label: t('attributes.name') %>
7
+ <%= f.input :github_handle, label: t('activerecord.attributes.scholarship/team.github_handle') %>
8
+ <%= f.input :twitter_handle, label: t('activerecord.attributes.scholarship/team.twitter_handle') %>
9
+ <%= f.input :text, label: t('attributes.text'), input_html: {style: 'width: 500px; height:300px;'} %>
10
+ </div>
11
+
12
+ <div class="form-actions">
13
+ <%= f.button :submit %>
14
+ </div>
15
+ <% end %>
@@ -0,0 +1,3 @@
1
+ <h3><%= t('scholarship_teams.edit.title') %></h3>
2
+
3
+ <%= render 'form' %>
@@ -0,0 +1,29 @@
1
+ <h3><%= t("scholarship_teams.index.title") %></h3>
2
+ <% if @teams.none? || @teams.select{|e| e.id.present? }.none? %>
3
+ <p><%= I18n.t("scholarship_teams.index.empty_collection")%></p>
4
+ <% else %>
5
+ <table class="table table-striped">
6
+ <thead>
7
+ <tr class="<%= cycle('odd', 'even') %>">
8
+ <th><%= t("activerecord.attributes.general.name") %></th>
9
+ <th></th>
10
+ </tr>
11
+ </thead>
12
+ <tbody>
13
+ <% @teams.select{|e| e.id.present? }.each do |team| %>
14
+ <tr class="<%= cycle('odd', 'even') %>">
15
+ <td>
16
+ <%= link_to team.name, scholarship_team_path(team) %>
17
+ </td>
18
+ <td>
19
+ <%= render partial: 'actions', locals: { team: team } %>
20
+ </td>
21
+ </tr>
22
+ <% end %>
23
+ </tbody>
24
+ </table>
25
+ <% end %>
26
+
27
+ <%= will_paginate @teams %>
28
+
29
+ <%= link_to t("scholarship_teams.new.title"), new_scholarship_team_path %>
@@ -0,0 +1,3 @@
1
+ <h3><%= t('scholarship_teams.new.title') %></h3>
2
+
3
+ <%= render 'form' %>
@@ -0,0 +1,19 @@
1
+ <h3>
2
+ <a name="top">&nbsp;</a>
3
+ <%= @team.name %>
4
+ </h3>
5
+
6
+ <dl class="dl-horizontal">
7
+ <%= show_attribute(:kind) %>
8
+ <%= show_attribute(
9
+ :github_handle,
10
+ value: @team.github_handle.blank? ? '' : link_to(@team.github_handle, "http://github.com/#{@team.github_handle}")
11
+ ) %>
12
+ <%= show_attribute(
13
+ :twitter_handle,
14
+ value: @team.twitter_handle.blank? ? '' : link_to(@team.twitter_handle, "http://twitter.com/#{@team.twitter_handle}.gsub('@', '')")
15
+ ) %>
16
+ <dt>&nbsp;</dt><dd><%= render partial: 'actions', locals: { team: @team } %></dd>
17
+ </dl>
18
+
19
+ <%= markdown @team.text.to_s %>
@@ -0,0 +1,24 @@
1
+ <h3><%= t('scholarship_iteration_participations.workflow.title') %></h3>
2
+ <div class="tabs">
3
+ <ul>
4
+ <li><a href="#requested_team_memberships"><%= t('scholarship_iteration_participations.workflow.requested') %></a></li>
5
+ <li>
6
+ <a href="<%= with_state_scholarship_iteration_participations_path(state: 'accepted') %>">
7
+ <%= t('scholarship_iteration_participations.workflow.accepted') %>
8
+ </a>
9
+ </li>
10
+ <li>
11
+ <a href="<%= with_state_scholarship_iteration_participations_path(state: 'changed_roles') %>">
12
+ <%= t('scholarship_iteration_participations.workflow.changed_roles') %>
13
+ </a>
14
+ </li>
15
+ <li>
16
+ <a href="<%= with_state_scholarship_iteration_participations_path(state: 'denied') %>">
17
+ <%= t('scholarship_iteration_participations.workflow.denied') %>
18
+ </a>
19
+ </li>
20
+ </ul>
21
+ <div id="requested_team_memberships">
22
+ <%= render 'scholarship/iteration_participations/collection', locals: { show_team: true } %>
23
+ </div>
24
+ </div>
@@ -0,0 +1,24 @@
1
+ <h3><%= t('scholarship_team_memberships.workflow.title') %></h3>
2
+ <div class="tabs">
3
+ <ul>
4
+ <li><a href="#requested_team_memberships"><%= t('scholarship_team_memberships.workflow.requested') %></a></li>
5
+ <li>
6
+ <a href="<%= with_state_scholarship_team_memberships_path(state: 'accepted') %>">
7
+ <%= t('scholarship_team_memberships.workflow.accepted') %>
8
+ </a>
9
+ </li>
10
+ <li>
11
+ <a href="<%= with_state_scholarship_team_memberships_path(state: 'changed_roles') %>">
12
+ <%= t('scholarship_team_memberships.workflow.changed_roles') %>
13
+ </a>
14
+ </li>
15
+ <li>
16
+ <a href="<%= with_state_scholarship_team_memberships_path(state: 'denied') %>">
17
+ <%= t('scholarship_team_memberships.workflow.denied') %>
18
+ </a>
19
+ </li>
20
+ </ul>
21
+ <div id="requested_team_memberships">
22
+ <%= render 'scholarship/team_memberships/collection', locals: { show_team: true } %>
23
+ </div>
24
+ </div>
@@ -0,0 +1,12 @@
1
+ en:
2
+
3
+ products:
4
+ scholarship:
5
+ workflow:
6
+ organization_owner:
7
+ index:
8
+ title: Organization Owner
9
+
10
+ team_leader:
11
+ index:
12
+ title: Team Leader
@@ -0,0 +1,22 @@
1
+ en:
2
+ scholarship_iterations:
3
+ index:
4
+ title: Scholarship Iterations
5
+ short_title: Iterations
6
+ name: Name
7
+ empty_collection: No scholarship iterations available.
8
+
9
+ new:
10
+ title: New Scholarship Iteration
11
+ edit:
12
+ title: Edit Scholarship Iteration
13
+
14
+ activerecord:
15
+ models:
16
+ scholarship/iteration: Scholarship Iteration
17
+ errors:
18
+ models:
19
+ scholarship_iteration:
20
+ attributes:
21
+ to:
22
+ to_must_be_greater_than_from: 'must be greater than from'
@@ -0,0 +1,39 @@
1
+ en:
2
+ scholarship_iteration_participations:
3
+ index:
4
+ title: Participants
5
+ name: Name
6
+ empty_collection: No scholarship iteration participants available.
7
+
8
+ new:
9
+ title: Join Iteration
10
+ edit:
11
+ title: Edit Iteration Participation
12
+ destroy:
13
+ title: Leave Iteration
14
+
15
+ show:
16
+ events:
17
+ accept: Accept
18
+ deny: Deny
19
+ change_roles: Change roles
20
+
21
+ workflow:
22
+ title: Iteration Participations
23
+ requested: Requested
24
+ accepted: Accepted
25
+ changed_roles: Changed roles
26
+ denied:
27
+
28
+ activerecord:
29
+ models:
30
+ scholarship/iteration_participation: Scholarship Iteration Participation
31
+
32
+ errors:
33
+ models:
34
+ scholarship/iteration_participation:
35
+ attributes:
36
+ team_id:
37
+ no_team_membership: You have not joined the team yet.
38
+ no_accepted_team_membership: Your team membership has not been accepted yet.
39
+ team_role_not_included_in_team_membership_roles: Your team membership roles does not include at least one of your team roles.