Built-in user_attribute_models
This commit is contained in:
		
							parent
							
								
									509c106b3e
								
							
						
					
					
						commit
						83bbd77d96
					
				|  | @ -34,8 +34,10 @@ class Admin::UserInfoModelsController < ApplicationController | ||||||
|   def update |   def update | ||||||
|     @user_attribute_model = UserInfoModel.find(params[:id]) |     @user_attribute_model = UserInfoModel.find(params[:id]) | ||||||
|     @user_attribute_model.update_attributes(params[:user_info_model]) |     @user_attribute_model.update_attributes(params[:user_info_model]) | ||||||
|      |     respond_to do |format| | ||||||
|     redirect_to :action => :index |       format.html { redirect_to :action => :index } | ||||||
|  |       format.js  { render 'admin/user_attribute_models/toggle_enable' } | ||||||
|  |     end | ||||||
|   end |   end | ||||||
|    |    | ||||||
|   def destroy |   def destroy | ||||||
|  |  | ||||||
|  | @ -35,7 +35,10 @@ class Admin::UserRoleModelsController < ApplicationController | ||||||
|     @user_attribute_model = UserRoleModel.find(params[:id]) |     @user_attribute_model = UserRoleModel.find(params[:id]) | ||||||
|     @user_attribute_model.update_attributes(params[:user_role_model]) |     @user_attribute_model.update_attributes(params[:user_role_model]) | ||||||
|      |      | ||||||
|     redirect_to :action => :index |     respond_to do |format| | ||||||
|  |       format.html { redirect_to :action => :index } | ||||||
|  |       format.js  { render 'admin/user_attribute_models/toggle_enable' } | ||||||
|  |     end | ||||||
|   end |   end | ||||||
|    |    | ||||||
|   def destroy |   def destroy | ||||||
|  |  | ||||||
|  | @ -9,13 +9,12 @@ class Panel::UsersController < ApplicationController | ||||||
|    |    | ||||||
|   def show |   def show | ||||||
|     @user = User.find(params[:id]) |     @user = User.find(params[:id]) | ||||||
|     @user_info_models = UserInfoModel.all.entries |     get_info_role_models | ||||||
|   end |   end | ||||||
|    |    | ||||||
|   def new |   def new | ||||||
|     @user = User.new |     @user = User.new | ||||||
|     @user_info_models = UserInfoModel.all.entries |     get_info_role_models | ||||||
|     @user_role_models = UserRoleModel.all.entries |  | ||||||
|   end |   end | ||||||
|    |    | ||||||
|   def create |   def create | ||||||
|  | @ -38,8 +37,7 @@ class Panel::UsersController < ApplicationController | ||||||
|    |    | ||||||
|   def edit |   def edit | ||||||
|     @user = User.find(params[:id]) |     @user = User.find(params[:id]) | ||||||
|     @user_info_models = UserInfoModel.all.entries |     get_info_role_models | ||||||
|     @user_role_models = UserRoleModel.all.entries |  | ||||||
|   end |   end | ||||||
|    |    | ||||||
|   def update |   def update | ||||||
|  | @ -56,8 +54,7 @@ class Panel::UsersController < ApplicationController | ||||||
|       flash[:notice] = t('panel.update_success_user') |       flash[:notice] = t('panel.update_success_user') | ||||||
|       redirect_to :action => :index |       redirect_to :action => :index | ||||||
|     else |     else | ||||||
|       @user_info_models = UserInfoModel.all.entries |       get_info_role_models | ||||||
|       @user_role_models = UserRoleModel.all.entries |  | ||||||
|       render :action => :edit |       render :action => :edit | ||||||
|     end |     end | ||||||
|   end |   end | ||||||
|  | @ -73,4 +70,11 @@ class Panel::UsersController < ApplicationController | ||||||
|     redirect_to :action => :index |     redirect_to :action => :index | ||||||
|   end |   end | ||||||
|    |    | ||||||
|  |   protected | ||||||
|  |    | ||||||
|  |   def get_info_role_models | ||||||
|  |     @user_info_models = UserInfoModel.excludes('disabled' => true) | ||||||
|  |     @user_role_models = UserRoleModel.excludes('disabled' => true) | ||||||
|  |   end | ||||||
|  |    | ||||||
| end | end | ||||||
|  |  | ||||||
|  | @ -8,6 +8,8 @@ class AttributeModel | ||||||
|   field :markup |   field :markup | ||||||
|   field :locale, :type => Boolean |   field :locale, :type => Boolean | ||||||
|   field :list_options, :type => Array |   field :list_options, :type => Array | ||||||
|  |   field :built_in, :type => Boolean, :default => false | ||||||
|  |   field :disabled, :type => Boolean, :default => false | ||||||
|    |    | ||||||
|   embedded_in :user_attribute_model, :inverse_of => :attribute_models |   embedded_in :user_attribute_model, :inverse_of => :attribute_models | ||||||
|   validates_uniqueness_of :key |   validates_uniqueness_of :key | ||||||
|  | @ -48,4 +50,12 @@ class AttributeModel | ||||||
|     should_destroy.to_i == 1 rescue nil |     should_destroy.to_i == 1 rescue nil | ||||||
|   end |   end | ||||||
|    |    | ||||||
|  |   def is_built_in? | ||||||
|  |     self.built_in | ||||||
|  |   end | ||||||
|  |    | ||||||
|  |   def is_disabled? | ||||||
|  |     self.disabled | ||||||
|  |   end | ||||||
|  | 
 | ||||||
