mpog_software_plugin_myprofile_controller.rb
4.64 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
class MpogSoftwarePluginMyprofileController < MyProfileController
append_view_path File.join(File.dirname(__FILE__) + '/../views')
def index
end
def archive_software
puts "="*80
nil
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 )
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
redirect_to :controller => 'profile_editor', :action => 'edit', :profile => @community.identifier
else
# @list_libraries.each do |lib|
# @errors |= lib.errors.full_messages
# end
#
# @list_languages.each do |lng|
# @errors |= lng.errors.full_messages
# end
#
# @list_databases.each do |db|
# @errors |= db.errors.full_messages
# end
# @list_operating_systems.each do |os|
# @errors |= os.errors.full_messages
# end
@errors |= @community.errors.full_messages
@errors |= @software_info.errors.full_messages
@errors |= @license_info.errors.full_messages
# @errors |= @software_categories.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?
if request.post?
@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
end