From: Jozef Zigmund <jzigmund(a)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") + "
#{(a)catalog_entry.url}"
- redirect_to catalog_catalog_entry_path((a)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((a)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?((a)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?((a)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((a)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((a)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((a)catalog_entry.catalog, @catalog_entry.id, :edit_xml =>
true)
+ - else
+ = link_to @catalog_entry.xml_filename,
catalog_catalog_entry_path((a)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!
--
1.7.6.4