| end | end | ||||||
|  |  | ||||||
|  | @ -5,6 +5,8 @@ class UserAttributeModel | ||||||
|    |    | ||||||
|   field :key |   field :key | ||||||
|   field :i18n_variable_id, :type => BSON::ObjectId, :index => true |   field :i18n_variable_id, :type => BSON::ObjectId, :index => true | ||||||
|  |   field :built_in, :type => Boolean, :default => false | ||||||
|  |   field :disabled, :type => Boolean, :default => false | ||||||
|    |    | ||||||
|   embeds_many :attribute_models |   embeds_many :attribute_models | ||||||
|    |    | ||||||
|  | @ -46,6 +48,18 @@ class UserAttributeModel | ||||||
|     @i18n_variable ||= I18nVariable.find(self.i18n_variable_id) rescue nil |     @i18n_variable ||= I18nVariable.find(self.i18n_variable_id) rescue nil | ||||||
|   end |   end | ||||||
|    |    | ||||||
|  |   def is_built_in? | ||||||
|  |     self.built_in | ||||||
|  |   end | ||||||
|  |    | ||||||
|  |   def is_disabled? | ||||||
|  |     self.disabled | ||||||
|  |   end | ||||||
|  |    | ||||||
|  |   def get_enabled_attribute_models | ||||||
|  |     self.attribute_models.excludes('disabled' => true) | ||||||
|  |   end | ||||||
|  |    | ||||||
|   protected |   protected | ||||||
|    |    | ||||||
|   # Destroy the i18n_variable for each attribute_models if marked to destroy |   # Destroy the i18n_variable for each attribute_models if marked to destroy | ||||||
|  |  | ||||||
|  | @ -20,8 +20,17 @@ | ||||||
|       <% if attribute_model.new_record? %> |       <% if attribute_model.new_record? %> | ||||||
|         <a href="#" class="remove">(<%= t(:delete) %>)</a> |         <a href="#" class="remove">(<%= t(:delete) %>)</a> | ||||||
|       <% else %> |       <% else %> | ||||||
|         <a href="#" class="remove_existing_record">(<%= t(:delete) %>)</a> | 			 | ||||||
|         <%= hidden_field_tag "user_#{@attribute}_model[attribute_models][][should_destroy]", nil , :class => 'should_destroy' %> | 				<% if attribute_model.is_built_in? %> | ||||||
|  | 					<a href="#" class="change_built_in" id="<%= attribute_model.id %>"> | ||||||
|  | 						<span style="display:<%= attribute_model.is_disabled? ? 'none' : 'inline' %>"><%= t(:disable) %></span> | ||||||
|  | 						<span style="display:<%= attribute_model.is_disabled? ? 'inline' : 'none' %>"><%= t(:enable) %></span> | ||||||
|  | 					</a> | ||||||
|  | 					<%= hidden_field_tag "user_#{@attribute}_model[attribute_models][][disabled]", attribute_model.is_disabled? , :class => 'built_in_state' %> | ||||||
|  | 				<% else %> | ||||||
|  | 					<a href="#" class="remove_existing_record">(<%= t(:delete) %>)</a> | ||||||
|  | 	        <%= hidden_field_tag "user_#{@attribute}_model[attribute_models][][should_destroy]", nil , :class => 'should_destroy' %> | ||||||
|  | 				<% end %> | ||||||
|         <%= f.hidden_field :id %> |         <%= f.hidden_field :id %> | ||||||
|         <%= f.hidden_field :key %> |         <%= f.hidden_field :key %> | ||||||
|       <% end %> |       <% end %> | ||||||
|  |  | ||||||
|  | @ -53,6 +53,12 @@ | ||||||
|       $(this).parent().parent().hide(); |       $(this).parent().parent().hide(); | ||||||
|     }); |     }); | ||||||
| 
 | 
 | ||||||
