mpog_software_plugin_myprofile_controller.rb
6.07 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
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
class MpogSoftwarePluginMyprofileController < MyProfileController
append_view_path File.join(File.dirname(__FILE__) + '/../views')
def index
end
def edit_institution
@show_sisp_field = environment.admins.include?(current_user.person)
@estate_list = NationalRegion.find(:all, :conditions=>["national_region_type_id = ?", 2], :order=>"name")
@institution = @profile.institution
if request.post?
@institution.community.update_attributes(params[:community])
@institution.update_attributes(params[:institutions].except(:governmental_power, :governmental_sphere, :juridical_nature))
if @institution.type == "PublicInstitution"
begin
govPower = GovernmentalPower.find params[:institutions][:governmental_power]
govSphere = GovernmentalSphere.find params[:institutions][:governmental_sphere]
jur_nature = JuridicalNature.find params[:institutions][:juridical_nature]
@institution.juridical_nature = jur_nature
@institution.governmental_power = govPower
@institution.governmental_sphere = govSphere
@institution.save
rescue
@institution.errors.add(:governmental_fields, _("Could not find Governmental Power or Governmental Sphere"))
end
end
flash[:errors] = @institution.errors.full_messages unless @institution.valid?
end
end
def new_software
@errors = []
software_template = Community["software"]
if (!software_template.blank? && software_template.is_template)
params["community"]["template_id"] = software_template.id unless params["community"].blank?
end
@community = Community.new(params[:community])
@community.environment = environment
@software_info = SoftwareInfo.new(params[:software_info])
@license_info = if params[:license_info].nil?
LicenseInfo::new
else
LicenseInfo.find(:first, :conditions =>["version = ?","#{params[:license_info][:version]}"])
end
valid_community = request.post? && @community.valid?
valid_software_info = request.post? && @software_info.valid?
valid_license = (request.post? && @license_info.valid?)
if valid_software_info && valid_license && valid_community
@community = Community.create_after_moderation(user, {:environment => environment}.merge(params[:community]), @software_info, @license_info )
@software_info = SoftwareInfo.create_after_moderation(user,params[:software_info].merge({:environment => environment,:name => params[:community][:name]}))
unless params[:q].nil?
admins = params[:q].split(/,/).map{|n| environment.people.find n.to_i}
admins.each do |admin|
@community.add_member(admin)
@community.add_admin(admin)
end
end
if environment.enabled?("admin_must_approve_new_communities") and !environment.admins.include?(current_user.person)
session[:notice] = _('Your new software request will be evaluated by an administrator. You will be notified.')
redirect_to user.admin_url
else
redirect_to :controller => 'profile_editor', :action => 'edit', :profile => @community.identifier
end
else
@errors |= @community.errors.full_messages
@errors |= @software_info.errors.full_messages
@errors |= @license_info.errors.full_messages
end
end
def search_offerers
arg = params[:q].downcase
result = environment.people.find(:all, :conditions => ['LOWER(name) LIKE ?', "%#{arg}%"])
render :text => prepare_to_token_input(result).to_json
end
def edit_software
@software_info = @profile.software_info
@list_libraries = @software_info.libraries
@list_databases = @software_info.software_databases
@list_languages = @software_info.software_languages
@list_operating_systems = @software_info.operating_systems
@software_categories = @software_info.software_categories
@software_categories = SoftwareCategories.new if @software_categories.blank?
@disabled_public_software_field = disabled_public_software_field
if request.post?
params[:software][:public_software] ||= false
@software_info = @profile.software_info
@license = LicenseInfo.find(params[:license][:license_infos_id])
@software_info.license_info = @license
@software_info.update_attributes(params[:software])
@list_libraries = LibraryHelper.list_libraries(params[:library])
@list_languages = SoftwareLanguageHelper.list_language(params[:language])
@list_databases = DatabaseHelper.list_database(params[:database])
@software_categories = SoftwareCategories::new params[:software_categories]
@list_operating_systems = OperatingSystemHelper.list_operating_system(params[:operating_system])
@software_info.software_categories = @software_categories unless params[:software_categories].nil?
if not @list_libraries.nil?
@software_info.libraries.destroy_all
@list_libraries.each do |library|
@software_info.libraries << library
end
end
if not @list_languages.nil?
@software_info.software_languages.destroy_all
@list_languages.each do |language|
@software_info.software_languages << language
end
end
if not @list_databases.nil?
@software_info.software_databases.destroy_all
@list_databases.each do |database|
@software_info.software_databases << database
end
end
if not @list_operating_systems.nil?
@software_info.operating_systems.destroy_all
@list_operating_systems.each do |operating_system|
@software_info.operating_systems << operating_system
end
end
begin
@software_info.save!
if params[:commit] == _('Save and Configure Community')
redirect_to :controller => 'profile_editor', :action => 'edit'
else
redirect_to :controller => 'profile_editor', :action => 'index'
end
rescue ActiveRecord::RecordInvalid => invalid
end
end
end
def disabled_public_software_field
!environment.admins.include?(current_user.person)
end
def community_must_be_approved
end
end