diff --git a/app/controllers/orgs_controller.rb b/app/controllers/orgs_controller.rb index df58487..82c83a8 100644 --- a/app/controllers/orgs_controller.rb +++ b/app/controllers/orgs_controller.rb @@ -27,11 +27,7 @@ begin # Only allow super admins to change the org types and shib info - if current_user.can_super_admin? - @org.funder = params[:funder].present? - @org.institution = params[:institution].present? - @org.organisation = params[:organisation].present? - + if current_user.can_super_admin? # Handle Shibboleth identifiers if that is enabled if Rails.application.config.shibboleth_use_filtered_discovery_service shib = IdentifierScheme.find_by(name: 'shibboleth') @@ -107,7 +103,7 @@ private def org_params - params.require(:org).permit(:name, :abbreviation, :logo, :contact_email, :contact_name, :remove_logo, + params.require(:org).permit(:name, :abbreviation, :logo, :contact_email, :contact_name, :remove_logo, :org_type, :feedback_enabled, :feedback_email_subject, :feedback_email_msg) end end \ No newline at end of file diff --git a/app/views/orgs/_profile_form.html.erb b/app/views/orgs/_profile_form.html.erb index 1dc27d1..cde9d41 100644 --- a/app/views/orgs/_profile_form.html.erb +++ b/app/views/orgs/_profile_form.html.erb @@ -8,7 +8,7 @@
<%= f.label :abbreviation, _('Organisation abbreviated name'), class: "control-label" %> - <%= f.text_field :abbreviation, id: "org_abbreviation", class: "form-control" %> + <%= f.text_field :abbreviation, id: "org_abbreviation", class: "form-control", "aria-required": true %>
@@ -83,14 +83,15 @@
<%= f.label _('Organisation Types'), for: :funder, class: 'control-label' %>
- <%= f.label :funder, raw("#{check_box_tag :org_types, 2, org.funder?} #{_('Funder')}") %> + <%= f.label :funder, raw("#{check_box_tag :funder, 2, org.funder?, class: 'org_types'} #{_('Funder')}") %>
- <%= f.label :institution, raw("#{check_box_tag :institution, 1, org.institution?} #{_('Institution')}") %> + <%= f.label :institution, raw("#{check_box_tag :institution, 1, org.institution?, class: 'org_types'} #{_('Institution')}") %>
- <%= f.label :organisation, raw("#{check_box_tag :organisation, 4, org.organisation?} #{_('Organisation')}") %> + <%= f.label :organisation, raw("#{check_box_tag :organisation, 4, org.organisation?, class: 'org_types'} #{_('Organisation')}") %>
+ <%= f.hidden_field :org_type, 'data-validation': 'text', 'data-validation-error': _('You must select at least one organisation type') %>
<% else %> diff --git a/app/views/orgs/admin_edit.html.erb b/app/views/orgs/admin_edit.html.erb index 792355b..0a5164e 100644 --- a/app/views/orgs/admin_edit.html.erb +++ b/app/views/orgs/admin_edit.html.erb @@ -1,8 +1,9 @@
-

- <%= org.id.present? ? _('Organisation details') : _('New organisation') %> -

+

<%= org.id.present? ? _('Organisation details') : _('New organisation') %>

+ <% if current_user.can_super_admin? %> + <%= link_to _('View all organisations'), super_admin_orgs_path, class: 'btn btn-default pull-right' %> + <% end %>
diff --git a/app/views/paginable/orgs/_index.html.erb b/app/views/paginable/orgs/_index.html.erb index 9adb0c3..3417afe 100644 --- a/app/views/paginable/orgs/_index.html.erb +++ b/app/views/paginable/orgs/_index.html.erb @@ -2,7 +2,7 @@ -  <%= paginable_sort_link('name') %> + diff --git a/lib/assets/javascripts/views/orgs/admin_edit.js b/lib/assets/javascripts/views/orgs/admin_edit.js index 90175f5..76a2c21 100644 --- a/lib/assets/javascripts/views/orgs/admin_edit.js +++ b/lib/assets/javascripts/views/orgs/admin_edit.js @@ -22,13 +22,26 @@ toggleFeedback(); enableValidations($('#edit_org_profile_form')); + + // update the hidden org_type field based on the checkboxes selected + const calculateOrgType = () => { + let orgType = 0; + $('input.org_types:checked').each((i, el) => { + orgType += parseInt($(el).val(), 10); + }); + $('#org_org_type').val((orgType === 0 ? '' : orgType.toString())); + }; + $('input.org_types').on('click', calculateOrgType); + $('#edit_org_profile_form').on('submit', (e) => { + // Collect links const links = {}; eachLinks((ctx, value) => { links[ctx] = value; }).done(() => { $('#org_links').val(JSON.stringify(links)); }); + if (!validate(e.target)) { e.preventDefault(); }
<%= _('Organisation') %><%= _('Organisation') %> <%= paginable_sort_link('name') %> <%= _('Administrator Email') %> <%= paginable_sort_link('contact_email') %> <%= _('Organisation Type(s)') %> <%= paginable_sort_link('optional_subset') %> <%= _('Templates') %> <%= paginable_sort_link('updated_at') %>