|  |     $('#field_set_attributes a.change_built_in').click(function(){ | ||||||
|  |       $(this).children().toggle(); | ||||||
|  | 			var $am = $(this).next('.built_in_state') | ||||||
|  | 			$am.attr('value', ($am.attr('value') == "false") ? "true" : "false"); | ||||||
|  |     }); | ||||||
|  |      | ||||||
|     $('.select_mulitlingual input').live('click', function(){ |     $('.select_mulitlingual input').live('click', function(){ | ||||||
|       $(this).next().attr('value', this.checked); |       $(this).next().attr('value', this.checked); | ||||||
|     }); |     }); | ||||||
|  |  | ||||||
|  | @ -19,7 +19,13 @@ | ||||||
|     <td><%= user_attribute_model.key %></td> |     <td><%= user_attribute_model.key %></td> | ||||||
|     <td> |     <td> | ||||||
|       <%= link_to t(:edit), eval("edit_admin_user_#{@attribute}_model_path(user_attribute_model)") %> | |       <%= link_to t(:edit), eval("edit_admin_user_#{@attribute}_model_path(user_attribute_model)") %> | | ||||||
|       <%= link_to t(:delete), eval("admin_user_#{@attribute}_model_path(user_attribute_model)"), :confirm => t('sure?'), :method => :delete %> | 			<% if user_attribute_model.is_built_in? %> | ||||||
|  | 				<%= link_to t(:disable), eval("admin_user_#{@attribute}_model_path(user_attribute_model, :authenticity_token => form_authenticity_token, :user_#{@attribute}_model => {:disabled => true})"), :remote => true, :method => :put, :id => "disable_#{user_attribute_model.id}", :style => "display:#{user_attribute_model.is_disabled? ? 'none' : 'inline'}"  %> | ||||||
|  | 				<%= link_to t(:enable), eval("admin_user_#{@attribute}_model_path(user_attribute_model, :authenticity_token => form_authenticity_token, :user_#{@attribute}_model => {:disabled => false})"), :remote => true, :method => :put, :id => "enable_#{user_attribute_model.id}", :style => "display:#{user_attribute_model.is_disabled? ? 'inline' : 'none'}"  %> | ||||||
|  | 			<% else %> | ||||||
|  |       	<%= link_to t(:delete), eval("admin_user_#{@attribute}_model_path(user_attribute_model)"), :confirm => t('sure?'), :method => :delete %> | ||||||
|  | 			<% end %> | ||||||
|  | 			 | ||||||
|     </td>	 |     </td>	 | ||||||
|   </tr> |   </tr> | ||||||
| <% end %> | <% end %> | ||||||
|  |  | ||||||
|  | @ -0,0 +1,2 @@ | ||||||
|  | $("#enable_<%= @user_attribute_model.id %>").toggle(); | ||||||
|  | $("#disable_<%= @user_attribute_model.id %>").toggle(); | ||||||
|  | @ -7,6 +7,7 @@ | ||||||
|   <%= yield :page_specific_link %> |   <%= yield :page_specific_link %> | ||||||
|   <%= stylesheet_link_tag "easy", "main", "devise", :media => "screen, projection" %> |   <%= stylesheet_link_tag "easy", "main", "devise", :media => "screen, projection" %> | ||||||
|   <%= stylesheet_link_tag "easyprint", :media => "print" %> |   <%= stylesheet_link_tag "easyprint", :media => "print" %> | ||||||
|  | 	<%= javascript_include_tag :defaults %> | ||||||
|   <!--[if IE]> |   <!--[if IE]> | ||||||
|     <%= stylesheet_link_tag "ie", :media => "screen, projection" %> |     <%= stylesheet_link_tag "ie", :media => "screen, projection" %> | ||||||
|   <![endif]--> |   <![endif]--> | ||||||
|  |  | ||||||
|  | @ -7,6 +7,7 @@ | ||||||
|   <%= yield :page_specific_link %> |   <%= yield :page_specific_link %> | ||||||
|   <%= stylesheet_link_tag "easy", "main", "devise", :media => "screen, projection" %> |   <%= stylesheet_link_tag "easy", "main", "devise", :media => "screen, projection" %> | ||||||
|   <%= stylesheet_link_tag "easyprint", :media => "print" %> |   <%= stylesheet_link_tag "easyprint", :media => "print" %> | ||||||
|  | 	<%= javascript_include_tag :defaults %> | ||||||
|   <!--[if IE]> |   <!--[if IE]> | ||||||
|     <%= stylesheet_link_tag "ie", :media => "screen, projection" %> |     <%= stylesheet_link_tag "ie", :media => "screen, projection" %> | ||||||
|   <![endif]--> |   <![endif]--> | ||||||
|  |  | ||||||
|  | @ -1,7 +1,7 @@ | ||||||
| <fieldset> | <fieldset> | ||||||
|   <legend><%= am.i18n_variable[I18n.locale] %></legend> |   <legend><%= am.i18n_variable[I18n.locale] %></legend> | ||||||
|   <table> |   <table> | ||||||
|     <% am.attribute_models.each do |attr| %> |     <% am.get_enabled_attribute_models.each do |attr| %> | ||||||
|       <tr> |       <tr> | ||||||
|         <td><%= attr.i18n_variable[I18n.locale] %></td> |         <td><%= attr.i18n_variable[I18n.locale] %></td> | ||||||
|         <td> |         <td> | ||||||
|  |  | ||||||
|  | @ -12,7 +12,7 @@ | ||||||
|       <% end %> |       <% end %> | ||||||
|     </tr> |     </tr> | ||||||
|      |      | ||||||
|     <% ua.attribute_models.each do |attr| %> |     <% ua.get_enabled_attribute_models.each do |attr| %> | ||||||
| 			<% value = user_attribute.attribute_values.detect{|v| v.key == attr.key } %> | 			<% value = user_attribute.attribute_values.detect{|v| v.key == attr.key } %> | ||||||
| 			<%= hidden_field_tag "user[user_#{type}s][][attributes][][id]", value.id rescue nil %> | 			<%= hidden_field_tag "user[user_#{type}s][][attributes][][id]", value.id rescue nil %> | ||||||
| 			<%= hidden_field_tag "user[user_#{type}s][][attributes][][key]", attr.key %> | 			<%= hidden_field_tag "user[user_#{type}s][][attributes][][key]", attr.key %> | ||||||
|  |  | ||||||
|  | @ -32,15 +32,15 @@ namespace :dev do | ||||||
|     var_11 = I18nVariable.create!( :document_class => 'Page', :key => 'about', :en => 'About', :zh_tw => '關於我們' ) |     var_11 = I18nVariable.create!( :document_class => 'Page', :key => 'about', :en => 'About', :zh_tw => '關於我們' ) | ||||||
|     var_12 = I18nVariable.create!( :document_class => 'Link', :key => 'google', :en => 'Google', :zh_tw => 'Google' ) |     var_12 = I18nVariable.create!( :document_class => 'Link', :key => 'google', :en => 'Google', :zh_tw => 'Google' ) | ||||||
| 
 | 
 | ||||||
