user new interface 70%
This commit is contained in:
parent
1aacf5e2ce
commit
9f825de288
|
@ -131,8 +131,14 @@
|
||||||
margin: 0 0 3px;
|
margin: 0 0 3px;
|
||||||
}
|
}
|
||||||
.user-data {
|
.user-data {
|
||||||
padding: 70px 20px 0;
|
padding: 60px 0 0;
|
||||||
margin: 20px 0 0 360px;
|
margin: 0 0 0 360px;
|
||||||
|
}
|
||||||
|
.user-data .form-fixed {
|
||||||
|
}
|
||||||
|
.user-data .subnav {
|
||||||
|
top: 87px;
|
||||||
|
z-index: 1;
|
||||||
}
|
}
|
||||||
.user-data #module-nav {
|
.user-data #module-nav {
|
||||||
margin-left: -20px;
|
margin-left: -20px;
|
||||||
|
@ -141,13 +147,16 @@
|
||||||
background-color: #FFFFFF;
|
background-color: #FFFFFF;
|
||||||
top: 31px;
|
top: 31px;
|
||||||
padding: 10px 20px 0;
|
padding: 10px 20px 0;
|
||||||
-webkit-box-shadow: 0px 5px 10px rgba(0, 0, 0, .16);
|
-webkit-box-shadow: 0px 0px 10px rgba(0, 0, 0, .16);
|
||||||
-moz-box-shadow: 0px 5px 10px rgba(0, 0, 0, .16);
|
-moz-box-shadow: 0px 0px 10px rgba(0, 0, 0, .16);
|
||||||
box-shadow: 0px 5px 10px rgba(0, 0, 0, .16);
|
box-shadow: 0px 0px 10px rgba(0, 0, 0, .16);
|
||||||
}
|
}
|
||||||
.user-data #module-nav ul {
|
.user-data #module-nav ul {
|
||||||
margin-bottom: 10px;
|
margin-bottom: 10px;
|
||||||
}
|
}
|
||||||
|
.member-plugin-list {
|
||||||
|
margin-bottom: 30px;
|
||||||
|
}
|
||||||
.member-abstract, .member-large {
|
.member-abstract, .member-large {
|
||||||
padding: 15px;
|
padding: 15px;
|
||||||
}
|
}
|
||||||
|
@ -273,3 +282,31 @@
|
||||||
.nav-tabs li a {
|
.nav-tabs li a {
|
||||||
padding-right: 32px;
|
padding-right: 32px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.user-role {
|
||||||
|
padding: 0 20px 0 150px !important;
|
||||||
|
margin: 20px 0 0;
|
||||||
|
}
|
||||||
|
.user-role .user-info {
|
||||||
|
top: 23px;
|
||||||
|
margin-left: -135px;
|
||||||
|
width: 100px;
|
||||||
|
border-right: none;
|
||||||
|
box-shadow: none;
|
||||||
|
}
|
||||||
|
.user-role .map-block h4 .gender {
|
||||||
|
top: -1px;
|
||||||
|
bottom: auto;
|
||||||
|
left: -1px;
|
||||||
|
right: auto;
|
||||||
|
border-radius: 4px 0 0 0;
|
||||||
|
}
|
||||||
|
.user-role .teacher h4 .gender {
|
||||||
|
border-color: #186AB6 transparent transparent #186AB6;
|
||||||
|
}
|
||||||
|
.user-role .student h4 .gender {
|
||||||
|
border-color: #F38C08 transparent transparent #F38C08;
|
||||||
|
}
|
||||||
|
.user-role .staff h4 .gender {
|
||||||
|
border-color: #139E2F transparent transparent #139E2F;
|
||||||
|
}
|
|
@ -0,0 +1,116 @@
|
||||||
|
|
||||||
|
.site-map {
|
||||||
|
padding: 15px;
|
||||||
|
}
|
||||||
|
.site-map .map-block {
|
||||||
|
min-width: 250px;
|
||||||
|
min-height: 20px;
|
||||||
|
border: 1px solid #dedede;
|
||||||
|
background-color: #E6E6E6;
|
||||||
|
-webkit-border-radius: 4px;
|
||||||
|
-moz-border-radius: 4px;
|
||||||
|
border-radius: 4px;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
}
|
||||||
|
.site-map .map-block ul {
|
||||||
|
margin: 0px;
|
||||||
|
list-style: none;
|
||||||
|
width: 220px \9;
|
||||||
|
}
|
||||||
|
.site-map .map-block li {
|
||||||
|
background-color: #F7F7F7;
|
||||||
|
padding: 5px 15px;
|
||||||
|
border-top: 1px solid #FFF;
|
||||||
|
border-bottom: 1px solid #dedede;
|
||||||
|
display: table;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
.site-map .map-block li span {
|
||||||
|
width: 170px;
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
.site-map .map-block li:last-child {
|
||||||
|
border-radius: 0 0 4px 4px;
|
||||||
|
border-bottom: none;
|
||||||
|
}
|
||||||
|
.site-map .map-block li:hover a {;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
.site-map .map-block li.disabled {
|
||||||
|
color: #C9C9C9;
|
||||||
|
}
|
||||||
|
.site-map .map-block li.disabled .onoff {
|
||||||
|
box-shadow: 0px 1px 0px rgba(255, 255, 255, 0.5), 0 0 5px rgba(0,0,0,.2) inset;
|
||||||
|
background-color: #9C9C9C;
|
||||||
|
color: #CACACA;
|
||||||
|
}
|
||||||
|
.site-map .map-block h4 {
|
||||||
|
line-height: 18px;
|
||||||
|
min-height: 20px;
|
||||||
|
margin: 0;
|
||||||
|
padding: 5px 15px;
|
||||||
|
border-radius: 4px 4px 0 0;
|
||||||
|
box-shadow: 0px 1px 2px #A8A8A8;
|
||||||
|
position: relative;
|
||||||
|
background-image: -moz-linear-gradient(top, #FCFCFC, #DFDFDF);
|
||||||
|
background-image: -ms-linear-gradient(top, #FCFCFC, #DFDFDF);
|
||||||
|
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#FCFCFC), to(#DFDFDF));
|
||||||
|
background-image: -webkit-linear-gradient(top, #FCFCFC, #DFDFDF);
|
||||||
|
background-image: -o-linear-gradient(top, #FCFCFC, #DFDFDF);
|
||||||
|
background-image: linear-gradient(top, #FCFCFC, #DFDFDF);
|
||||||
|
background-repeat: repeat-x;
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FCFCFC', endColorstr='#DFDFDF', GradientType=0);
|
||||||
|
}
|
||||||
|
.site-map .map-block h4 span {
|
||||||
|
width: 170px;
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
.site-map .map-block h4 .onoff {
|
||||||
|
}
|
||||||
|
.site-map .disabled h4 {
|
||||||
|
color: #CACACA;
|
||||||
|
}
|
||||||
|
.site-map .disabled h4 .onoff {
|
||||||
|
box-shadow: 0px 1px 0px rgba(255, 255, 255, 0.5), 0 0 5px rgba(0,0,0,.2) inset;
|
||||||
|
background-color: #9C9C9C;
|
||||||
|
color: #CACACA;
|
||||||
|
}
|
||||||
|
.onoff {
|
||||||
|
display: block;
|
||||||
|
background-color: #5EB92B;
|
||||||
|
font-size: 9px;
|
||||||
|
padding: 0px 10px;
|
||||||
|
border-radius: 8px;
|
||||||
|
line-height: 16px;
|
||||||
|
height: 15px;
|
||||||
|
color: #FFF;
|
||||||
|
width: 38px;
|
||||||
|
border: none;
|
||||||
|
box-shadow: 0px 1px 0px rgba(255, 255, 255, 0.5), 0 0 5px rgba(13, 75, 23, 0.5) inset;
|
||||||
|
margin-top: 2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* for mamber role */
|
||||||
|
|
||||||
|
.user-role .form-horizontal {
|
||||||
|
padding: 20px 10px 10px;
|
||||||
|
background-color: #FFF;
|
||||||
|
margin-bottom: 0;
|
||||||
|
border-radius: 0 0 4px 4px;
|
||||||
|
}
|
||||||
|
.user-role .form-horizontal .control-label {
|
||||||
|
width: 100px;
|
||||||
|
}
|
||||||
|
.user-role .form-horizontal .controls {
|
||||||
|
margin-left: 120px;
|
||||||
|
}
|
||||||
|
.user-role .form-horizontal .controls>.input-append {
|
||||||
|
margin-bottom: 10px;
|
||||||
|
}
|
||||||
|
.user-role .map-block {
|
||||||
|
min-width: 440px;
|
||||||
|
}
|
||||||
|
.user-role .map-block legend {
|
||||||
|
font-size: 18px;
|
||||||
|
line-height: 25px;
|
||||||
|
}
|
|
@ -34,19 +34,19 @@ class Admin::UsersNewInterfaceController < ApplicationController
|
||||||
@staff_data = []
|
@staff_data = []
|
||||||
|
|
||||||
@user.attribute_values.each{|att_val|
|
@user.attribute_values.each{|att_val|
|
||||||
@profile_data.push({:name => att_val.attribute_field.title,:value =>att_val[I18n.locale]}) if att_val.attribute_field.attribute.key=="profile" rescue false
|
@profile_data.push({:name => att_val.attribute_field.title,:value =>att_val.get_value_by_locale(I18n.locale)}) if att_val.attribute_field.attribute.key=="profile" rescue false
|
||||||
}
|
}
|
||||||
|
|
||||||
@user.attribute_values.each{|att_val|
|
@user.attribute_values.each{|att_val|
|
||||||
@teacher_data.push({:name => att_val.attribute_field.title,:value => eval("att_val.#{att_val.key}")}) if att_val.attribute_field.role.key=="teacher"rescue false
|
@teacher_data.push({:name => att_val.attribute_field.title,:value => att_val.get_value_by_locale(I18n.locale) }) if att_val.attribute_field.role.key=="teacher"rescue false
|
||||||
}
|
}
|
||||||
|
|
||||||
@user.attribute_values.each{|att_val|
|
@user.attribute_values.each{|att_val|
|
||||||
@student_data.push({:name => att_val.attribute_field.title,:value =>eval("att_val.#{att_val.key}")}) if att_val.attribute_field.role.key=="student"rescue false
|
@student_data.push({:name => att_val.attribute_field.title,:value => att_val.get_value_by_locale(I18n.locale) }) if att_val.attribute_field.role.key=="student"rescue false
|
||||||
}
|
}
|
||||||
|
|
||||||
@user.attribute_values.each{|att_val|
|
@user.attribute_values.each{|att_val|
|
||||||
@staff_data.push({:name => att_val.attribute_field.title,:value =>eval("att_val.#{att_val.key}")}) if att_val.attribute_field.role.key=="staff_data"rescue false
|
@staff_data.push({:name => att_val.attribute_field.title,:value => att_val.get_value_by_locale(I18n.locale) }) if att_val.attribute_field.role.key=="staff_data"rescue false
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!params[:show_plugin_profile].nil?)
|
if(!params[:show_plugin_profile].nil?)
|
||||||
|
@ -89,28 +89,37 @@ class Admin::UsersNewInterfaceController < ApplicationController
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def temp_edit
|
||||||
|
@user = User.find(params[:id])
|
||||||
|
@form_index = 0
|
||||||
|
get_info_and_roles
|
||||||
|
end
|
||||||
|
|
||||||
def edit
|
def edit
|
||||||
@user = User.find(params[:id])
|
@user = User.find(params[:id])
|
||||||
|
@form_index = 0
|
||||||
get_info_and_roles
|
get_info_and_roles
|
||||||
end
|
end
|
||||||
|
|
||||||
def update
|
def update
|
||||||
@user = User.find(params[:id])
|
@user = User.find(params[:id])
|
||||||
|
@user.update_attributes(params[:user])
|
||||||
|
@user.save
|
||||||
|
redirect_to :action => :show
|
||||||
|
# # Update changes to the avatar
|
||||||
|
# @user.remove_avatar! if params[:file]
|
||||||
|
# @user.avatar = params[:file] if params[:file]
|
||||||
|
|
||||||
# Update changes to the avatar
|
# if @user.id.to_s.eql?(session['warden.user.user.key'][1].to_s) && @user.admin != params[:user][:admin].to_i.to_b
|
||||||
@user.remove_avatar! if params[:file]
|
# flash.now[:error] = t('admin.cant_revoke_self_admin')
|
||||||
@user.avatar = params[:file] if params[:file]
|
# end
|
||||||
|
# if !flash[:error] && @user.update_attributes(params[:user])
|
||||||
if @user.id.to_s.eql?(session['warden.user.user.key'][1].to_s) && @user.admin != params[:user][:admin].to_i.to_b
|
# flash[:notice] = t('admin.update_success_user')
|
||||||
flash.now[:error] = t('admin.cant_revoke_self_admin')
|
# redirect_to :action => :index
|
||||||
end
|
# else
|
||||||
if !flash[:error] && @user.update_attributes(params[:user])
|
# get_info_and_roles
|
||||||
flash[:notice] = t('admin.update_success_user')
|
# render :action => :edit
|
||||||
redirect_to :action => :index
|
# end
|
||||||
else
|
|
||||||
get_info_and_roles
|
|
||||||
render :action => :edit
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def destroy
|
def destroy
|
||||||
|
|
|
@ -0,0 +1,151 @@
|
||||||
|
# require ActionView::Helpers::FormTagHelper
|
||||||
|
|
||||||
|
module AttributeFieldHelper
|
||||||
|
include ActionView::Helpers::FormTagHelper
|
||||||
|
include ActionView::Helpers::FormOptionsHelper
|
||||||
|
include ActionView::Helpers::DateHelper
|
||||||
|
include ActionView::Helpers::TagHelper
|
||||||
|
|
||||||
|
def block_helper(user,index)
|
||||||
|
@index = index
|
||||||
|
@user = user
|
||||||
|
@attribute_value = @user.get_value_from_field_id(id)
|
||||||
|
@new_attribute = @attribute_value.nil?
|
||||||
|
@attribute_value = @attribute_value || @user.attribute_values.build(attribute_field_id: id)
|
||||||
|
@prefiled_value = @attribute_value.get_values
|
||||||
|
return instance_eval("render_#{markup}") #rescue ""
|
||||||
|
end
|
||||||
|
|
||||||
|
def render_text_area
|
||||||
|
result = ""
|
||||||
|
result << label
|
||||||
|
if self.locale?
|
||||||
|
@prefiled_value.each do |key,value|
|
||||||
|
result << controls_wrapper{text_area_tag("#{get_field_name_base}[#{key.to_s}]", value, {})}
|
||||||
|
end
|
||||||
|
else
|
||||||
|
value = @prefiled_value
|
||||||
|
result << controls_wrapper{text_area_tag(get_field_name_base, value, {})}
|
||||||
|
end
|
||||||
|
result << end_block
|
||||||
|
result.html_safe
|
||||||
|
end
|
||||||
|
|
||||||
|
def render_radio_button
|
||||||
|
result = ""
|
||||||
|
result << label
|
||||||
|
markup_value.each do |key,value|
|
||||||
|
result << controls_wrapper{label_tag(key,radio_button_tag(get_field_name_base+"[#{key}]", value[I18n.locale.to_s], (@prefiled_value==value ? true : false), {})+value[I18n.locale.to_s],:class=>"control-label")}
|
||||||
|
end
|
||||||
|
result << end_block
|
||||||
|
result.html_safe
|
||||||
|
end
|
||||||
|
|
||||||
|
def render_checkbox
|
||||||
|
# label+ "" + end_block
|
||||||
|
# check_box_tag(name, value = "1", checked = false, options = {})
|
||||||
|
|
||||||
|
result = ""
|
||||||
|
result << label
|
||||||
|
markup_value.each do |key,value|
|
||||||
|
result << controls_wrapper{label_tag(key,check_box_tag(get_field_name_base+"[#{key}]", value[I18n.locale.to_s], (@prefiled_value==value ? true : false), {})+value[I18n.locale.to_s],:class=>"control-label")}
|
||||||
|
end
|
||||||
|
result << end_block
|
||||||
|
result.html_safe
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
def render_date_durnation
|
||||||
|
control_group_wrapper do
|
||||||
|
if @new_attribute
|
||||||
|
@prefiled_value = {}
|
||||||
|
end
|
||||||
|
label+controls_wrapper{date_select(get_field_name_base+"[value][from]",@prefiled_value["from"]) +date_select(get_field_name_base+"[value][end]",@prefiled_value["end"])} + end_block
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def render_text_field_ext
|
||||||
|
result = ""
|
||||||
|
result << label
|
||||||
|
if self.locale?
|
||||||
|
@prefiled_value.each do |key,value|
|
||||||
|
result << controls_wrapper{text_field_tag("#{get_field_name_base}[#{key.to_s}]", value, {})}
|
||||||
|
end
|
||||||
|
else
|
||||||
|
value = @prefiled_value
|
||||||
|
result << controls_wrapper{text_field_tag(get_field_name_base, value, {})}
|
||||||
|
end
|
||||||
|
result << end_block
|
||||||
|
result.html_safe
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
def render_date
|
||||||
|
label+controls_wrapper{date_select(get_field_name_base+"[value]",@prefiled_value)} + end_block
|
||||||
|
end
|
||||||
|
|
||||||
|
def render_select
|
||||||
|
label+controls_wrapper{select_tag( get_field_name_base+"[value]",options_for_select(markup_value.collect{|p| [p[1][I18n.locale.to_s],p[0]]},@prefiled_value))} + end_block
|
||||||
|
end
|
||||||
|
|
||||||
|
def render_text_field
|
||||||
|
result = ""
|
||||||
|
result << label
|
||||||
|
if self.locale?
|
||||||
|
@prefiled_value.each do |key,value|
|
||||||
|
result << controls_wrapper{text_field_tag("#{get_field_name_base}[#{key.to_s}]", value, {})}
|
||||||
|
end
|
||||||
|
else
|
||||||
|
value = @prefiled_value
|
||||||
|
result << controls_wrapper{text_field_tag(get_field_name_base, value, {})}
|
||||||
|
end
|
||||||
|
result << end_block
|
||||||
|
result.html_safe
|
||||||
|
end
|
||||||
|
|
||||||
|
def render_email
|
||||||
|
label+controls_wrapper{email_field_tag(get_field_name_base, value, {})}+ end_block
|
||||||
|
end
|
||||||
|
|
||||||
|
def render_addr
|
||||||
|
label+controls_wrapper{text_field_tag(get_field_name_base, value, {})} + end_block
|
||||||
|
end
|
||||||
|
|
||||||
|
protected
|
||||||
|
|
||||||
|
def controls_wrapper(&block)
|
||||||
|
result = "<div class='controls'>"
|
||||||
|
result << yield
|
||||||
|
result << "</div>"
|
||||||
|
result.html_safe
|
||||||
|
end
|
||||||
|
|
||||||
|
def control_group_wrapper(&block)
|
||||||
|
result = "<div class='control-group'>"
|
||||||
|
result << yield
|
||||||
|
result << "</div>"
|
||||||
|
result.html_safe
|
||||||
|
end
|
||||||
|
|
||||||
|
def end_block
|
||||||
|
if @new_attribute
|
||||||
|
hidden_field_tag(get_field_name_base+"[attribute_field_id]",id)
|
||||||
|
else
|
||||||
|
hidden_field_tag(get_field_name_base+"[id]",@attribute_value.id)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def get_field_name_base
|
||||||
|
# "user[#{self.attribute._type.downcase.pluralize}][#{self.attribute._id.to_s}][attribute_values][#{attribute_value.id}]"
|
||||||
|
if @new_attribute
|
||||||
|
"user[new_attribute_values][#{@index}]"
|
||||||
|
else
|
||||||
|
"user[attribute_values][#{@index}]"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def label
|
||||||
|
label_tag(key,title,:class=>"control-label")
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
|
@ -2,9 +2,11 @@ class AttributeField
|
||||||
|
|
||||||
include Mongoid::Document
|
include Mongoid::Document
|
||||||
include Mongoid::Timestamps
|
include Mongoid::Timestamps
|
||||||
|
include AttributeFieldHelper
|
||||||
|
|
||||||
field :key
|
field :key
|
||||||
field :markup #[select,text_field,email,date,addr]
|
field :markup #[select,text_field,email,date,addr]
|
||||||
|
field :markup_value ,:type => Hash
|
||||||
field :locale, :type => Boolean, :default => true
|
field :locale, :type => Boolean, :default => true
|
||||||
field :list_options, :type => Array
|
field :list_options, :type => Array
|
||||||
field :built_in, :type => Boolean, :default => false
|
field :built_in, :type => Boolean, :default => false
|
||||||
|
@ -46,7 +48,7 @@ class AttributeField
|
||||||
end
|
end
|
||||||
|
|
||||||
def title=(var)
|
def title=(var)
|
||||||
binding.pry
|
# binding.pry
|
||||||
if locale
|
if locale
|
||||||
self.locale_title = var
|
self.locale_title = var
|
||||||
else
|
else
|
||||||
|
|
|
@ -2,14 +2,52 @@ class AttributeValue
|
||||||
|
|
||||||
include Mongoid::Document
|
include Mongoid::Document
|
||||||
include Mongoid::Timestamps
|
include Mongoid::Timestamps
|
||||||
|
include Mongoid::MultiParameterAttributes
|
||||||
|
|
||||||
field :key
|
field :key
|
||||||
|
|
||||||
belongs_to :attribute_field
|
belongs_to :attribute_field
|
||||||
belongs_to :user
|
belongs_to :user
|
||||||
|
|
||||||
def method_missing(field)
|
before_save :check_key
|
||||||
self[field]
|
|
||||||
|
NO_MULTI_TAG = ["select","date","radio_button","checkbox","date_durnation"]
|
||||||
|
|
||||||
|
def check_key
|
||||||
|
self.key = attribute_field.key
|
||||||
|
end
|
||||||
|
|
||||||
|
def method_missing(*field)
|
||||||
|
if field.size < 1
|
||||||
|
self[field[0]]
|
||||||
|
else
|
||||||
|
self[(field[0].to_s.delete "=")] = field[1]
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def get_value_by_locale(locale)
|
||||||
|
case self.attribute_field.markup
|
||||||
|
when "text_field"
|
||||||
|
self.attribute_field.locale ? self[locale] : self[:value]
|
||||||
|
when "select"
|
||||||
|
self.attribute_field.markup_value[self[:value]][locale.to_s] || NoData
|
||||||
|
when "email"
|
||||||
|
self[:value]
|
||||||
|
when "date"
|
||||||
|
Date.new(self[:value]["(1i)"].to_i,self[:value]["(2i)"].to_i,self[:value]["(3i)"].to_i)
|
||||||
|
when "addr"
|
||||||
|
self[:value]
|
||||||
|
else
|
||||||
|
self.attribute_field.locale ? self[locale] : self[:value]
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def get_values
|
||||||
|
if self.attribute_field.locale && !(NO_MULTI_TAG.include? self.attribute_field.markup)
|
||||||
|
return Hash[VALID_LOCALES.collect{|lang| [lang,self[lang.to_sym]]}]
|
||||||
|
else
|
||||||
|
return self[:value]
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
|
@ -43,28 +43,33 @@ class User
|
||||||
self.status_record.store(sub_role_id,status_id)
|
self.status_record.store(sub_role_id,status_id)
|
||||||
end
|
end
|
||||||
|
|
||||||
def get_status(*params)
|
# def get_status(*params)
|
||||||
param = params[0]
|
# param = params[0]
|
||||||
case param.class.to_s
|
# case param.class.to_s
|
||||||
when 'String'
|
# when 'String'
|
||||||
sr = ::SubRole.find sub_role_id
|
# sr = ::SubRole.find sub_role_id
|
||||||
when 'Hash'
|
# when 'Hash'
|
||||||
sr = ::SubRole.first({conditions:{key: param[:key]}})
|
# sr = ::SubRole.first({conditions:{key: param[:key]}})
|
||||||
end
|
# end
|
||||||
if self.sub_roles.include?(sr)
|
# if self.sub_roles.include?(sr)
|
||||||
return ::Status.find(status_record.fetch(sr.id.to_s))
|
# return ::Status.find(status_record.fetch(sr.id.to_s))
|
||||||
else
|
# else
|
||||||
nil
|
# nil
|
||||||
|
# end
|
||||||
|
# end
|
||||||
|
def new_attribute_values=(fields)
|
||||||
|
fields.each do |key,field|
|
||||||
|
self.attribute_values.build(field)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def self.find_by_status_and_sub_role_key(sub_role_key,status_key)
|
def self.find_by_status_and_sub_role_key(sub_role_key,status_key) #Query for users by using specific sub_role and status key
|
||||||
sr = ::SubRole.first({conditions: { key: sub_role_key }})
|
sr = ::SubRole.first({conditions: { key: sub_role_key }})
|
||||||
status = ::Status.first({conditions:{role_id: sr.role.id,key: status_key}})
|
status = ::Status.first({conditions:{role_id: sr.role.id,key: status_key}})
|
||||||
find_by_status(sr.id,status.id)
|
find_by_status(sr.id,status.id)
|
||||||
end
|
end
|
||||||
|
|
||||||
def self.find_by_status(sub_role_id,status_id)
|
def self.find_by_status(sub_role_id,status_id) #Query for users by using specific sub_role and status key buy within ID
|
||||||
User.where("status_record.#{sub_role_id}" => status_id)
|
User.where("status_record.#{sub_role_id}" => status_id)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -112,7 +117,7 @@ class User
|
||||||
def get_value_from_field_id(field_id)
|
def get_value_from_field_id(field_id)
|
||||||
values = get_attribute_values
|
values = get_attribute_values
|
||||||
value = values.detect {|value| value.attribute_field_id == field_id} rescue nil
|
value = values.detect {|value| value.attribute_field_id == field_id} rescue nil
|
||||||
value ? value : self.attribute_values.build
|
value ? value : nil
|
||||||
end
|
end
|
||||||
|
|
||||||
def self.from_id(id)
|
def self.from_id(id)
|
||||||
|
@ -128,7 +133,7 @@ class User
|
||||||
def check_status_record
|
def check_status_record
|
||||||
roles = sub_roles.collect{|t| t.role}.uniq #get all role from sub_roles
|
roles = sub_roles.collect{|t| t.role}.uniq #get all role from sub_roles
|
||||||
sub_roles_ary = sub_roles.collect{|t| t.id.to_s}
|
sub_roles_ary = sub_roles.collect{|t| t.id.to_s}
|
||||||
self.status_record = status_record.keep_if{|sub_role_id, status_id|
|
self.status_record = status_record.keep_if{|sub_role_id, status_id|
|
||||||
includeing = sub_roles_ary.include?(sub_role_id)
|
includeing = sub_roles_ary.include?(sub_role_id)
|
||||||
valide = false
|
valide = false
|
||||||
if includeing
|
if includeing
|
||||||
|
@ -137,7 +142,7 @@ class User
|
||||||
end
|
end
|
||||||
|
|
||||||
(includeing and valide)
|
(includeing and valide)
|
||||||
}
|
} rescue {}
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
|
@ -10,13 +10,15 @@
|
||||||
<% end %>
|
<% end %>
|
||||||
<td class='select_type'>
|
<td class='select_type'>
|
||||||
|
|
||||||
<%= f.select :markup, LIST[:markups], {}, {:style => "width:90px"} %>
|
<ul>
|
||||||
<div <%= attribute_field[:markup].eql?('select') ? nil : "style='display:none'"%>>
|
<li><%= f.select :markup, LIST[:markups], {}, {:style => "width:90px"} %> </li>
|
||||||
<%= t('admin.options') %>:
|
<li><%= f.check_box :locale %><%= label_tag "Locale" %> </li>
|
||||||
<%= f.select "select_list_options", {'1'=>"A",'2'=>"B",'3'=>"C"}, :style => "width:130px" %>
|
<li><%= attribute_field[:markup].eql?('select') ? nil : "style='display:none'"%> </li>
|
||||||
<%#= collection_select(:select_list_options, method, collection, value_method, text_method, options = {}, html_options = {}) %>
|
<li><%= t('admin.options') %>: <%= f.text_field :markup_value%></li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</td>
|
</td>
|
||||||
<td class="action">
|
<td class="action">
|
||||||
<% if attribute_field.new_record? %>
|
<% if attribute_field.new_record? %>
|
||||||
|
|
|
@ -0,0 +1,19 @@
|
||||||
|
<div class="user-info">
|
||||||
|
<div class="user-avatar pull-left">
|
||||||
|
<p class="reflective"></p>
|
||||||
|
<% if @user.avatar? %>
|
||||||
|
<%= image_tag(@user.avatar.thumb.url) %>
|
||||||
|
<% else %>
|
||||||
|
<%= image_tag "person.png" %>
|
||||||
|
<% end %>
|
||||||
|
<%= file_field_tag 'file' %>
|
||||||
|
<%= hidden_field_tag :avatar_cache %>
|
||||||
|
</div>
|
||||||
|
<label>
|
||||||
|
<%= f.check_box :admin %>
|
||||||
|
<span><%= t('admin.admin') %>:</span>
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<%= render :partial=>"infos"%>
|
||||||
|
|
|
@ -0,0 +1,14 @@
|
||||||
|
<div class="map-block back">
|
||||||
|
<h4><span><%= info.title %></span></h4>
|
||||||
|
<div class="form-horizontal">
|
||||||
|
|
||||||
|
<% info.attribute_fields.each do |af|%>
|
||||||
|
<div class="control-group">
|
||||||
|
<%= af.block_helper(@user,@form_index)%>
|
||||||
|
</div>
|
||||||
|
<% @form_index = @form_index +1 %>
|
||||||
|
<% end %>
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
|
@ -0,0 +1,4 @@
|
||||||
|
<!--<span><%#= t('admin.email') %>:</span> -->
|
||||||
|
<%#= f.text_field :email, :onfocus => "this.value='';", :onblur => "if(this.value==''){this.value=#{t('admin.email')};}", :value => (@user.email.blank? ? t('admin.email') : @user.email), :class => 'user_mail' %>
|
||||||
|
|
||||||
|
<%=render :partial=>"info",:collection=>Info.all%>
|
|
@ -0,0 +1,31 @@
|
||||||
|
<div id="person" class="clear">
|
||||||
|
<% if @user.avatar? %>
|
||||||
|
<%= image_tag(@user.avatar.thumb.url) %>
|
||||||
|
<% else %>
|
||||||
|
<%= image_tag "person.png" %>
|
||||||
|
<% end %>
|
||||||
|
<%= file_field_tag 'file' %>
|
||||||
|
<%= hidden_field_tag :avatar_cache %>
|
||||||
|
<label>
|
||||||
|
<span><%= t('admin.email') %>:</span>
|
||||||
|
<%= f.text_field :email, :onfocus => "this.value='';", :onblur => "if(this.value==''){this.value=#{t('admin.email')};}", :value => (@user.email.blank? ? t('admin.email') : @user.email), :class => 'user_mail' %>
|
||||||
|
</label>
|
||||||
|
<label>
|
||||||
|
<%= f.check_box :admin %>
|
||||||
|
<span><%= t('admin.admin') %>:</span>
|
||||||
|
</label>
|
||||||
|
<label>
|
||||||
|
|
||||||
|
</label>
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<%=render :partial=>"temp_profile",:collection=>Info.all%>
|
||||||
|
<tr>
|
||||||
|
<tr> <span><%= t('admin.role') %>:</span> </tr>
|
||||||
|
<tr>
|
||||||
|
<%= render :partial=>"temp_sub_role_from",:collection=>@user.sub_roles %>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,9 @@
|
||||||
|
<td>
|
||||||
|
<%= temp_profile.title %>
|
||||||
|
<% temp_profile.attribute_fields.each do |af|%>
|
||||||
|
<div class="control-group">
|
||||||
|
<%= af.block_helper(@user,@form_index)%>
|
||||||
|
</div>
|
||||||
|
<% @form_index = @form_index +1 %>
|
||||||
|
<% end %>
|
||||||
|
</td>
|
|
@ -0,0 +1,10 @@
|
||||||
|
<td>
|
||||||
|
<%= temp_sub_role_from.title%>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<% temp_sub_role_from.attribute_fields.each do |af| %>
|
||||||
|
<li><%= af.block_helper(@user,@form_index) %></li>
|
||||||
|
<% @form_index = @form_index +1 %>
|
||||||
|
<% end %>
|
||||||
|
</ul>
|
||||||
|
</td>
|
|
@ -0,0 +1,24 @@
|
||||||
|
<% content_for :page_specific_css do -%>
|
||||||
|
<%= stylesheet_link_tag "member" %>
|
||||||
|
<%= stylesheet_link_tag "site-map" %>
|
||||||
|
<%= stylesheet_link_tag "isotope" %>
|
||||||
|
<% end -%>
|
||||||
|
<% content_for :page_specific_javascript do -%>
|
||||||
|
<%= javascript_include_tag "/static/jquery.cycle.all.latest.js" %>
|
||||||
|
<%= javascript_include_tag "inc/modal-preview" %>
|
||||||
|
<%= javascript_include_tag "lib/contenteditable" %>
|
||||||
|
<% end -%>
|
||||||
|
|
||||||
|
|
||||||
|
<%= content_tag :div,:class=>"user-role site-map" do%>
|
||||||
|
|
||||||
|
<%= form_for @user, :url => admin_users_new_interface_path(@user), :html => { :multipart => true } do |f| %>
|
||||||
|
<%= f.error_messages %>
|
||||||
|
<%= render :partial => 'form', :locals => { :f => f } %>
|
||||||
|
<div class="button_bar">
|
||||||
|
<%= link_back %>
|
||||||
|
<%= link_to t('update'), "#", :onclick=>"$('#edit_user_#{@user.id}').submit()" %>
|
||||||
|
</div>
|
||||||
|
<% end -%>
|
||||||
|
|
||||||
|
<% end -%>
|
|
@ -34,6 +34,7 @@
|
||||||
<p class="user-mail">
|
<p class="user-mail">
|
||||||
<%= @user.email %>
|
<%= @user.email %>
|
||||||
</p>
|
</p>
|
||||||
|
<%= link_to "<i class='icon-pencil'></i>TempEdit".html_safe,temp_edit_admin_users_new_interface_path(@user),:class=>"btn btn-small"%>
|
||||||
<button class="btn btn-small"><i class="icon-pencil"></i> <%= t("admin.edit")%></button>
|
<button class="btn btn-small"><i class="icon-pencil"></i> <%= t("admin.edit")%></button>
|
||||||
</div>
|
</div>
|
||||||
<div class="user-roles my_scroll">
|
<div class="user-roles my_scroll">
|
||||||
|
|
|
@ -0,0 +1,23 @@
|
||||||
|
<% content_for :page_specific_css do -%>
|
||||||
|
<%= stylesheet_link_tag "member" %>
|
||||||
|
<%= stylesheet_link_tag "site-map" %>
|
||||||
|
<%= stylesheet_link_tag "isotope" %>
|
||||||
|
<% end -%>
|
||||||
|
<% content_for :page_specific_javascript do -%>
|
||||||
|
<%= javascript_include_tag "/static/jquery.cycle.all.latest.js" %>
|
||||||
|
<%= javascript_include_tag "inc/modal-preview" %>
|
||||||
|
<%= javascript_include_tag "lib/contenteditable" %>
|
||||||
|
<% end -%>
|
||||||
|
|
||||||
|
<%= content_tag :div,:class=>"user-role site-map" do%>
|
||||||
|
|
||||||
|
<%= form_for @user, :url => admin_users_new_interface_path(@user), :html => { :multipart => true } do |f| %>
|
||||||
|
<%= f.error_messages %>
|
||||||
|
<%= render :partial => 'temp_form', :locals => { :f => f } %>
|
||||||
|
<div class="button_bar">
|
||||||
|
<%= link_back %>
|
||||||
|
<%= link_to t('update'), "#", :onclick=>"$('#edit_user_#{@user.id}').submit()" %>
|
||||||
|
</div>
|
||||||
|
<% end -%>
|
||||||
|
|
||||||
|
<% end -%>
|
|
@ -6,6 +6,12 @@ forbidden_item_names:
|
||||||
markups:
|
markups:
|
||||||
- text_field
|
- text_field
|
||||||
- select
|
- select
|
||||||
|
- date
|
||||||
|
- text_area #NC
|
||||||
|
- radio_button #NC
|
||||||
|
- checkbox #NC
|
||||||
|
- date_durnation #NC
|
||||||
|
- text_field_ext #NC for addr for phone
|
||||||
|
|
||||||
public_r_tags:
|
public_r_tags:
|
||||||
- ad_banner
|
- ad_banner
|
||||||
|
|
|
@ -127,7 +127,12 @@ Orbit::Application.routes.draw do
|
||||||
resources :tags
|
resources :tags
|
||||||
resources :translations
|
resources :translations
|
||||||
resources :users
|
resources :users
|
||||||
resources :users_new_interface
|
resources :users_new_interface do
|
||||||
|
member do
|
||||||
|
get 'temp_edit'
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
# end admin
|
# end admin
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,37 @@
|
||||||
# encoding: utf-8
|
# encoding: utf-8
|
||||||
|
|
||||||
namespace :build_new_member do
|
namespace :build_new_member do
|
||||||
|
task :set_gender => :environment do
|
||||||
|
af = AttributeField.first({conditions:{key: "gender"}})
|
||||||
|
af.markup_value = {"1"=>{"en"=>"Male", "zh_tw"=>"男性"}, "2"=>{"en"=>"Female", "zh_tw"=>"女性"}, "3"=>{"en"=>"Other", "zh_tw"=>"其他"}, "3"=>{"en"=>"Not public", "zh_tw"=>"不公開"}}
|
||||||
|
af.markup = "select"
|
||||||
|
af.locale = true
|
||||||
|
af.save
|
||||||
|
end
|
||||||
|
|
||||||
|
task :setup_status_options => :environment do
|
||||||
|
data_set = {
|
||||||
|
:teacher=>{:status=>{:markup=>"select",:markup_value=>{"1"=>{"en"=>"Fulltime", "zh_tw"=>"全職"}, "2"=>{"en"=>"Adjunct", "zh_tw"=>"兼職"}, "3"=>{"en"=>"Co Hiring", "zh_tw"=>"合聘"}, "3"=>{"en"=>"Distinguished", "zh_tw"=>"特聘"}}}},
|
||||||
|
:student=>{:status=>{:markup=>"select",:markup_value=>{"1"=>{"en"=>"Studying", "zh_tw"=>"在學"}, "2"=>{"en"=>"Drop-out", "zh_tw"=>"休學"}, "3"=>{"en"=>"Alumi", "zh_tw"=>"校友"}, "3"=>{"en"=>"Suspended", "zh_tw"=>"未完成"}}}},
|
||||||
|
:staff=>{:staff=>{:markup=>"select",:markup_value=>nil}}
|
||||||
|
}
|
||||||
|
data_set.each do |key,data|
|
||||||
|
role = Role.first({conditions:{key: key}})
|
||||||
|
role.sub_roles.each do |sr|
|
||||||
|
sr.attribute_fields.each do |af|
|
||||||
|
if af.key == "status"
|
||||||
|
# binding.pry
|
||||||
|
af.markup = data[:status][:markup]
|
||||||
|
af.markup_value = data[:status][:markup_value]
|
||||||
|
af.save
|
||||||
|
# binding.pry
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
task :sub_role_tags_generate => :environment do
|
task :sub_role_tags_generate => :environment do
|
||||||
SubRoleTag.destroy_all
|
SubRoleTag.destroy_all
|
||||||
role_keys = %w{teacher staff student}
|
role_keys = %w{teacher staff student}
|
||||||
|
|
Loading…
Reference in New Issue