ecm_products 0.0.1.pre

Sign up to get free protection for your applications and to get access to all the features.
Files changed (40) hide show
  1. data/MIT-LICENSE +20 -0
  2. data/README.rdoc +17 -0
  3. data/Rakefile +27 -0
  4. data/app/controllers/ecm/products/product_categories_controller.rb +9 -0
  5. data/app/controllers/ecm/products/products_controller.rb +9 -0
  6. data/app/models/ecm/products/product.rb +97 -0
  7. data/app/models/ecm/products/product_category.rb +71 -0
  8. data/app/models/ecm/products/product_link.rb +23 -0
  9. data/app/models/ecm/products.rb +5 -0
  10. data/app/views/ecm/products/product_categories/_product_category.html.erb +23 -0
  11. data/app/views/ecm/products/product_categories/index.html.erb +6 -0
  12. data/app/views/ecm/products/product_categories/show.html.erb +18 -0
  13. data/app/views/ecm/products/product_links/_product_link.html.erb +12 -0
  14. data/app/views/ecm/products/products/_product.html.erb +29 -0
  15. data/app/views/ecm/products/products/_product_details.html.erb +40 -0
  16. data/app/views/ecm/products/products/_product_preview.html.erb +18 -0
  17. data/app/views/ecm/products/products/index.html.erb +3 -0
  18. data/app/views/ecm/products/products/show.html.erb +1 -0
  19. data/config/locales/ecm.products.de.yml +20 -0
  20. data/config/locales/ecm.products.en.yml +20 -0
  21. data/config/locales/ecm.products.product.de.yml +38 -0
  22. data/config/locales/ecm.products.product.en.yml +38 -0
  23. data/config/locales/ecm.products.product_category.de.yml +35 -0
  24. data/config/locales/ecm.products.product_category.en.yml +35 -0
  25. data/config/locales/ecm.products.product_link.de.yml +17 -0
  26. data/config/locales/ecm.products.product_link.en.yml +17 -0
  27. data/config/locales/ecm.products.routes.de.yml +5 -0
  28. data/config/locales/ecm.products.routes.en.yml +5 -0
  29. data/db/migrate/001_create_ecm_products_product_categories.rb +40 -0
  30. data/db/migrate/002_create_ecm_products_products.rb +46 -0
  31. data/db/migrate/003_create_ecm_products_product_links.rb +18 -0
  32. data/lib/ecm/products/active_admin/ecm_products_product_categories.rb +75 -0
  33. data/lib/ecm/products/active_admin/ecm_products_product_links.rb +39 -0
  34. data/lib/ecm/products/active_admin/ecm_products_products.rb +74 -0
  35. data/lib/ecm/products/engine.rb +12 -0
  36. data/lib/ecm/products/routing.rb +22 -0
  37. data/lib/ecm/products/version.rb +5 -0
  38. data/lib/ecm_products.rb +13 -0
  39. data/lib/tasks/ecm_products_tasks.rake +77 -0
  40. metadata +440 -0