|     urm_1 = UserRoleModel.new( :key => 'teacher', :i18n_variable_id => var_1.id ) |     urm_1 = UserRoleModel.new( :key => 'teacher', :i18n_variable_id => var_1.id, :built_in => true ) | ||||||
|     urm_1.attribute_models.build( :key => 'discipline', :locale => true, :i18n_variable_id => var_2.id, :markup => 'text_field', :list_options => [] ) |     urm_1.attribute_models.build( :key => 'discipline', :locale => true, :i18n_variable_id => var_2.id, :markup => 'text_field', :list_options => [], :built_in => true ) | ||||||
|     urm_1.attribute_models.build( :key => 'department', :locale => true, :i18n_variable_id => var_3.id, :markup => 'text_field', :list_options => [] ) |     urm_1.attribute_models.build( :key => 'department', :locale => true, :i18n_variable_id => var_3.id, :markup => 'text_field', :list_options => [], :built_in => true ) | ||||||
|     urm_1.save! |     urm_1.save! | ||||||
|     urm_2 = UserRoleModel.new( :key => 'student', :i18n_variable_id => var_4.id ) |     urm_2 = UserRoleModel.new( :key => 'student', :i18n_variable_id => var_4.id ) | ||||||
|     urm_2.attribute_models.build( :key => 'department', :locale => true, :i18n_variable_id => var_5.id, :markup => 'text_field', :list_options => [] ) |     urm_2.attribute_models.build( :key => 'department', :locale => true, :i18n_variable_id => var_5.id, :markup => 'text_field', :list_options => [] ) | ||||||
|     urm_2.attribute_models.build( :key => 'major', :locale => true, :i18n_variable_id => var_6.id, :markup => 'text_field', :list_options => [] ) |     urm_2.attribute_models.build( :key => 'major', :locale => true, :i18n_variable_id => var_6.id, :markup => 'text_field', :list_options => [] ) | ||||||
|     urm_2.save! |     urm_2.save! | ||||||
|     uim_1 = UserInfoModel.new( :key => 'profile', :i18n_variable_id => var_7.id ) |     uim_1 = UserInfoModel.new( :key => 'profile', :i18n_variable_id => var_7.id, :built_in => true ) | ||||||
|     uim_1.attribute_models.build( :key => 'family_name', :locale => true, :i18n_variable_id => var_8.id, :markup => 'text_field', :list_options => [] ) |     uim_1.attribute_models.build( :key => 'family_name', :locale => true, :i18n_variable_id => var_8.id, :markup => 'text_field', :list_options => [] ) | ||||||
|     uim_1.attribute_models.build( :key => 'first_name', :locale => true, :i18n_variable_id => var_9.id, :markup => 'text_field', :list_options => [] ) |     uim_1.attribute_models.build( :key => 'first_name', :locale => true, :i18n_variable_id => var_9.id, :markup => 'text_field', :list_options => [] ) | ||||||
|     uim_1.save!  |     uim_1.save!  | ||||||
|  |  | ||||||
		Reference in New Issue