ecm_products 0.0.1.pre
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/MIT-LICENSE +20 -0
- data/README.rdoc +17 -0
- data/Rakefile +27 -0
- data/app/controllers/ecm/products/product_categories_controller.rb +9 -0
- data/app/controllers/ecm/products/products_controller.rb +9 -0
- data/app/models/ecm/products/product.rb +97 -0
- data/app/models/ecm/products/product_category.rb +71 -0
- data/app/models/ecm/products/product_link.rb +23 -0
- data/app/models/ecm/products.rb +5 -0
- data/app/views/ecm/products/product_categories/_product_category.html.erb +23 -0
- data/app/views/ecm/products/product_categories/index.html.erb +6 -0
- data/app/views/ecm/products/product_categories/show.html.erb +18 -0
- data/app/views/ecm/products/product_links/_product_link.html.erb +12 -0
- data/app/views/ecm/products/products/_product.html.erb +29 -0
- data/app/views/ecm/products/products/_product_details.html.erb +40 -0
- data/app/views/ecm/products/products/_product_preview.html.erb +18 -0
- data/app/views/ecm/products/products/index.html.erb +3 -0
- data/app/views/ecm/products/products/show.html.erb +1 -0
- data/config/locales/ecm.products.de.yml +20 -0
- data/config/locales/ecm.products.en.yml +20 -0
- data/config/locales/ecm.products.product.de.yml +38 -0
- data/config/locales/ecm.products.product.en.yml +38 -0
- data/config/locales/ecm.products.product_category.de.yml +35 -0
- data/config/locales/ecm.products.product_category.en.yml +35 -0
- data/config/locales/ecm.products.product_link.de.yml +17 -0
- data/config/locales/ecm.products.product_link.en.yml +17 -0
- data/config/locales/ecm.products.routes.de.yml +5 -0
- data/config/locales/ecm.products.routes.en.yml +5 -0
- data/db/migrate/001_create_ecm_products_product_categories.rb +40 -0
- data/db/migrate/002_create_ecm_products_products.rb +46 -0
- data/db/migrate/003_create_ecm_products_product_links.rb +18 -0
- data/lib/ecm/products/active_admin/ecm_products_product_categories.rb +75 -0
- data/lib/ecm/products/active_admin/ecm_products_product_links.rb +39 -0
- data/lib/ecm/products/active_admin/ecm_products_products.rb +74 -0
- data/lib/ecm/products/engine.rb +12 -0
- data/lib/ecm/products/routing.rb +22 -0
- data/lib/ecm/products/version.rb +5 -0
- data/lib/ecm_products.rb +13 -0
- data/lib/tasks/ecm_products_tasks.rake +77 -0
- 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,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,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,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 @@
|
|
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
|