concordia-publishing-house/errbit

View on GitHub
app/views/apps/_service_notification_fields.html.haml

Summary

Maintainability
Test Coverage
%fieldset
  %legend Notification Service
  = f.fields_for :notification_service do |w|
    %div.notification_service.nested
      %div.choose
        = label_tag :type_none, :for => label_for_attr(w, 'type_notificationservice'), :class => "label_radio none" do
          = w.radio_button :type, "NotificationService", 'data-section' => 'none'
          (None)
        - NotificationService.subclasses.each do |notification_service|
          = label_tag "type_#{notification_service.label}:", :for => label_for_attr(w, "type_#{notification_service.name.downcase.gsub(':','')}"), :class => "label_radio #{notification_service.label}" do
            = w.radio_button :type, notification_service.name, 'data-section' => notification_service.label
            = notification_service.name[/::(.*)Service/,1].titleize

      %div.notification_params.none{:class => (w.object && !(w.object.class < NotificationService)) ? 'chosen' : nil}
      - NotificationService.subclasses.each do |notification_service|
        %div.notification_params{:class => (w.object.is_a?(notification_service) ? 'chosen ' : '') << notification_service.label}
          - notification_service::Fields.each do |field, field_info|
            = w.label field, field_info[:label] || field.to_s.titleize
            - field_type = field == :password ? :password_field : :text_field
            - value = field == :notify_at_notices ? w.object.notify_at_notices.join(", ") : w.object.send(field)
            = w.send field_type, field, :placeholder => field_info[:placeholder], :value => value

      .image_preloader
        - (NotificationService.subclasses.map{|t| t.label } << 'none').each do |notification_service|
          = image_tag "#{notification_service}_inactive.png"
          = image_tag "#{notification_service}_create.png"