diff --git a/controllers/mpog_software_plugin_controller.rb b/controllers/mpog_software_plugin_controller.rb index 5716475..c0a9483 100644 --- a/controllers/mpog_software_plugin_controller.rb +++ b/controllers/mpog_software_plugin_controller.rb @@ -3,7 +3,7 @@ class MpogSoftwarePluginController < ApplicationController include InstitutionHelper def check_reactivate_account - if request.xhr? and params[:email] + if request.xhr? && params[:email] result = "" user = User.where(:email => params[:email]) @@ -18,7 +18,7 @@ class MpogSoftwarePluginController < ApplicationController def hide_registration_incomplete_percentage response = false - if request.xhr? and params[:hide] + if request.xhr? && params[:hide] session[:hide_incomplete_percentage] = true response = session[:hide_incomplete_percentage] end @@ -52,113 +52,61 @@ class MpogSoftwarePluginController < ApplicationController end def new_institution - if !params[:community].nil? and !params[:institutions].nil? - response_message = {} + redirect_to "/" if params[:community].blank? || params[:institutions].blank? - institution_template = Community["institution"] - if (!institution_template.blank? && institution_template.is_template) - params[:community][:template_id] = institution_template.id unless params[:community].blank? - end + response_message = {} - institution = private_create_institution() - if environment.admins.include?(current_user.person) and params[:edit_institution_page] == false - environment.admins.each do |adm| - institution.community.add_admin(adm) - end - end - response_message = if institution.errors.full_messages.empty? and institution.community.errors.full_messages.empty? and institution.valid? and institution.save - {:success => true, :message => _("Institution successful created!"), :institution_data=>{:name=>institution.name, :id=>institution.id}} - else - {:success => false, :message => _("Institution could not be created!"), :errors => institution.errors.full_messages << institution.community.errors.full_messages} - end + institution_template = Community["institution"] + add_template_in_params institution_template - if request.xhr? - render :json => response_message.to_json - else - session[:notice] = response_message[:message] # consume the notice + institution = private_create_institution + add_environment_admins_to_institution institution - if response_message[:success] - redirect_to :controller => "/admin_panel", :action => "index" - else - flash[:errors] = response_message[:errors] - redirect_to :controller => "mpog_software_plugin", :action => "create_institution_admin" - end - end - else - redirect_to "/" + response_message = save_institution institution + + if request.xhr? #User create institution + render :json => response_message.to_json + else #Admin create institution + session[:notice] = response_message[:message] # consume the notice + + redirect_depending_on_institution_creation response_message end end def institution_already_exists - if request.xhr? and !params[:name].nil? - already_exists = !Community.where(:name=>params[:name]).empty? + redirect_to "/" if !request.xhr? || params[:name].blank? - render :json=>already_exists.to_json - else - redirect_to "/" - end + already_exists = !Community.where(:name=>params[:name]).empty? + + render :json=>already_exists.to_json end def download respond_to do |format| format.html - format.xml do - softwares = software_list_to_correct_format(SoftwareInfo.all) - send_data softwares.to_xml( - :skip_types => true, - :only => %w[name acronym demonstration_url e_arq e_mag e_ping features icp_brasil objectives operating_platform languages_list database_list]), - :type => 'text/xml', - :disposition => "attachment; filename=softwares.xml" - end - - format.csv do - softwares = software_list_to_correct_format(SoftwareInfo.all) - csv_content = "" - softwares.each { |s| - csv_content << "name;acronym;demonstration_url;e_arq;e_mag;e_ping;features;icp_brasil;objectives;operating_platform\n" - csv_content << CSV.generate_line([s['name'], s['acronym'], s['demonstration_url'], s['e_arq'], s['e_mag'], s['e_ping'], s['features'], s['icp_brasil'], s['objectives'], s['operating_platform']], {:col_sep => ';'}) - - csv_content << "\nlanguage_name;language_version;language_operating_system\n" - s[:languages_list].each { |sl| - csv_content << CSV.generate_line([sl[:name], sl[:version], sl[:operating_system]], {:col_sep => ';'}) - } - - csv_content << "\ndatabase_name;database_version;database_operating_system\n" - s[:database_list].each { |dl| - csv_content << CSV.generate_line([dl[:name], dl[:version], dl[:operating_system]], {:col_sep => ';'}) - } - - csv_content << "\n\n" - } - if csv_content.blank? - csv_content = "name;acronym;demonstration_url;e_arq;e_mag;e_ping;features;icp_brasil;objectives;operating_platform\n" - end - - render :text => csv_content, :content_type => 'text/csv', :layout => false - end + format_xml_download format + format_csv_download format end end def get_institutions - list = [] + redirect_to "/" if !request.xhr? || params[:query].blank? - if request.xhr? and params[:query] - list = Institution.search_institution(params[:query]).map{ |institution| - {:value=>institution.name, :id=>institution.id} - } - end + list = Institution.search_institution(params[:query]).map{ |institution| + {:value=>institution.name, :id=>institution.id} + } render :json => list.to_json end def get_categories + redirect_to "/" if !request.xhr? || params[:query].blank? + list = [] - if request.xhr? and params[:query] - Category.where("name ILIKE ?", "%#{params[:query]}%").collect { |c| - list << {:label=>c.name, :id=>c.id} if c.name != "Software" - } - end + Category.where("name ILIKE ?", "%#{params[:query]}%").collect { |c| + list << {:label=>c.name, :id=>c.id} if c.name != "Software" + } render :json => list.to_json end @@ -171,19 +119,18 @@ class MpogSoftwarePluginController < ApplicationController end def get_field_data - return render :json=>{} if !request.xhr? or params[:query].nil? or params[:field].nil? + return render :json=>{} if !request.xhr? || params[:query].nil? || params[:field].nil? - model = nil - case params[:field] + model = case params[:field] when "database" - model = DatabaseDescription + DatabaseDescription when "software_language" - model = ProgrammingLanguage + ProgrammingLanguage else - model = DatabaseDescription - end + DatabaseDescription + end - data = model.where("name ILIKE ?", "%#{params[:query]}%").select("id, name").collect {|db| + data = model.where("name ILIKE ?", "%#{params[:query]}%").select("id, name").collect { |db| {:id=>db.id, :label=>db.name} } other = [model.select("id, name").last].collect { |db| @@ -199,6 +146,8 @@ class MpogSoftwarePluginController < ApplicationController protected def get_state_list + redirect_to "/" unless request.xhr? + NationalRegion.find(:all, :conditions=>["national_region_type_id = ?", 2], :order=>"name") end @@ -260,4 +209,78 @@ class MpogSoftwarePluginController < ApplicationController end software_list end + + def add_template_in_params institution_template + if (!institution_template.blank? && institution_template.is_template) + params[:community][:template_id] = institution_template.id unless params[:community].blank? + end + end + + def add_environment_admins_to_institution institution + if environment.admins.include?(current_user.person) && params[:edit_institution_page] == false + environment.admins.each do |adm| + institution.community.add_admin(adm) + end + end + end + + def save_institution institution + if institution.errors.full_messages.empty? and institution.community.errors.full_messages.empty? and institution.valid? and institution.save + {:success => true, :message => _("Institution successful created!"), :institution_data=>{:name=>institution.name, :id=>institution.id}} + else + {:success => false, :message => _("Institution could not be created!"), :errors => institution.errors.full_messages << institution.community.errors.full_messages} + end + end + + def redirect_depending_on_institution_creation response_message + if response_message[:success] + redirect_to :controller => "/admin_panel", :action => "index" + else + flash[:errors] = response_message[:errors] + redirect_to :controller => "mpog_software_plugin", :action => "create_institution_admin" + end + end + + def format_xml_download format + format.xml do + softwares = software_list_to_correct_format(SoftwareInfo.all) + send_data( + softwares.to_xml( + :skip_types => true, + :only => %w[name acronym demonstration_url e_arq e_mag e_ping features icp_brasil objectives operating_platform languages_list database_list] + ), + :type => 'text/xml', + :disposition => "attachment; filename=softwares.xml") + end + end + + def format_csv_download format + format.csv do + softwares = software_list_to_correct_format(SoftwareInfo.all) + csv_content = "" + + softwares.each do |s| + csv_content << "name;acronym;demonstration_url;e_arq;e_mag;e_ping;features;icp_brasil;objectives;operating_platform\n" + csv_content << CSV.generate_line([s['name'], s['acronym'], s['demonstration_url'], s['e_arq'], s['e_mag'], s['e_ping'], s['features'], s['icp_brasil'], s['objectives'], s['operating_platform']], {:col_sep => ';'}) + + csv_content << "\nlanguage_name;language_version;language_operating_system\n" + s[:languages_list].each { |sl| + csv_content << CSV.generate_line([sl[:name], sl[:version], sl[:operating_system]], {:col_sep => ';'}) + } + + csv_content << "\ndatabase_name;database_version;database_operating_system\n" + s[:database_list].each { |dl| + csv_content << CSV.generate_line([dl[:name], dl[:version], dl[:operating_system]], {:col_sep => ';'}) + } + + csv_content << "\n\n" + end + + if csv_content.blank? + csv_content = "name;acronym;demonstration_url;e_arq;e_mag;e_ping;features;icp_brasil;objectives;operating_platform\n" + end + + render :text => csv_content, :content_type => 'text/csv', :layout => false + end + end end -- libgit2 0.21.2