ecm_products 0.0.7.pre → 2.0.6.pre
Sign up to get free protection for your applications and to get access to all the features.
- data/app/models/ecm/products/product.rb +51 -42
- data/app/models/ecm/products/product_category.rb +6 -7
- data/app/models/ecm/products/product_link.rb +1 -0
- data/app/models/ecm/products/product_picture.rb +56 -0
- data/app/views/ecm/products/product_pictures/_product_picture.html.erb +10 -0
- data/app/views/ecm/products/products/_product_details.html.erb +18 -7
- 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 +31 -29
- data/config/locales/ecm.products.product.en.yml +31 -29
- data/config/locales/ecm.products.product_category.de.yml +27 -25
- data/config/locales/ecm.products.product_category.en.yml +27 -25
- data/config/locales/ecm.products.product_picture.de.yml +25 -0
- data/config/locales/ecm.products.product_picture.en.yml +25 -0
- data/config/locales/ecm.products.routes.de.yml +2 -0
- data/config/locales/ecm.products.routes.en.yml +2 -0
- data/db/migrate/002_create_ecm_products_products.rb +1 -0
- data/db/migrate/004_create_ecm_products_product_pictures.rb +32 -0
- data/lib/ecm/products/active_admin/ecm_products_product_categories.rb +61 -39
- data/lib/ecm/products/active_admin/ecm_products_product_links.rb +16 -12
- data/lib/ecm/products/active_admin/ecm_products_product_pictures.rb +76 -0
- data/lib/ecm/products/active_admin/ecm_products_products.rb +80 -35
- data/lib/ecm/products/configuration.rb +35 -2
- data/lib/ecm/products/version.rb +1 -1
- data/lib/ecm_products.rb +1 -0
- data/lib/generators/ecm/products/install/templates/ecm_products.rb +46 -0
- data/lib/generators/ecm/products/locales/locales_generator.rb +3 -0
- data/lib/tasks/ecm_products_tasks.rake +118 -67
- metadata +70 -50
@@ -8,23 +8,23 @@ module FixUpdateCounters
|
|
8
8
|
|
9
9
|
# Get real class of changed attribute, so work both with namespaced/normal models
|
10
10
|
klass = self.association(changed_class.to_sym).klass
|
11
|
-
|
11
|
+
|
12
12
|
# Try to get counter cache from association options
|
13
|
-
begin
|
13
|
+
begin
|
14
14
|
counter_name = self.association(changed_class.to_sym).options[:counter_cache]
|
15
|
-
rescue
|
15
|
+
rescue
|
16
16
|
# Namespaced model return a slash, split it.
|
17
17
|
unless (counter_name = "#{self.class.name.underscore.pluralize.split("/")[1]}_count".to_sym)
|
18
18
|
counter_name = "#{self.class.name.underscore.pluralize}_count".to_sym
|
19
19
|
end
|
20
|
-
end
|
20
|
+
end
|
21
21
|
|
22
22
|
|
23
23
|
klass.decrement_counter(counter_name, value[0]) unless value[0] == nil
|
24
24
|
klass.increment_counter(counter_name, value[1]) unless value[1] == nil
|
25
25
|
end
|
26
26
|
}
|
27
|
-
end
|
27
|
+
end
|
28
28
|
end
|
29
29
|
|
30
30
|
ActiveRecord::Base.send(:include, FixUpdateCounters)
|
@@ -32,74 +32,83 @@ ActiveRecord::Base.send(:include, FixUpdateCounters)
|
|
32
32
|
class Ecm::Products::Product < ActiveRecord::Base
|
33
33
|
# database settings
|
34
34
|
self.table_name = 'ecm_products_products'
|
35
|
-
|
35
|
+
|
36
36
|
# acts as list
|
37
|
-
acts_as_list :scope => :ecm_products_product_category
|
37
|
+
acts_as_list :scope => :ecm_products_product_category
|
38
38
|
|
39
39
|
# acts as markup
|
40
40
|
acts_as_markup :language => :variable, :columns => [ :long_description, :short_description ]
|
41
|
-
|
41
|
+
|
42
42
|
# associations
|
43
|
-
belongs_to :ecm_products_product_category,
|
44
|
-
:class_name => Ecm::Products::ProductCategory,
|
43
|
+
belongs_to :ecm_products_product_category,
|
44
|
+
:class_name => Ecm::Products::ProductCategory,
|
45
45
|
:counter_cache => :ecm_products_products_count
|
46
|
-
|
47
|
-
has_many :ecm_products_product_links,
|
48
|
-
:class_name => Ecm::Products::ProductLink,
|
46
|
+
|
47
|
+
has_many :ecm_products_product_links,
|
48
|
+
:class_name => Ecm::Products::ProductLink,
|
49
49
|
:dependent => :destroy,
|
50
50
|
:foreign_key => :ecm_products_product_id,
|
51
51
|
:order => 'position'
|
52
|
-
|
52
|
+
|
53
|
+
has_many :ecm_products_product_pictures,
|
54
|
+
:class_name => Ecm::Products::ProductPicture,
|
55
|
+
:dependent => :destroy,
|
56
|
+
:foreign_key => :ecm_products_product_id,
|
57
|
+
:order => 'position'
|
58
|
+
|
53
59
|
# attributes
|
54
60
|
attr_accessible :ecm_products_product_category_id,
|
55
|
-
:
|
61
|
+
:ecm_products_product_pictures_attributes,
|
62
|
+
:long_description,
|
56
63
|
:main_image,
|
57
64
|
:markup_language,
|
58
|
-
:name,
|
59
|
-
:position,
|
65
|
+
:name,
|
66
|
+
:position,
|
60
67
|
:preview_image,
|
61
|
-
:price,
|
62
|
-
:price_on_application,
|
63
|
-
:published_at,
|
64
|
-
:short_description,
|
68
|
+
:price,
|
69
|
+
:price_on_application,
|
70
|
+
:published_at,
|
71
|
+
:short_description,
|
65
72
|
:slug
|
66
|
-
|
73
|
+
accepts_nested_attributes_for :ecm_products_product_links, :allow_destroy => true
|
74
|
+
accepts_nested_attributes_for :ecm_products_product_pictures, :allow_destroy => true
|
75
|
+
|
67
76
|
# callbacks
|
68
|
-
after_initialize :set_defaults
|
77
|
+
after_initialize :set_defaults
|
69
78
|
after_update :fix_updated_counters
|
70
79
|
before_update :fix_updated_position, :if => Proc.new { |d| !position.blank? && d.ecm_products_product_category_id_changed? }
|
71
|
-
|
72
|
-
# constants
|
73
|
-
MARKUP_LANGUAGES = %w(markdown textile rdoc)
|
74
|
-
|
80
|
+
|
75
81
|
# friendly id
|
76
82
|
extend FriendlyId
|
77
83
|
friendly_id :name, :use => :slugged
|
78
|
-
|
84
|
+
|
79
85
|
# money
|
80
86
|
monetize :price_cents, :allow_nil => true
|
81
|
-
|
87
|
+
|
82
88
|
# paperclip
|
83
|
-
has_attached_file :main_image,
|
84
|
-
|
85
|
-
|
86
|
-
|
89
|
+
has_attached_file :main_image,
|
90
|
+
:styles => Ecm::Products::Configuration.product_main_image_styles
|
91
|
+
has_attached_file :preview_image,
|
92
|
+
:styles => Ecm::Products::Configuration.product_preview_image_styles
|
93
|
+
|
94
|
+
# validations
|
87
95
|
validates :ecm_products_product_category, :presence => true
|
88
|
-
validates :name, :presence => true
|
89
|
-
validates :markup_language, :presence => true,
|
90
|
-
:inclusion =>
|
91
|
-
|
96
|
+
validates :name, :presence => true
|
97
|
+
validates :markup_language, :presence => true,
|
98
|
+
:inclusion => Ecm::Products::Configuration.markup_languages
|
99
|
+
|
92
100
|
# private methods
|
93
|
-
|
94
|
-
private
|
101
|
+
|
102
|
+
private
|
95
103
|
def fix_updated_position
|
96
104
|
Rails.logger.debug "Fixing positions for #{self.to_s} (Moving to last)"
|
97
105
|
add_to_list_bottom
|
98
106
|
end
|
99
|
-
|
107
|
+
|
100
108
|
def set_defaults
|
101
109
|
if self.new_record?
|
102
|
-
self.markup_language ||=
|
103
|
-
end
|
110
|
+
self.markup_language ||= Ecm::Products::Configuration.default_markup_language
|
111
|
+
end
|
104
112
|
end
|
105
113
|
end
|
114
|
+
|
@@ -33,24 +33,23 @@ class Ecm::Products::ProductCategory < ActiveRecord::Base
|
|
33
33
|
# callbacks
|
34
34
|
after_initialize :set_defaults
|
35
35
|
|
36
|
-
# constants
|
37
|
-
MARKUP_LANGUAGES = %w(markdown textile rdoc)
|
38
|
-
|
39
36
|
# friendly id
|
40
37
|
extend FriendlyId
|
41
38
|
friendly_id :name, :use => :slugged
|
42
39
|
|
43
40
|
# paperclip
|
44
|
-
has_attached_file :main_image,
|
45
|
-
|
41
|
+
has_attached_file :main_image,
|
42
|
+
:styles => Ecm::Products::Configuration.product_category_main_image_styles
|
43
|
+
has_attached_file :preview_image,
|
44
|
+
:styles => Ecm::Products::Configuration.product_category_preview_image_styles
|
46
45
|
|
47
46
|
# validations
|
48
47
|
validates :name, :presence => true, :uniqueness => { :scope => [ :parent_id ] }
|
49
48
|
validates :locale, :presence => true, :if => Proc.new { |pc| pc.parent.nil? } # , :if => :root?
|
50
49
|
validates :locale, :absence => true, :if => Proc.new { |pc| !pc.parent.nil? }
|
51
50
|
validate :available_locale, :if => Proc.new { |pc| pc.locale.present? }
|
52
|
-
validates :markup_language, :presence => true,
|
53
|
-
:inclusion =>
|
51
|
+
validates :markup_language, :presence => true,
|
52
|
+
:inclusion => Ecm::Products::Configuration.markup_languages
|
54
53
|
|
55
54
|
# public methods
|
56
55
|
|
@@ -28,6 +28,7 @@ class Ecm::Products::ProductLink < ActiveRecord::Base
|
|
28
28
|
MARKUP_LANGUAGES = %w(markdown textile rdoc)
|
29
29
|
|
30
30
|
# validations
|
31
|
+
validates :ecm_products_product, :presence => true
|
31
32
|
validates :name, :presence => true, :uniqueness => { :scope => [ :ecm_products_product_id ] }
|
32
33
|
validates :url, :presence => true, :uniqueness => { :scope => [ :ecm_products_product_id ] }
|
33
34
|
validates :markup_language, :presence => true,
|
@@ -0,0 +1,56 @@
|
|
1
|
+
class Ecm::Products::ProductPicture < ActiveRecord::Base
|
2
|
+
# database settings
|
3
|
+
self.table_name = 'ecm_products_product_pictures'
|
4
|
+
|
5
|
+
# acts as list
|
6
|
+
acts_as_list :scope => :ecm_products_product
|
7
|
+
|
8
|
+
# acts as markup
|
9
|
+
acts_as_markup :language => :variable, :columns => [ :description ]
|
10
|
+
|
11
|
+
# associations
|
12
|
+
belongs_to :ecm_products_product,
|
13
|
+
:class_name => Ecm::Products::Product,
|
14
|
+
:counter_cache => :ecm_products_product_pictures_count
|
15
|
+
|
16
|
+
# attributes
|
17
|
+
attr_accessible :description,
|
18
|
+
:ecm_products_product_id,
|
19
|
+
:image_content_type,
|
20
|
+
:image,
|
21
|
+
:markup_language,
|
22
|
+
:name,
|
23
|
+
:position,
|
24
|
+
:slug
|
25
|
+
|
26
|
+
# callbacks
|
27
|
+
after_initialize :set_defaults
|
28
|
+
before_validation :set_name_from_image_file_name, :if => Proc.new { |p| p.name.nil? || p.name.empty? }
|
29
|
+
|
30
|
+
# friendly id
|
31
|
+
extend FriendlyId
|
32
|
+
friendly_id :name, :use => :slugged
|
33
|
+
|
34
|
+
# paperclip
|
35
|
+
has_attached_file :image,
|
36
|
+
:styles => Ecm::Products::Configuration.product_picture_image_styles
|
37
|
+
|
38
|
+
# validations
|
39
|
+
validates :ecm_products_product, :presence => true
|
40
|
+
validates :markup_language, :presence => true,
|
41
|
+
:inclusion => Ecm::Products::Configuration.markup_languages
|
42
|
+
validates :name, :presence => true
|
43
|
+
|
44
|
+
private
|
45
|
+
|
46
|
+
def set_defaults
|
47
|
+
if self.new_record?
|
48
|
+
self.markup_language ||= Ecm::Products::Configuration.default_markup_language
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
def set_name_from_image_file_name
|
53
|
+
self.name = File.basename(image_file_name, File.extname(image_file_name)) unless image_file_name.nil?
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
@@ -0,0 +1,10 @@
|
|
1
|
+
<li class="span44 offset">
|
2
|
+
<div class="thumbnail">
|
3
|
+
<%= link_to(product_picture.image.url, { :class => "top_up" }) do %>
|
4
|
+
<%= image_tag(product_picture.image.url(:default)) %>
|
5
|
+
<% end %>
|
6
|
+
<div class="caption">
|
7
|
+
<%= mu(product_picture, :description) %>
|
8
|
+
</div
|
9
|
+
</div>
|
10
|
+
</li>
|
@@ -1,27 +1,37 @@
|
|
1
1
|
<div class="product" id="product-<%= product.id %>">
|
2
2
|
<h1 class="product-name"><%= product.name %></h1>
|
3
|
-
|
3
|
+
|
4
4
|
<% if product.main_image? %>
|
5
5
|
<div class="product-main_image"><%= image_tag(product.main_image.url, :class => 'thumbnail') %></div>
|
6
6
|
<% end %>
|
7
|
-
|
7
|
+
|
8
8
|
<% if product.short_description.present? %>
|
9
9
|
<div class="product-short_description"><%= mu(product, :short_description) %></div>
|
10
10
|
<% end %>
|
11
11
|
|
12
|
+
<% if product.ecm_products_product_pictures.present? %>
|
13
|
+
<div class="row-fluid product-pictures">
|
14
|
+
<ul class="thumbnails">
|
15
|
+
<% product.ecm_products_product_pictures.each do |product_picture| %>
|
16
|
+
<%= render product_picture %>
|
17
|
+
<% end %>
|
18
|
+
</ul>
|
19
|
+
</div>
|
20
|
+
<% end %>
|
21
|
+
|
12
22
|
<% if product.long_description.present? %>
|
13
23
|
<div class="product-long_description"><%= mu(product, :long_description) %></div>
|
14
|
-
<% end %>
|
15
|
-
|
24
|
+
<% end %>
|
25
|
+
|
16
26
|
<% if product.price.present? %>
|
17
27
|
<div class="product-price">
|
18
28
|
<p><%= Ecm::Products::Product.human_attribute_name(:price) %>: <%= humanized_money_with_symbol product.price %></p>
|
19
29
|
</div>
|
20
30
|
<% end %>
|
21
|
-
|
31
|
+
|
22
32
|
<% if product.ecm_products_product_links.present? %>
|
23
33
|
<hr />
|
24
|
-
|
34
|
+
|
25
35
|
<div class="product-links">
|
26
36
|
<% product.ecm_products_product_links.each do |product_link| %>
|
27
37
|
<%= render product_link %>
|
@@ -36,4 +46,5 @@
|
|
36
46
|
<%= link_to(product.ecm_products_product_category, :class => 'btn') do %>
|
37
47
|
<i class="icon-arrow-left"></i>
|
38
48
|
<%= t('ecm.products.product.actions.back_to_category', :name => product.ecm_products_product_category) %>
|
39
|
-
<% end %>
|
49
|
+
<% end %>
|
50
|
+
|
@@ -1,39 +1,41 @@
|
|
1
|
-
---
|
2
|
-
de:
|
3
|
-
activerecord:
|
4
|
-
models:
|
5
|
-
ecm/products/product:
|
1
|
+
---
|
2
|
+
de:
|
3
|
+
activerecord:
|
4
|
+
models:
|
5
|
+
ecm/products/product:
|
6
6
|
one: Produkt
|
7
7
|
other: Produkte
|
8
|
-
attributes:
|
9
|
-
ecm/products/product:
|
10
|
-
name: Name
|
11
|
-
preview_image_fingerprint: Vorschaubild Fingerabdruck
|
12
|
-
position: Position
|
13
|
-
slug: Freundliche ID
|
14
|
-
main_image_content_type: Hauptbild Dateityp
|
8
|
+
attributes:
|
9
|
+
ecm/products/product:
|
15
10
|
created_at: Erstellt am
|
16
|
-
|
17
|
-
|
18
|
-
|
11
|
+
ecm_products_product_category_id: Produktkategorie
|
12
|
+
ecm_products_product_category: Produktkategorie
|
13
|
+
ecm_products_product_links_count: Links
|
14
|
+
ecm_products_product_links: Links
|
15
|
+
ecm_products_product_pictures: Bilder
|
16
|
+
locale: Sprache
|
17
|
+
long_description: Langbeschreibung
|
18
|
+
main_image_content_type: Hauptbild Dateityp
|
19
19
|
main_image_file_name: Hauptbild Dateiname
|
20
20
|
main_image_file_size: Hauptbild Dateigröße
|
21
21
|
main_image_fingerprint: Hauptbild Fingerabdruck
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
ecm_products_product_links_count: Links
|
22
|
+
main_image: Hauptbild
|
23
|
+
main_image_updated_at: Hauptbild aktualisiert am
|
24
|
+
markup_language: Markup Sprache
|
25
|
+
name: Name
|
26
|
+
position: Position
|
28
27
|
preview_image_content_type: Vorschaubild Dateityp
|
29
|
-
price_currency: Preiswährung
|
30
|
-
locale: Sprache
|
31
|
-
price_on_application: Preis auf Anfrage
|
32
28
|
preview_image_file_name: Vorschaubild Dateiname
|
33
|
-
published_at: Veröffentlicht am
|
34
29
|
preview_image_file_size: Vorschaubild Dateigröße
|
35
|
-
|
36
|
-
|
30
|
+
preview_image_fingerprint: Vorschaubild Fingerabdruck
|
31
|
+
preview_image_updated_at: Vorschaubild aktualisiert am
|
37
32
|
preview_image: Vorschaubild
|
38
|
-
|
39
|
-
|
33
|
+
price_cents: Preis in Cents
|
34
|
+
price_currency: Preiswährung
|
35
|
+
price_on_application: Preis auf Anfrage
|
36
|
+
price: Preis
|
37
|
+
published_at: Veröffentlicht am
|
38
|
+
short_description: Kurzbeschreibung
|
39
|
+
slug: Freundliche ID
|
40
|
+
updated_at: Aktualisiert am
|
41
|
+
|
@@ -1,39 +1,41 @@
|
|
1
|
-
---
|
2
|
-
en:
|
3
|
-
activerecord:
|
4
|
-
models:
|
5
|
-
ecm/products/product:
|
1
|
+
---
|
2
|
+
en:
|
3
|
+
activerecord:
|
4
|
+
models:
|
5
|
+
ecm/products/product:
|
6
6
|
one: product
|
7
7
|
other: products
|
8
|
-
attributes:
|
9
|
-
ecm/products/product:
|
10
|
-
name: name
|
11
|
-
preview_image_fingerprint: preview image fingerprint
|
12
|
-
position: position
|
13
|
-
slug: friendly id
|
14
|
-
main_image_content_type: main image content type
|
8
|
+
attributes:
|
9
|
+
ecm/products/product:
|
15
10
|
created_at: created at
|
16
|
-
|
17
|
-
|
18
|
-
|
11
|
+
ecm_products_product_category_id: product category
|
12
|
+
ecm_products_product_category: product category
|
13
|
+
ecm_products_product_links_count: product links
|
14
|
+
ecm_products_product_links: links
|
15
|
+
ecm_products_product_pictures: pictures
|
16
|
+
locale: language
|
17
|
+
long_description: long description
|
18
|
+
main_image_content_type: main image content type
|
19
19
|
main_image_file_name: main image file name
|
20
20
|
main_image_file_size: main image file size
|
21
21
|
main_image_fingerprint: main image fingerprint
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
ecm_products_product_links_count: product links
|
22
|
+
main_image: main image
|
23
|
+
main_image_updated_at: main image updated at
|
24
|
+
markup_language: markup language
|
25
|
+
name: name
|
26
|
+
position: position
|
28
27
|
preview_image_content_type: preview image content type
|
29
|
-
price_currency: price currency
|
30
|
-
locale: language
|
31
|
-
price_on_application: price on application
|
32
28
|
preview_image_file_name: preview image file name
|
33
|
-
published_at: published at
|
34
29
|
preview_image_file_size: preview image file size
|
35
|
-
|
36
|
-
price_cents: price cents
|
30
|
+
preview_image_fingerprint: preview image fingerprint
|
37
31
|
preview_image: preview image
|
38
|
-
|
39
|
-
|
32
|
+
preview_image_updated_at: preview_image updated at
|
33
|
+
price_cents: price cents
|
34
|
+
price_currency: price currency
|
35
|
+
price_on_application: price on application
|
36
|
+
price: price
|
37
|
+
published_at: published at
|
38
|
+
short_description: short_description
|
39
|
+
slug: friendly id
|
40
|
+
updated_at: updated at
|
41
|
+
|
@@ -1,36 +1,38 @@
|
|
1
|
-
---
|
2
|
-
de:
|
3
|
-
activerecord:
|
4
|
-
models:
|
5
|
-
ecm/products/product_category:
|
1
|
+
---
|
2
|
+
de:
|
3
|
+
activerecord:
|
4
|
+
models:
|
5
|
+
ecm/products/product_category:
|
6
6
|
one: Produkt Kategorie
|
7
7
|
other: Produkt Kategorien
|
8
|
-
attributes:
|
9
|
-
ecm/products/product_category:
|
10
|
-
|
11
|
-
name: Name
|
12
|
-
preview_image_fingerprint: Vorschaubild Fingerabdruck
|
13
|
-
main_image_content_type: Hauptbild Dateityp
|
8
|
+
attributes:
|
9
|
+
ecm/products/product_category:
|
10
|
+
children: Unterkategorien
|
14
11
|
created_at: Erstellt am
|
15
|
-
ecm_products_products: Produkte
|
16
|
-
ecm_products_products_count: Produkte
|
17
12
|
depth: Baumtiefe
|
18
|
-
|
19
|
-
|
20
|
-
main_image_updated_at: Hauptbild aktualisiert am
|
13
|
+
ecm_products_products_count: Produkte
|
14
|
+
ecm_products_products: Produkte
|
21
15
|
lft: Links
|
22
|
-
|
16
|
+
locale: Sprache
|
17
|
+
long_description: Langbeschreibung
|
18
|
+
main_image_content_type: Hauptbild Dateityp
|
23
19
|
main_image_file_name: Hauptbild Dateiname
|
24
20
|
main_image_file_size: Hauptbild Dateigröße
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
21
|
+
main_image_fingerprint: Hauptbild Fingerabdruck
|
22
|
+
main_image: Hauptbild
|
23
|
+
main_image_updated_at: Hauptbild aktualisiert am
|
24
|
+
markup_language: Markup Sprache
|
25
|
+
name: Name
|
29
26
|
parent_id: Überkategorie
|
30
|
-
|
27
|
+
parent: Überkategorie
|
28
|
+
preview_image_content_type: Vorschaubild Dateityp
|
31
29
|
preview_image_file_name: Vorschaubild Dateiname
|
32
30
|
preview_image_file_size: Vorschaubild Dateigröße
|
33
|
-
|
31
|
+
preview_image_fingerprint: Vorschaubild Fingerabdruck
|
32
|
+
preview_image_updated_at: Vorschaubild aktualisiert am
|
34
33
|
preview_image: Vorschaubild
|
35
|
-
|
36
|
-
|
34
|
+
rgt: Rechts
|
35
|
+
short_description: Kurzbeschreibung
|
36
|
+
slug: Freundliche ID
|
37
|
+
updated_at: Aktualisiert am
|
38
|
+
|
@@ -1,36 +1,38 @@
|
|
1
|
-
---
|
2
|
-
en:
|
3
|
-
activerecord:
|
4
|
-
models:
|
5
|
-
ecm/products/product_category:
|
1
|
+
---
|
2
|
+
en:
|
3
|
+
activerecord:
|
4
|
+
models:
|
5
|
+
ecm/products/product_category:
|
6
6
|
one: product category
|
7
7
|
other: product categories
|
8
|
-
attributes:
|
9
|
-
ecm/products/product_category:
|
10
|
-
|
11
|
-
name: name
|
12
|
-
preview_image_fingerprint: preview image fingerprint
|
13
|
-
main_image_content_type: main image content type
|
8
|
+
attributes:
|
9
|
+
ecm/products/product_category:
|
10
|
+
children: subcategories
|
14
11
|
created_at: created at
|
15
|
-
ecm_products_products: products
|
16
|
-
ecm_products_products_count: products
|
17
12
|
depth: depth
|
18
|
-
|
19
|
-
|
20
|
-
main_image_updated_at: main image updated at
|
13
|
+
ecm_products_products_count: products
|
14
|
+
ecm_products_products: products
|
21
15
|
lft: left
|
22
|
-
|
16
|
+
locale: language
|
17
|
+
long_description: long description
|
18
|
+
main_image_content_type: main image content type
|
23
19
|
main_image_file_name: main image file name
|
24
20
|
main_image_file_size: main image file size
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
21
|
+
main_image_fingerprint: main image fingerprint
|
22
|
+
main_image: main image
|
23
|
+
main_image_updated_at: main image updated at
|
24
|
+
markup_language: markup language
|
25
|
+
name: name
|
29
26
|
parent_id: parent category
|
30
|
-
|
27
|
+
parent: parent category
|
28
|
+
preview_image_content_type: preview image content type
|
31
29
|
preview_image_file_name: preview image file name
|
32
30
|
preview_image_file_size: preview image file size
|
33
|
-
|
31
|
+
preview_image_fingerprint: preview image fingerprint
|
34
32
|
preview_image: preview image
|
35
|
-
|
36
|
-
|
33
|
+
preview_image_updated_at: preview image updated at
|
34
|
+
rgt: right
|
35
|
+
short_description: short description
|
36
|
+
slug: slug
|
37
|
+
updated_at: updated at
|
38
|
+
|
@@ -0,0 +1,25 @@
|
|
1
|
+
---
|
2
|
+
de:
|
3
|
+
activerecord:
|
4
|
+
models:
|
5
|
+
ecm/products/product_picture:
|
6
|
+
one: Produkt Bild
|
7
|
+
other: Produkt Bilder
|
8
|
+
attributes:
|
9
|
+
ecm/products/product_picture:
|
10
|
+
created_at: Erstellt am
|
11
|
+
description: Beschreibung
|
12
|
+
ecm_products_product_id: Produkt
|
13
|
+
ecm_products_product: Produkt
|
14
|
+
image_content_type: Content Type
|
15
|
+
image_file_name: Dateiname
|
16
|
+
image_file_size: Dateigröße
|
17
|
+
image_fingerprint: Fingerabdruck
|
18
|
+
image_updated_at: Datei aktualisiert am
|
19
|
+
markup_language: Markup Sprache
|
20
|
+
name: Name
|
21
|
+
position: Position
|
22
|
+
slug: Freundliche ID
|
23
|
+
thumbnail: Bild
|
24
|
+
updated_at: Aktualisiert am
|
25
|
+
|
@@ -0,0 +1,25 @@
|
|
1
|
+
---
|
2
|
+
en:
|
3
|
+
activerecord:
|
4
|
+
models:
|
5
|
+
ecm/products/product_picture:
|
6
|
+
one: product picture
|
7
|
+
other: product pictures
|
8
|
+
attributes:
|
9
|
+
ecm/products/product_picture:
|
10
|
+
created_at: created at
|
11
|
+
description: description
|
12
|
+
ecm_products_product_id: product
|
13
|
+
ecm_products_product: product
|
14
|
+
image_content_type: content type
|
15
|
+
image_file_name: filename
|
16
|
+
image_file_size: filesize
|
17
|
+
image_fingerprint: fingerprint
|
18
|
+
image_updated_at: file updated at
|
19
|
+
markup_language: markup language
|
20
|
+
name: name
|
21
|
+
position: position
|
22
|
+
slug: friendly id
|
23
|
+
thumbnail: picture
|
24
|
+
updated_at: updated at
|
25
|
+
|