adding form field descriptions

Oleg committed Jan 14, 2011
commit d4d41b05f21092330c92a5b14d50c64dee135eca
Showing 10 changed files with 87 additions and 11 deletions
app/views/cms_admin/common/desc/_layout_content.html.erb +25 -0
@@ @@ -0,0 +1,25 @@
+ <table>
+ <tr>
+ <td>
+ <strong>Renderable Page Elements:</strong>
+ <br/>{{ cms:page:<em>some_label</em>:text }}
+ <br/>{{ cms:page:<em>some_label</em>:rich_text }}
+ <br/>{{ cms:page:<em>some_label</em>:string }}
+ <br/>{{ cms:page:<em>some_label</em>:datetime }}
+ <br/>{{ cms:page:<em>some_label</em>:integer }}
+ </td>
+ <td>
+ <strong>Internal Field Elements:</strong>
+ <br/>{{ cms:field:<em>some_label</em>:text }}
+ <br/>{{ cms:field:<em>some_label</em>:string }}
+ <br/>{{ cms:field:<em>some_label</em>:datetime }}
+ <br/>{{ cms:field:<em>some_label</em>:integer }}
+ </td>
+ <td>
+ <strong>Snippets, Helpers and Partials:</strong>
+ <br/>{{ cms:snippet:<em>slug</em> }}
+ <br/>{{ cms:helper:<em>method_name</em> }}
+ <br/>{{ cms:partial:<em>path/to/partial</em> }}
+ </td>
+ </tr>
+ </table>
\ No newline at end of file
app/views/cms_admin/common/desc/_layout_css.html.erb +1 -0
@@ @@ -0,0 +1 @@
+ CSS is be available at <%= auto_link cms_css_url((@cms_layout.slug || 'layout-slug'), :format => 'css'), :html => { :target => '_blank' } %>
\ No newline at end of file
app/views/cms_admin/common/desc/_layout_js.html.erb +1 -0
@@ @@ -0,0 +1 @@
+ JS is be available at <%= auto_link cms_js_url((@cms_layout.slug || 'layout-slug'), :format => 'css'), :html => { :target => '_blank' } %>
\ No newline at end of file
app/views/cms_admin/layouts/_form.html.erb +4 -3
@@ @@ -10,6 +10,7 @@
<% if (options = CmsLayout.app_layouts_for_select).present? %>
<%= form.select :app_layout, [['---- Select Application Layout ----', nil]] + options %>
<% end %>
- <%= form.text_area :content %>
- <%= form.text_area :css %>
- <%= form.text_area :js %>
+
+ <%= form.text_area :content, :desc => render(:partial => '/cms_admin/common/desc/layout_content'), :desc_toggle => '[ help ]' %>
+ <%= form.text_area :css, :desc => render(:partial => '/cms_admin/common/desc/layout_css'), :desc_toggle => '[ help ]' %>
+ <%= form.text_area :js, :desc => render(:partial => '/cms_admin/common/desc/layout_js'), :desc_toggle => '[ help ]' %>
config/routes.rb +2 -2
@@ @@ -14,8 +14,8 @@ Rails.application.routes.draw do
end
scope :controller => :cms_content do
- get '/cms-css/:id' => :render_css, :as => 'cms_css', :format => 'css'
- get '/cms-js/:id' => :render_js, :as => 'cms_js', :format => 'js'
+ get '/cms-css/:id' => :render_css, :as => 'cms_css'
+ get '/cms-js/:id' => :render_js, :as => 'cms_js'
get '/' => :render_html, :as => 'cms_html', :path => '(*cms_path)'
end
comfortable_mexican_sofa/form_builder.rb b/lib/comfortable_mexican_sofa/form_builder.rb +10 -1
@@ @@ -16,10 +16,19 @@ class ComfortableMexicanSofa::FormBuilder < ActionView::Helpers::FormBuilder
end
def default_field(type, field, options = {}, &block)
+ if desc = options.delete(:desc)
+ desc_toggle = options.delete(:desc_toggle)
+ desc_toggle = "<div class='desc_toggle'>#{desc_toggle}</div>" if desc_toggle
+ desc = %(
+ <div class='desc #{desc_toggle ? 'with_toggle' : nil}'>
+ #{desc_toggle} <div class='desc_content'>#{desc}</div>
+ </div>
+ )
+ end
%(
<div class='form_element #{type}_element'>
<div class='label'>#{label_for(field, options)}</div>
- <div class='value'>#{yield}</div>
+ <div class='value'>#{yield}</div> #{desc}
</div>
).html_safe
end
comfortable_mexican_sofa/view_methods.rb b/lib/comfortable_mexican_sofa/view_methods.rb +0 -1
@@ @@ -36,7 +36,6 @@ module ComfortableMexicanSofa::ViewMethods
return '' unless block = page.cms_blocks.find_by_label(block_label)
block.content.to_s.html_safe
end
-
end
ActionView::Base.send :include, ComfortableMexicanSofa::ViewMethods
public/javascripts/comfortable_mexican_sofa/cms.js +8 -0
@@ @@ -9,6 +9,7 @@ $.CMS = function(){
$.CMS.load_page_blocks();
$.CMS.enable_rich_text();
$.CMS.enable_date_picker();
+ $.CMS.enable_desc_toggle();
if($('form.new_cms_page, form.edit_cms_page').get(0)) $.CMS.enable_page_save_form();
if($('#page_save').get(0)) $.CMS.enable_page_save_widget();
if($('#uploader_button').get(0)) $.CMS.enable_uploader();
@@ @@ -70,6 +71,13 @@ $.CMS = function(){
$('input[type=datetime]').datepicker();
},
+ enable_desc_toggle: function(){
+ $('.form_element .desc .desc_toggle').click(function(){
+ $(this).toggle();
+ $(this).siblings('.desc_content').toggle();
+ })
+ },
+
tree_methods: function(){
$('a.tree_toggle').bind('click.cms', function() {
$(this).siblings('ul').toggle();
public/stylesheets/comfortable_mexican_sofa/structure.css +30 -4
@@ @@ -164,14 +164,16 @@ html, body {
.form_element .value input[type='password'],
.form_element .value textarea,
.form_element .value select {
- width: 98%;
+ width: 100%;
}
.form_element .value input[type='text'],
.form_element .value input[type='password'],
.form_element .value select,
.form_element .value textarea {
- border: 1px solid #ccc;
- padding: 2px;
+ 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 {
@@ @@ -220,7 +222,31 @@ html, body {
.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;
public/stylesheets/comfortable_mexican_sofa/typography.css +6 -0
@@ @@ -16,4 +16,10 @@ a {
}
a:hover {
color: #1C2733;
+ }
+ strong {
+ font-weight: bold;
+ }
+ em {
+ font-style: italic;
}
\ No newline at end of file