volontariat/voluntary_classified_advertisement

View on GitHub
app/views/products/types/classified_advertisement/tasks/_form.html.erb

Summary

Maintainability
Test Coverage
<%= simple_form_for(@task, url: @task.new_record? ? tasks_path : task_path(@task), as: :task, html: {class: 'form-vertical', style: 'margin-bottom:15px;'}) do |f| %>
  <%= hidden_field_tag :story_id, @task.story_id %>
  <%= f.input :name, required: true %>  
  <%= f.input :text, as: :text %>
  
  <fieldset class="fieldset" style="border: 1px solid black; padding:15px; margin-top:15px;">
    <legend style="margin-bottom: 0px;"><%= t('activerecord.models.vacancy') %></legend>
    
    <div class="form-group string optional vacancy_resource_type <%= params[:task].present? && @task.vacancy.resource_type.blank? ? ' has-error' : '' %>">
      <label class="string optional control-label control-label" for="vacancy_resource_type">
        <abbr title="required">*</abbr> <%= t('attributes.resource_type') %>
      </label>
      <%= select_tag :resource_type, options_for_select(['User', 'Thing'], @task.vacancy.resource_type), id: 'vacancy_resource_type', name: 'task[vacancy_attributes][resource_type]', class: 'string required form-control' %>
      <% if params[:task].present? && @task.vacancy.resource_type.blank? %>
        <span class="help-block"><%= t('errors.messages.blank') %></span>
      <% end %>
    </div>
    
    <div class="form-group string required vacancy_name <%= params[:task].present? && @task.vacancy.name.blank? ? ' has-error' : '' %>">
      <label class="string required control-label control-label" for="vacancy_name">
        <abbr title="required">*</abbr> <%= t('attributes.name') %>
      </label>
      <%= text_field_tag :name, @task.vacancy.name, id: 'vacancy_name', name: 'task[vacancy_attributes][name]', class: 'string required form-control' %>
      <% if params[:task].present? && @task.vacancy.name.blank? %>
        <span class="help-block"><%= t('errors.messages.blank') %></span>
      <% end %>
    </div>
    
    <div class="form-group string optional vacancy_limit">
      <label class="string optional control-label control-label" for="vacancy_limit">
        <%= t('activerecord.attributes.vacancy.limit') %>
      </label>
      <%= text_field_tag :limit, @task.vacancy.limit, id: 'vacancy_limit', name: 'task[vacancy_attributes][limit]', class: 'string optional form-control' %>
    </div>
    
    <div class="form-group string optional vacancy_timezone <%= params[:task].present? && @task.vacancy.timezone.blank? ? ' has-error' : '' %>">
      <label class="string optional control-label control-label" for="vacancy_timezone">
        <%= t('attributes.timezone') %>
      </label>
      <%= time_zone_select @task.vacancy, :timezone, nil, {}, id: 'vacancy_timezone', name: 'task[vacancy_attributes][timezone]', class: 'form-control', class: 'string required form-control' %>
      <% if params[:task].present? && @task.vacancy.timezone.blank? %>
        <span class="help-block"><%= t('errors.messages.blank') %></span>
      <% end %>
    </div>
    
    <div class="form-group string optional vacancy_from_raw <%= params[:task].present? && @task.vacancy.from_raw.blank? ? ' has-error' : '' %>">
      <label class="string optional control-label control-label" for="vacancy_from_raw">
        <%= t('activerecord.attributes.vacancy.from') %>
      </label>
      <div class="datetime_picker" class="input-append date">
        <%= text_field_tag :from_raw, @task.vacancy.from_raw, id: 'vacancy_from_raw', name: 'task[vacancy_attributes][from_raw]', 'data-format' => 'yyyy-MM-dd hh:mm:ss', style: 'width:165px;', class: 'string required form-control' %>
        <span class="add-on">
          <i data-time-icon="icon-time" data-date-icon="icon-calendar">
          </i>
        </span>
        <% if params[:task].present? && @task.vacancy.from_raw.blank? %>
          <span class="help-block"><%= t('errors.messages.blank') %></span>
        <% end %>
      </div>
    </div>
    
    <div class="form-group string optional vacancy_to_raw <%= params[:task].present? && @task.vacancy.to_raw.blank? ? ' has-error' : '' %>">
      <label class="string optional control-label control-label" for="vacancy_to_raw">
        <%= t('activerecord.attributes.vacancy.to') %>
      </label>
      <div class="datetime_picker" class="input-append date">
        <%= text_field_tag :to_raw, @task.vacancy.to_raw, id: 'vacancy_to_raw', name: 'task[vacancy_attributes][to_raw]', 'data-format' => 'yyyy-MM-dd hh:mm:ss', style: 'width:165px;', class: 'string required form-control' %>
        <span class="add-on">
          <i data-time-icon="icon-time" data-date-icon="icon-calendar">
          </i>
        </span>
        <% if params[:task].present? && @task.vacancy.to_raw.blank? %>
          <span class="help-block"><%= t('errors.messages.blank') %></span>
        <% end %>
      </div>
    </div>
  </fieldset>
  
  <fieldset class="fieldset" style="border: 1px solid black; padding:15px; margin-top:15px; margin-bottom:15px;">
    <legend style="margin-bottom: 0px;"><%= t('attributes.address') %></legend>
    <div class="form-group string optional task_address">
      <label class="string optional control-label control-label" for="task_address"><%= t('attributes.string') %></label>
      <input name="task[address]" id="task_address" value="<%= @task.address %>" class="string optional form-control"/>
      <div id="task_map" style="width: 500px; height: 400px; margin-top:15px;"></div>
      <input type="hidden" name="task[lat]" id="task_lat" value="<%= @task.lat %>"/> 
      <input type="hidden" name="task[lon]" id="task_lon" value="<%= @task.lon %>"/>  
    </div>
    
    <div class="form-group string optional task_address_description">
      <label class="string optional control-label control-label" for="task_address_description"><%= t('attributes.description') %></label>
      <input name="task[address_description]" id="task_address_description" value="<%= @task.address_description %>" class="string optional form-control"/>
    </div>
  </fieldset>
  
  <%= f.button :submit %>
<% end %>

<% content_for :javascript_includes do %>
  <script type="text/javascript" src='http://maps.google.com/maps/api/js?sensor=false&libraries=places'></script>
  <%= javascript_include_tag 'voluntary/optional_lib/jquery.location_picker.js' %>
<% end %>

<% content_for :document_ready do %>
  <% if @task.lat.present? %>
    var lat = "<%= @task.lat %>";
    var lon = "<%= @task.lon %>";
  <% else %>
    var lat = "<%= @story.lat %>";
    var lon = "<%= @story.lon %>";
  <% end %>
  
  function initLocationPicker(position) {
    options = {
      radius: 300,
      inputBinding: {
        latitudeInput: $('#task_lat'),
        longitudeInput: $('#task_lon'),
        locationNameInput: $('#task_address')
      },
      enableAutocomplete: true
    }
    
    if(position) {
      options['location'] = { latitude: position.coords.latitude, longitude: position.coords.longitude }
    } else if (lat != "") {
      options['location'] = { latitude: lat, longitude: lon }
    }
    
    $('#task_map').locationpicker(options);
  }
  
  if(lat == "" && navigator.geolocation) {
    navigator.geolocation.getCurrentPosition(initLocationPicker);
  } else {
    initLocationPicker(null);
  }
  
  $('#vacancy_timezone').val('<%= @task.vacancy.timezone %>')
<% end %>