diff --git a/Gemfile b/Gemfile index 1bc69c3..46668ce 100644 --- a/Gemfile +++ b/Gemfile @@ -35,6 +35,7 @@ gem "binding_of_caller" gem "jquery-fileupload-rails" gem "paperclip", "~> 3.0" +gem "simple_form" # To use ActiveModel has_secure_password # gem 'bcrypt-ruby', '~> 3.0.0' diff --git a/Gemfile.lock b/Gemfile.lock index 6acf78c..1bcc226 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -107,6 +107,9 @@ GEM railties (~> 3.2.0) sass (>= 3.1.10) tilt (~> 1.3) + simple_form (1.5.2) + actionpack (~> 3.0) + activemodel (~> 3.0) sprockets (2.2.2) hike (~> 1.2) multi_json (~> 1.0) @@ -138,5 +141,6 @@ DEPENDENCIES rails (= 3.2.9) rb-readline sass-rails (~> 3.2.3) + simple_form uglifier (>= 1.0.3) wiselinks diff --git a/app/models/sample.rb b/app/models/sample.rb index 1a80aa4..ec385dc 100644 --- a/app/models/sample.rb +++ b/app/models/sample.rb @@ -1,4 +1,4 @@ class Sample < ActiveRecord::Base - has_attached_file :screenshot, :styles => { :medium => "300x300>", :thumb => "100x100>" } + has_attached_file :screenshot, :styles => {:large => "500x500>", :medium => "300x300>", :thumb => "100x100>" } attr_accessible :description, :name, :screenshot end diff --git a/app/views/samples/_form.html.haml b/app/views/samples/_form.html.haml index d072dcf..d8cd9b1 100644 --- a/app/views/samples/_form.html.haml +++ b/app/views/samples/_form.html.haml @@ -1,16 +1,5 @@ -= form_for @sample do |f| - -if @sample.errors.any? - #error_explanation - %h2= "#{pluralize(@sample.errors.count, "error")} prohibited this sample from being saved:" - %ul - - @sample.errors.full_messages.each do |msg| - %li= msg - - .field - = f.label :name - = f.text_field :name - .field - = f.label :description - = f.text_area :description - .actions - = f.submit 'Save' += simple_form_for @sample do |f| + = f.input :name + = f.input :description + = f.input :screenshot, :as => :file + = f.submit 'Save' diff --git a/app/views/samples/show.html.haml b/app/views/samples/show.html.haml index d46642b..3f25d83 100644 --- a/app/views/samples/show.html.haml +++ b/app/views/samples/show.html.haml @@ -2,6 +2,7 @@ %h2= @sample.name %pre= @sample.description +=image_tag @sample.screenshot.url(:medium) /= link_to 'Edit', edit_sample_path(@sample) /= link_to 'Back', samples_path diff --git a/config/initializers/simple_form.rb b/config/initializers/simple_form.rb new file mode 100644 index 0000000..553961b --- /dev/null +++ b/config/initializers/simple_form.rb @@ -0,0 +1,93 @@ +# 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 + + # CSS class 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 span. + # config.item_wrapper_tag = :span + + # Series of attempts to detect a default label method for collection. + # config.collection_label_methods = [ :to_label, :name, :title, :to_s ] + + # Series of attempts 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}" } + + # You can define the class to use on all labels. Default is nil. + # config.label_class = nil + + # You can define the class to use on all forms. Default is simple_form. + # config.form_class = :simple_form + + # Whether attributes are required by default (or not). Default is true. + # config.required_by_default = true + + # Tell browsers whether to use default HTML5 validations (novalidate option). + # Default is enabled. + # config.browser_validations = true + + # Determines whether HTML5 types (:email, :url, :search, :tel) and attributes + # (e.g. required) are used or not. True by default. + # Having this on in non-HTML5 compliant sites can cause odd behavior in + # HTML5-aware browsers such as Chrome. + # config.html5 = 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 = [ :mounted_as, :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 diff --git a/config/locales/simple_form.en.yml b/config/locales/simple_form.en.yml new file mode 100644 index 0000000..409e265 --- /dev/null +++ b/config/locales/simple_form.en.yml @@ -0,0 +1,24 @@ +en: + 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: '*' + 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.' + diff --git a/db/schema.rb b/db/schema.rb index c78bed6..9490975 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,14 +11,18 @@ # # It's strongly recommended to check this file into your version control system. -ActiveRecord::Schema.define(:version => 20121222100226) do +ActiveRecord::Schema.define(:version => 20121222111037) do create_table "samples", :force => true do |t| t.string "name" t.text "description" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false t.string "slug" + t.string "screenshot_file_name" + t.string "screenshot_content_type" + t.integer "screenshot_file_size" + t.datetime "screenshot_updated_at" end end diff --git a/lib/templates/haml/scaffold/_form.html.haml b/lib/templates/haml/scaffold/_form.html.haml new file mode 100644 index 0000000..bfe7fe6 --- /dev/null +++ b/lib/templates/haml/scaffold/_form.html.haml @@ -0,0 +1,10 @@ += simple_form_for(@<%= singular_table_name %>) do |f| + = f.error_notification + + .inputs + <%- attributes.each do |attribute| -%> + = f.<%= attribute.reference? ? :association : :input %> :<%= attribute.name %> + <%- end -%> + + .actions + = f.button :submit diff --git a/public/system/samples/screenshots/000/000/003/large/better_error.png b/public/system/samples/screenshots/000/000/003/large/better_error.png new file mode 100644 index 0000000..f2f6d07 Binary files /dev/null and b/public/system/samples/screenshots/000/000/003/large/better_error.png differ diff --git a/public/system/samples/screenshots/000/000/003/medium/better_error.png b/public/system/samples/screenshots/000/000/003/medium/better_error.png new file mode 100644 index 0000000..ef40abb Binary files /dev/null and b/public/system/samples/screenshots/000/000/003/medium/better_error.png differ diff --git a/public/system/samples/screenshots/000/000/003/original/better_error.png b/public/system/samples/screenshots/000/000/003/original/better_error.png new file mode 100644 index 0000000..38fa2d8 Binary files /dev/null and b/public/system/samples/screenshots/000/000/003/original/better_error.png differ diff --git a/public/system/samples/screenshots/000/000/003/thumb/better_error.png b/public/system/samples/screenshots/000/000/003/thumb/better_error.png new file mode 100644 index 0000000..7bfe962 Binary files /dev/null and b/public/system/samples/screenshots/000/000/003/thumb/better_error.png differ