app/views/receptacles/new_request.html.erb
<%= page_title "New request", "#{@asset.label} - #{@asset.display_name}" %>
<% can_edit = can? :edit_additional, Request %>
<%= form_for(@asset, url: create_request_receptacle_url(@asset), html: {method: :post}) do |f| %>
<%= render_error_messages(@asset) %>
<fieldset id="details">
<h3>Submission Options</h3>
<% instance_variable_or_id_param(:request_type) do |field_name, value| %>
<div class="form-group col-xs-12">
<%= label_tag(field_name, 'Request type', class: 'col-md-4') %>
<%= select_field_sorted_by_name(field_name, @request_types, value, can_edit, prompt: 'Select a request type', required: true) %>
</div>
<% end %>
<% if @asset.studies.uniq.count > 1 -%>
<div class="form-group col-xs-12">
<%= label_tag('cross_study_request', 'Cross Study Request', class: 'col-md-4') %>
<%= check_box_tag('cross_study_request', 'cross_study_request', true) %>
</div>
<% end %>
<% instance_variable_or_id_param(:study) do |field_name, value| %>
<div class="form-group col-xs-12">
<%= label_tag(field_name, 'Study', class: 'col-md-4') %>
<%= select_field_sorted_by_name(field_name, current_user_studies, value, can_edit, prompt: 'Select a study') %>
</div>
<% end %>
<% if @asset.projects.uniq.count > 1 -%>
<div class="form-group col-xs-12">
<%= label_tag('cross_project_request', 'Cross Project Request', class: 'col-md-4') %>:
<%= check_box_tag('cross_project_request', 'cross_project_request', true) %>
</div>
<% end %>
<% instance_variable_or_id_param(:project) do |field_name, value| %>
<div class="form-group col-xs-12">
<%= label_tag(field_name, 'Project', class: 'col-md-4') %>
<%= select_field_sorted_by_name(field_name, Project, value, can_edit, prompt: 'Select a project') %>
</div>
<% end %>
<div class="form-group col-xs-12">
<%= label_tag(:priority, 'Priority', class: 'col-md-4') %>
<%= content_tag(:div, select_tag(:priority, options_for_select(
Submission::Priorities.options,
@asset.requests.last.try(:priority)
),class: 'form-control'),class: 'col-md-5') %>
</div>
<div class="form-group col-xs-12">
<%= label_tag(:count, 'Number of requests to generate', class: 'col-md-4') %>
<%= content_tag(:div, number_field_tag(:count, 1, {min: 0, step: 1, class: 'form-control' }),class: 'col-md-5') %>
</div>
</fieldset>
<% if @request.present? %>
<fieldset id="existing_request_options">
<h3><%= @request.request_type.name %> Options</h3>
<table width="100%" cellspacing="0" cellpadding="0">
<tr>
<%= tabulated_error_messages_for "request" %>
</tr>
</table>
<%= render partial: 'shared/metadata/edit/request', locals: { request: @request } %>
</fieldset>
<% else %>
<% @request_types.each do |request_type| %>
<fieldset id="request_type_options_for_<%= request_type.id %>" class="request_options">
<h3><%= request_type.name %> Options</h3>
<%= render partial: 'shared/metadata/edit/request',
locals: {
request: request_type.new(request_metadata_attributes: @asset.created_with_request_options)
} %>
</fieldset>
<% end %>
<% end %>
<fieldset class="comments">
<div class="form-group col-xs-12">
<%= label_tag(:comments, 'Comments', class: 'col-md-4') %>
<%= content_tag(:div,text_area_tag(:comments,nil, rows: 10, cols: 40,class: 'form-control'),class: 'col-md-8') %>
</div>
</fieldset>
<table width="100%" cellspacing="0" cellpadding="0">
<tr>
<td class="item" width="40%"><%= f.submit "Create" %></td>
<td>or <%= link_to 'Back', receptacle_path(@asset) %></td>
<td class="help_field"></td>
</tr>
</table>
<% end %>
<%= legacy_javascript_tag do %>
/*
* Hook into the 'Request type' select dropdown so that if the value is changed the correct fields
* are displayed.
*/
(function($, undefined) {
$(function() {
var request_type_element = $('#request_type_id');
var request_options = $('.request_options');
// Can't use ':input' selector as it ignores disabled inputs!
var disable_inputs = function(context) { $('input,select,textarea', context).attr('disabled', true); }
var enable_inputs = function(context) { $('input,select,textarea', context).attr('disabled', false); }
handler = function() {
var selected_request_type_id = $('option:selected', request_type_element).attr('value');
// Not only hide but disable inputs; not only show, but enable inputs. If this isn't done
// the parameters passed to the server are incorrect.
disable_inputs(request_options.hide());
enable_inputs($('#request_type_options_for_' + selected_request_type_id).show());
}
request_type_element.change(handler);
handler();
checkStudyHandler = function() {
var cross_study = ($('#cross_study_request')[0] !== undefined) && $('#cross_study_request')[0].checked;
$('#study_id').attr('disabled',cross_study);
}
checkProjectHandler = function() {
var cross_project = ($('#cross_project_request')[0] !== undefined) && $('#cross_project_request')[0].checked;
$('#project_id').attr('disabled',cross_project);
}
$('#cross_study_request').change(checkStudyHandler);
$('#cross_project_request').change(checkProjectHandler);
checkStudyHandler();
checkProjectHandler();
});
})(jQuery);
<% end %>