tim 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/MIT-LICENSE +20 -0
- data/README.rdoc +392 -0
- data/Rakefile +33 -0
- data/app/assets/javascripts/tim/application.js +15 -0
- data/app/assets/stylesheets/tim/application.css +13 -0
- data/app/controllers/tim/application_controller.rb +19 -0
- data/app/controllers/tim/base_images_controller.rb +59 -0
- data/app/controllers/tim/entrypoint_controller.rb +8 -0
- data/app/controllers/tim/image_versions_controller.rb +48 -0
- data/app/controllers/tim/provider_images_controller.rb +59 -0
- data/app/controllers/tim/target_images_controller.rb +61 -0
- data/app/controllers/tim/templates_controller.rb +47 -0
- data/app/filters/tim/user_keys_filter.rb +59 -0
- data/app/helpers/tim/application_helper.rb +4 -0
- data/app/models/tim/base.rb +6 -0
- data/app/models/tim/base_image.rb +15 -0
- data/app/models/tim/image_version.rb +13 -0
- data/app/models/tim/provider_image.rb +51 -0
- data/app/models/tim/target_image.rb +50 -0
- data/app/models/tim/template.rb +19 -0
- data/app/responders/tim/custom_responder.rb +24 -0
- data/app/validators/template_validator.rb +15 -0
- data/app/views/layouts/tim/application.html.erb +14 -0
- data/app/views/tim/base_images/_base_image.xml.haml +11 -0
- data/app/views/tim/base_images/_base_image_minimal.xml.haml +2 -0
- data/app/views/tim/base_images/_form.html.erb +17 -0
- data/app/views/tim/base_images/edit.html.erb +6 -0
- data/app/views/tim/base_images/index.html.erb +17 -0
- data/app/views/tim/base_images/index.xml.haml +4 -0
- data/app/views/tim/base_images/new.html.erb +5 -0
- data/app/views/tim/base_images/show.html.erb +5 -0
- data/app/views/tim/base_images/show.xml.haml +2 -0
- data/app/views/tim/entrypoint/index.xml.haml +7 -0
- data/app/views/tim/image_versions/_form.html.erb +17 -0
- data/app/views/tim/image_versions/_image_version.xml.haml +9 -0
- data/app/views/tim/image_versions/_image_version_minimal.xml.haml +2 -0
- data/app/views/tim/image_versions/edit.html.erb +6 -0
- data/app/views/tim/image_versions/index.html.erb +17 -0
- data/app/views/tim/image_versions/index.xml.haml +4 -0
- data/app/views/tim/image_versions/new.html.erb +5 -0
- data/app/views/tim/image_versions/show.html.erb +5 -0
- data/app/views/tim/image_versions/show.xml.haml +2 -0
- data/app/views/tim/images/_form.html.erb +17 -0
- data/app/views/tim/images/edit.html.erb +6 -0
- data/app/views/tim/images/index.html.erb +21 -0
- data/app/views/tim/images/new.html.erb +5 -0
- data/app/views/tim/images/show.html.erb +5 -0
- data/app/views/tim/layouts/application.html.erb +14 -0
- data/app/views/tim/provider_images/_form.html.erb +17 -0
- data/app/views/tim/provider_images/_provider_image.xml.haml +12 -0
- data/app/views/tim/provider_images/_provider_image_minimal.xml.haml +2 -0
- data/app/views/tim/provider_images/edit.html.erb +6 -0
- data/app/views/tim/provider_images/index.html.erb +17 -0
- data/app/views/tim/provider_images/index.xml.haml +4 -0
- data/app/views/tim/provider_images/new.html.erb +5 -0
- data/app/views/tim/provider_images/show.html.erb +5 -0
- data/app/views/tim/provider_images/show.xml.haml +2 -0
- data/app/views/tim/target_images/_form.html.erb +17 -0
- data/app/views/tim/target_images/_target_image.xml.haml +13 -0
- data/app/views/tim/target_images/_target_image_minimal.xml.haml +2 -0
- data/app/views/tim/target_images/edit.html.erb +6 -0
- data/app/views/tim/target_images/index.html.erb +21 -0
- data/app/views/tim/target_images/index.xml.haml +4 -0
- data/app/views/tim/target_images/new.html.erb +5 -0
- data/app/views/tim/target_images/show.html.erb +5 -0
- data/app/views/tim/target_images/show.xml.haml +2 -0
- data/app/views/tim/templates/_form.html.erb +17 -0
- data/app/views/tim/templates/_template.xml.haml +8 -0
- data/app/views/tim/templates/_template_minimal.xml.haml +2 -0
- data/app/views/tim/templates/edit.html.erb +6 -0
- data/app/views/tim/templates/index.html.erb +17 -0
- data/app/views/tim/templates/index.xml.haml +4 -0
- data/app/views/tim/templates/new.html.erb +5 -0
- data/app/views/tim/templates/show.html.erb +5 -0
- data/app/views/tim/templates/show.xml.haml +2 -0
- data/config/cucumber.yml +8 -0
- data/config/initializers/haml.rb +1 -0
- data/config/routes.rb +9 -0
- data/config/schemas/tdl.rng +282 -0
- data/config/user_keys.yml +26 -0
- data/db/migrate/20120906180351_create_tim_base_images.rb +12 -0
- data/db/migrate/20120906210106_create_tim_image_versions.rb +10 -0
- data/db/migrate/20120910175233_create_tim_templates.rb +9 -0
- data/db/migrate/20120911202321_create_tim_target_images.rb +14 -0
- data/db/migrate/20120911204329_create_tim_provider_images.rb +19 -0
- data/lib/generators/tim/install_generator.rb +15 -0
- data/lib/generators/tim/templates/README +6 -0
- data/lib/generators/tim/templates/tim.rb +8 -0
- data/lib/image_factory/image_factory.rb +4 -0
- data/lib/image_factory/model/base.rb +88 -0
- data/lib/image_factory/model/provider_image.rb +6 -0
- data/lib/image_factory/model/target_image.rb +6 -0
- data/lib/tasks/cucumber.rake +59 -0
- data/lib/tasks/tim_tasks.rake +4 -0
- data/lib/tim.rb +8 -0
- data/lib/tim/engine.rb +9 -0
- data/lib/tim/version.rb +3 -0
- data/spec/controllers/base_images_controller_spec.rb +131 -0
- data/spec/controllers/entrypoint_controller_spec.rb +32 -0
- data/spec/controllers/image_versions_controller_spec.rb +146 -0
- data/spec/controllers/provider_images_controller_spec.rb +156 -0
- data/spec/controllers/target_images_controller_spec.rb +153 -0
- data/spec/controllers/templates_controller_spec.rb +41 -0
- data/spec/decorators/controllers/templates_controller_decorator_spec.rb +13 -0
- data/spec/factories/tim/base_image.rb +10 -0
- data/spec/factories/tim/image_factory/provider_image.rb +10 -0
- data/spec/factories/tim/image_factory/status_detail.rb +0 -0
- data/spec/factories/tim/image_factory/target_image.rb +7 -0
- data/spec/factories/tim/image_version.rb +20 -0
- data/spec/factories/tim/provider_image.rb +9 -0
- data/spec/factories/tim/target_image.rb +10 -0
- data/spec/factories/tim/template.rb +23 -0
- data/spec/filters/user_keys_filter_spec.rb +41 -0
- data/spec/fixtures/template.xml +13 -0
- data/spec/models/base_image_spec.rb +39 -0
- data/spec/models/dummy/pool_family_spec.rb +14 -0
- data/spec/models/dummy/provider_account_spec.rb +18 -0
- data/spec/models/dummy/provider_type_spec.rb +18 -0
- data/spec/models/dummy/user_spec.rb +14 -0
- data/spec/models/image_version_spec.rb +27 -0
- data/spec/models/provider_image_spec.rb +69 -0
- data/spec/models/target_image_spec.rb +75 -0
- data/spec/models/template_spec.rb +16 -0
- data/spec/spec_helper.rb +56 -0
- data/spec/support/routes.rb +41 -0
- data/spec/validators/template_validator_spec.rb +19 -0
- data/spec/views/base_images_spec.rb +23 -0
- data/spec/views/image_versions_spec.rb +25 -0
- data/spec/views/provider_images_spec.rb +30 -0
- data/spec/views/target_images_spec.rb +25 -0
- data/spec/views/templates_spec.rb +24 -0
- data/test/dummy/Rakefile +7 -0
- data/test/dummy/app/assets/javascripts/application.js +15 -0
- data/test/dummy/app/assets/stylesheets/application.css +13 -0
- data/test/dummy/app/controllers/application_controller.rb +3 -0
- data/test/dummy/app/decorators/tim/controllers/templates_controller_decorator.rb +8 -0
- data/test/dummy/app/helpers/application_helper.rb +2 -0
- data/test/dummy/app/models/pool_family.rb +3 -0
- data/test/dummy/app/models/provider_account.rb +3 -0
- data/test/dummy/app/models/provider_type.rb +3 -0
- data/test/dummy/app/models/tim/base_image.rb +6 -0
- data/test/dummy/app/models/user.rb +3 -0
- data/test/dummy/app/views/layouts/application.html.erb +14 -0
- data/test/dummy/app/views/tim/base_images/_custom.xml.haml +1 -0
- data/test/dummy/app/views/tim/image_versions/_custom.xml.haml +1 -0
- data/test/dummy/app/views/tim/layouts/application.html.erb +14 -0
- data/test/dummy/app/views/tim/provider_images/_custom.xml.haml +1 -0
- data/test/dummy/app/views/tim/target_images/_custom.xml.haml +1 -0
- data/test/dummy/app/views/tim/templates/_custom.xml.haml +1 -0
- data/test/dummy/config.ru +4 -0
- data/test/dummy/config/application.rb +58 -0
- data/test/dummy/config/boot.rb +10 -0
- data/test/dummy/config/database.yml +28 -0
- data/test/dummy/config/environment.rb +5 -0
- data/test/dummy/config/environments/development.rb +37 -0
- data/test/dummy/config/environments/production.rb +67 -0
- data/test/dummy/config/environments/test.rb +37 -0
- data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/test/dummy/config/initializers/inflections.rb +15 -0
- data/test/dummy/config/initializers/mime_types.rb +5 -0
- data/test/dummy/config/initializers/secret_token.rb +7 -0
- data/test/dummy/config/initializers/session_store.rb +8 -0
- data/test/dummy/config/initializers/tim.rb +8 -0
- data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
- data/test/dummy/config/locales/en.yml +5 -0
- data/test/dummy/config/routes.rb +4 -0
- data/test/dummy/db/development.sqlite3 +0 -0
- data/test/dummy/db/migrate/20120326103723532622_create_users.rb +9 -0
- data/test/dummy/db/migrate/20120423123114264114_create_pool_families.rb +7 -0
- data/test/dummy/db/migrate/20120911182850_add_pool_family_id_to_tim_base_image.rb +5 -0
- data/test/dummy/db/migrate/20120911202845_add_provider_type_id_to_tim_target_image.rb +5 -0
- data/test/dummy/db/migrate/20120911203222_create_provider_types.rb +7 -0
- data/test/dummy/db/migrate/20120911205431_create_provider_accounts.rb +7 -0
- data/test/dummy/db/schema.rb +86 -0
- data/test/dummy/db/test.sqlite3 +0 -0
- data/test/dummy/log/development.log +982 -0
- data/test/dummy/log/test.log +8629 -0
- data/test/dummy/public/404.html +26 -0
- data/test/dummy/public/422.html +26 -0
- data/test/dummy/public/500.html +26 -0
- data/test/dummy/public/favicon.ico +0 -0
- data/test/dummy/script/rails +6 -0
- data/test/dummy/test.rb +0 -0
- data/test/dummy/tmp/cache/assets/C7A/BB0/sprockets%2F13445f7a19078dd2df39517062aa6711 +0 -0
- data/test/dummy/tmp/cache/assets/C8C/CC0/sprockets%2F95d79f3b3096348427f3e4e38b5202e3 +0 -0
- data/test/dummy/tmp/cache/assets/CB0/2B0/sprockets%2F79106b90879c02a115d7f6f1c8390ac4 +0 -0
- data/test/dummy/tmp/cache/assets/CE0/690/sprockets%2F04c628c2a636286bfa92a4966b82b92a +0 -0
- data/test/dummy/tmp/cache/assets/D03/040/sprockets%2Fd9e94204d4b307145f12efc109b16c1f +0 -0
- data/test/dummy/tmp/cache/assets/D06/DC0/sprockets%2Fcd282851b6e4c463409ba3ece67e0510 +0 -0
- data/test/dummy/tmp/cache/assets/D23/5F0/sprockets%2F2a521f3183c6bbcd71bd26a5490b201e +0 -0
- data/test/dummy/tmp/cache/assets/D64/3A0/sprockets%2F56ac1aed10c39b12a88cb1b30f668f58 +0 -0
- data/test/dummy/tmp/cache/assets/D69/BD0/sprockets%2F0aaf75cf34556b33a9fec534fe4d0415 +0 -0
- data/test/dummy/tmp/cache/assets/D87/D80/sprockets%2Fefa3c8b210e87358c7add88cd6f49597 +0 -0
- data/test/dummy/tmp/cache/assets/D89/200/sprockets%2Ff9b4e953c874ed6a87de6490d055d9db +0 -0
- data/test/dummy/tmp/cache/assets/DF4/430/sprockets%2F403bb1de60cae4325cebd7e6c389b8ad +0 -0
- data/test/dummy/tmp/cache/assets/E00/500/sprockets%2Faaddc5b6f2cb6b98930cc54cf4c64a95 +0 -0
- data/test/dummy/tmp/cache/assets/EB3/CE0/sprockets%2Fd75a89c9fffacd99bce7eed96844eafc +0 -0
- metadata +432 -0
@@ -0,0 +1,50 @@
|
|
1
|
+
module Tim
|
2
|
+
class TargetImage < Tim::Base
|
3
|
+
belongs_to :image_version
|
4
|
+
belongs_to :provider_type, :class_name => Tim.provider_type_class
|
5
|
+
has_many :provider_images
|
6
|
+
|
7
|
+
accepts_nested_attributes_for :image_version
|
8
|
+
accepts_nested_attributes_for :provider_images
|
9
|
+
|
10
|
+
attr_accessible :image_version_attributes
|
11
|
+
attr_accessible :provider_images_attributes
|
12
|
+
attr_accessible :status, :status_detail, :progress #, :as => :image_factory
|
13
|
+
attr_accessible :target
|
14
|
+
|
15
|
+
attr_protected :id
|
16
|
+
|
17
|
+
after_create :create_factory_target_image
|
18
|
+
|
19
|
+
def template
|
20
|
+
image_version.base_image.template
|
21
|
+
end
|
22
|
+
|
23
|
+
private
|
24
|
+
def create_factory_target_image
|
25
|
+
begin
|
26
|
+
target_image = ImageFactory::TargetImage.new(:template => template.xml,
|
27
|
+
:target => target,
|
28
|
+
:parameters => nil)
|
29
|
+
# A bug in ARes adds parameters twice to the resulting json
|
30
|
+
# when a map is provided in mass assign
|
31
|
+
target_image.parameters = { :callbacks => ["#{ImageFactory::TargetImage.callback_url}/#{self.id}"] }
|
32
|
+
target_image.save!
|
33
|
+
|
34
|
+
populate_factory_fields(target_image)
|
35
|
+
self.save
|
36
|
+
rescue => e
|
37
|
+
# TODO Add proper error handling
|
38
|
+
raise e
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
def populate_factory_fields(factory_target_image)
|
43
|
+
self.status = factory_target_image.status
|
44
|
+
self.factory_id = factory_target_image.id
|
45
|
+
self.status_detail = factory_target_image.status_detail.activity
|
46
|
+
self.progress = factory_target_image.percent_complete
|
47
|
+
end
|
48
|
+
|
49
|
+
end
|
50
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require "nokogiri"
|
2
|
+
|
3
|
+
module Tim
|
4
|
+
class Template < Tim::Base
|
5
|
+
include ActiveModel::Validations
|
6
|
+
validates_with TemplateValidator
|
7
|
+
|
8
|
+
has_many :base_images
|
9
|
+
|
10
|
+
attr_accessible :xml
|
11
|
+
attr_protected :id
|
12
|
+
|
13
|
+
# Used in views to display the xml elements of this template
|
14
|
+
def xml_elements
|
15
|
+
::Nokogiri::XML::Document.parse(xml).xpath("//template/*").to_xml
|
16
|
+
end
|
17
|
+
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module Tim
|
2
|
+
class CustomResponder < ActionController::Responder
|
3
|
+
# We want different API Behaviour than in default renderer
|
4
|
+
def api_behavior(error)
|
5
|
+
raise error unless resourceful?
|
6
|
+
|
7
|
+
status = :ok
|
8
|
+
begin
|
9
|
+
if get? then
|
10
|
+
display resource
|
11
|
+
elsif post?
|
12
|
+
status = :created
|
13
|
+
controller.render :status => status, :action => "show"
|
14
|
+
elsif put?
|
15
|
+
controller.render :status => :ok, :action => "show"
|
16
|
+
else
|
17
|
+
head :no_content
|
18
|
+
end
|
19
|
+
rescue ActionView::MissingTemplate => e
|
20
|
+
display resource, :status => status
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require "nokogiri"
|
2
|
+
|
3
|
+
class TemplateValidator < ActiveModel::Validator
|
4
|
+
@@template_rng = File.join(Tim::Engine.root, "config/schemas", "tdl.rng")
|
5
|
+
|
6
|
+
def validate(record)
|
7
|
+
rng = Nokogiri::XML::RelaxNG(File.read(@@template_rng))
|
8
|
+
xml = Nokogiri::XML(record.xml) { |config| config.strict }
|
9
|
+
|
10
|
+
rng.validate(xml).each do |error|
|
11
|
+
record.errors.add :xml, error.message
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<title>Tim</title>
|
5
|
+
<%= stylesheet_link_tag "tim/application", :media => "all" %>
|
6
|
+
<%= javascript_include_tag "tim/application" %>
|
7
|
+
<%= csrf_meta_tags %>
|
8
|
+
</head>
|
9
|
+
<body>
|
10
|
+
|
11
|
+
<%= yield %>
|
12
|
+
|
13
|
+
</body>
|
14
|
+
</html>
|
@@ -0,0 +1,11 @@
|
|
1
|
+
!!! XML
|
2
|
+
%base_image{:id => base_image.id, :href => base_image_url(base_image.id) }
|
3
|
+
%name= base_image.name
|
4
|
+
%description= base_image.description
|
5
|
+
- if base_image.template
|
6
|
+
= render :partial => 'tim/templates/template_minimal', :locals => {:template => base_image.template}
|
7
|
+
%image_versions
|
8
|
+
- base_image.image_versions.each do |image_version|
|
9
|
+
= render :partial => 'tim/image_versions/image_version_minimal', :locals => {:image_version => image_version}
|
10
|
+
- if controller.template_exists?("custom", "tim/base_images", true)
|
11
|
+
= render :partial => 'tim/base_images/custom', :locals => {:base_image => base_image}
|
@@ -0,0 +1,17 @@
|
|
1
|
+
<%= form_for(@base_image) do |f| %>
|
2
|
+
<% if @base_image.errors.any? %>
|
3
|
+
<div id="error_explanation">
|
4
|
+
<h2><%= pluralize(@base_image.errors.count, "error") %> prohibited this base_image from being saved:</h2>
|
5
|
+
|
6
|
+
<ul>
|
7
|
+
<% @base_image.errors.full_messages.each do |msg| %>
|
8
|
+
<li><%= msg %></li>
|
9
|
+
<% end %>
|
10
|
+
</ul>
|
11
|
+
</div>
|
12
|
+
<% end %>
|
13
|
+
|
14
|
+
<div class="actions">
|
15
|
+
<%= f.submit %>
|
16
|
+
</div>
|
17
|
+
<% end %>
|
@@ -0,0 +1,17 @@
|
|
1
|
+
<h1>Listing base_images</h1>
|
2
|
+
<table>
|
3
|
+
<tr>
|
4
|
+
<th></th>
|
5
|
+
<th></th>
|
6
|
+
<th></th>
|
7
|
+
</tr>
|
8
|
+
<% @base_images.each do |base_image| %>
|
9
|
+
<tr>
|
10
|
+
<td><%= link_to 'Show', base_image %></td>
|
11
|
+
<td><%= link_to 'Edit', edit_base_image_path(base_image) %></td>
|
12
|
+
<td><%= button_to 'Delete', base_image_path(base_image), :method => :delete %></td>
|
13
|
+
</tr>
|
14
|
+
<% end %>
|
15
|
+
</table>
|
16
|
+
<br />
|
17
|
+
<%= link_to 'New Base image', new_base_image_path %>
|
@@ -0,0 +1,17 @@
|
|
1
|
+
<%= form_for(@image_version) do |f| %>
|
2
|
+
<% if @image_version.errors.any? %>
|
3
|
+
<div id="error_explanation">
|
4
|
+
<h2><%= pluralize(@image_version.errors.count, "error") %> prohibited this image_version from being saved:</h2>
|
5
|
+
|
6
|
+
<ul>
|
7
|
+
<% @image_version.errors.full_messages.each do |msg| %>
|
8
|
+
<li><%= msg %></li>
|
9
|
+
<% end %>
|
10
|
+
</ul>
|
11
|
+
</div>
|
12
|
+
<% end %>
|
13
|
+
|
14
|
+
<div class="actions">
|
15
|
+
<%= f.submit %>
|
16
|
+
</div>
|
17
|
+
<% end %>
|
@@ -0,0 +1,9 @@
|
|
1
|
+
!!! XML
|
2
|
+
%image_version{:id => image_version.id, :href => image_version_url(image_version.id) }
|
3
|
+
- if image_version.base_image
|
4
|
+
= render :partial => 'tim/base_images/base_image_minimal', :locals => {:base_image => image_version.base_image}
|
5
|
+
%target_images
|
6
|
+
- image_version.target_images.each do |target_image|
|
7
|
+
= render :partial => 'tim/target_images/target_image_minimal', :locals => {:target_image => target_image}
|
8
|
+
- if controller.template_exists?("custom", "tim/image_versions", true)
|
9
|
+
= render :partial => 'tim/image_versions/custom', :locals => {:image_version => image_version}
|
@@ -0,0 +1,17 @@
|
|
1
|
+
<h1>Listing image_versions</h1>
|
2
|
+
<table>
|
3
|
+
<tr>
|
4
|
+
<th></th>
|
5
|
+
<th></th>
|
6
|
+
<th></th>
|
7
|
+
</tr>
|
8
|
+
<% @image_versions.each do |image_version| %>
|
9
|
+
<tr>
|
10
|
+
<td><%= link_to 'Show', image_version %></td>
|
11
|
+
<td><%= link_to 'Edit', edit_image_version_path(image_version) %></td>
|
12
|
+
<td><%= button_to 'Delete', image_version_path(image_version), :method => :delete %></td>
|
13
|
+
</tr>
|
14
|
+
<% end %>
|
15
|
+
</table>
|
16
|
+
<br />
|
17
|
+
<%= link_to 'New Image version', new_image_version_path %>
|
@@ -0,0 +1,17 @@
|
|
1
|
+
<%= form_for(@image) do |f| %>
|
2
|
+
<% if @image.errors.any? %>
|
3
|
+
<div id="error_explanation">
|
4
|
+
<h2><%= pluralize(@image.errors.count, "error") %> prohibited this image from being saved:</h2>
|
5
|
+
|
6
|
+
<ul>
|
7
|
+
<% @image.errors.full_messages.each do |msg| %>
|
8
|
+
<li><%= msg %></li>
|
9
|
+
<% end %>
|
10
|
+
</ul>
|
11
|
+
</div>
|
12
|
+
<% end %>
|
13
|
+
|
14
|
+
<div class="actions">
|
15
|
+
<%= f.submit %>
|
16
|
+
</div>
|
17
|
+
<% end %>
|
@@ -0,0 +1,21 @@
|
|
1
|
+
<h1>Listing images</h1>
|
2
|
+
|
3
|
+
<table>
|
4
|
+
<tr>
|
5
|
+
<th></th>
|
6
|
+
<th></th>
|
7
|
+
<th></th>
|
8
|
+
</tr>
|
9
|
+
|
10
|
+
<% @images.each do |image| %>
|
11
|
+
<tr>
|
12
|
+
<td><%= link_to 'Show', image %></td>
|
13
|
+
<td><%= link_to 'Edit', edit_image_path(image) %></td>
|
14
|
+
<td><%= link_to 'Destroy', image, :confirm => 'Are you sure?', :method => :delete %></td>
|
15
|
+
</tr>
|
16
|
+
<% end %>
|
17
|
+
</table>
|
18
|
+
|
19
|
+
<br />
|
20
|
+
|
21
|
+
<%= link_to 'New Image', new_image_path %>
|
@@ -0,0 +1,17 @@
|
|
1
|
+
<%= form_for(@provider_image) do |f| %>
|
2
|
+
<% if @provider_image.errors.any? %>
|
3
|
+
<div id="error_explanation">
|
4
|
+
<h2><%= pluralize(@provider_image.errors.count, "error") %> prohibited this provider_image from being saved:</h2>
|
5
|
+
|
6
|
+
<ul>
|
7
|
+
<% @provider_image.errors.full_messages.each do |msg| %>
|
8
|
+
<li><%= msg %></li>
|
9
|
+
<% end %>
|
10
|
+
</ul>
|
11
|
+
</div>
|
12
|
+
<% end %>
|
13
|
+
|
14
|
+
<div class="actions">
|
15
|
+
<%= f.submit %>
|
16
|
+
</div>
|
17
|
+
<% end %>
|
@@ -0,0 +1,12 @@
|
|
1
|
+
!!! XML
|
2
|
+
%provider_image{:id => provider_image.id, :href => provider_image_url(provider_image.id) }
|
3
|
+
%provider= provider_image.provider
|
4
|
+
%external_image_id= provider_image.external_image_id
|
5
|
+
%snapshot= provider_image.snapshot
|
6
|
+
%status= provider_image.status
|
7
|
+
%status_detail= provider_image.status_detail
|
8
|
+
%progress= provider_image.progress
|
9
|
+
- if provider_image.target_image
|
10
|
+
= render :partial => 'tim/target_images/target_image_minimal', :locals => {:target_image => provider_image.target_image}
|
11
|
+
- if controller.template_exists?("custom", "tim/provider_images", true)
|
12
|
+
= render :partial => 'tim/provider_images/custom', :locals => {:provider_image => provider_image}
|
@@ -0,0 +1,17 @@
|
|
1
|
+
<h1>Listing provider_images</h1>
|
2
|
+
<table>
|
3
|
+
<tr>
|
4
|
+
<th></th>
|
5
|
+
<th></th>
|
6
|
+
<th></th>
|
7
|
+
</tr>
|
8
|
+
<% @provider_images.each do |provider_image| %>
|
9
|
+
<tr>
|
10
|
+
<td><%= link_to 'Show', provider_image %></td>
|
11
|
+
<td><%= link_to 'Edit', edit_provider_image_path(provider_image) %></td>
|
12
|
+
<td><%= button_to 'Delete', provider_image_path(provider_image), :method => :delete %></td>
|
13
|
+
</tr>
|
14
|
+
<% end %>
|
15
|
+
</table>
|
16
|
+
<br />
|
17
|
+
<%= link_to 'New Provider image', new_provider_image_path %>
|