ecm_products 0.0.1.pre → 0.0.2.pre
Sign up to get free protection for your applications and to get access to all the features.
- data/app/helpers/ecm/products/product_category_helper.rb +18 -0
- data/app/helpers/ecm/products/product_helper.rb +18 -0
- data/app/models/ecm/products/product.rb +17 -9
- data/app/models/ecm/products/product_category.rb +19 -2
- data/app/models/ecm/products/product_link.rb +20 -0
- data/app/views/ecm/products/product_categories/_product_category.html.erb +8 -4
- data/app/views/ecm/products/product_categories/_product_category_preview.html.erb +10 -0
- data/app/views/ecm/products/product_categories/show.html.erb +4 -2
- data/app/views/ecm/products/product_links/_product_link.html.erb +2 -2
- data/app/views/ecm/products/products/_product.html.erb +3 -8
- data/app/views/ecm/products/products/_product_details.html.erb +9 -10
- data/app/views/ecm/products/products/_product_preview.html.erb +15 -15
- data/config/locales/ecm.products.de.yml +1 -0
- data/config/locales/ecm.products.en.yml +1 -0
- data/config/locales/ecm.products.product.de.yml +1 -0
- data/config/locales/ecm.products.product.en.yml +1 -0
- data/config/locales/ecm.products.product_category.de.yml +2 -1
- data/config/locales/ecm.products.product_category.en.yml +1 -0
- data/config/locales/ecm.products.product_link.de.yml +1 -0
- data/config/locales/ecm.products.product_link.en.yml +1 -0
- data/db/migrate/001_create_ecm_products_product_categories.rb +7 -6
- data/db/migrate/002_create_ecm_products_products.rb +10 -10
- data/db/migrate/003_create_ecm_products_product_links.rb +3 -2
- data/lib/ecm/products/active_admin/ecm_products_product_categories.rb +6 -0
- data/lib/ecm/products/active_admin/ecm_products_product_links.rb +6 -0
- data/lib/ecm/products/active_admin/ecm_products_products.rb +7 -3
- data/lib/ecm/products/version.rb +1 -1
- data/lib/ecm_products.rb +1 -0
- data/lib/tasks/ecm_products_tasks.rake +0 -1
- metadata +55 -38
@@ -0,0 +1,18 @@
|
|
1
|
+
module Ecm::Products::ProductCategoryHelper
|
2
|
+
def render_product_category(name)
|
3
|
+
category = Ecm::Products::ProductCategory.where(:locale => I18n.locale.to_s).where(:name => name).first
|
4
|
+
|
5
|
+
output = ''
|
6
|
+
|
7
|
+
unless category.nil?
|
8
|
+
output << render(:partial => 'ecm/products/product_categories/product_category_preview', :locals => { :product_category => category})
|
9
|
+
output << tag(:hr)
|
10
|
+
end
|
11
|
+
|
12
|
+
output << link_to(ecm_products_product_categories_path, :class => 'btn list-link') do
|
13
|
+
content_tag(:i, "", :class => 'icon-list') + " " +
|
14
|
+
I18n.t('ecm.products.product_category.actions.all')
|
15
|
+
end
|
16
|
+
return output.html_safe
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module Ecm::Products::ProductHelper
|
2
|
+
def render_product(name)
|
3
|
+
product = Ecm::Products::Product.where(:name => name).first
|
4
|
+
|
5
|
+
output = ''
|
6
|
+
|
7
|
+
unless product.nil?
|
8
|
+
output << render(:partial => 'ecm/products/products/product_preview', :locals => { :product => product, :product_counter => 0 })
|
9
|
+
output << tag(:hr)
|
10
|
+
end
|
11
|
+
|
12
|
+
output << link_to(product.ecm_products_product_category, :class => 'btn list-link') do
|
13
|
+
content_tag(:i, "", :class => 'icon-list') + " " +
|
14
|
+
product.ecm_products_product_category
|
15
|
+
end
|
16
|
+
return output.html_safe
|
17
|
+
end
|
18
|
+
end
|
@@ -35,7 +35,10 @@ class Ecm::Products::Product < ActiveRecord::Base
|
|
35
35
|
|
36
36
|
# acts as list
|
37
37
|
acts_as_list :scope => :ecm_products_product_category
|
38
|
-
|
38
|
+
|
39
|
+
# acts as markup
|
40
|
+
acts_as_markup :language => :variable, :columns => [ :long_description, :short_description ]
|
41
|
+
|
39
42
|
# associations
|
40
43
|
belongs_to :ecm_products_product_category,
|
41
44
|
:class_name => Ecm::Products::ProductCategory,
|
@@ -49,9 +52,9 @@ class Ecm::Products::Product < ActiveRecord::Base
|
|
49
52
|
|
50
53
|
# attributes
|
51
54
|
attr_accessible :ecm_products_product_category_id,
|
52
|
-
:locale,
|
53
55
|
:long_description,
|
54
56
|
:main_image,
|
57
|
+
:markup_language,
|
55
58
|
:name,
|
56
59
|
:position,
|
57
60
|
:preview_image,
|
@@ -62,9 +65,13 @@ class Ecm::Products::Product < ActiveRecord::Base
|
|
62
65
|
:slug
|
63
66
|
|
64
67
|
# callbacks
|
68
|
+
after_initialize :set_defaults
|
65
69
|
after_update :fix_updated_counters
|
66
70
|
before_update :fix_updated_position, :if => Proc.new { |d| !position.blank? && d.ecm_products_product_category_id_changed? }
|
67
|
-
|
71
|
+
|
72
|
+
# constants
|
73
|
+
MARKUP_LANGUAGES = %w(markdown textile rdoc)
|
74
|
+
|
68
75
|
# friendly id
|
69
76
|
extend FriendlyId
|
70
77
|
friendly_id :name, :use => :slugged
|
@@ -78,10 +85,9 @@ class Ecm::Products::Product < ActiveRecord::Base
|
|
78
85
|
|
79
86
|
# validations
|
80
87
|
validates :ecm_products_product_category, :presence => true
|
81
|
-
validate :available_locale, :unless => Proc.new { |c| c.locale.blank? }
|
82
88
|
validates :name, :presence => true
|
83
|
-
|
84
|
-
|
89
|
+
validates :markup_language, :presence => true,
|
90
|
+
:inclusion => MARKUP_LANGUAGES
|
85
91
|
|
86
92
|
# private methods
|
87
93
|
|
@@ -91,7 +97,9 @@ class Ecm::Products::Product < ActiveRecord::Base
|
|
91
97
|
add_to_list_bottom
|
92
98
|
end
|
93
99
|
|
94
|
-
|
95
|
-
|
96
|
-
|
100
|
+
def set_defaults
|
101
|
+
if self.new_record?
|
102
|
+
self.markup_language ||= 'textile'
|
103
|
+
end
|
104
|
+
end
|
97
105
|
end
|
@@ -2,6 +2,9 @@ class Ecm::Products::ProductCategory < ActiveRecord::Base
|
|
2
2
|
# database settings
|
3
3
|
self.table_name = 'ecm_products_product_categories'
|
4
4
|
|
5
|
+
# acts as markup
|
6
|
+
acts_as_markup :language => :variable, :columns => [ :long_description, :short_description ]
|
7
|
+
|
5
8
|
# associations
|
6
9
|
has_many :ecm_products_products,
|
7
10
|
:class_name => Ecm::Products::Product,
|
@@ -15,6 +18,7 @@ class Ecm::Products::ProductCategory < ActiveRecord::Base
|
|
15
18
|
:locale,
|
16
19
|
:long_description,
|
17
20
|
:main_image,
|
21
|
+
:markup_language,
|
18
22
|
:name,
|
19
23
|
:parent_id,
|
20
24
|
:preview_image,
|
@@ -26,6 +30,12 @@ class Ecm::Products::ProductCategory < ActiveRecord::Base
|
|
26
30
|
acts_as_nested_set
|
27
31
|
default_scope :order => 'lft ASC'
|
28
32
|
|
33
|
+
# callbacks
|
34
|
+
after_initialize :set_defaults
|
35
|
+
|
36
|
+
# constants
|
37
|
+
MARKUP_LANGUAGES = %w(markdown textile rdoc)
|
38
|
+
|
29
39
|
# friendly id
|
30
40
|
extend FriendlyId
|
31
41
|
friendly_id :name, :use => :slugged
|
@@ -38,7 +48,9 @@ class Ecm::Products::ProductCategory < ActiveRecord::Base
|
|
38
48
|
validates :name, :presence => true, :uniqueness => { :scope => [ :parent_id ] }
|
39
49
|
validates :locale, :presence => true, :if => Proc.new { |pc| pc.parent.nil? } # , :if => :root?
|
40
50
|
validates :locale, :absence => true, :if => Proc.new { |pc| !pc.parent.nil? }
|
41
|
-
validate
|
51
|
+
validate :available_locale, :if => Proc.new { |pc| pc.locale.present? }
|
52
|
+
validates :markup_language, :presence => true,
|
53
|
+
:inclusion => MARKUP_LANGUAGES
|
42
54
|
|
43
55
|
# public methods
|
44
56
|
|
@@ -67,5 +79,10 @@ class Ecm::Products::ProductCategory < ActiveRecord::Base
|
|
67
79
|
def available_locale
|
68
80
|
I18n.available_locales.map(&:to_s).include?(self.locale)
|
69
81
|
end
|
70
|
-
|
82
|
+
|
83
|
+
def set_defaults
|
84
|
+
if self.new_record?
|
85
|
+
self.markup_language ||= 'textile'
|
86
|
+
end
|
87
|
+
end
|
71
88
|
end
|
@@ -5,6 +5,9 @@ class Ecm::Products::ProductLink < ActiveRecord::Base
|
|
5
5
|
# acts as list
|
6
6
|
acts_as_list :scope => :ecm_products_product
|
7
7
|
|
8
|
+
# acts as markup
|
9
|
+
acts_as_markup :language => :variable, :columns => [ :description ]
|
10
|
+
|
8
11
|
# associations
|
9
12
|
belongs_to :ecm_products_product,
|
10
13
|
:class_name => Ecm::Products::Product,
|
@@ -13,11 +16,28 @@ class Ecm::Products::ProductLink < ActiveRecord::Base
|
|
13
16
|
# attributes
|
14
17
|
attr_accessible :description,
|
15
18
|
:ecm_products_product_id,
|
19
|
+
:markup_language,
|
16
20
|
:name,
|
17
21
|
:position,
|
18
22
|
:url
|
23
|
+
|
24
|
+
# callbacks
|
25
|
+
after_initialize :set_defaults
|
19
26
|
|
27
|
+
# constants
|
28
|
+
MARKUP_LANGUAGES = %w(markdown textile rdoc)
|
29
|
+
|
20
30
|
# validations
|
21
31
|
validates :name, :presence => true, :uniqueness => { :scope => [ :ecm_products_product_id ] }
|
22
32
|
validates :url, :presence => true, :uniqueness => { :scope => [ :ecm_products_product_id ] }
|
33
|
+
validates :markup_language, :presence => true,
|
34
|
+
:inclusion => MARKUP_LANGUAGES
|
35
|
+
|
36
|
+
private
|
37
|
+
|
38
|
+
def set_defaults
|
39
|
+
if self.new_record?
|
40
|
+
self.markup_language ||= 'textile'
|
41
|
+
end
|
42
|
+
end
|
23
43
|
end
|
@@ -5,19 +5,23 @@
|
|
5
5
|
<% end %>
|
6
6
|
|
7
7
|
<% unless product_category.short_description.blank? %>
|
8
|
-
<p><%= product_category
|
8
|
+
<p><%= mu(product_category, :short_description) %></p>
|
9
9
|
<% end %>
|
10
10
|
|
11
11
|
<% unless product_category.long_description.blank? %>
|
12
|
-
<p><%= product_category
|
12
|
+
<p><%= mu(product_category, :long_description) %></p>
|
13
13
|
<% end %>
|
14
14
|
|
15
15
|
<h2><%= Ecm::Products::ProductCategory.human_attribute_name(:ecm_products_products) %></h2>
|
16
16
|
|
17
17
|
<% if product_category.ecm_products_products_count == 0 %>
|
18
|
-
|
18
|
+
<p><%= I18n.t('ecm.products.product_category.messages.no_products_available') %></p>
|
19
19
|
<% else %>
|
20
20
|
<ul class="thumbnails product-previews">
|
21
|
-
|
21
|
+
<% product_category.ecm_products_products.each_with_index do |product, index| %>
|
22
|
+
<li>
|
23
|
+
<%= render :partial => 'ecm/products/products/product_preview', :locals => { :product => product, :product_counter => index } %>
|
24
|
+
</li>
|
25
|
+
<% end %>
|
22
26
|
</ul>
|
23
27
|
<% end %>
|
@@ -0,0 +1,10 @@
|
|
1
|
+
<h2 class="product_category-name"><%= product_category.name %></h1>
|
2
|
+
|
3
|
+
<% unless product_category.short_description.blank? %>
|
4
|
+
<p><%= mu(product_category, :short_description) %></p>
|
5
|
+
<% end %>
|
6
|
+
|
7
|
+
<%= link_to product_category, :class => 'btn link-more' do %>
|
8
|
+
<i class="icon-arrow-right"></i>
|
9
|
+
<%= product_category.tree_name %>
|
10
|
+
<% end %>
|
@@ -1,16 +1,18 @@
|
|
1
1
|
<%= render @product_category %>
|
2
2
|
|
3
|
+
<br />
|
4
|
+
|
3
5
|
<% if @product_category.root? %>
|
4
6
|
|
5
7
|
<%= link_to(ecm_products_product_categories_path, :class => 'back-link btn') do %>
|
6
|
-
<i class="icon-arrow-left
|
8
|
+
<i class="icon-arrow-left"></i>
|
7
9
|
<%= t('ecm.products.product_category.actions.back_to_index') %>
|
8
10
|
<% end %>
|
9
11
|
|
10
12
|
<% else %>
|
11
13
|
|
12
14
|
<%= link_to(@product_category.parent, :class => 'back-link btn') do %>
|
13
|
-
<i class="icon-arrow-left
|
15
|
+
<i class="icon-arrow-left"></i>
|
14
16
|
<%= t('ecm.products.product_category.actions.back_to_parent', :name => @product_category.parent.to_s) %>
|
15
17
|
<% end %>
|
16
18
|
|
@@ -1,11 +1,11 @@
|
|
1
1
|
<h3><%= product_link.name %></h3>
|
2
2
|
|
3
3
|
<p class="product_link-description">
|
4
|
-
<%= product_link
|
4
|
+
<%= mu(product_link, :description) %>
|
5
5
|
</p>
|
6
6
|
|
7
7
|
<%= link_to product_link.url, :class => "product_link-url open-link external-link btn" do %>
|
8
|
-
<i class="icon-info-sign
|
8
|
+
<i class="icon-info-sign"></i>
|
9
9
|
<%= t('ecm.products.product_link.actions.visit') %>
|
10
10
|
<% end %>
|
11
11
|
|
@@ -1,10 +1,5 @@
|
|
1
1
|
<div class="product" id="product-<%= product.id %>">
|
2
|
-
<h2>
|
3
|
-
<% if product.locale.present? %>
|
4
|
-
<span class="product-locale">[<%= product.locale %>]</span>
|
5
|
-
<% end %>
|
6
|
-
<span class="product-name"><%= product.name %></span>
|
7
|
-
</h2>
|
2
|
+
<h2 class="product-name"><%= product.name %></h2>
|
8
3
|
<ul>
|
9
4
|
<li class="product-created_at"><%= Ecm::Products::Product.human_attribute_name(:created_at) %>: <%= l(product.created_at) rescue nil %></li>
|
10
5
|
<li class="product-updated_at"><%= Ecm::Products::Product.human_attribute_name(:updated_at) %>: <%= l(product.updated_at) rescue nil %></li>
|
@@ -12,13 +7,13 @@
|
|
12
7
|
|
13
8
|
<% unless product.short_description.blank? %>
|
14
9
|
<div class="product-short_description">
|
15
|
-
<p><%= product
|
10
|
+
<p><%= mu(product, :short_description) %></p>
|
16
11
|
</div>
|
17
12
|
<% end %>
|
18
13
|
|
19
14
|
<% unless product.long_description.blank? %>
|
20
15
|
<div class="product-long_description">
|
21
|
-
<p><%= product
|
16
|
+
<p><%= mu(product, :long_description) %></p>
|
22
17
|
</div>
|
23
18
|
<% end %>
|
24
19
|
|
@@ -1,24 +1,23 @@
|
|
1
1
|
<div class="product" id="product-<%= product.id %>">
|
2
|
-
<h1>
|
3
|
-
<% if product.locale.present? %>
|
4
|
-
<span class="product-locale">[<%= product.locale %>]</span>
|
5
|
-
<% end %>
|
6
|
-
<span class="product-name"><%= product.name %></span>
|
7
|
-
</h1>
|
2
|
+
<h1 class="product-name"><%= product.name %></h1>
|
8
3
|
|
9
4
|
<% if product.main_image? %>
|
10
5
|
<div class="product-main_image"><%= image_tag(product.main_image.url, :class => 'thumbnail') %></div>
|
11
6
|
<% end %>
|
12
7
|
|
13
8
|
<% if product.short_description.present? %>
|
14
|
-
<div class="product-short_description"><%= product
|
9
|
+
<div class="product-short_description"><%= mu(product, :short_description) %></div>
|
15
10
|
<% end %>
|
16
11
|
|
17
12
|
<% if product.long_description.present? %>
|
18
|
-
<div class="product-long_description"><%= product
|
13
|
+
<div class="product-long_description"><%= mu(product, :long_description) %></div>
|
19
14
|
<% end %>
|
20
15
|
|
21
|
-
|
16
|
+
<% if product.price.present? %>
|
17
|
+
<div class="product-price">
|
18
|
+
<p><%= Ecm::Products::Product.human_attribute_name(:price) %>: <%= humanized_money_with_symbol product.price %></p>
|
19
|
+
</div>
|
20
|
+
<% end %>
|
22
21
|
|
23
22
|
<% if product.ecm_products_product_links.present? %>
|
24
23
|
<hr />
|
@@ -35,6 +34,6 @@
|
|
35
34
|
<hr />
|
36
35
|
|
37
36
|
<%= link_to(product.ecm_products_product_category, :class => 'btn') do %>
|
38
|
-
<i class="icon-arrow-left
|
37
|
+
<i class="icon-arrow-left"></i>
|
39
38
|
<%= t('ecm.products.product.actions.back_to_category', :name => product.ecm_products_product_category) %>
|
40
39
|
<% end %>
|
@@ -1,18 +1,18 @@
|
|
1
|
-
<
|
2
|
-
<div class="thumbnail <%= product_counter.odd? ? "even" : "odd" %>">
|
1
|
+
<div class="thumbnail <%= product_counter.odd? ? "even" : "odd" %>">
|
3
2
|
|
4
|
-
|
3
|
+
<% if product.preview_image? %>
|
4
|
+
<%= image_tag(product.preview_image.url) %>
|
5
|
+
<% end %>
|
6
|
+
|
7
|
+
<div class="caption">
|
8
|
+
<h5><%= product.name %></h5>
|
9
|
+
<p class="short_description"><%= mu(product, :short_description) %></p>
|
5
10
|
|
6
|
-
<
|
7
|
-
|
8
|
-
<
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
<i class="icon-info-sign icon-white"></i>
|
13
|
-
<%= t('ecm.products.product.actions.more') %>
|
14
|
-
<% end %>
|
15
|
-
</p>
|
16
|
-
</div>
|
11
|
+
<p>
|
12
|
+
<%= link_to(product, :class => "more-link btn") do %>
|
13
|
+
<i class="icon-info-sign"></i>
|
14
|
+
<%= t('ecm.products.product.actions.more') %>
|
15
|
+
<% end %>
|
16
|
+
</p>
|
17
17
|
</div>
|
18
|
-
</
|
18
|
+
</div>
|
@@ -5,19 +5,20 @@ class CreateEcmProductsProductCategories < ActiveRecord::Migration
|
|
5
5
|
t.string :name
|
6
6
|
t.text :short_description
|
7
7
|
t.text :long_description
|
8
|
-
|
8
|
+
t.string :markup_language
|
9
|
+
|
9
10
|
# associations
|
10
11
|
t.integer :ecm_products_products_count, :default => 0, :null => false
|
11
|
-
|
12
|
+
|
12
13
|
# awesome nested set
|
13
14
|
t.integer :lft
|
14
15
|
t.integer :rgt
|
15
16
|
t.integer :parent_id
|
16
17
|
t.integer :depth
|
17
|
-
|
18
|
+
|
18
19
|
# friendly id
|
19
20
|
t.string :slug
|
20
|
-
|
21
|
+
|
21
22
|
# paperclip
|
22
23
|
# t.attachment :preview_image
|
23
24
|
t.string :preview_image_file_name
|
@@ -25,14 +26,14 @@ class CreateEcmProductsProductCategories < ActiveRecord::Migration
|
|
25
26
|
t.string :preview_image_content_type
|
26
27
|
t.timestamp :preview_image_updated_at
|
27
28
|
t.string :preview_image_fingerprint
|
28
|
-
|
29
|
+
|
29
30
|
# paperclip
|
30
31
|
# t.attachment :main_image
|
31
32
|
t.string :main_image_file_name
|
32
33
|
t.integer :main_image_file_size
|
33
34
|
t.string :main_image_content_type
|
34
35
|
t.timestamp :main_image_updated_at
|
35
|
-
t.string :main_image_fingerprint
|
36
|
+
t.string :main_image_fingerprint
|
36
37
|
|
37
38
|
t.timestamps
|
38
39
|
end
|
@@ -1,29 +1,29 @@
|
|
1
1
|
class CreateEcmProductsProducts < ActiveRecord::Migration
|
2
2
|
def change
|
3
3
|
create_table :ecm_products_products do |t|
|
4
|
-
t.string :locale
|
5
4
|
t.string :name
|
6
5
|
t.text :short_description
|
7
6
|
t.text :long_description
|
8
|
-
t.
|
9
|
-
|
7
|
+
t.string :markup_language
|
8
|
+
t.boolean :price_on_application
|
9
|
+
|
10
10
|
# associations
|
11
11
|
t.integer :ecm_products_product_links_count, :default => 0, :null => false
|
12
|
-
t.references :ecm_products_product_category
|
13
|
-
|
12
|
+
t.references :ecm_products_product_category
|
13
|
+
|
14
14
|
# acts as list
|
15
15
|
t.integer :position
|
16
16
|
|
17
17
|
# acts as published
|
18
18
|
t.timestamp :published_at
|
19
|
-
|
19
|
+
|
20
20
|
# friendly id
|
21
21
|
t.string :slug
|
22
|
-
|
22
|
+
|
23
23
|
# money
|
24
24
|
t.integer :price_cents
|
25
25
|
t.string :price_currency
|
26
|
-
|
26
|
+
|
27
27
|
# paperclip
|
28
28
|
# t.attachment :preview_image
|
29
29
|
t.string :preview_image_file_name
|
@@ -31,14 +31,14 @@ class CreateEcmProductsProducts < ActiveRecord::Migration
|
|
31
31
|
t.string :preview_image_content_type
|
32
32
|
t.timestamp :preview_image_updated_at
|
33
33
|
t.string :preview_image_fingerprint
|
34
|
-
|
34
|
+
|
35
35
|
# paperclip
|
36
36
|
# t.attachment :main_image
|
37
37
|
t.string :main_image_file_name
|
38
38
|
t.integer :main_image_file_size
|
39
39
|
t.string :main_image_content_type
|
40
40
|
t.timestamp :main_image_updated_at
|
41
|
-
t.string :main_image_fingerprint
|
41
|
+
t.string :main_image_fingerprint
|
42
42
|
|
43
43
|
t.timestamps
|
44
44
|
end
|
@@ -4,10 +4,11 @@ class CreateEcmProductsProductLinks < ActiveRecord::Migration
|
|
4
4
|
t.string :name
|
5
5
|
t.string :url
|
6
6
|
t.text :description
|
7
|
-
|
7
|
+
t.string :markup_language
|
8
|
+
|
8
9
|
# associations
|
9
10
|
t.references :ecm_products_product
|
10
|
-
|
11
|
+
|
11
12
|
# acts as list
|
12
13
|
t.integer :position
|
13
14
|
|
@@ -12,6 +12,11 @@
|
|
12
12
|
f.input :preview_image, :as => :file, :hint => f.template.image_tag(f.object.preview_image.url(:medium_thumb))
|
13
13
|
f.input :main_image, :as => :file, :hint => f.template.image_tag(f.object.main_image.url(:medium_thumb))
|
14
14
|
end
|
15
|
+
|
16
|
+
f.inputs do
|
17
|
+
f.input :markup_language, :as => :select, :collection => Ecm::Products::ProductCategory::MARKUP_LANGUAGES
|
18
|
+
end
|
19
|
+
|
15
20
|
f.actions
|
16
21
|
end
|
17
22
|
|
@@ -38,6 +43,7 @@
|
|
38
43
|
row :parent
|
39
44
|
row :name
|
40
45
|
row :ecm_products_products_count
|
46
|
+
row :markup_language
|
41
47
|
row :created_at
|
42
48
|
row :updated_at
|
43
49
|
end
|
@@ -9,6 +9,11 @@
|
|
9
9
|
f.input :url
|
10
10
|
f.input :description
|
11
11
|
end
|
12
|
+
|
13
|
+
f.inputs do
|
14
|
+
f.input :markup_language, :as => :select, :collection => Ecm::Products::ProductLink::MARKUP_LANGUAGES
|
15
|
+
end
|
16
|
+
|
12
17
|
f.actions
|
13
18
|
end
|
14
19
|
|
@@ -28,6 +33,7 @@
|
|
28
33
|
row :url do |pl|
|
29
34
|
link_to(pl.url, pl.url)
|
30
35
|
end
|
36
|
+
row :markup_language
|
31
37
|
row :created_at
|
32
38
|
row :updated_at
|
33
39
|
end
|
@@ -5,7 +5,6 @@
|
|
5
5
|
form :html => { :enctype => "multipart/form-data" } do |f|
|
6
6
|
f.inputs do
|
7
7
|
f.input :ecm_products_product_category
|
8
|
-
f.input :locale, :as => :select, :collection => I18n.available_locales.map(&:to_s)
|
9
8
|
f.input :name
|
10
9
|
f.input :short_description
|
11
10
|
f.input :long_description
|
@@ -15,6 +14,11 @@
|
|
15
14
|
f.input :preview_image, :as => :file
|
16
15
|
f.input :main_image, :as => :file
|
17
16
|
end
|
17
|
+
|
18
|
+
f.inputs do
|
19
|
+
f.input :markup_language, :as => :select, :collection => Ecm::Products::Product::MARKUP_LANGUAGES
|
20
|
+
end
|
21
|
+
|
18
22
|
f.actions
|
19
23
|
end
|
20
24
|
|
@@ -23,8 +27,7 @@
|
|
23
27
|
column :preview_image do |p|
|
24
28
|
link_to(image_tag(p.preview_image.url(:medium_thumb)), [:admin, p])
|
25
29
|
end
|
26
|
-
column :ecm_products_product_category
|
27
|
-
column :locale
|
30
|
+
column :ecm_products_product_category
|
28
31
|
column :name
|
29
32
|
column :short_description
|
30
33
|
column :created_at
|
@@ -43,6 +46,7 @@
|
|
43
46
|
row :price
|
44
47
|
row :price_on_application
|
45
48
|
row :published_at
|
49
|
+
row :markup_language
|
46
50
|
row :created_at
|
47
51
|
row :updated_at
|
48
52
|
end
|
data/lib/ecm/products/version.rb
CHANGED
data/lib/ecm_products.rb
CHANGED
@@ -48,7 +48,6 @@ namespace :ecm_products do
|
|
48
48
|
product_categories = Ecm::Products::ProductCategory.all
|
49
49
|
100.times do
|
50
50
|
Ecm::Products::Product.create! do |p|
|
51
|
-
p.locale = I18n.available_locales.choice.to_s
|
52
51
|
p.name = Faker::Product.product_name
|
53
52
|
p.short_description = Faker::Lorem.paragraph(rand(2))
|
54
53
|
p.long_description = Faker::Lorem.paragraph(rand(10))
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ecm_products
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 961915980
|
5
5
|
prerelease: 6
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 0
|
9
|
-
-
|
9
|
+
- 2
|
10
10
|
- pre
|
11
|
-
version: 0.0.
|
11
|
+
version: 0.0.2.pre
|
12
12
|
platform: ruby
|
13
13
|
authors:
|
14
14
|
- Roberto Vasquez Angel
|
@@ -16,7 +16,7 @@ autorequire:
|
|
16
16
|
bindir: bin
|
17
17
|
cert_chain: []
|
18
18
|
|
19
|
-
date: 2012-08-
|
19
|
+
date: 2012-08-27 00:00:00 Z
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
22
22
|
name: rails
|
@@ -79,7 +79,7 @@ dependencies:
|
|
79
79
|
type: :runtime
|
80
80
|
version_requirements: *id004
|
81
81
|
- !ruby/object:Gem::Dependency
|
82
|
-
name:
|
82
|
+
name: acts_as_markup
|
83
83
|
prerelease: false
|
84
84
|
requirement: &id005 !ruby/object:Gem::Requirement
|
85
85
|
none: false
|
@@ -93,7 +93,7 @@ dependencies:
|
|
93
93
|
type: :runtime
|
94
94
|
version_requirements: *id005
|
95
95
|
- !ruby/object:Gem::Dependency
|
96
|
-
name: awesome_nested_set
|
96
|
+
name: awesome_nested_set
|
97
97
|
prerelease: false
|
98
98
|
requirement: &id006 !ruby/object:Gem::Requirement
|
99
99
|
none: false
|
@@ -107,7 +107,7 @@ dependencies:
|
|
107
107
|
type: :runtime
|
108
108
|
version_requirements: *id006
|
109
109
|
- !ruby/object:Gem::Dependency
|
110
|
-
name:
|
110
|
+
name: awesome_nested_set-tools
|
111
111
|
prerelease: false
|
112
112
|
requirement: &id007 !ruby/object:Gem::Requirement
|
113
113
|
none: false
|
@@ -121,7 +121,7 @@ dependencies:
|
|
121
121
|
type: :runtime
|
122
122
|
version_requirements: *id007
|
123
123
|
- !ruby/object:Gem::Dependency
|
124
|
-
name:
|
124
|
+
name: friendly_id
|
125
125
|
prerelease: false
|
126
126
|
requirement: &id008 !ruby/object:Gem::Requirement
|
127
127
|
none: false
|
@@ -135,9 +135,23 @@ dependencies:
|
|
135
135
|
type: :runtime
|
136
136
|
version_requirements: *id008
|
137
137
|
- !ruby/object:Gem::Dependency
|
138
|
-
name:
|
138
|
+
name: money-rails
|
139
139
|
prerelease: false
|
140
140
|
requirement: &id009 !ruby/object:Gem::Requirement
|
141
|
+
none: false
|
142
|
+
requirements:
|
143
|
+
- - ">="
|
144
|
+
- !ruby/object:Gem::Version
|
145
|
+
hash: 3
|
146
|
+
segments:
|
147
|
+
- 0
|
148
|
+
version: "0"
|
149
|
+
type: :runtime
|
150
|
+
version_requirements: *id009
|
151
|
+
- !ruby/object:Gem::Dependency
|
152
|
+
name: paperclip
|
153
|
+
prerelease: false
|
154
|
+
requirement: &id010 !ruby/object:Gem::Requirement
|
141
155
|
none: false
|
142
156
|
requirements:
|
143
157
|
- - ~>
|
@@ -148,11 +162,11 @@ dependencies:
|
|
148
162
|
- 7
|
149
163
|
version: "2.7"
|
150
164
|
type: :runtime
|
151
|
-
version_requirements: *
|
165
|
+
version_requirements: *id010
|
152
166
|
- !ruby/object:Gem::Dependency
|
153
167
|
name: rails_tools-absence_validator
|
154
168
|
prerelease: false
|
155
|
-
requirement: &
|
169
|
+
requirement: &id011 !ruby/object:Gem::Requirement
|
156
170
|
none: false
|
157
171
|
requirements:
|
158
172
|
- - ~>
|
@@ -164,11 +178,11 @@ dependencies:
|
|
164
178
|
- 1
|
165
179
|
version: 0.0.1
|
166
180
|
type: :runtime
|
167
|
-
version_requirements: *
|
181
|
+
version_requirements: *id011
|
168
182
|
- !ruby/object:Gem::Dependency
|
169
183
|
name: sqlite3
|
170
184
|
prerelease: false
|
171
|
-
requirement: &
|
185
|
+
requirement: &id012 !ruby/object:Gem::Requirement
|
172
186
|
none: false
|
173
187
|
requirements:
|
174
188
|
- - ">="
|
@@ -178,11 +192,11 @@ dependencies:
|
|
178
192
|
- 0
|
179
193
|
version: "0"
|
180
194
|
type: :development
|
181
|
-
version_requirements: *
|
195
|
+
version_requirements: *id012
|
182
196
|
- !ruby/object:Gem::Dependency
|
183
197
|
name: thin
|
184
198
|
prerelease: false
|
185
|
-
requirement: &
|
199
|
+
requirement: &id013 !ruby/object:Gem::Requirement
|
186
200
|
none: false
|
187
201
|
requirements:
|
188
202
|
- - ">="
|
@@ -192,11 +206,11 @@ dependencies:
|
|
192
206
|
- 0
|
193
207
|
version: "0"
|
194
208
|
type: :development
|
195
|
-
version_requirements: *
|
209
|
+
version_requirements: *id013
|
196
210
|
- !ruby/object:Gem::Dependency
|
197
211
|
name: yard
|
198
212
|
prerelease: false
|
199
|
-
requirement: &
|
213
|
+
requirement: &id014 !ruby/object:Gem::Requirement
|
200
214
|
none: false
|
201
215
|
requirements:
|
202
216
|
- - ">="
|
@@ -206,11 +220,11 @@ dependencies:
|
|
206
220
|
- 0
|
207
221
|
version: "0"
|
208
222
|
type: :development
|
209
|
-
version_requirements: *
|
223
|
+
version_requirements: *id014
|
210
224
|
- !ruby/object:Gem::Dependency
|
211
225
|
name: sass-rails
|
212
226
|
prerelease: false
|
213
|
-
requirement: &
|
227
|
+
requirement: &id015 !ruby/object:Gem::Requirement
|
214
228
|
none: false
|
215
229
|
requirements:
|
216
230
|
- - ">="
|
@@ -220,11 +234,11 @@ dependencies:
|
|
220
234
|
- 0
|
221
235
|
version: "0"
|
222
236
|
type: :development
|
223
|
-
version_requirements: *
|
237
|
+
version_requirements: *id015
|
224
238
|
- !ruby/object:Gem::Dependency
|
225
239
|
name: coffee-rails
|
226
240
|
prerelease: false
|
227
|
-
requirement: &
|
241
|
+
requirement: &id016 !ruby/object:Gem::Requirement
|
228
242
|
none: false
|
229
243
|
requirements:
|
230
244
|
- - ">="
|
@@ -234,11 +248,11 @@ dependencies:
|
|
234
248
|
- 0
|
235
249
|
version: "0"
|
236
250
|
type: :development
|
237
|
-
version_requirements: *
|
251
|
+
version_requirements: *id016
|
238
252
|
- !ruby/object:Gem::Dependency
|
239
253
|
name: capybara
|
240
254
|
prerelease: false
|
241
|
-
requirement: &
|
255
|
+
requirement: &id017 !ruby/object:Gem::Requirement
|
242
256
|
none: false
|
243
257
|
requirements:
|
244
258
|
- - ">="
|
@@ -248,11 +262,11 @@ dependencies:
|
|
248
262
|
- 0
|
249
263
|
version: "0"
|
250
264
|
type: :development
|
251
|
-
version_requirements: *
|
265
|
+
version_requirements: *id017
|
252
266
|
- !ruby/object:Gem::Dependency
|
253
267
|
name: rspec-rails
|
254
268
|
prerelease: false
|
255
|
-
requirement: &
|
269
|
+
requirement: &id018 !ruby/object:Gem::Requirement
|
256
270
|
none: false
|
257
271
|
requirements:
|
258
272
|
- - ~>
|
@@ -263,11 +277,11 @@ dependencies:
|
|
263
277
|
- 0
|
264
278
|
version: "2.0"
|
265
279
|
type: :development
|
266
|
-
version_requirements: *
|
280
|
+
version_requirements: *id018
|
267
281
|
- !ruby/object:Gem::Dependency
|
268
282
|
name: factory_girl_rails
|
269
283
|
prerelease: false
|
270
|
-
requirement: &
|
284
|
+
requirement: &id019 !ruby/object:Gem::Requirement
|
271
285
|
none: false
|
272
286
|
requirements:
|
273
287
|
- - ~>
|
@@ -278,11 +292,11 @@ dependencies:
|
|
278
292
|
- 0
|
279
293
|
version: "1.0"
|
280
294
|
type: :development
|
281
|
-
version_requirements: *
|
295
|
+
version_requirements: *id019
|
282
296
|
- !ruby/object:Gem::Dependency
|
283
297
|
name: ffaker
|
284
298
|
prerelease: false
|
285
|
-
requirement: &
|
299
|
+
requirement: &id020 !ruby/object:Gem::Requirement
|
286
300
|
none: false
|
287
301
|
requirements:
|
288
302
|
- - ">="
|
@@ -292,11 +306,11 @@ dependencies:
|
|
292
306
|
- 0
|
293
307
|
version: "0"
|
294
308
|
type: :development
|
295
|
-
version_requirements: *
|
309
|
+
version_requirements: *id020
|
296
310
|
- !ruby/object:Gem::Dependency
|
297
311
|
name: guard-rspec
|
298
312
|
prerelease: false
|
299
|
-
requirement: &
|
313
|
+
requirement: &id021 !ruby/object:Gem::Requirement
|
300
314
|
none: false
|
301
315
|
requirements:
|
302
316
|
- - ">="
|
@@ -306,11 +320,11 @@ dependencies:
|
|
306
320
|
- 0
|
307
321
|
version: "0"
|
308
322
|
type: :development
|
309
|
-
version_requirements: *
|
323
|
+
version_requirements: *id021
|
310
324
|
- !ruby/object:Gem::Dependency
|
311
325
|
name: guard-bundler
|
312
326
|
prerelease: false
|
313
|
-
requirement: &
|
327
|
+
requirement: &id022 !ruby/object:Gem::Requirement
|
314
328
|
none: false
|
315
329
|
requirements:
|
316
330
|
- - ">="
|
@@ -320,11 +334,11 @@ dependencies:
|
|
320
334
|
- 0
|
321
335
|
version: "0"
|
322
336
|
type: :development
|
323
|
-
version_requirements: *
|
337
|
+
version_requirements: *id022
|
324
338
|
- !ruby/object:Gem::Dependency
|
325
339
|
name: shoulda-matchers
|
326
340
|
prerelease: false
|
327
|
-
requirement: &
|
341
|
+
requirement: &id023 !ruby/object:Gem::Requirement
|
328
342
|
none: false
|
329
343
|
requirements:
|
330
344
|
- - ">="
|
@@ -334,11 +348,11 @@ dependencies:
|
|
334
348
|
- 0
|
335
349
|
version: "0"
|
336
350
|
type: :development
|
337
|
-
version_requirements: *
|
351
|
+
version_requirements: *id023
|
338
352
|
- !ruby/object:Gem::Dependency
|
339
353
|
name: forgery
|
340
354
|
prerelease: false
|
341
|
-
requirement: &
|
355
|
+
requirement: &id024 !ruby/object:Gem::Requirement
|
342
356
|
none: false
|
343
357
|
requirements:
|
344
358
|
- - "="
|
@@ -350,7 +364,7 @@ dependencies:
|
|
350
364
|
- 0
|
351
365
|
version: 0.5.0
|
352
366
|
type: :development
|
353
|
-
version_requirements: *
|
367
|
+
version_requirements: *id024
|
354
368
|
description: Product management for active admin.
|
355
369
|
email:
|
356
370
|
- roberto@vasquez-angel.de
|
@@ -363,9 +377,12 @@ extra_rdoc_files: []
|
|
363
377
|
files:
|
364
378
|
- app/controllers/ecm/products/products_controller.rb
|
365
379
|
- app/controllers/ecm/products/product_categories_controller.rb
|
380
|
+
- app/helpers/ecm/products/product_category_helper.rb
|
381
|
+
- app/helpers/ecm/products/product_helper.rb
|
366
382
|
- app/views/ecm/products/product_categories/_product_category.html.erb
|
367
383
|
- app/views/ecm/products/product_categories/show.html.erb
|
368
384
|
- app/views/ecm/products/product_categories/index.html.erb
|
385
|
+
- app/views/ecm/products/product_categories/_product_category_preview.html.erb
|
369
386
|
- app/views/ecm/products/product_links/_product_link.html.erb
|
370
387
|
- app/views/ecm/products/products/_product_details.html.erb
|
371
388
|
- app/views/ecm/products/products/show.html.erb
|