data/MIT-LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright 2012 Roberto Vásquez Angel
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.rdoc ADDED
@@ -0,0 +1,17 @@
1
+ = EcmProducts
2
+
3
+ = Installation
4
+
5
+ gem 'ecm_products'
6
+
7
+ bundle install
8
+
9
+ rake ecm_products_engine:install:migrations
10
+
11
+ rake db:migrate
12
+
13
+ = Create sample data
14
+
15
+ rake ecm_products:db:populate
16
+
17
+ This project rocks and uses MIT-LICENSE.
data/Rakefile ADDED
@@ -0,0 +1,27 @@
1
+ #!/usr/bin/env rake
2
+ begin
3
+ require 'bundler/setup'
4
+ rescue LoadError
5
+ puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
6
+ end
7
+ begin
8
+ require 'rdoc/task'
9
+ rescue LoadError
10
+ require 'rdoc/rdoc'
11
+ require 'rake/rdoctask'
12
+ RDoc::Task = Rake::RDocTask
13
+ end
14
+
15
+ RDoc::Task.new(:rdoc) do |rdoc|
16
+ rdoc.rdoc_dir = 'rdoc'
17
+ rdoc.title = 'EcmPictures'
18
+ rdoc.options << '--line-numbers'
19
+ rdoc.rdoc_files.include('README.rdoc')
20
+ rdoc.rdoc_files.include('lib/**/*.rb')
21
+ end
22
+
23
+
24
+
25
+
26
+ Bundler::GemHelper.install_tasks
27
+
@@ -0,0 +1,9 @@
1
+ class Ecm::Products::ProductCategoriesController < ApplicationController
2
+ def index
3
+ @product_categories = ::Ecm::Products::ProductCategory.includes(:ecm_products_products)
4
+ end
5
+
6
+ def show
7
+ @product_category = ::Ecm::Products::ProductCategory.includes(:ecm_products_products).find(params[:id])
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ class Ecm::Products::ProductsController < ApplicationController
2
+ def index
3
+ @products = ::Ecm::Products::Product.all
4
+ end
5
+
6
+ def show
7
+ @product = ::Ecm::Products::Product.find(params[:id])
8
+ end
9
+ end
@@ -0,0 +1,97 @@
1
+ module FixUpdateCounters
2
+ def fix_updated_counters
3
+ self.changes.each {|key, value|
4
+ # key should match /master_files_id/ or /bibls_id/
5
+ # value should be an array ['old value', 'new value']
6
+ if key =~ /_id/
7
+ changed_class = key.sub(/_id/, '')
8
+
9
+ # Get real class of changed attribute, so work both with namespaced/normal models
10
+ klass = self.association(changed_class.to_sym).klass
11
+
12
+ # Try to get counter cache from association options
13
+ begin
14
+ counter_name = self.association(changed_class.to_sym).options[:counter_cache]
15
+ rescue
16
+ # Namespaced model return a slash, split it.
17
+ unless (counter_name = "#{self.class.name.underscore.pluralize.split("/")[1]}_count".to_sym)
18
+ counter_name = "#{self.class.name.underscore.pluralize}_count".to_sym
19
+ end
20
+ end
21
+
22
+
23
+ klass.decrement_counter(counter_name, value[0]) unless value[0] == nil
24
+ klass.increment_counter(counter_name, value[1]) unless value[1] == nil
25
+ end
26
+ }
27
+ end
28
+ end
29
+
30
+ ActiveRecord::Base.send(:include, FixUpdateCounters)
31
+
32
+ class Ecm::Products::Product < ActiveRecord::Base
33
+ # database settings
34
+ self.table_name = 'ecm_products_products'
35
+
36
+ # acts as list
37
+ acts_as_list :scope => :ecm_products_product_category
38
+
39
+ # associations
40
+ belongs_to :ecm_products_product_category,
41
+ :class_name => Ecm::Products::ProductCategory,
42
+ :counter_cache => :ecm_products_products_count
43
+
44
+ has_many :ecm_products_product_links,
45
+ :class_name => Ecm::Products::ProductLink,
46
+ :dependent => :destroy,
47
+ :foreign_key => :ecm_products_product_id,
48
+ :order => 'position'
49
+
50
+ # attributes
51
+ attr_accessible :ecm_products_product_category_id,
52
+ :locale,
53
+ :long_description,
54
+ :main_image,
55
+ :name,
56
+ :position,
57
+ :preview_image,
58
+ :price,
59
+ :price_on_application,
60
+ :published_at,
61
+ :short_description,
62
+ :slug
63
+
64
+ # callbacks
65
+ after_update :fix_updated_counters
66
+ before_update :fix_updated_position, :if => Proc.new { |d| !position.blank? && d.ecm_products_product_category_id_changed? }
67
+
68
+ # friendly id
69
+ extend FriendlyId
70
+ friendly_id :name, :use => :slugged
71
+
72
+ # money
73
+ monetize :price_cents, :allow_nil => true
74
+
75
+ # paperclip
76
+ has_attached_file :main_image, :styles => { :medium_thumb => "160x120", :big_thumb => "360x268" }
77
+ has_attached_file :preview_image, :styles => { :medium_thumb => "160x120", :big_thumb => "360x268" }
78
+
79
+ # validations
80
+ validates :ecm_products_product_category, :presence => true
81
+ validate :available_locale, :unless => Proc.new { |c| c.locale.blank? }
82
+ validates :name, :presence => true
83
+ # validates_attachment_presence :main_image
84
+ # validates_attachment_presence :preview_image
85
+
86
+ # private methods
87
+
88
+ private
89
+ def fix_updated_position
90
+ Rails.logger.debug "Fixing positions for #{self.to_s} (Moving to last)"
91
+ add_to_list_bottom
92
+ end
93
+
94
+ def available_locale
95
+ I18n.available_locales.map(&:to_s).include?(self.locale)
96
+ end
97
+ end
@@ -0,0 +1,71 @@
1
+ class Ecm::Products::ProductCategory < ActiveRecord::Base
2
+ # database settings
3
+ self.table_name = 'ecm_products_product_categories'
4
+
5
+ # associations
6
+ has_many :ecm_products_products,
7
+ :class_name => Ecm::Products::Product,
8
+ :dependent => :destroy,
9
+ :foreign_key => :ecm_products_product_category_id,
10
+ :order => 'position'
11
+
12
+ # attributes
13
+ attr_accessible :depth,
14
+ :lft,
15
+ :locale,
16
+ :long_description,
17
+ :main_image,
18
+ :name,
19
+ :parent_id,
20
+ :preview_image,
21
+ :rgt,
22
+ :short_description,
23
+ :slug
24
+
25
+ # awesome nested set
26
+ acts_as_nested_set
27
+ default_scope :order => 'lft ASC'
28
+
29
+ # friendly id
30
+ extend FriendlyId
31
+ friendly_id :name, :use => :slugged
32
+
33
+ # paperclip
34
+ has_attached_file :main_image, :styles => { :medium_thumb => "160x120", :big_thumb => "360x268" }
35
+ has_attached_file :preview_image, :styles => { :small_thumb => "64x48", :medium_thumb => "160x120", :big_thumb => "360x268" }
36
+
37
+ # validations
38
+ validates :name, :presence => true, :uniqueness => { :scope => [ :parent_id ] }
39
+ validates :locale, :presence => true, :if => Proc.new { |pc| pc.parent.nil? } # , :if => :root?
40
+ validates :locale, :absence => true, :if => Proc.new { |pc| !pc.parent.nil? }
41
+ validate :available_locale, :if => Proc.new { |pc| pc.locale.present? }
42
+
43
+ # public methods
44
+
45
+ def to_s
46
+ name
47
+ end
48
+
49
+ def tree_name
50
+ root_prefix = (self.root?) ? "[#{self.locale}] " : ""
51
+
52
+ if self.ecm_products_products_count == 0
53
+ "#{root_prefix}#{to_s}"
54
+ else
55
+ "#{root_prefix}#{to_s} (#{self.ecm_products_products_count})"
56
+ end
57
+ end
58
+
59
+ def self.for_actual_locale
60
+ # where(:locale => I18n.locale)
61
+ t = self.arel_table
62
+ where(t[:locale].eq(I18n.locale).or(t[:locale].eq(nil)))
63
+ end
64
+
65
+ private
66
+
67
+ def available_locale
68
+ I18n.available_locales.map(&:to_s).include?(self.locale)
69
+ end
70
+ # private
71
+ end
@@ -0,0 +1,23 @@
1
+ class Ecm::Products::ProductLink < ActiveRecord::Base
2
+ # database settings
3
+ self.table_name = 'ecm_products_product_links'
4
+
5
+ # acts as list
6
+ acts_as_list :scope => :ecm_products_product
7
+
8
+ # associations
9
+ belongs_to :ecm_products_product,
10
+ :class_name => Ecm::Products::Product,
11
+ :counter_cache => :ecm_products_product_links_count
12
+
13
+ # attributes
14
+ attr_accessible :description,
15
+ :ecm_products_product_id,
16
+ :name,
17
+ :position,
18
+ :url
19
+
20
+ # validations
21
+ validates :name, :presence => true, :uniqueness => { :scope => [ :ecm_products_product_id ] }
22
+ validates :url, :presence => true, :uniqueness => { :scope => [ :ecm_products_product_id ] }
23
+ end
@@ -0,0 +1,5 @@
1
+ module Ecm::Products
2
+ def self.table_name_prefix
3
+ 'ecm_products_'
4
+ end
5
+ end
@@ -0,0 +1,23 @@
1
+ <h1 class="product_category-name"><%= product_category.name %></h1>
2
+
3
+ <%= nested_li(product_category.descendants, {}) do |product_category, level| %>
4
+ <%= link_to product_category.tree_name, product_category %>
5
+ <% end %>
6
+
7
+ <% unless product_category.short_description.blank? %>
8
+ <p><%= product_category.short_description %></p>
9
+ <% end %>
10
+
11
+ <% unless product_category.long_description.blank? %>
12
+ <p><%= product_category.long_description %></p>
13
+ <% end %>
14
+
15
+ <h2><%= Ecm::Products::ProductCategory.human_attribute_name(:ecm_products_products) %></h2>
16
+
17
+ <% if product_category.ecm_products_products_count == 0 %>
18
+ <%= t('ecm.products.product_category.messages.no_products_available') %>
19
+ <% else %>
20
+ <ul class="thumbnails product-previews">
21
+ <%= render :partial => 'ecm/products/products/product_preview', :collection => product_category.ecm_products_products, :as => :product %>
22
+ </ul>
23
+ <% end %>
@@ -0,0 +1,6 @@
1
+ <h1><%= Ecm::Products::ProductCategory.model_name.human(:count => :other) %></h1>
2
+
3
+ <%= nested_li(@product_categories, { :tree_css_class => 'tree unstyled' }) do |product_category, level| %>
4
+ <%= link_to product_category.tree_name, product_category %>
5
+ <% end %>
6
+
@@ -0,0 +1,18 @@
1
+ <%= render @product_category %>
2
+
3
+ <% if @product_category.root? %>
4
+
5
+ <%= link_to(ecm_products_product_categories_path, :class => 'back-link btn') do %>
6
+ <i class="icon-arrow-left icon-white"></i>
7
+ <%= t('ecm.products.product_category.actions.back_to_index') %>
8
+ <% end %>
9
+
10
+ <% else %>
11
+
12
+ <%= link_to(@product_category.parent, :class => 'back-link btn') do %>
13
+ <i class="icon-arrow-left icon-white"></i>
14
+ <%= t('ecm.products.product_category.actions.back_to_parent', :name => @product_category.parent.to_s) %>
15
+ <% end %>
16
+
17
+ <% end %>
18
+
@@ -0,0 +1,12 @@
1
+ <h3><%= product_link.name %></h3>
2
+
3
+ <p class="product_link-description">
4
+ <%= product_link.description %>
5
+ </p>
6
+
7
+ <%= link_to product_link.url, :class => "product_link-url open-link external-link btn" do %>
8
+ <i class="icon-info-sign icon-white"></i>
9
+ <%= t('ecm.products.product_link.actions.visit') %>
10
+ <% end %>
11
+
12
+ <hr />
@@ -0,0 +1,29 @@
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>
8
+ <ul>
9
+ <li class="product-created_at"><%= Ecm::Products::Product.human_attribute_name(:created_at) %>: <%= l(product.created_at) rescue nil %></li>
10
+ <li class="product-updated_at"><%= Ecm::Products::Product.human_attribute_name(:updated_at) %>: <%= l(product.updated_at) rescue nil %></li>
11
+ </ul>
12
+
13
+ <% unless product.short_description.blank? %>
14
+ <div class="product-short_description">
15
+ <p><%= product.short_description %></p>
16
+ </div>
17
+ <% end %>
18
+
19
+ <% unless product.long_description.blank? %>
20
+ <div class="product-long_description">
21
+ <p><%= product.long_description %></p>
22
+ </div>
23
+ <% end %>
24
+
25
+ <div class="product-actions">
26
+ </div>
27
+ </div>
28
+
29
+ <hr />
@@ -0,0 +1,40 @@
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>
8
+
9
+ <% if product.main_image? %>
10
+ <div class="product-main_image"><%= image_tag(product.main_image.url, :class => 'thumbnail') %></div>
11
+ <% end %>
12
+
13
+ <% if product.short_description.present? %>
14
+ <div class="product-short_description"><%= product.short_description %></div>
15
+ <% end %>
16
+
17
+ <% if product.long_description.present? %>
18
+ <div class="product-long_description"><%= product.long_description %></div>
19
+ <% end %>
20
+
21
+ <div class="product-price"><%= humanized_money_with_symbol product.price %></div>
22
+
23
+ <% if product.ecm_products_product_links.present? %>
24
+ <hr />
25
+
26
+ <div class="product-links">
27
+ <% product.ecm_products_product_links.each do |product_link| %>
28
+ <%= render product_link %>
29
+ <% end %>
30
+ </div>
31
+ <% end %>
32
+
33
+ </div>
34
+
35
+ <hr />
36
+
37
+ <%= link_to(product.ecm_products_product_category, :class => 'btn') do %>
38
+ <i class="icon-arrow-left icon-white"></i>
39
+ <%= t('ecm.products.product.actions.back_to_category', :name => product.ecm_products_product_category) %>
40
+ <% end %>
@@ -0,0 +1,18 @@
1
+ <li>
2
+ <div class="thumbnail <%= product_counter.odd? ? "even" : "odd" %>">
3
+
4
+ <%= image_tag(product.preview_image.url) %>
5
+
6
+ <div class="caption">
7
+ <h5><%= product.name %></h5>
8
+ <p class="short_description"><%= product.short_description %></p>
9
+
10
+ <p>
11
+ <%= link_to(product, :class => "more-link btn") do %>
12
+ <i class="icon-info-sign icon-white"></i>
13
+ <%= t('ecm.products.product.actions.more') %>
14
+ <% end %>
15
+ </p>
16
+ </div>
17
+ </div>
18
+ </li>
@@ -0,0 +1,3 @@
1
+ <h1>Ecm::Products::Products#index</h1>
2
+
3
+ <%= render :partial => "product_preview", :collection => @products, :as => :product %>
@@ -0,0 +1 @@
1
+ <%= render :partial => 'product_details', :locals => { :product => @product } %>
@@ -0,0 +1,20 @@
1
+ de:
2
+ ecm:
3
+ products:
4
+ active_admin:
5
+ menu: Produkte
6
+ product:
7
+ actions:
8
+ back_to_category: Zurück zu %{name}
9
+ more: Mehr
10
+ messages:
11
+ product_category:
12
+ actions:
13
+ back_to_parent: Zurück zu %{name}
14
+ back_to_index: Zurück zur Übersicht
15
+ messages:
16
+ no_products_available: Keine Produkte in dieser Kategorie vorhanden.
17
+ product_link:
18
+ actions:
19
+ visit: Öffnen
20
+ messages:
@@ -0,0 +1,20 @@
1
+ en:
2
+ ecm:
3
+ products:
4
+ active_admin:
5
+ menu: Products
6
+ product:
7
+ actions:
8
+ back_to_category: back to %{name}
9
+ more: more
10
+ messages:
11
+ product_category:
12
+ actions:
13
+ back_to_parent: back to %{name}
14
+ back_to_index: back to the index
15
+ messages:
16
+ no_products_available: No products available in this category.
17
+ product_link:
18
+ actions:
19
+ visit: visit
20
+ messages:
@@ -0,0 +1,38 @@
1
+ ---
2
+ de:
3
+ activerecord:
4
+ models:
5
+ ecm/products/product:
6
+ one: Produkt
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
15
+ created_at: Erstellt am
16
+ main_image_updated_at: Hauptbild aktualisiert am
17
+ updated_at: Aktualisiert am
18
+ short_description: Kurzbeschreibung
19
+ main_image_file_name: Hauptbild Dateiname
20
+ main_image_file_size: Hauptbild Dateigröße
21
+ main_image_fingerprint: Hauptbild Fingerabdruck
22
+ ecm_products_product_category: Produktkategorie
23
+ ecm_products_product_category_id: Produktkategorie
24
+ long_description: Langbeschreibung
25
+ preview_image_updated_at: Vorschaubild aktualisiert am
26
+ ecm_products_product_links: Links
27
+ ecm_products_product_links_count: Links
28
+ preview_image_content_type: Vorschaubild Dateityp
29
+ price_currency: Preiswährung
30
+ locale: Sprache
31
+ price_on_application: Preis auf Anfrage
32
+ preview_image_file_name: Vorschaubild Dateiname
33
+ published_at: Veröffentlicht am
34
+ preview_image_file_size: Vorschaubild Dateigröße
35
+ price: Preis
36
+ price_cents: Preis in Cents
37
+ preview_image: Vorschaubild
38
+ main_image: Hauptbild
@@ -0,0 +1,38 @@
1
+ ---
2
+ en:
3
+ activerecord:
4
+ models:
5
+ ecm/products/product:
6
+ one: product
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
15
+ created_at: created at
16
+ main_image_updated_at: main image updated at
17
+ updated_at: updated at
18
+ short_description: short_description
19
+ main_image_file_name: main image file name
20
+ main_image_file_size: main image file size
21
+ main_image_fingerprint: main image fingerprint
22
+ ecm_products_product_category: product category
23
+ ecm_products_product_category_id: product category
24
+ long_description: long description
25
+ preview_image_updated_at: preview_image updated at
26
+ ecm_products_product_links: links
27
+ ecm_products_product_links_count: product links
28
+ preview_image_content_type: preview image content type
29
+ price_currency: price currency
30
+ locale: language
31
+ price_on_application: price on application
32
+ preview_image_file_name: preview image file name
33
+ published_at: published at
34
+ preview_image_file_size: preview image file size
35
+ price: price
36
+ price_cents: price cents
37
+ preview_image: preview image
38
+ main_image: main image
@@ -0,0 +1,35 @@
1
+ ---
2
+ de:
3
+ activerecord:
4
+ models:
5
+ ecm/products/product_category:
6
+ one: Produkt Kategorie
7
+ other: Produkt Kategorien
8
+ attributes:
9
+ ecm/products/product_category:
10
+ slug: Freundliche ID
11
+ name: Name
12
+ preview_image_fingerprint: Vorschaubild Fingerabdruck
13
+ main_image_content_type: Hauptbild Dateityp
14
+ created_at: Erstellt am
15
+ ecm_products_products: Produkte
16
+ ecm_products_products_count: Produkte
17
+ depth: Baumtiefe
18
+ updated_at: Aktualisiert am
19
+ short_description: Kurzbeschreibung
20
+ main_image_updated_at: Hauptbild aktualisiert am
21
+ lft: Links
22
+ main_image_fingerprint: Hauptbild Fingerabdruck
23
+ main_image_file_name: Hauptbild Dateiname
24
+ main_image_file_size: Hauptbild Dateigröße
25
+ long_description: Langbeschreibung
26
+ preview_image_content_type: Vorschaubild Dateityp
27
+ preview_image_updated_at: Vorschaubild aktualisiert am
28
+ parent: Überkategorie
29
+ parent_id: Überkategorie
30
+ locale: Sprache
31
+ preview_image_file_name: Vorschaubild Dateiname
32
+ preview_image_file_size: Vorschaubild Dateigröße
33
+ rgt: Rechts
34
+ preview_image: Vorschaubild
35
+ main_image: Hauptbild
@@ -0,0 +1,35 @@
1
+ ---
2
+ en:
3
+ activerecord:
4
+ models:
5
+ ecm/products/product_category:
6
+ one: product category
7
+ other: product categories
8
+ attributes:
9
+ ecm/products/product_category:
10
+ slug: slug
11
+ name: name
12
+ preview_image_fingerprint: preview image fingerprint
13
+ main_image_content_type: main image content type
14
+ created_at: created at
15
+ ecm_products_products: products
16
+ ecm_products_products_count: products
17
+ depth: depth
18
+ updated_at: updated at
19
+ short_description: short description
20
+ main_image_updated_at: main image updated at
21
+ lft: left
22
+ main_image_fingerprint: main image fingerprint
23
+ main_image_file_name: main image file name
24
+ main_image_file_size: main image file size
25
+ long_description: long description
26
+ preview_image_content_type: preview image content type
27
+ preview_image_updated_at: preview image updated at
28
+ parent: parent category
29
+ parent_id: parent category
30
+ locale: language
31
+ preview_image_file_name: preview image file name
32
+ preview_image_file_size: preview image file size
33
+ rgt: right
34
+ preview_image: preview image
35
+ main_image: main image
@@ -0,0 +1,17 @@
1
+ ---
2
+ de:
3
+ activerecord:
4
+ models:
5
+ ecm/products/product_link:
6
+ one: Produkt Link
7
+ other: Produkt Links
8
+ attributes:
9
+ ecm/products/product_link:
10
+ name: Name
11
+ position: Position
12
+ created_at: Erstellt am
13
+ updated_at: Aktualisiert am
14
+ ecm_products_product: Produkt
15
+ ecm_products_product_id: Produkt
16
+ url: URL
17
+ description: Beschreibung