_panel" class="row"> <% # Do some dynamic resizing of columns based on how many columns there are # TODO: move this into some service or something? Dunno, doesn't belong here. s_width = 12 m_width = 6 l_width = 4 if category.attribute_fields.length == 1 # If there's only one field on this tab, go full-width on all screen sizes s_width = m_width = l_width = 12 elsif category.attribute_fields.length == 2 # If there's two fields on this tab, go half-width on medium- and large-screens s_width = 12 m_width = l_width = 6 elsif category.attribute_fields.length > 2 # If there's at least 3 fields, use the defaults (detailed above) end %> <% category.attribute_fields.each do |field| %>
"> <% value = nil %> <% if content.respond_to?(field.name.to_sym) %> <% value = content.send(field.name.to_sym) %> <% else %> <% value = Attribute.where(user: current_user, entity: content) %> <% end %> <% if value.is_a?(ActiveRecord::Associations::CollectionProxy) %> <%# Relation-setting UI %> <% through_class = content.class.reflect_on_association(field.name).options[:through].to_s %> <%= render 'content/form/relation_input', f: f, attribute: field.name, relation: through_class %> <% elsif field.name == 'archetype' %>
<%= f.label field.name, class: 'active' %>
<%= f.select field.name, options_for_select(t('archetypes'), selected: f.object.archetype), include_blank: true %>
<% elsif field.name == 'universe_id' %>
<%= f.label field.name, field.label %>
<%= f.select field.name, current_user.universes.sort_by(&:name).map { |u| [u.name, u.id] }.compact, include_blank: true, selected: (f.object.persisted? ? f.object.universe_id : session[:universe_id]) %>
<% elsif field.name == 'attribute_category_id' %>
<%= f.label field.name, field.label %>
<%= f.select field.name, current_user.attribute_categories.sort_by(&:label).map { |u| [u.label, u.id] }.compact, include_blank: false, selected: (f.object.persisted? ? f.object.attribute_category_id : nil) %>
<% elsif field.name == 'field_type' %>
<%= f.label field.name, field.label %>
<%= f.select field.name, ['Text Field'].map { |tf| [tf, tf.underscore] } %>
<% elsif field.name == 'entity_type' %> <%= f.hidden_field :entity_type, value: f.object.entity_type %> <% elsif field.name == 'privacy' %>
<%= f.label field.name, field.label %>
<%= f.select field.name, [['Only visible to you', 'private'], ['Visible to anyone with the URL', 'public']] %>
This setting applies to this universe and everything within it. If this universe is visible to others by URL, they will be able to click through and see the characters, locations, and items within this universe also.
<% elsif field.name == 'private_notes' %>
<%= f.label field.name, field.label %> <%= f.text_area field.name, class: "materialize-textarea", placeholder: 'Write as little or as much as you want!' %>
Private notes are always visible to only you, even if content is made public and shared.
<% elsif field.name == 'item_type' %> <% potential_item_types = t('weapon_types') + t('shield_types') + t('axe_types') + t('bow_types') + t('club_types') + t('flexible_weapon_types') + t('fist_weapon_types') + t('thrown_weapon_types') + t('polearm_types') + t('shortsword_types') + t('sword_types') + t('other_item_types') %> <%= render 'content/form/text_input', f: f, content: content, field: field, autocomplete: potential_item_types %> <%# TODO: not make this so awful %> <% elsif field.name == 'skintone' %> <%= render 'content/form/text_input', f: f, content: content, field: field, autocomplete: t('skin_tones') %> <% elsif field.name == 'race' %> <%= render 'content/form/text_input', f: f, content: content, field: field, autocomplete: t('character_races') %> <% elsif field.name == 'eyecolor' %> <%= render 'content/form/text_input', f: f, content: content, field: field, autocomplete: t('eye_colors') %> <% elsif field.name == 'haircolor' %> <%= render 'content/form/text_input', f: f, content: content, field: field, autocomplete: t('hair_colors') %> <% elsif field.name == 'hairstyle' %> <%= render 'content/form/text_input', f: f, content: content, field: field, autocomplete: t('hair_styles') %> <% elsif field.name == 'facialhair' %> <%= render 'content/form/text_input', f: f, content: content, field: field, autocomplete: t('facial_hair_styles') %> <% elsif field.name == 'bodytype' %> <%= render 'content/form/text_input', f: f, content: content, field: field, autocomplete: t('body_types') %> <% elsif field.name == 'fave_weapon' %> <%= render 'content/form/text_input', f: f, content: content, field: field, autocomplete: t('weapon_types') + t('shield_types') + t('axe_types') + t('bow_types') + t('club_types') + t('flexible_weapon_types') + t('fist_weapon_types') + t('thrown_weapon_types') + t('polearm_types') + t('shortsword_types') + t('sword_types') %> <% else %> <%= render 'content/form/text_input', f: f, content: content, field: field %> <% end %>
<% end %>