Commit 8d44bb72ac48574c38cff49b8ed311c037eff950
1 parent
c8906716
Exists in
theme-brasil-digital-from-staging
and in
9 other branches
add infra
Showing
5 changed files
with
82 additions
and
107 deletions
Show diff stats
app/controllers/my_profile/profile_editor_controller.rb
app/controllers/public/account_controller.rb
| ... | ... | @@ -66,12 +66,9 @@ class AccountController < ApplicationController |
| 66 | 66 | end |
| 67 | 67 | |
| 68 | 68 | def custom_fields_for_template |
| 69 | - custom_fields ||= environment.people.templates.find(params[:template_id]).custom_fields.keys | |
| 70 | - #raise custom_fields.inspect | |
| 71 | - | |
| 72 | - custom_fields = [{ :name => "custom_field_4", :label => "bli"}, | |
| 73 | - { :name => "custom_field_5", :label => "ajsdfh"}, | |
| 74 | - { :name => "custom_field_6", :label => "ytytyty"}] | |
| 69 | + custom_fields ||= environment.people.templates.find(params[:template_id]).custom_fields.map {|k,v| | |
| 70 | + { :name => k, :label => v[:label] } | |
| 71 | + } | |
| 75 | 72 | |
| 76 | 73 | render :text => {:ok => true, :custom_fields => custom_fields}.to_json |
| 77 | 74 | end | ... | ... |
app/views/account/_signup_form.html.erb
| ... | ... | @@ -29,37 +29,6 @@ |
| 29 | 29 | |
| 30 | 30 | <div id='signup-form-header'> |
| 31 | 31 | |
| 32 | - <script> | |
| 33 | - function show_fields_for_template(element) { | |
| 34 | - jQuery('div#signup-form-profile div.formfieldline').remove(); | |
| 35 | - var selected_template = element.options[element.selectedIndex].value; | |
| 36 | - jQuery.ajax({ | |
| 37 | - type: "GET", | |
| 38 | - url: "<%= url_for :controller=>'account', :action=>'custom_fields_for_template' %>", | |
| 39 | - dataType: 'json', | |
| 40 | - data: { template_id : selected_template }, | |
| 41 | - success: function(data) { | |
| 42 | - if (data.ok) { | |
| 43 | - data.custom_fields.each(function(field) { | |
| 44 | - html = '<div class="formfieldline">' + | |
| 45 | - '<label class="formlabel" for="profile_data_custom_fields_{#CUSTOM_FIELD_ID#}">{#CUSTOM_FIELD_NAME#}</label>' + | |
| 46 | - '<div class="formfield type-text">' + | |
| 47 | - '<input type="text" name="profile_data[custom_fields][{#CUSTOM_FIELD_ID#}]" id="profile_data_custom_fields_{#CUSTOM_FIELD_ID#}" />' + | |
| 48 | - '</div>' + | |
| 49 | - '</div>'; | |
| 50 | - | |
| 51 | - html = html.replace( /{#CUSTOM_FIELD_ID#}/g, field.name ); | |
| 52 | - html = html.replace( /{#CUSTOM_FIELD_NAME#}/g, field.label ); | |
| 53 | - jQuery('div#signup-form-profile').append(html); | |
| 54 | - }); | |
| 55 | - }; | |
| 56 | - } | |
| 57 | - }); | |
| 58 | - } | |
| 59 | - </script> | |
| 60 | - | |
| 61 | - <%= template_options(:people, 'profile_data') %> | |
| 62 | - | |
| 63 | 32 | <div id='signup-formfield-group'> |
| 64 | 33 | <%= label(:user, :login, _('Username'), {:class => 'formlabel'}) %> |
| 65 | 34 | <span id="signup-domain"><%= environment.default_hostname %>/</span> |
| ... | ... | @@ -134,9 +103,41 @@ |
| 134 | 103 | |
| 135 | 104 | <div id="signup-form-profile"> |
| 136 | 105 | |
| 137 | - <%= labelled_fields_for :profile_data, @person do |f| %> | |
| 138 | - <%= render :partial => 'profile_editor/person_form', :locals => {:f => f} %> | |
| 139 | - <% end %> | |
| 106 | + <script> | |
| 107 | + function show_fields_for_template(element) { | |
| 108 | + jQuery('div#signup-form-profile div.formfieldline').remove(); | |
| 109 | + var selected_template = element.options[element.selectedIndex].value; | |
| 110 | + jQuery.ajax({ | |
| 111 | + type: "GET", | |
| 112 | + url: "<%= url_for :controller=>'account', :action=>'custom_fields_for_template' %>", | |
| 113 | + dataType: 'json', | |
| 114 | + data: { template_id : selected_template }, | |
| 115 | + success: function(data) { | |
| 116 | + if (data.ok) { | |
| 117 | + data.custom_fields.each(function(field) { | |
| 118 | + html = '<div class="formfieldline">' + | |
| 119 | + '<label class="formlabel" for="profile_data_custom_fields_{#CUSTOM_FIELD_ID#}">{#CUSTOM_FIELD_NAME#}</label>' + | |
| 120 | + '<input type="hidden" name="profile_data[custom_fields][{#CUSTOM_FIELD_ID#}][label]" id="profile_data_custom_fields_{#CUSTOM_FIELD_ID#}_label" value="{#CUSTOM_FIELD_NAME#}" />' + | |
| 121 | + '<div class="formfield type-text">' + | |
| 122 | + '<input type="text" name="profile_data[custom_fields][{#CUSTOM_FIELD_ID#}][value]" id="profile_data_custom_fields_{#CUSTOM_FIELD_ID#}_value" />' + | |
| 123 | + '</div>' + | |
| 124 | + '</div>'; | |
| 125 | + | |
| 126 | + html = html.replace( /{#CUSTOM_FIELD_ID#}/g, field.name ); | |
| 127 | + html = html.replace( /{#CUSTOM_FIELD_NAME#}/g, field.label ); | |
| 128 | + jQuery('div#signup-form-profile').append(html); | |
| 129 | + }); | |
| 130 | + }; | |
| 131 | + } | |
| 132 | + }); | |
| 133 | + } | |
| 134 | + </script> | |
| 135 | + | |
| 136 | + <%= template_options(:people, 'profile_data') %> | |
| 137 | + | |
| 138 | + <%#= labelled_fields_for :profile_data, @person do |f| %> | |
| 139 | + <%#= render :partial => 'profile_editor/person_form', :locals => {:f => f} %> | |
| 140 | + <%# end %> | |
| 140 | 141 | |
| 141 | 142 | <%= @plugins.dispatch(:signup_extra_contents).collect { |content| instance_eval(&content) }.join("") %> |
| 142 | 143 | ... | ... |
app/views/profile_editor/_person_form.html.erb
| ... | ... | @@ -7,17 +7,6 @@ |
| 7 | 7 | </div> |
| 8 | 8 | <% end %> |
| 9 | 9 | |
| 10 | -<% @environment.custom_person_fields_customs.each { |k| %> | |
| 11 | - <% optional_field(@person, k) do %> | |
| 12 | - <div class="formfieldline"> | |
| 13 | - <%= label_tag environment.custom_person_field_name(k), nil, class: 'formlabel' %> | |
| 14 | - <div class="formfield type-select"> | |
| 15 | - <%= text_field_tag("profile_data[custom_fields][#{k}]", @person.custom_field_value(k)) %> | |
| 16 | - </div> | |
| 17 | - </div> | |
| 18 | - <% end %> | |
| 19 | -<% } %> | |
| 20 | - | |
| 21 | 10 | <%= optional_field(@person, 'description', f.text_area(:description, :rows => 5, :rel => _('Description'))) %> |
| 22 | 11 | <%= optional_field(@person, 'preferred_domain', select_preferred_domain(:profile_data)) %> |
| 23 | 12 | <%= optional_field(@person, 'contact_information', f.text_field(:contact_information, :rel => _('Contact information'))) %> |
| ... | ... | @@ -76,3 +65,31 @@ |
| 76 | 65 | <%= optional_field(@person, 'organization', f.text_field(:organization, :rel => _('Organization'))) %> |
| 77 | 66 | <%= optional_field(@person, 'organization_website', f.text_field(:organization_website, :rel => _('Organization website'))) %> |
| 78 | 67 | |
| 68 | +<br /> | |
| 69 | + | |
| 70 | +<h2><%= _('Custom fields') %></h2> | |
| 71 | + | |
| 72 | +<%= javascript_include_tag "manage-fields.js" %> | |
| 73 | + | |
| 74 | +<div id="custom-fields-container" style="border:1px solid red; margin-bottom: 10px;"> | |
| 75 | +<% @person.custom_fields.each { |key,value| %> | |
| 76 | + <div class="field-with-privacy-selector"> | |
| 77 | + <div class="formfieldline"> | |
| 78 | + <%= text_field_tag( "profile_data[custom_fields][#{key}][label]", value[:label], :style => "display:block") %> | |
| 79 | + <div class="formfield type-text" style="display: inline-block;"> | |
| 80 | + <%= text_field_tag( "profile_data[custom_fields][#{key}][value]", "", :size => 30 ) %> | |
| 81 | + </div><a href="#" class="button icon-delete" title="Delete" onclick="return remove_custom_field(this);"> | |
| 82 | + <span>Delete</span> | |
| 83 | + </a> | |
| 84 | + </div> | |
| 85 | + </div> | |
| 86 | +<% } %> | |
| 87 | +</div> | |
| 88 | + | |
| 89 | +<% if @person.is_template? %> | |
| 90 | + <span> | |
| 91 | + <%= link_to_function(_('Add field'), "add_new_field('person');", :class => 'button icon-add with-text') %> | |
| 92 | + </span> | |
| 93 | +<% end %> | |
| 94 | + | |
| 95 | +<br /><br /> | ... | ... |
public/javascripts/manage-fields.js
| ... | ... | @@ -119,69 +119,26 @@ function new_field_action(){ |
| 119 | 119 | |
| 120 | 120 | function remove_custom_field(element) { |
| 121 | 121 | jQuery(element).parent().parent().remove(); |
| 122 | + //field = jQuery(element).parent().parent(); | |
| 123 | + //console.log( field ); | |
| 122 | 124 | return false; |
| 123 | 125 | } |
| 124 | 126 | |
| 125 | 127 | function add_new_field(profile_type) { |
| 126 | 128 | |
| 127 | - console.log( profile_type ); | |
| 128 | - | |
| 129 | - last_row = jQuery('#' + profile_type + '_fields_conf > tbody:last tr:last'); | |
| 130 | - | |
| 131 | - if ( last_row.find('label').length == 1 ) { | |
| 132 | - | |
| 133 | - var row = '<tr>' + | |
| 134 | - '<td>' + | |
| 135 | - '<input id="' + profile_type + '_fields_custom_field_1_name" maxlength="20" name="' + profile_type + '_fields[custom_field_1][name]" type="text" />' + | |
| 136 | - '</td>' + | |
| 137 | - '<td align="center"> ' + | |
| 138 | - '<input id="' + profile_type + '_fields_custom_field_1_active" name="' + profile_type + '_fields[custom_field_1][active]" type="hidden" value="false" /> ' + | |
| 139 | - '<input id="' + profile_type + '_fields_custom_field_1_active" name="' + profile_type + '_fields[custom_field_1][active]" type="checkbox" value="false" /> ' + | |
| 140 | - '</td> ' + | |
| 141 | - '<td align="center"> ' + | |
| 142 | - '<input id="' + profile_type + '_fields_custom_field_1_required" name="' + profile_type + '_fields[custom_field_1][required]" type="hidden" value="false" /> ' + | |
| 143 | - '<input id="' + profile_type + '_fields_custom_field_1_required" name="' + profile_type + '_fields[custom_field_1][required]" type="checkbox" value="true" /> ' + | |
| 144 | - '</td> ' + | |
| 145 | - '<td align="center"> ' + | |
| 146 | - '<input id="' + profile_type + '_fields_custom_field_1_signup" name="' + profile_type + '_fields[custom_field_1][signup]" type="hidden" value="false" /> ' + | |
| 147 | - '<input id="' + profile_type + '_fields_custom_field_1_signup" name="' + profile_type + '_fields[custom_field_1][signup]" type="checkbox" value="true" /> ' + | |
| 148 | - '</td> ' + | |
| 149 | - '<td> ' + | |
| 150 | - '<a href="#" class="button icon-delete delete-link-list-row" title="Delete" onclick="return remove_custom_field(this);"><span>Delete</span></a> ' + | |
| 151 | - '</td> ' + | |
| 152 | - '</tr>'; | |
| 153 | - | |
| 154 | - jQuery('#' + profile_type + '_fields_conf > tbody:last').append(row); | |
| 129 | + var custom_field_counter = jQuery('#custom-fields-container').find("div.field-with-privacy-selector").length + 1; | |
| 155 | 130 | |
| 156 | - } | |
| 157 | - else { | |
| 158 | - | |
| 159 | - var new_field = jQuery('#' + profile_type + '_fields_conf > tbody:last tr:last').clone(); | |
| 160 | - | |
| 161 | - var field = new_field.find('input'); | |
| 162 | - //var chkboxes = field.filter(':checkbox'); | |
| 163 | - | |
| 164 | - var re = new RegExp( '\\d', 'g' ); | |
| 165 | - var id = field.attr('id').match(re); | |
| 166 | - var next_id = parseInt(id) + 1; | |
| 167 | - | |
| 168 | - jQuery.each( field, function( k, v ) { | |
| 169 | - v.id = v.id.replace(id, next_id); | |
| 170 | - v.name = v.name.replace(id, next_id); | |
| 171 | - if (v.type == 'text') { v.value = '' } | |
| 172 | - if (v.type == 'checkbox') { v.value = true; } | |
| 173 | - if (v.type == 'hidden') { v.value = false; } | |
| 131 | + var row = '<div class="field-with-privacy-selector">' + | |
| 132 | + '<div class="formfieldline">' + | |
| 133 | + '<input id="profile_data_custom_fields_custom_field_' + custom_field_counter + '_label" name="profile_data[custom_fields][custom_field_' + custom_field_counter + '][label]" value="label" style="display:block" />' + | |
| 134 | + '<div class="formfield type-text" style="display: inline-block;">' + | |
| 135 | + '<input id="profile_data_custom_fields_custom_field_' + custom_field_counter + '_value" name="profile_data[custom_fields][custom_field_' + custom_field_counter + '][value]" size="30" type="text">' + | |
| 136 | + '</div>' + | |
| 137 | + '<a href="#" class="button icon-delete delete-link-list-row" title="Delete" onclick="return remove_custom_field(this);"><span>Delete</span></a> ' + | |
| 138 | + '</div>' + | |
| 139 | + '</div>'; | |
| 174 | 140 | |
| 175 | - }); | |
| 176 | - | |
| 177 | - //field.val(''); | |
| 178 | - | |
| 179 | - //chkboxes.attr('onclick', chkboxes.attr('onclick').replace(id, next_id)); | |
| 180 | - //console.log( chkboxes ); | |
| 181 | - | |
| 182 | - jQuery('#' + profile_type + '_fields_conf > tbody').append(new_field); | |
| 183 | - | |
| 184 | - } | |
| 141 | + jQuery('#custom-fields-container').append(row); | |
| 185 | 142 | |
| 186 | 143 | } |
| 187 | 144 | ... | ... |