mpog_software_plugin_myprofile_controller.rb 3 KB
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 = []
    @community = Community.new(params[:community])
    @community.environment = environment
    @software_info = SoftwareInfo.new(params[:software_info])
    @list_libraries = LibraryHelper.list_libraries(params[:library])
    @list_languages = SoftwareLanguageHelper.list_language(params[:language])
    @list_databases = DatabaseHelper.list_database(params[:database])
    @controlled_vocabulary = ControlledVocabulary::new params[:controlled_vocabulary]
    @list_operating_systems = OperatingSystemHelper.list_operating_system(params[:operating_system])
    @license_info = if params[:license_info].nil?
      LicenseInfo::new
    else
      LicenseInfo.find(:first, :conditions=>"id = #{params[:license_info][:version]}")
    end

    if not @list_libraries.nil?
      @list_libraries.each do |library|
        @software_info.libraries << library
      end
    end

    if not @list_languages.nil?
      @list_languages.each do |language|
        @software_info.software_languages << language
      end
    end

    if not @list_databases.nil?
      @list_databases.each do |database|
        @software_info.software_databases << database
      end
    end

    if not @list_operating_systems.nil?
      @list_operating_systems.each do |operating_system|
        @software_info.operating_systems << operating_system
      end
    end

    valid_community = request.post? && @community.valid?
    valid_software_info = request.post? && @software_info.valid?
    valid_license = (request.post? && @license_info.valid?)
    valid_libraries = @list_libraries.empty? || LibraryHelper.valid_list_libraries?(@list_libraries)
    valid_database = DatabaseHelper.valid_list_database?(@list_databases)
    valid_language = SoftwareLanguageHelper.valid_list_language?(@list_languages)
    valid_operating_system = OperatingSystemHelper.valid_list_operating_system?(@list_operating_systems)

    if valid_software_info && valid_community && valid_libraries && valid_license && valid_language && valid_database && valid_operating_system
      @community = Community.create_after_moderation(user, {:environment => environment}.merge(params[:community]), @software_info, @license_info, @controlled_vocabulary)
      redirect_to :controller => 'memberships', :action => 'index'
    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
    end
  end

end