Added simple form for easier form building.
This commit is contained in:
parent
ca15bb1102
commit
03d84aed1d
2
Gemfile
2
Gemfile
|
@ -9,7 +9,7 @@ gem "prawn", '<=0.6.3'
|
||||||
gem 'haml', '>=2.0.6'
|
gem 'haml', '>=2.0.6'
|
||||||
gem "will_paginate", "~> 3.0.pre2"
|
gem "will_paginate", "~> 3.0.pre2"
|
||||||
gem 'jquery-rails'
|
gem 'jquery-rails'
|
||||||
|
gem 'simple_form'
|
||||||
|
|
||||||
group :development do
|
group :development do
|
||||||
gem 'annotate'
|
gem 'annotate'
|
||||||
|
|
|
@ -78,6 +78,7 @@ GEM
|
||||||
rake (>= 0.8.7)
|
rake (>= 0.8.7)
|
||||||
thor (~> 0.14.4)
|
thor (~> 0.14.4)
|
||||||
rake (0.8.7)
|
rake (0.8.7)
|
||||||
|
simple_form (1.3.1)
|
||||||
thor (0.14.6)
|
thor (0.14.6)
|
||||||
treetop (1.4.9)
|
treetop (1.4.9)
|
||||||
polyglot (>= 0.3.1)
|
polyglot (>= 0.3.1)
|
||||||
|
@ -97,4 +98,5 @@ DEPENDENCIES
|
||||||
mysql
|
mysql
|
||||||
prawn (<= 0.6.3)
|
prawn (<= 0.6.3)
|
||||||
rails (= 3.0.7)
|
rails (= 3.0.7)
|
||||||
|
simple_form
|
||||||
will_paginate (~> 3.0.pre2)
|
will_paginate (~> 3.0.pre2)
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
%head
|
%head
|
||||||
%meta{"http-equiv" => "content-type", :content => "text/html;charset=UTF-8"}
|
%meta{"http-equiv" => "content-type", :content => "text/html;charset=UTF-8"}
|
||||||
%title= "FoodSoft - " + (yield(:title) or controller.controller_name)
|
%title= "FoodSoft - " + (yield(:title) or controller.controller_name)
|
||||||
= stylesheet_link_tag 'main', 'rails_messages', 'nav', :cache => "all_cached"
|
= stylesheet_link_tag 'main', 'rails_messages', 'nav', 'simple_form', :cache => "all_cached"
|
||||||
= stylesheet_link_tag "print", :media => "print"
|
= stylesheet_link_tag "print", :media => "print"
|
||||||
<!--[if lte IE 7]>
|
<!--[if lte IE 7]>
|
||||||
= stylesheet_link_tag 'ie_hacks'
|
= stylesheet_link_tag 'ie_hacks'
|
||||||
|
|
|
@ -0,0 +1,77 @@
|
||||||
|
# Use this setup block to configure all options available in SimpleForm.
|
||||||
|
SimpleForm.setup do |config|
|
||||||
|
# Components used by the form builder to generate a complete input. You can remove
|
||||||
|
# any of them, change the order, or even add your own components to the stack.
|
||||||
|
# config.components = [ :placeholder, :label_input, :hint, :error ]
|
||||||
|
|
||||||
|
# Default tag used on hints.
|
||||||
|
# config.hint_tag = :span
|
||||||
|
|
||||||
|
# CSS class to add to all hint tags.
|
||||||
|
# config.hint_class = :hint
|
||||||
|
|
||||||
|
# Default tag used on errors.
|
||||||
|
# config.error_class = :error
|
||||||
|
|
||||||
|
# Default tag used on errors.
|
||||||
|
# config.error_tag = :span
|
||||||
|
|
||||||
|
# Method used to tidy up errors.
|
||||||
|
# config.error_method = :first
|
||||||
|
|
||||||
|
# Default tag used for error notification helper.
|
||||||
|
# config.error_notification_tag = :p
|
||||||
|
|
||||||
|
# CSS class to add for error notification helper.
|
||||||
|
# config.error_notification_class = :error_notification
|
||||||
|
|
||||||
|
# ID to add for error notification helper.
|
||||||
|
# config.error_notification_id = nil
|
||||||
|
|
||||||
|
# You can wrap all inputs in a pre-defined tag.
|
||||||
|
# config.wrapper_tag = :div
|
||||||
|
|
||||||
|
# CSS class to add to all wrapper tags.
|
||||||
|
# config.wrapper_class = :input
|
||||||
|
|
||||||
|
# CSS class to add to the wrapper if the field has errors.
|
||||||
|
# config.wrapper_error_class = :field_with_errors
|
||||||
|
|
||||||
|
# You can wrap a collection of radio/check boxes in a pre-defined tag, defaulting to none.
|
||||||
|
# config.collection_wrapper_tag = nil
|
||||||
|
|
||||||
|
# You can wrap each item in a collection of radio/check boxes with a tag, defaulting to none.
|
||||||
|
# config.item_wrapper_tag = nil
|
||||||
|
|
||||||
|
# Series of attemps to detect a default label method for collection.
|
||||||
|
# config.collection_label_methods = [ :to_label, :name, :title, :to_s ]
|
||||||
|
|
||||||
|
# Series of attemps to detect a default value method for collection.
|
||||||
|
# config.collection_value_methods = [ :id, :to_s ]
|
||||||
|
|
||||||
|
# How the label text should be generated altogether with the required text.
|
||||||
|
# config.label_text = lambda { |label, required| "#{required} #{label}" }
|
||||||
|
|
||||||
|
# Whether attributes are required by default (or not). Default is true.
|
||||||
|
# config.required_by_default = true
|
||||||
|
|
||||||
|
# Custom mappings for input types. This should be a hash containing a regexp
|
||||||
|
# to match as key, and the input type that will be used when the field name
|
||||||
|
# matches the regexp as value.
|
||||||
|
# config.input_mappings = { /count/ => :integer }
|
||||||
|
|
||||||
|
# Collection of methods to detect if a file type was given.
|
||||||
|
# config.file_methods = [ :file?, :public_filename ]
|
||||||
|
|
||||||
|
# Default priority for time_zone inputs.
|
||||||
|
# config.time_zone_priority = nil
|
||||||
|
|
||||||
|
# Default priority for country inputs.
|
||||||
|
# config.country_priority = nil
|
||||||
|
|
||||||
|
# Default size for text inputs.
|
||||||
|
# config.default_input_size = 50
|
||||||
|
|
||||||
|
# When false, do not use translations for labels, hints or placeholders.
|
||||||
|
# config.translate = true
|
||||||
|
end
|
|
@ -167,4 +167,28 @@ de:
|
||||||
price: Nettopreis
|
price: Nettopreis
|
||||||
user:
|
user:
|
||||||
password: Passwort
|
password: Passwort
|
||||||
first_name: Vorname
|
first_name: Vorname
|
||||||
|
|
||||||
|
# Simple form i18n is used to build the forms
|
||||||
|
simple_form:
|
||||||
|
"yes": 'Ja'
|
||||||
|
"no": 'Nein'
|
||||||
|
required:
|
||||||
|
text: 'benötigt'
|
||||||
|
mark: '*'
|
||||||
|
# You can uncomment the line below if you need to overwrite the whole required html.
|
||||||
|
# When using html, text and mark won't be used.
|
||||||
|
# html: '<abbr title="required">*</abbr>'
|
||||||
|
error_notification:
|
||||||
|
default_message: "Fehler wurden gefunden. Bitte das Formular überprüfen."
|
||||||
|
# Labels and hints examples
|
||||||
|
# labels:
|
||||||
|
# password: 'Password'
|
||||||
|
# user:
|
||||||
|
# new:
|
||||||
|
# email: 'E-mail para efetuar o sign in.'
|
||||||
|
# edit:
|
||||||
|
# email: 'E-mail.'
|
||||||
|
# hints:
|
||||||
|
# username: 'User name to sign in.'
|
||||||
|
# password: 'No special characters, please.'
|
|
@ -3,3 +3,26 @@
|
||||||
|
|
||||||
en:
|
en:
|
||||||
hello: "Hello world"
|
hello: "Hello world"
|
||||||
|
|
||||||
|
simple_form:
|
||||||
|
"yes": 'Yes'
|
||||||
|
"no": 'No'
|
||||||
|
required:
|
||||||
|
text: 'required'
|
||||||
|
mark: '*'
|
||||||
|
# You can uncomment the line below if you need to overwrite the whole required html.
|
||||||
|
# When using html, text and mark won't be used.
|
||||||
|
# html: '<abbr title="required">*</abbr>'
|
||||||
|
error_notification:
|
||||||
|
default_message: "Some errors were found, please take a look:"
|
||||||
|
# Labels and hints examples
|
||||||
|
# labels:
|
||||||
|
# password: 'Password'
|
||||||
|
# user:
|
||||||
|
# new:
|
||||||
|
# email: 'E-mail para efetuar o sign in.'
|
||||||
|
# edit:
|
||||||
|
# email: 'E-mail.'
|
||||||
|
# hints:
|
||||||
|
# username: 'User name to sign in.'
|
||||||
|
# password: 'No special characters, please.'
|
|
@ -0,0 +1,13 @@
|
||||||
|
<%%= simple_form_for(@<%= singular_name %>) do |f| %>
|
||||||
|
<%%= f.error_notification %>
|
||||||
|
|
||||||
|
<div class="inputs">
|
||||||
|
<%- attributes.each do |attribute| -%>
|
||||||
|
<%%= f.<%= attribute.reference? ? :association : :input %> :<%= attribute.name %> %>
|
||||||
|
<%- end -%>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="actions">
|
||||||
|
<%%= f.button :submit %>
|
||||||
|
</div>
|
||||||
|
<%% end %>
|
|
@ -10,12 +10,12 @@ h3.notice {
|
||||||
font-size: 100%;
|
font-size: 100%;
|
||||||
position: relative; }
|
position: relative; }
|
||||||
|
|
||||||
h3.error, div.error {
|
h3.alert, div.alert, div.error {
|
||||||
color: red;
|
color: red;
|
||||||
font-size: 100%;
|
font-size: 100%;
|
||||||
font-weight: bold; }
|
font-weight: bold; }
|
||||||
|
|
||||||
h3.error {
|
h3.alert {
|
||||||
background: yellow url(/images/error.png) no-repeat 10px 3px;
|
background: yellow url(/images/error.png) no-repeat 10px 3px;
|
||||||
border: 1px solid red;
|
border: 1px solid red;
|
||||||
padding: 4px 40px;
|
padding: 4px 40px;
|
||||||
|
|
|
@ -0,0 +1,41 @@
|
||||||
|
.simple_form label {
|
||||||
|
float: left;
|
||||||
|
width: 100px;
|
||||||
|
text-align: right;
|
||||||
|
margin: 2px 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.simple_form div.input {
|
||||||
|
margin-bottom: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.simple_form div.boolean, .simple_form input[type='submit'] {
|
||||||
|
margin-left: 120px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.simple_form div.boolean label, .simple_form label.collection_radio {
|
||||||
|
float: none;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.simple_form label.collection_radio {
|
||||||
|
margin-right: 10px;
|
||||||
|
margin-left: 2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.simple_form .error {
|
||||||
|
clear: left;
|
||||||
|
margin-left: 120px;
|
||||||
|
font-size: 12px;
|
||||||
|
color: #D00;
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
.simple_form .hint {
|
||||||
|
clear: left;
|
||||||
|
margin-left: 120px;
|
||||||
|
font-size: 12px;
|
||||||
|
color: #555;
|
||||||
|
display: block;
|
||||||
|
font-style: italic;
|
||||||
|
}
|
Loading…
Reference in New Issue