Commit 4fd8a4fe9b23b57ac53835e47b7b5c538fd2d98d
1 parent
5182ce64
Exists in
master
and in
29 other branches
ActionItem404: a little better on the profile editor and a new helper to create …
…radio groups on labeled forms. git-svn-id: https://svn.colivre.coop.br/svn/noosfero/trunk@1835 3f533792-8f58-4932-b0fe-aaf55b0a4547
Showing
9 changed files
with
113 additions
and
15 deletions
Show diff stats
app/helpers/application_helper.rb
... | ... | @@ -209,6 +209,47 @@ module ApplicationHelper |
209 | 209 | END_SRC |
210 | 210 | class_eval src, __FILE__, __LINE__ |
211 | 211 | end |
212 | + | |
213 | + # Create a formatable radio collection | |
214 | + # Tha values parameter is a array of [value, label] arrays like this: | |
215 | + # [ ['en',_('English')], ['pt',_('Portuguese')], ['es',_('Spanish')] ] | |
216 | + # The option :size will set how many radios will be showed in each line | |
217 | + # Example: use :size => 3 as option if you want 3 radios by line | |
218 | + def radio_group( object_name, method, values, options = {} ) | |
219 | + line_size = options[:size] || 0 | |
220 | + line_item = 0 | |
221 | + html = "\n" | |
222 | + values.each { |val, h_val| | |
223 | + id = object_name.to_s() +'_'+ method.to_s() +'_'+ val.to_s() | |
224 | + # Não está apresentando o sexo selecionado ao revisitar | |
225 | + # http://localhost:3000/myprofile/manuel/profile_editor/edit :-( | |
226 | + html += self.class.content_tag( 'span', | |
227 | + @template.radio_button( object_name, method, val, | |
228 | + :id => id, :object => @object ) + | |
229 | + self.class.content_tag( 'label', h_val, :for => id ), | |
230 | + :class => 'lineitem' + (line_item+=1).to_s() ) +"\n" | |
231 | + if line_item == line_size | |
232 | + line_item = 0 | |
233 | + html += "<br />\n" | |
234 | + end | |
235 | + } | |
236 | + html += "<br />\n" if line_size == 0 || ( values.size % line_size ) > 0 | |
237 | + column = object.class.columns_hash[method.to_s] | |
238 | + text = | |
239 | + ( column ? | |
240 | + column.human_name : | |
241 | + _(method.to_s.humanize) | |
242 | + ) | |
243 | + label_html = self.class.content_tag 'label', text, | |
244 | + :class => 'formlabel' | |
245 | + control_html = self.class.content_tag 'div', html, | |
246 | + :class => 'formfield type-radio '+ | |
247 | + 'fieldgroup linesize'+line_size.to_s() | |
248 | + | |
249 | + self.class.content_tag 'div', label_html + control_html, | |
250 | + :class => 'formfieldline' | |
251 | + end | |
252 | + | |
212 | 253 | end |
213 | 254 | |
214 | 255 | def category_color |
... | ... | @@ -568,7 +609,10 @@ module ApplicationHelper |
568 | 609 | # end |
569 | 610 | |
570 | 611 | def file_field_or_thumbnail(label, image, i) |
571 | - display_form_field( label, (render :partial => (image && image.valid? ? 'shared/show_thumbnail' : 'shared/change_image'), :locals => { :i => i, :image => image }) ) | |
612 | + display_form_field label, ( | |
613 | + render :partial => (image && image.valid? ? 'shared/show_thumbnail' : 'shared/change_image'), | |
614 | + :locals => { :i => i, :image => image } | |
615 | + ) | |
572 | 616 | end |
573 | 617 | |
574 | 618 | end | ... | ... |
app/views/profile_editor/_person.rhtml
1 | 1 | <%= f.text_field(:name) %> |
2 | 2 | <%= f.text_field(:contact_information) %> |
3 | 3 | <%= f.text_field(:contact_phone) %> |
4 | - <%= _('Sex: ') %> | |
5 | - <%= display_form_field(_('Male'), radio_button(:profile, :sex, 'male')) %> | |
6 | - <%= display_form_field(_('Female'), radio_button(:profile, :sex, 'female')) %> | |
4 | + <%# use :size => 3 if you want 3 radios by line %> | |
5 | + <%= f.radio_group :profile, :sex, [ ['male',_('Male')], ['female',_('Female')] ] %> | |
7 | 6 | <%= f.text_field(:birth_date) %> |
8 | 7 | <%= f.text_field(:address) %> |
9 | 8 | <%= f.text_field(:city) %> | ... | ... |
app/views/profile_editor/edit.rhtml
... | ... | @@ -5,10 +5,12 @@ |
5 | 5 | <% labelled_form_for :profile_data, @profile, :html => { :multipart => true } do |f| %> |
6 | 6 | <%= render :partial => partial_for_class(@profile.class), :locals => { :f => f } %> |
7 | 7 | |
8 | - <h1><%= _('Change picture') %></h1> | |
9 | - <% f.fields_for :image_builder, @profile.image do |i| %> | |
10 | - <%= file_field_or_thumbnail(_('Image:'), @profile.image, i) %> | |
11 | - <% end %> | |
8 | + <div id="profile_change_picture"> | |
9 | + <h1><%= _('Change picture') %></h1> | |
10 | + <% f.fields_for :image_builder, @profile.image do |i| %> | |
11 | + <%= file_field_or_thumbnail(_('Image:'), @profile.image, i) %> | |
12 | + <% end %> | |
13 | + </div> | |
12 | 14 | |
13 | 15 | <h1><%= _('Privacy options') %></h1> |
14 | 16 | <p> | ... | ... |
app/views/shared/_change_image.rhtml
1 | 1 | <%= i.file_field( :uploaded_data, { :onchange => 'updateImg(this.value)' } ) %> |
2 | - | |
3 | - <br/> | |
4 | - | |
5 | - <%= link_to_function(_('Cancel'), nil, :id => 'cancel-change-image-link', :style => 'display: none') do |page| | |
2 | + <%= link_to_function(_('Cancel'), nil, :id => 'cancel-change-image-link', :class => 'button icon-cancel with-text', :style => 'display: none') do |page| | |
6 | 3 | page['change-image-link'].show |
7 | 4 | page['change-image'].replace_html '' |
8 | 5 | end %> | ... | ... |
app/views/shared/_show_thumbnail.rhtml
... | ... | @@ -2,10 +2,10 @@ |
2 | 2 | |
3 | 3 | <br/> |
4 | 4 | |
5 | - <%= link_to_function(_('Change image'), nil, :id => 'change-image-link') do |page| | |
5 | + <%= link_to_function(_('Change image'), nil, :id => 'change-image-link', :class => 'button icon-open with-text') do |page| | |
6 | 6 | page['change-image'].replace_html :partial => 'shared/change_image', :locals => { :i => i, :image => image } |
7 | 7 | page['change-image-link'].hide |
8 | 8 | page['cancel-change-image-link'].show |
9 | 9 | end %> |
10 | 10 | |
11 | - <div id='change-image'> </div> | |
11 | + <div id='change-image'> </div> <br/> | ... | ... |
245 Bytes
public/designs/icons/default/style.css
... | ... | @@ -2,7 +2,7 @@ |
2 | 2 | .icon-home { background-image: url(gnome-home.png) } |
3 | 3 | .icon-new { background-image: url(gtk-new.png) } |
4 | 4 | .icon-close { background-image: url(cancel-HC.gif) } |
5 | -.icon-open { background-image: url(gtk-open.png) } | |
5 | +.icon-open { background-image: url(folder-open.gif) } | |
6 | 6 | .icon-cms { background-image: url(abiword_48.png) } |
7 | 7 | .icon-save { background-image: url(save-HC.gif) } |
8 | 8 | .icon-up { background-image: url(go-up-HC.gif) } | ... | ... |
public/designs/themes/zen3/stylesheets/controller_profile_editor.css
0 → 100644
... | ... | @@ -0,0 +1,28 @@ |
1 | + | |
2 | +.categorie_box { | |
3 | + -moz-border-radius: 4px; | |
4 | + border: 1px solid #F57900; | |
5 | + margin-bottom: 2px; | |
6 | + padding: 2px 0px; | |
7 | +} | |
8 | + | |
9 | +#content .categorie_box h5 { | |
10 | + margin: 0px; | |
11 | + padding: 0px; | |
12 | + line-height: 22px; | |
13 | +} | |
14 | + | |
15 | +#content ul.categories { | |
16 | + padding: 5px 4px 3px 4px; | |
17 | +} | |
18 | + | |
19 | +ul.categories li { | |
20 | + -moz-border-radius: 9px; | |
21 | + border-bottom: 1px solid #FFF; | |
22 | +} | |
23 | + | |
24 | +ul.categories li.cat_checked { | |
25 | + background: #F57900; | |
26 | + border-bottom: 1px solid #CE5C00; | |
27 | +} | |
28 | + | ... | ... |
public/stylesheets/forms.css
... | ... | @@ -43,3 +43,31 @@ |
43 | 43 | text-align: center; |
44 | 44 | } |
45 | 45 | |
46 | +.fieldgroup span { | |
47 | + display: block; | |
48 | + float: left; | |
49 | +} | |
50 | +.fieldgroup br { | |
51 | + clear: left; | |
52 | +} | |
53 | + | |
54 | +.linesize0 span { padding-right: 15px } | |
55 | +.linesize1 span { width: 99% } | |
56 | +.linesize2 span { width: 49% } | |
57 | +.linesize3 span { width: 33% } | |
58 | + | |
59 | +.type-img input { | |
60 | + float: left; | |
61 | + margin-right: 10px; | |
62 | +} | |
63 | +.type-img br { | |
64 | + clear: left; | |
65 | +} | |
66 | + | |
67 | +#profile_change_picture label { | |
68 | + display: none; | |
69 | +} | |
70 | +#profile_change_picture img { | |
71 | + margin-left: 10px; | |
72 | +} | |
73 | + | ... | ... |