From: Jozef Zigmund jzigmund@redhat.com
URL field was removed from both views, upload button and checkbox for "editing deployable XML file after save" were added to new form. Also to catalog_entry#show view was added text area of deployable XML file, with link to edit that XML file. --- src/app/controllers/catalog_entries_controller.rb | 33 ++++++---------- src/app/controllers/catalogs_controller.rb | 2 +- src/app/models/catalog_entry.rb | 20 +++++++-- src/app/views/catalog_entries/_form.html.haml | 42 +++++++++++++------- src/app/views/catalog_entries/_list.html.haml | 2 +- .../views/catalog_entries/_properties.html.haml | 8 +++- src/app/views/catalog_entries/new.html.haml | 2 +- src/app/views/catalogs/show.html.haml | 2 +- src/config/locales/en.yml | 8 +++- 9 files changed, 72 insertions(+), 47 deletions(-)
diff --git a/src/app/controllers/catalog_entries_controller.rb b/src/app/controllers/catalog_entries_controller.rb index 5e36cc0..56bbfc2 100644 --- a/src/app/controllers/catalog_entries_controller.rb +++ b/src/app/controllers/catalog_entries_controller.rb @@ -29,23 +29,12 @@ class CatalogEntriesController < ApplicationController
def new @catalog = Catalog.find(params[:catalog_id]) - @catalog_entry = CatalogEntry.new(params[:catalog_entry]) - @catalog_entry.catalog = @catalog unless not @catalog_entry.catalog.nil? + @catalog_entry = params[:catalog_entry].nil? ? CatalogEntry.new() : CatalogEntry.new(params[:catalog_entry]) require_privilege(Privilege::CREATE, CatalogEntry) load_catalogs end
def show - if params[:deployable_xml] - if redirect_to_deployable_xml? - redirect_to @catalog_entry.url - return - end - - flash[:warning] = t("catalog_entries.flash.warning.not_valid_or_reachable") + " #{@catalog_entry.url}" - redirect_to catalog_catalog_entry_path(@catalog_entry.catalog, @catalog_entry) - return - end @catalog_entry = CatalogEntry.find(params[:id]) require_privilege(Privilege::VIEW, @catalog_entry) save_breadcrumb(catalog_catalog_entry_path(@catalog_entry.catalog, @catalog_entry), @catalog_entry.name) @@ -58,18 +47,22 @@ class CatalogEntriesController < ApplicationController end
require_privilege(Privilege::CREATE, CatalogEntry) - - @catalog = Catalog.find(params[:catalog_id]) require_privilege(Privilege::MODIFY, @catalog) @catalog_entry = CatalogEntry.new(params[:catalog_entry]) - @catalog_entry.catalog = @catalog @catalog_entry.owner = current_user + if @catalog_entry.save flash[:notice] = t "catalog_entries.flash.notice.added" - flash[:warning] = t("catalog_entries.flash.warning.not_valid") unless @catalog_entry.accessible_and_valid_deployable_xml?(@catalog_entry.url) - redirect_to catalog_catalog_entries_path(@catalog) + flash[:warning] = t("catalog_entries.flash.warning.not_valid") unless @catalog_entry.valid_deployable_xml? + if params[:edit_xml] + redirect_to edit_catalog_catalog_entry_path @catalog_entry.catalog.id, @catalog_entry.id, :edit_xml =>true + else + redirect_to catalog_catalog_entries_path(@catalog) + end else + @catalog = Catalog.find(params[:catalog_id]) load_catalogs + params.delete(:edit_xml) if params[:edit_xml] render :new end end @@ -123,14 +116,12 @@ class CatalogEntriesController < ApplicationController { :name => 'checkbox', :class => 'checkbox', :sortable => false }, { :name => t("catalog_entries.index.name"), :sort_attr => :name }, { :name => t("catalogs.index.catalog_name"), :sortable => false }, - { :name => t("catalog_entries.index.url"), :sortable => :url } + { :name => t("catalog_entries.index.deployable_xml"), :sortable => :url } ] end
def redirect_to_deployable_xml? - @catalog_entry = CatalogEntry.find(params[:id]) - require_privilege(Privilege::VIEW, @catalog_entry) - @catalog_entry.accessible_and_valid_deployable_xml?(@catalog_entry.url) + end
def load_catalogs diff --git a/src/app/controllers/catalogs_controller.rb b/src/app/controllers/catalogs_controller.rb index 0f23cfc..a337a53 100644 --- a/src/app/controllers/catalogs_controller.rb +++ b/src/app/controllers/catalogs_controller.rb @@ -44,7 +44,7 @@ class CatalogsController < ApplicationController @header = [ { :name => '', :sortable => false }, { :name => t("catalog_entries.index.name"), :sort_attr => :name }, - { :name => t('catalog_entries.index.url'), :sortable => false } + { :name => t('catalog_entries.index.deployable_xml'), :sortable => false } ] end
diff --git a/src/app/models/catalog_entry.rb b/src/app/models/catalog_entry.rb index bb99332..34749d0 100644 --- a/src/app/models/catalog_entry.rb +++ b/src/app/models/catalog_entry.rb @@ -34,8 +34,7 @@ class CatalogEntry < ActiveRecord::Base validates_presence_of :name validates_uniqueness_of :name, :scope => :catalog_id validates_length_of :name, :maximum => 1024 - validates_presence_of :url - validates_format_of :url, :with => URI::regexp + validates_presence_of :xml validates_presence_of :catalog
has_many :permissions, :as => :permission_object, :dependent => :destroy, @@ -45,9 +44,9 @@ class CatalogEntry < ActiveRecord::Base belongs_to :catalog after_create "assign_owner_roles(owner)"
- def accessible_and_valid_deployable_xml?(url) + def valid_deployable_xml? begin - deployable_xml = fetch_deployable + deployable_xml = DeployableXML.new(xml) deployable_xml.validate! true rescue @@ -87,4 +86,17 @@ class CatalogEntry < ActiveRecord::Base end end end + + #method used with uploading deployable xml in catalog_entries#new + def xml=(data) + #for new + unless data.instance_variables.empty? + write_attribute :xml_filename, data.original_filename + write_attribute :xml, data.tempfile.read + #for update + else + write_attribute :xml, data + end + end + end diff --git a/src/app/views/catalog_entries/_form.html.haml b/src/app/views/catalog_entries/_form.html.haml index 9ab1582..f0fe1aa 100644 --- a/src/app/views/catalog_entries/_form.html.haml +++ b/src/app/views/catalog_entries/_form.html.haml @@ -1,19 +1,33 @@ - if @catalog_entry.errors.any? = render 'layouts/error_messages', :object => @catalog_entry %fieldset - %p - = form.label :name, t('catalog_entries.index.name') - = form.text_field :name, :class => 'em long' - %p - = form.label :catalog_id, t('catalog_entries.form.catalog') - = form.select :catalog_id, @catalogs.collect{|c| [c.name, c.id]} - %p - = form.label :description, t('catalog_entries.form.description') - = form.text_area :description, :class => 'long' - %p - = form.label :url, t('catalog_entries.index.url') - = form.text_field :url, :class => 'long' + - if params[:edit_xml] + %p + = form.label :xml, t('.deployable_xml') + = form.text_area :xml, :class => 'long' + - else + %p + = form.label :name, t('catalog_entries.index.name') + = form.text_field :name, :class => 'em long' + %p + = form.label :catalog_id, t('.catalog') + = form.select :catalog_id, @catalogs.collect{|c| [c.name, c.id]}, :selected => params[:catalog_entry].nil? ? @catalog.id : params[:catalog_entry][:catalog_id] + %p + = form.label :description, t('.description') + = form.text_area :description, :class => 'long' + + - if controller.action_name == 'new' + %p + = form.label :xml, t('.choose_xml') + = form.file_field :xml + %p + = check_box_tag(:edit_xml, true, false) + = label_tag t('.edit_xml_after_save') + - else + %p + = form.label :xml, t('.deployable_xml') + = link_to t("catalog_entries.properties.edit_deployable_xml"), edit_catalog_catalog_entry_path(@catalog_entry.catalog.id, @catalog_entry.id, :edit_xml=>true)
%fieldset.options - = link_to "#{t'catalog_entries.form.cancel'}", catalog_path(@catalog), :class => 'button danger' - = submit_tag "#{t'catalog_entries.form.save'}", :name => 'save', :class => 'button', :id => 'save_button' + = link_to "#{t'.cancel'}", catalog_path(@catalog), :class => 'button danger' + = submit_tag "#{t'.save'}", :name => 'save', :class => 'button', :id => 'save_button' diff --git a/src/app/views/catalog_entries/_list.html.haml b/src/app/views/catalog_entries/_list.html.haml index a140541..a210d30 100644 --- a/src/app/views/catalog_entries/_list.html.haml +++ b/src/app/views/catalog_entries/_list.html.haml @@ -17,4 +17,4 @@ %td = link_to catalog_entry.catalog.name, catalog_entry.catalog %td - = link_to catalog_entry.url, catalog_catalog_entry_path(@catalog, catalog_entry.id, :deployable_xml => true) + = link_to catalog_entry.xml_filename, catalog_catalog_entry_path(@catalog, catalog_entry.id) diff --git a/src/app/views/catalog_entries/_properties.html.haml b/src/app/views/catalog_entries/_properties.html.haml index 1ccc5e0..ab1264f 100644 --- a/src/app/views/catalog_entries/_properties.html.haml +++ b/src/app/views/catalog_entries/_properties.html.haml @@ -23,6 +23,10 @@ = @catalog_entry.description %tr %td - %label{:name => 'url'}=t('catalog_entries.index.url')+":" + %label{:name => 'xml'}=t('catalog_entries.index.deployable_xml')+":" %td - = link_to @catalog_entry.url, catalog_catalog_entry_path(@catalog_entry.catalog, @catalog_entry.id, :deployable_xml => true) + - if params[:deployable_xml] + = text_area_tag :xml, @catalog_entry.xml, :disabled => true + = link_to t(".edit_deployable_xml"), edit_catalog_catalog_entry_path(@catalog_entry.catalog, @catalog_entry.id, :edit_xml => true) + - else + = link_to @catalog_entry.xml_filename, catalog_catalog_entry_path(@catalog_entry.catalog, @catalog_entry.id, :deployable_xml => true) diff --git a/src/app/views/catalog_entries/new.html.haml b/src/app/views/catalog_entries/new.html.haml index 5748257..a35434e 100644 --- a/src/app/views/catalog_entries/new.html.haml +++ b/src/app/views/catalog_entries/new.html.haml @@ -6,5 +6,5 @@ %h2=t'catalog_entries.new.add_catalog_entry'
.content - = form_for @catalog_entry, :url => catalog_catalog_entries_path(@catalog), :html => {:class => 'generic'} do |f| + = form_for @catalog_entry, :url => catalog_catalog_entries_path(@catalog), :html => {:class => 'generic', :multipart => true } do |f| = render :partial => "form", :locals => { :form => f } diff --git a/src/app/views/catalogs/show.html.haml b/src/app/views/catalogs/show.html.haml index 210a6d6..025b610 100644 --- a/src/app/views/catalogs/show.html.haml +++ b/src/app/views/catalogs/show.html.haml @@ -31,5 +31,5 @@ %td = link_to catalog_entry.name, catalog_catalog_entry_path(@catalog, catalog_entry.id) %td - = link_to catalog_entry.url, catalog_catalog_entry_path(@catalog, catalog_entry.id, :deployable_xml => true) + = link_to catalog_entry.xml_filename, catalog_catalog_entry_path(@catalog, catalog_entry.id, :deployable_xml => true)
diff --git a/src/config/locales/en.yml b/src/config/locales/en.yml index 0472a7c..5a45677 100644 --- a/src/config/locales/en.yml +++ b/src/config/locales/en.yml @@ -550,20 +550,24 @@ en: catalog_entry: Catalog Entry catalog_entries: Catalog Entries name: Name - url: URL + deployable_xml: Deployable XML new: add_catalog_entry: Add New Catalog Entry form: + choose_xml: "Choose Deployable XML file:" catalog: Catalog description: Description cancel: Cancel save: Save + deployable_xml: "Deployable XML:" + edit_xml_after_save: "Edit XML file after save" show: edit: Edit delete: Delete confirm_delete: "Are you sure you want to delete?" properties: properties_for: Properties for + edit_deployable_xml: Edit Deployable XML edit: editing_catalog_entry: Editing Catalog Entry list: @@ -571,7 +575,7 @@ en: flash: warning: not_valid_or_reachable: Catalog entry XML file is either invalid or no longer reachable at - not_valid: "Deployable url doesn't resolve valid XML file" + not_valid: "Deployable XML file doesn't resolve valid XML" notice: added: Catalog entry added. updated: Catalog entry updated successfully!