features_controller.rb
3.85 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
class FeaturesController < AdminController
protect 'edit_environment_features', :environment
helper CustomFieldsHelper
def index
@features = Environment.available_features.sort_by{|k,v|v}
end
def manage_blocks
@blocks = [ ArticleBlock,
TagsBlock,
RecentDocumentsBlock,
ProfileInfoBlock,
LinkListBlock,
MyNetworkBlock,
FeedReaderBlock,
ProfileImageBlock,
LocationBlock,
SlideshowBlock,
ProfileSearchBlock,
HighlightsBlock,
FriendsBlock,
FavoriteEnterprisesBlock,
CommunitiesBlock,
EnterprisesBlock,
MembersBlock,
DisabledEnterpriseMessageBlock,
ProductCategoriesBlock,
FeaturedProductsBlock,
FansBlock,
ProductsBlock ]
@blocks += plugins.dispatch(:extra_blocks)
@blocks.sort_by! { |block| block.name }
end
post_only :update
def update
if @environment.update(params[:environment])
session[:notice] = _('Features updated successfully.')
redirect_to :action => 'index'
else
render :action => 'index'
end
end
post_only :update_blocks
def update_blocks
params[:environment].delete(:available_blocks)
if @environment.update_attributes(params[:environment])
session[:notice] = _('Blocks updated successfully.')
redirect_to :action => 'manage_blocks'
else
render :action => 'manage_blocks'
end
end
def manage_fields
@person_fields = Person.fields
@enterprise_fields = Enterprise.fields
@community_fields = Community.fields
end
def manage_person_fields
environment.custom_person_fields = params[:person_fields]
if environment.save!
session[:notice] = _('Person fields updated successfully.')
else
flash[:error] = _('Person fields not updated successfully.')
end
redirect_to :action => 'manage_fields'
end
def manage_enterprise_fields
environment.custom_enterprise_fields = params[:enterprise_fields]
if environment.save!
session[:notice] = _('Enterprise fields updated successfully.')
else
flash[:error] = _('Enterprise fields not updated successfully.')
end
redirect_to :action => 'manage_fields'
end
def manage_community_fields
environment.custom_community_fields = params[:community_fields]
if environment.save!
session[:notice] = _('Community fields updated successfully.')
else
flash[:error] = _('Community fields not updated successfully.')
end
redirect_to :action => 'manage_fields'
end
def manage_custom_fields
custom_field_list = params[:custom_fields] || {}
custom_fields_to_destroy =
params[:customized_type].constantize.custom_fields(environment).map(&:id) - custom_field_list.keys.map(&:to_i)
CustomField.destroy(custom_fields_to_destroy)
custom_field_list.each_pair do |id, custom_field|
field = CustomField.find_by_id(id)
if not field.blank?
params_to_update = custom_field.except(:format, :extras, :customized_type,:environment)
field.update_attributes(params_to_update)
else
if !custom_field[:extras].nil?
tmp = []
custom_field[:extras].each_pair do |k, v|
tmp << v
end
custom_field[:extras] = tmp
end
field = CustomField.new custom_field.except(:environment)
field.environment=environment
field.save if field.valid?
end
end
redirect_to :action => 'manage_fields'
end
def search_members
arg = params[:q].downcase
result = environment.people.where('LOWER(name) LIKE ? OR identifier LIKE ?', "%#{arg}%", "%#{arg}%")
render :text => prepare_to_token_input(result).to_json
end
end