---
...controller.rb => catalog_entries_controller.rb} | 71 +++++++++++---------
src/app/models/catalog_entry.rb | 40 +++++++++++
src/app/views/catalog_entries/_form.haml | 18 +++++
.../_list.haml | 16 +++--
src/app/views/catalog_entries/_properties.haml | 23 ++++++
.../_section_header.haml | 4 +-
.../edit.haml | 10 ++--
src/app/views/catalog_entries/index.haml | 3 +
src/app/views/catalog_entries/new.haml | 10 +++
.../show.haml | 8 +-
...amed_suggested_deployable_to_catalog_entries.rb | 11 +++
11 files changed, 164 insertions(+), 50 deletions(-)
rename src/app/controllers/{suggested_deployables_controller.rb =>
catalog_entries_controller.rb} (24%)
create mode 100644 src/app/models/catalog_entry.rb
create mode 100644 src/app/views/catalog_entries/_form.haml
rename src/app/views/{suggested_deployables => catalog_entries}/_list.haml (33%)
create mode 100644 src/app/views/catalog_entries/_properties.haml
rename src/app/views/{suggested_deployables => catalog_entries}/_section_header.haml
(26%)
rename src/app/views/{suggested_deployables => catalog_entries}/edit.haml (28%)
create mode 100644 src/app/views/catalog_entries/index.haml
create mode 100644 src/app/views/catalog_entries/new.haml
rename src/app/views/{suggested_deployables => catalog_entries}/show.haml (32%)
create mode 100644
src/db/migrate/20110816192727_renamed_suggested_deployable_to_catalog_entries.rb
diff --git a/src/app/controllers/suggested_deployables_controller.rb
b/src/app/controllers/catalog_entries_controller.rb
similarity index 24%
rename from src/app/controllers/suggested_deployables_controller.rb
rename to src/app/controllers/catalog_entries_controller.rb
index 3ca1f9c..8d64ed3 100644
--- a/src/app/controllers/suggested_deployables_controller.rb
+++ b/src/app/controllers/catalog_entries_controller.rb
@@ -1,4 +1,4 @@
-class SuggestedDeployablesController < ApplicationController
+class CatalogEntriesController < ApplicationController
before_filter :require_user
def top_section
@@ -7,73 +7,75 @@ class SuggestedDeployablesController < ApplicationController
def index
clear_breadcrumbs
- save_breadcrumb(suggested_deployables_path(:viewstate => @viewstate ?
@viewstate.id : nil))
- @suggested_deployables = SuggestedDeployable.list_for_user(current_user,
Privilege::VIEW)
+ save_breadcrumb(catalog_entries_path(:viewstate => @viewstate ? @viewstate.id :
nil))
+ @catalog_entries = CatalogEntry.list_for_user(current_user, Privilege::VIEW)
set_header
end
def new
- @suggested_deployable = SuggestedDeployable.new(params[:suggested_deployable])
- require_privilege(Privilege::CREATE, SuggestedDeployable)
+ @catalog_entry = CatalogEntry.new(params[:catalog_entry])
+ require_privilege(Privilege::CREATE, CatalogEntry)
+ load_catalogs
end
def show
- @suggested_deployable = SuggestedDeployable.find(params[:id])
- require_privilege(Privilege::VIEW, @suggested_deployable)
- save_breadcrumb(suggested_deployable_path(@suggested_deployable),
@suggested_deployable.name)
+ @catalog_entry = CatalogEntry.find(params[:id])
+ require_privilege(Privilege::VIEW, @catalog_entry)
+ save_breadcrumb(catalog_entry_path(@catalog_entry), @catalog_entry.name)
end
def create
if params[:cancel]
- redirect_to suggested_deployables_path
+ redirect_to catalog_entries_path
return
end
- require_privilege(Privilege::CREATE, SuggestedDeployable)
- @suggested_deployable = SuggestedDeployable.new(params[:suggested_deployable])
- @suggested_deployable.owner = current_user
- if @suggested_deployable.save
- flash[:notice] = 'Deployable added'
- flash[:warning] = "Deployable url doesn't resolve valid XML file"
unless
@suggested_deployable.accessible_and_valid_deployable_xml?((a)suggested_deployable.url)
- redirect_to suggested_deployables_path
+ require_privilege(Privilege::CREATE, CatalogEntry)
+ @catalog_entry = CatalogEntry.new(params[:catalog_entry])
+ @catalog_entry.owner = current_user
+ if @catalog_entry.save
+ flash[:notice] = 'Catalog entry added'
+ flash[:warning] = "Deployable url doesn't resolve valid XML file"
unless @catalog_entry.accessible_and_valid_deployable_xml?((a)catalog_entry.url)
+ redirect_to catalog_entries_path
else
render :new
end
end
def edit
- @suggested_deployable = SuggestedDeployable.find(params[:id])
- require_privilege(Privilege::MODIFY, @suggested_deployable)
+ @catalog_entry = CatalogEntry.find(params[:id])
+ require_privilege(Privilege::MODIFY, @catalog_entry)
+ load_catalogs
end
def update
- @suggested_deployable = SuggestedDeployable.find(params[:id])
- require_privilege(Privilege::MODIFY, @suggested_deployable)
- params[:suggested_deployable].delete(:owner_id) if params[:suggested_deployable]
+ @catalog_entry = CatalogEntry.find(params[:id])
+ require_privilege(Privilege::MODIFY, @catalog_entry)
+ params[:catalog_entry].delete(:owner_id) if params[:catalog_entry]
- if @suggested_deployable.update_attributes(params[:suggested_deployable])
- flash[:notice] = 'Deployable updated successfully!'
- redirect_to suggested_deployables_url
+ if @catalog_entry.update_attributes(params[:catalog_entry])
+ flash[:notice] = 'Catalog entry updated successfully!'
+ redirect_to catalog_entries_url
else
render :action => 'edit'
end
end
def multi_destroy
- SuggestedDeployable.find(params[:suggested_deployables_selected]).to_a.each do |d|
+ CatalogEntry.find(params[:catalog_entries_selected]).to_a.each do |d|
require_privilege(Privilege::MODIFY, d)
d.destroy
end
- redirect_to suggested_deployables_path
+ redirect_to catalog_entries_path
end
def destroy
- suggested_deployable = SuggestedDeployable.find(params[:id])
- require_privilege(Privilege::MODIFY, suggested_deployable)
- suggested_deployable.destroy
+ catalog_entry = CatalogEntry.find(params[:id])
+ require_privilege(Privilege::MODIFY, catalog_entry)
+ catalog_entry.destroy
respond_to do |format|
- format.html { redirect_to suggested_deployables_path }
+ format.html { redirect_to catalog_entries_path }
end
end
@@ -82,8 +84,13 @@ class SuggestedDeployablesController < ApplicationController
def set_header
@header = [
{ :name => '', :sortable => false },
- { :name => t("suggested_deployables.index.name"), :sort_attr =>
:name },
- { :name => t("suggested_deployables.index.url"), :sortable => :url
}
+ { :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 }
]
end
+
+ def load_catalogs
+ @catalogs = Catalog.list_for_user(current_user, Privilege::MODIFY)
+ end
end
diff --git a/src/app/models/catalog_entry.rb b/src/app/models/catalog_entry.rb
new file mode 100644
index 0000000..e529077
--- /dev/null
+++ b/src/app/models/catalog_entry.rb
@@ -0,0 +1,40 @@
+# == Schema Information
+# Schema version: 20110616100915
+#
+# Table name: suggested_deployables
+#
+# id :integer not null, primary key
+# name :string(1024) not null
+# description :text not null
+# url :string(255)
+# owner_id :integer
+#
+
+class CatalogEntry < ActiveRecord::Base
+ include PermissionedObject
+
+ validates_presence_of :name
+ validates_uniqueness_of :name
+ validates_length_of :name, :maximum => 1024
+ validates_presence_of :url
+ validates_format_of :url, :with => URI::regexp
+ validates_presence_of :catalog
+
+ has_many :permissions, :as => :permission_object, :dependent => :destroy,
+ :include => [:role],
+ :order => "permissions.id ASC"
+ belongs_to :owner, :class_name => "User", :foreign_key =>
"owner_id"
+ belongs_to :catalog
+ after_create "assign_owner_roles(owner)"
+
+ def accessible_and_valid_deployable_xml?(url)
+ begin
+ deployable_xml = DeployableXML.new(DeployableXML.import_xml_from_url(url))
+ deployable_xml.validate!
+ true
+ rescue
+ false
+ end
+ end
+
+end
diff --git a/src/app/views/catalog_entries/_form.haml
b/src/app/views/catalog_entries/_form.haml
new file mode 100644
index 0000000..66c5e1a
--- /dev/null
+++ b/src/app/views/catalog_entries/_form.haml
@@ -0,0 +1,18 @@
+= error_messages_for @catalog_entry
+%fieldset
+ %p
+ = form.label :name
+ = form.text_field :name, :class => 'em long'
+ %p
+ = form.label :catalog_id
+ = form.select :catalog_id, @catalogs.collect{|c| [c.name, c.id]}
+ %p
+ = form.label :description
+ = form.text_area :description, :class => 'long'
+ %p
+ = form.label :url, 'URL'
+ = form.text_field :url, :class => 'long'
+
+%fieldset.options
+ = link_to 'Cancel', catalog_entries_path, :class => 'button danger'
+ = submit_tag 'Save', :name => 'save', :class => 'button',
:id => 'save_button'
diff --git a/src/app/views/suggested_deployables/_list.haml
b/src/app/views/catalog_entries/_list.haml
similarity index 33%
rename from src/app/views/suggested_deployables/_list.haml
rename to src/app/views/catalog_entries/_list.haml
index 131ed4f..19f8b91 100644
--- a/src/app/views/suggested_deployables/_list.haml
+++ b/src/app/views/catalog_entries/_list.haml
@@ -1,18 +1,20 @@
%section.content-section.roles
%header
- %h2 Deployables List
- %span.label.badge.dark.count= @suggested_deployables.length
+ %h2 Catalog Entries List
+ %span.label.badge.dark.count= @catalog_entries.length
.content
- content_for :form_header do
- %li= restful_submit_tag "Delete", "destroy",
multi_destroy_suggested_deployables_path, 'DELETE', :id =>
'delete_button', :class => 'button danger'
+ %li= restful_submit_tag "Delete", "destroy",
multi_destroy_catalog_entries_path, 'DELETE', :id => 'delete_button',
:class => 'button danger'
- = filter_table(@header, @suggested_deployables) do |suggested_deployable|
+ = filter_table(@header, @catalog_entries) do |catalog_entry|
%tr{:class => cycle('nostripe','stripe')}
%td
- selected = params[:select] == 'all'
- = check_box_tag "suggested_deployables_selected[]",
suggested_deployable.id, selected, :id =>
"suggested_deployable_checkbox_#{suggested_deployable.id}"
+ = check_box_tag "catalog_entries_selected[]", catalog_entry.id,
selected, :id => "catalog_entry_checkbox_#{catalog_entry.id}"
%td
- = link_to suggested_deployable.name,
suggested_deployable_path(suggested_deployable.id)
+ = link_to catalog_entry.name, catalog_entry_path(catalog_entry.id)
%td
- = suggested_deployable.url
+ = link_to catalog_entry.catalog.name, catalog_entry.catalog
+ %td
+ = catalog_entry.url
diff --git a/src/app/views/catalog_entries/_properties.haml
b/src/app/views/catalog_entries/_properties.haml
new file mode 100644
index 0000000..67c6221
--- /dev/null
+++ b/src/app/views/catalog_entries/_properties.haml
@@ -0,0 +1,23 @@
+%table
+ %thead
+ %tr
+ %th.show
+ Properties for
+ = @catalog_entry.name
+ %th.show
+ %tbody
+ %tr
+ %td
+ %label{:name => 'name'} Name:
+ %td
+ = @catalog_entry.name
+ %tr
+ %td
+ %label{:name => 'description'} Description:
+ %td
+ = @catalog_entry.description
+ %tr
+ %td
+ %label{:name => 'url'} URL:
+ %td
+ = @catalog_entry.url
diff --git a/src/app/views/suggested_deployables/_section_header.haml
b/src/app/views/catalog_entries/_section_header.haml
similarity index 26%
rename from src/app/views/suggested_deployables/_section_header.haml
rename to src/app/views/catalog_entries/_section_header.haml
index dae1688..aab36d9 100644
--- a/src/app/views/suggested_deployables/_section_header.haml
+++ b/src/app/views/catalog_entries/_section_header.haml
@@ -1,5 +1,5 @@
%header.page-header
- %h1{:class => controller.controller_name} Deployables
+ %h1{:class => controller.controller_name} Catalog Entries
#obj_actions.button-group
- = link_to 'New Deployable', new_suggested_deployable_url, :class =>
'button primary', :id => 'new_deployable_button'
+ = link_to 'New Catalog Entry', new_catalog_entry_url, :class =>
'button primary', :id => 'new_catalog_entry_button'
.corner
diff --git a/src/app/views/suggested_deployables/edit.haml
b/src/app/views/catalog_entries/edit.haml
similarity index 28%
rename from src/app/views/suggested_deployables/edit.haml
rename to src/app/views/catalog_entries/edit.haml
index 6e2dd82..f522e35 100644
--- a/src/app/views/suggested_deployables/edit.haml
+++ b/src/app/views/catalog_entries/edit.haml
@@ -1,15 +1,15 @@
%header.page-header
- %h1{:class => controller.controller_name}= @suggested_deployable.name
+ %h1{:class => controller.controller_name}= @catalog_entry.name
#obj_actions.button-container
- = link_to 'New Deployable', new_suggested_deployable_url, :class =>
'button primary', :id => 'new_deployable_button'
+ = link_to 'New Deployable', new_catalog_entry_url, :class => 'button
primary', :id => 'new_deployable_button'
.button-group
- = link_to 'Cancel Editing', suggested_deployables_path(@user), :class =>
'button pill danger', :id => 'new_deployable_button'
+ = link_to 'Cancel Editing', catalog_entries_path(@user), :class =>
'button pill danger', :id => 'new_deployable_button'
.corner
%section.content-section.user
%header
- %h2 Editing Deployable
+ %h2 Editing Catalog Entry
.content
- = form_for @suggested_deployable, :url =>
suggested_deployable_path(@suggested_deployable), :html => { :method => :put, :class
=> 'generic' } do |f|
+ = form_for @catalog_entry, :url => catalog_entry_path(@catalog_entry), :html =>
{ :method => :put, :class => 'generic' } do |f|
= render :partial => "form", :locals => { :form => f }
diff --git a/src/app/views/catalog_entries/index.haml
b/src/app/views/catalog_entries/index.haml
new file mode 100644
index 0000000..55fac46
--- /dev/null
+++ b/src/app/views/catalog_entries/index.haml
@@ -0,0 +1,3 @@
+= render :partial => 'layouts/admin_header'
+= render :partial => 'section_header'
+= render :partial => 'list'
diff --git a/src/app/views/catalog_entries/new.haml
b/src/app/views/catalog_entries/new.haml
new file mode 100644
index 0000000..b5afb14
--- /dev/null
+++ b/src/app/views/catalog_entries/new.haml
@@ -0,0 +1,10 @@
+= render :partial => 'layouts/admin_header'
+= render :partial => 'section_header'
+
+%section.content-section.provider_accounts
+ %header
+ %h2 Add New Catalog Entry
+
+ .content
+ = form_for @catalog_entry, :url => catalog_entries_path, :html => {:class =>
'generic'} do |f|
+ = render :partial => "form", :locals => { :form => f }
diff --git a/src/app/views/suggested_deployables/show.haml
b/src/app/views/catalog_entries/show.haml
similarity index 32%
rename from src/app/views/suggested_deployables/show.haml
rename to src/app/views/catalog_entries/show.haml
index d5d788d..3fd602f 100644
--- a/src/app/views/suggested_deployables/show.haml
+++ b/src/app/views/catalog_entries/show.haml
@@ -1,11 +1,11 @@
= render :partial => 'layouts/admin_header'
%header.page-header
- %h1{:class => controller.controller_name}= @suggested_deployable.name
+ %h1{:class => controller.controller_name}= @catalog_entry.name
#obj_actions.button-container
- = link_to 'New Suggested Deployable', new_suggested_deployable_url, :class
=> 'button primary', :id => 'new_suggested_deployable_button'
+ = link_to 'New Suggested Deployable', new_catalog_entry_url, :class =>
'button primary', :id => 'new_catalog_entry_button'
.button-group
- = link_to 'Edit', edit_suggested_deployable_path(@suggested_deployable),
:class => 'button pill', :id => 'edit_button'
- = button_to "Delete", suggested_deployable_path(@suggested_deployable),
:method => 'delete', :confirm => "Are you sure you want to
delete?", :class => 'button pill danger', :id =>
'delete_button'
+ = link_to 'Edit', edit_catalog_entry_path(@catalog_entry), :class =>
'button pill', :id => 'edit_button'
+ = button_to "Delete", catalog_entry_path(@catalog_entry), :method =>
'delete', :confirm => "Are you sure you want to delete?", :class
=> 'button pill danger', :id => 'delete_button'
.corner
%section.content-section.user
diff --git
a/src/db/migrate/20110816192727_renamed_suggested_deployable_to_catalog_entries.rb
b/src/db/migrate/20110816192727_renamed_suggested_deployable_to_catalog_entries.rb
new file mode 100644
index 0000000..8276e0b
--- /dev/null
+++ b/src/db/migrate/20110816192727_renamed_suggested_deployable_to_catalog_entries.rb
@@ -0,0 +1,11 @@
+class RenamedSuggestedDeployableToCatalogEntries < ActiveRecord::Migration
+ def self.up
+ rename_table :suggested_deployables, :catalog_entries
+ add_column :catalog_entries, :catalog_id, :integer, :null => false
+ end
+
+ def self.down
+ rename_table :catalog_entries, :suggested_deployables
+ drop_column :catalog_id
+ end
+end
--
1.7.6