form now shows error messages

Oleg committed Feb 01, 2011
commit 60870cf1cb2fc3614b87d5ae75f2d96b419842e8
Showing 6 changed files with 101 additions and 114 deletions
app/views/layouts/cms_admin.html.erb +1 -1
@@ @@ -4,7 +4,7 @@
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
<title><%= ComfortableMexicanSofa.config.cms_title %></title>
<%= csrf_meta_tag %>
- <%= stylesheet_link_tag :cms %>
+ <%= stylesheet_link_tag :cms, :cache => '_cms' %>
<%= javascript_include_tag :cms %>
<%= yield :head %>
<%= cms_hook :html_head %>
comfortable_mexican_sofa/form_builder.rb b/lib/comfortable_mexican_sofa/form_builder.rb +7 -2
@@ @@ -16,13 +16,18 @@ class ComfortableMexicanSofa::FormBuilder < ActionView::Helpers::FormBuilder
end
def default_field(type, field, options = {}, &block)
+ errors = if object.errors[field].present?
+ "<div class='errors'>#{[object.errors[field]].flatten.first}</div>"
+ end
if desc = options.delete(:desc)
desc = "<div class='desc'>#{desc}</div>"
end
%(
- <div class='form_element #{type}_element'>
+ <div class='form_element #{type}_element #{'errors' if errors}'>
<div class='label'>#{label_for(field, options)}</div>
- <div class='value'>#{yield}</div> #{desc}
+ <div class='value'>#{yield}</div>
+ #{desc}
+ #{errors}
</div>
).html_safe
end
comfortable_mexican_sofa/view_methods.rb b/lib/comfortable_mexican_sofa/view_methods.rb +2 -0
@@ @@ -54,5 +54,7 @@ ActionView::Helpers::AssetTagHelper.register_stylesheet_expansion :cms => [
'comfortable_mexican_sofa/reset',
'comfortable_mexican_sofa/structure',
'comfortable_mexican_sofa/typography',
+ 'comfortable_mexican_sofa/form',
+ 'comfortable_mexican_sofa/content',
'/javascripts/comfortable_mexican_sofa/jquery-ui/jquery-ui'
]
\ No newline at end of file
public/stylesheets/comfortable_mexican_sofa/content.css +0 -0
public/stylesheets/comfortable_mexican_sofa/form.css +90 -0
@@ @@ -0,0 +1,90 @@
+ /* -- Forms -------------------------------------------------------------- */
+ .form_element {
+ overflow: hidden;
+ margin-bottom: 5px;
+ }
+ .form_element .label {
+ width: 117px;
+ float: left;
+ text-align: right;
+ font: 13px/19px 'Lucida Grande', 'Tahoma', serif;
+ text-shadow: #fff 1px 1px;
+ padding: 0px 10px;
+ background-color: #f1f1f1;
+ border-top-left-radius: 3px;
+ border-bottom-left-radius: 3px ;
+ -moz-border-radius-topleft: 3px;
+ -moz-border-radius-bottomleft: 3px;
+ border-right: 3px solid #bbb;
+ }
+ .form_element .value {
+ margin-left: 150px;
+ }
+ .form_element .value input[type='text'],
+ .form_element .value input[type='password'],
+ .form_element .value select,
+ .form_element .value textarea {
+ border: 0px;
+ width: 100%;
+ padding: 2px 0px;
+ font-family: 'Courier New', Courier, monospace;
+ }
+ .form_element .value textarea {
+ height: 300px;
+ }
+ .form_element.submit_element {
+ margin-left: 150px;
+ }
+ .form_element.check_box_element input {
+ width: auto;
+ }
+ .page_form_extras {
+ margin-bottom: 25px;
+ }
+ .form_element.cms_tag_field_datetime .label,
+ .form_element.cms_tag_field_integer .label,
+ .form_element.cms_tag_field_string .label,
+ .form_element.cms_tag_field_text .label {
+ border-color: #48699C;
+ }
+ .form_element.cms_tag_page_datetime .label,
+ .form_element.cms_tag_page_integer .label,
+ .form_element.cms_tag_page_string .label,
+ .form_element.cms_tag_page_text .label,
+ .form_element.cms_tag_page_rich_text .label {
+ border-color: #3F7300;
+ }
+ .form_error {
+ background-color: #9e0b0f;
+ font-size: 14px;
+ color: #fff;
+ padding: 5px;
+ text-align: center;
+ margin-bottom: 10px;
+ }
+ .form_element.errors .label {
+ border-color: #9e0b0f;
+ }
+ .form_element.errors .errors {
+ margin: 2px 0px 0px 150px;
+ font-size: 11px;
+ color: #9e0b0f;
+ }
+ .form_element.form_save {
+ background-color: #E0E0E0;
+ border-radius: 3px;
+ -moz-border-radius: 3px;
+ padding: 5px 0px;
+ }
+ .form_element.form_save label {
+ margin: 0px 5px;
+ }
+ .form_element .desc {
+ margin: 2px 0px 0px 150px;
+ font-size: 11px;
+ color: #777;
+ background-color: #fff;
+ padding: 5px;
+ border-radius: 3px;
+ -moz-border-radius: 3px;
+ }
\ No newline at end of file
public/stylesheets/comfortable_mexican_sofa/structure.css +1 -111
@@ @@ -142,121 +142,11 @@ html, body {
color: #1b1b1b;
}
- /* -- Forms -------------------------------------------------------------- */
- .form_element {
- overflow: hidden;
- margin-bottom: 10px;
- }
- .form_element .label {
- width: 137px;
- float: left;
- text-align: right;
- font: 15px/21px 'Lucida Grande', 'Tahoma', serif;
- text-shadow: #fff 1px 1px;
- padding-right: 10px;
- background-color: #e0e0e0;
- border-top-left-radius: 3px;
- border-bottom-left-radius: 3px ;
- -moz-border-radius-topleft: 3px;
- -moz-border-radius-bottomleft: 3px;
- border-right: 3px solid #bbb;
- }
- .form_element .value {
- margin-left: 160px;
- }
- .form_element .value input[type='text'],
- .form_element .value input[type='password'],
- .form_element .value textarea,
- .form_element .value select {
- width: 100%;
- }
- .form_element .value input[type='text'],
- .form_element .value input[type='password'],
- .form_element .value select,
- .form_element .value textarea {
- border: 0px;
- border-top: 1px solid #ccc;
- border-bottom: 1px solid #ccc;
- padding: 2px 0px;
- font-family: 'Courier New', Courier, monospace;
- }
- .form_element .value textarea {
- height: 300px;
- }
- .form_element.submit_element {
- margin-left: 160px;
- }
- .form_element.check_box_element input {
- width: auto;
- }
- .page_form_extras {
- margin-bottom: 25px;
- }
- .form_element.cms_tag_field_datetime .label,
- .form_element.cms_tag_field_integer .label,
- .form_element.cms_tag_field_string .label,
- .form_element.cms_tag_field_text .label {
- border-color: #48699C;
- }
- .form_element.cms_tag_page_datetime .label,
- .form_element.cms_tag_page_integer .label,
- .form_element.cms_tag_page_string .label,
- .form_element.cms_tag_page_text .label,
- .form_element.cms_tag_page_rich_text .label {
- border-color: #3F7300;
- }
- .form_error {
- background-color: #9e0b0f;
- font-size: 14px;
- color: #fff;
- padding: 5px;
- text-align: center;
- margin-bottom: 10px;
- }
- .form_element .value .field_with_errors input,
- .form_element .value .field_with_errors textarea {
- border-color: #9e0b0f;
- }
- .form_element.form_save {
- background-color: #E0E0E0;
- border-radius: 3px;
- -moz-border-radius: 3px;
- padding: 5px 0px;
- }
- .form_element.form_save label {
- margin: 0px 5px;
- }
- .form_element .desc {
- margin: 3px 0px 0px 160px;
- font-size: 11px;
- color: #777;
- }
- .form_element .desc .desc_toggle {
- float: right;
- }
- .form_element .desc .desc_toggle:hover {
- text-decoration: underline;
- cursor: pointer;
- }
- .form_element .desc .desc_content {
- background-color: #fff;
- padding: 5px;
- border-radius: 3px;
- -moz-border-radius: 3px;
- }
- .form_element .desc.with_toggle .desc_content {
- display: none;
- }
- .form_element .desc.with_toggle .desc_content table td {
- vertical-align: top;
- padding: 5px;
- }
-
/* -- Listings ----------------------------------------------------------- */
ul.list li .item {
overflow: hidden;
padding: 5px;
- background-color: #ececec;
+ background-color: #f1f1f1;
border-radius: 3px;
-moz-border-radius: 3px;
margin-bottom: 5px;