spree_yandex_market 1.1.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (33) hide show
  1. data/.DS_Store +0 -0
  2. data/.gitignore +1 -0
  3. data/LICENSE +23 -0
  4. data/README.markdown +54 -0
  5. data/Rakefile +31 -0
  6. data/app/controllers/admin/yandex_markets_controller.rb +55 -0
  7. data/app/helpers/admin/yandex_markets_helper.rb +2 -0
  8. data/app/models/.DS_Store +0 -0
  9. data/app/models/yandex_market_configuration.rb +56 -0
  10. data/app/views/admin/yandex_markets/currency.html.erb +39 -0
  11. data/app/views/admin/yandex_markets/export_files.html.erb +26 -0
  12. data/app/views/admin/yandex_markets/general.html.erb +56 -0
  13. data/app/views/admin/yandex_markets/shared/_configuration_menu.html.erb +23 -0
  14. data/app/views/admin/yandex_markets/show.html.erb +55 -0
  15. data/app/views/admin/yandex_markets/ware_property.html.erb +86 -0
  16. data/config/locales/en-US.yml +2 -0
  17. data/config/locales/ru.yml +68 -0
  18. data/config/routes.rb +13 -0
  19. data/db/migrate/20110110094042_add_export_flag_to_product.rb +9 -0
  20. data/lib/export/torg_mail_ru_exporter.rb +111 -0
  21. data/lib/export/yandex_market_exporter.rb +291 -0
  22. data/lib/spree_yandex_market.rb +37 -0
  23. data/lib/spree_yandex_market_hooks.rb +5 -0
  24. data/lib/tasks/install.rake +26 -0
  25. data/lib/tasks/yandex_market.rake +68 -0
  26. data/spec/controllers/admin/yandex_markets_controller_spec.rb +10 -0
  27. data/spec/controllers/yandex_market_controller_spec.rb +26 -0
  28. data/spec/helpers/admin/yandex_markets_helper_spec.rb +11 -0
  29. data/spec/helpers/yandex_market_helper_spec.rb +11 -0
  30. data/spec/spec.opts +6 -0
  31. data/spec/spec_helper.rb +31 -0
  32. data/spree_yandex_market.gemspec +23 -0
  33. metadata +131 -0
data/.DS_Store ADDED
Binary file
data/.gitignore ADDED
@@ -0,0 +1 @@
1
+ .DS_Store
data/LICENSE ADDED
@@ -0,0 +1,23 @@
1
+ Redistribution and use in source and binary forms, with or without modification,
2
+ are permitted provided that the following conditions are met:
3
+
4
+ * Redistributions of source code must retain the above copyright notice,
5
+ this list of conditions and the following disclaimer.
6
+ * Redistributions in binary form must reproduce the above copyright notice,
7
+ this list of conditions and the following disclaimer in the documentation
8
+ and/or other materials provided with the distribution.
9
+ * Neither the name of the Rails Dog LLC nor the names of its
10
+ contributors may be used to endorse or promote products derived from this
11
+ software without specific prior written permission.
12
+
13
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
14
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
15
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
16
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
17
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
18
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
19
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
20
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
21
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
22
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
23
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
data/README.markdown ADDED
@@ -0,0 +1,54 @@
1
+ = Yandex Market
2
+
3
+ Экспорт товаров в Яндекс.Маркет
4
+ ==============================
5
+ Расширение предназначено для выгрузки списка товара в Яндекс.Маркет.(http://partner.market.yandex.ru/legal/tt/)
6
+ При экспорте передаеться следующая информация:
7
+ 1. Название магазина и его url.
8
+ 2. Валюты используемые в магазине.
9
+ 3. Категории товара.
10
+ В качестве категорий выгружаемых в файл используется один из 'Таксонов', который задается в админке Яндекс.Маркет.
11
+ 4. Список товара.
12
+ При выгрузке Товар может быть описан несколькими типами:
13
+ 1. "vendor.model" - Основной тип описания, рекомендуемый
14
+ 2. "book", "audiobook" - для книг и аудиокниг
15
+ 3. "music", "video" - для музыки и видео
16
+ 4. "event_ticket" - билеты на мероприятия
17
+ Определение типа описания происходит следующим образом: если в свойстве товара,которое определено
18
+ в "Типе продукции" (Wares Type), одно из следующих значений ["book", "audiobook", "music", "video",
19
+ "event_ticket"] то товар выгружается в соответствии с типом продукции, если свойство "тип продукции"
20
+ не определено или нет нужного значения ,то описыаеться по основному типу "vendor.model"
21
+
22
+
23
+ Формирование файла экспорта:
24
+
25
+ Файл формируется следующей командой: RAILS_ENV=#{RAILS_ENV} rake spree:extensions:yandex_market:generate_ym
26
+ Сформированные файлы сохраняются в папку ROOT_RAILS/public/yandex_market с формируемым именем
27
+ файла "yandex_market_%Y_%m_%d__%H_%M".
28
+ Для Яндекс.Робота создаться линк на самый последний файл ROOT_RAILS/public/yandex_market/yandex_market.gz,
29
+ который доступен по адресу http://[host]/yandex_market/yandex_market.gz
30
+ Формирование файла можно делать через крон или запуском команды из блока администрирования.
31
+
32
+
33
+
34
+ Установка
35
+ ---------
36
+ script/extension install git://github.com/pronix/spree-yandex-market.git
37
+ rake db:migrate
38
+ Для периодического формирования файла экспорта запишите в крон следущую команду:
39
+ cd #{ RAILS_ROOT } && RAILS_ENV=#{RAILS_ENV} rake spree:extensions:yandex_market:generate_ym
40
+
41
+
42
+ Настройка
43
+ --------
44
+ Настройка осуществляется в панеле администрирования магазина в разделе Яндекс.Маркет.
45
+ В основных настройках устанавливается название и адрес магазина, выгружаемая категория и отбор
46
+ товара при выгрузке.
47
+ В настройках валюты устанавливается список валют используемых в магазине.
48
+ В настройке "Выгружаемые свойства товара" - сопоставляются выгружаемые данные со свойствами товара.
49
+ Также для настроек можно использовать следующий синтаксис: YandexMarket::Config.set(:number_of_files => 10)
50
+
51
+
52
+
53
+
54
+ Copyright (c) 2010 pronix, divineforest
data/Rakefile ADDED
@@ -0,0 +1,31 @@
1
+ require File.expand_path('../../config/application', __FILE__)
2
+
3
+ require 'rubygems'
4
+ require 'rake'
5
+ require 'rake/testtask'
6
+ require 'rake/packagetask'
7
+ require 'rake/gempackagetask'
8
+
9
+ spec = eval(File.read('yandex_market.gemspec'))
10
+
11
+ Rake::GemPackageTask.new(spec) do |p|
12
+ p.gem_spec = spec
13
+ end
14
+
15
+ desc "Release to gemcutter"
16
+ task :release => :package do
17
+ require 'rake/gemcutter'
18
+ Rake::Gemcutter::Tasks.new(spec).define
19
+ Rake::Task['gem:push'].invoke
20
+ end
21
+
22
+ desc "Default Task"
23
+ task :default => [ :spec ]
24
+
25
+ require 'rspec/core/rake_task'
26
+ RSpec::Core::RakeTask.new
27
+
28
+ # require 'cucumber/rake/task'
29
+ # Cucumber::Rake::Task.new do |t|
30
+ # t.cucumber_opts = %w{--format pretty}
31
+ # end
@@ -0,0 +1,55 @@
1
+ # -*- coding: utf-8 -*-
2
+ class Admin::YandexMarketsController < Admin::BaseController
3
+ before_filter :get_config
4
+
5
+ def show
6
+ @taxons = Taxon.roots
7
+ end
8
+ def general
9
+ @taxons = Taxon.roots
10
+ end
11
+
12
+ def currency
13
+ end
14
+
15
+ def ware_property
16
+ @properties = Property.all
17
+ end
18
+
19
+ def export_files
20
+ directory = File.join(Rails.root, 'public', 'yandex_market', '**', '*')
21
+ # нельзя вызывать стат, не удостоверившись в наличии файла!!111
22
+ @export_files = Dir[directory].map {|x| [File.basename(x), (File.file?(x) ? File.mtime(x).to_i : 0)] }.
23
+ sort{|x,y| y.last <=> x.last }
24
+ e =@export_files.find {|x| x.first == "yandex_market.xml" }
25
+ @export_files.reject! {|x| x.first == "yandex_market.xml" }
26
+ @export_files.unshift(e) unless e.blank?
27
+ end
28
+
29
+ def run_export
30
+ command = %{cd #{ RAILS_ROOT } && RAILS_ENV=#{RAILS_ENV} rake spree:extensions:yandex_market:generate_ym &}
31
+ logger.info "[ yandex market ] Запуск формирование файла экспорта из блока администрирования "
32
+ logger.info "[ yandex market ] команда - #{command} "
33
+ system command
34
+ # Временно убрано для перехода на Rails 3
35
+ # render :text => "Обновите страницу через несколько минут.", :status => :ok, :layout => false
36
+ redirect_to export_files_admin_yandex_markets_url
37
+ end
38
+
39
+ def update
40
+ @config.attributes = params[:preferences]
41
+ @config.save!
42
+
43
+ respond_to do |format|
44
+ format.html {
45
+ redirect_to admin_yandex_markets_path
46
+ }
47
+ end
48
+ end
49
+
50
+ private
51
+
52
+ def get_config
53
+ @config = YandexMarket::Config.instance
54
+ end
55
+ end
@@ -0,0 +1,2 @@
1
+ module Admin::YandexMarketsHelper
2
+ end
Binary file
@@ -0,0 +1,56 @@
1
+ class YandexMarketConfiguration < Configuration
2
+ preference :category, :string
3
+ preference :currency, :string
4
+ preference :wares, :string, :default => "active"
5
+ preference :number_of_files, :integer, :default => 5
6
+ preference :short_name, :string
7
+ preference :full_name, :string
8
+ preference :url, :string
9
+ preference :local_delivery_cost, :float # стоимость доставки по своему региону
10
+
11
+
12
+ # wares property
13
+ preference :type_prefix, :string, :default => "prefix" # Группа товаров \ категория
14
+ preference :vendor, :string, :default => "vendor" # Производитель
15
+ preference :model, :string, :default => "model" # Модель
16
+ preference :vendor_code, :string, :default => "vendor_code" # Код товара (указывается код производителя)
17
+ preference :country_of_manufacturer, :string, :default => "country_of_manufacturer" #страны производства товара.
18
+ preference :manufacturer_warranty, :string, :default => "manufacturer_warranty" # есть официальная гарантию производителя.
19
+ preference :wares_type, :string, :default => "wares_type" # Тип Товара
20
+
21
+ # wares property Книги и АудиоКниги
22
+ preference :author, :string # Автор книги
23
+ preference :publisher, :string # Издательство
24
+ preference :series, :string # Серия
25
+ preference :year, :string # Год издания
26
+ preference :isbn, :string # Код книги, если их несколько, то указываются через запятую.
27
+ preference :volume, :string # Количество томов.
28
+ preference :part, :string # Номер тома.
29
+ preference :language, :string # Язык произведения.
30
+ preference :binding, :string # Переплет.
31
+ preference :page_extent, :string # Количествово страниц в книге, должно быть целым положиельным числом.
32
+ preference :performed_by, :string # Исполнитель. Если их несколько, перечисляются через запятую
33
+ preference :storage, :string # Носитель, на котором поставляется аудиокнига.
34
+ preference :format, :string # Формат аудиокниги.
35
+ preference :recording_length , :string # Время звучания задается в формате mm.ss (минуты.секунды).
36
+
37
+ # wares property Музыка и Видео
38
+ preference :artist , :string # Исполнитель
39
+ preference :title , :string # Наименование
40
+ preference :music_video_year, :string # Год
41
+ preference :media , :string # Носитель
42
+ preference :starring , :string # Актеры
43
+ preference :director , :string # Режиссер
44
+ preference :orginal_name , :string # Оригинальное наименовани
45
+ preference :video_country, :string # Страна
46
+
47
+ # wares property Билеты
48
+ preference :place, :string # Место мероприятия
49
+ preference :hall, :string # Зал
50
+ preference :hall_url_plan, :string # Ссылка на картинку версии зала
51
+ preference :event_date, :string # Дата и время сеанса. Указываются в формате ISO 8601: YYYY-MM-DDThh:mm
52
+ preference :is_premiere, :string # Признак премьерности мероприятия
53
+ preference :is_kids, :string # Признак детского мероприятия
54
+
55
+ end
56
+
@@ -0,0 +1,39 @@
1
+ <%= render :partial => 'admin/yandex_markets/shared/configuration_menu' %>
2
+ <%= content_tag :h3, t('configure_yandex_market.list_currency'), :class => "name" %>
3
+ <% form_tag(admin_yandex_markets_path, :method => :put) do -%>
4
+ <label for="preferences_preferred_currency">
5
+ <%= t('configure_yandex_market.currency') %>
6
+ <%= text_field_tag('preferences[preferred_currency]', @config.preferred_currency, :size => 50) %>
7
+ </label>
8
+ <br class="clear" />
9
+ <br class="clear" />
10
+ <div>
11
+ Валюты задються в строке разделенные ';', праметры курса валюты разделяються ':'.
12
+ Первая задаеться основная валюта магазина и курс должен равен 1.
13
+ Параметры:
14
+ <ol>
15
+ <li>Код валюты</li>
16
+ <li>Курс</li>
17
+ <li>Процент курса</li>
18
+ </ol>
19
+ Пример:
20
+ <div>
21
+ <span>RUR:1;USD:CBRF:3;EUR:CBRF:0.2;</span>
22
+ <div>Задано три валюты: RUR - основная, USD - курс CBRF + 3%, EUR - курс CBRF + 0.2%</div>
23
+ </div>
24
+ <span>Параметр курс может иметь следующие значения: CBRF, NBU, NBK и CB.</span>
25
+ <ul>
26
+ <li>CBRF - курс по Центральному банку РФ.</li>
27
+ <li>NBU - курс по Национальному банку Украины.</li>
28
+ <li>NBK - курс по Национальному банку Казахстана.</li>
29
+ <li>СВ - курс по банку той страны, к которой относится интернет-магазин по Своему региону, указанному в Партнерском интерфейсе Яндекс.Маркета.</li>
30
+ </ul>
31
+ <div class="warning">
32
+ Внимание! При слишком значительном (больше 30%) отличии значения курса валюты от курса ЦБ РФ или НБУ информационные материалы считаются невалидными.
33
+ </div>
34
+ </div>
35
+ <p class="form-buttons">
36
+ <%= button t('update') %>
37
+ <%= t("or") %> <%= link_to t("cancel"), admin_yandex_markets_url %>
38
+ </p>
39
+ <% end -%>
@@ -0,0 +1,26 @@
1
+ <%= render :partial => 'admin/yandex_markets/shared/configuration_menu' %>
2
+ <div class='toolbar'>
3
+ <ul class='actions'>
4
+ <li id="new_ot_link">
5
+ <%= link_to t('configure_yandex_market.run_generate_file'), run_export_admin_yandex_markets_path %>
6
+
7
+ </li>
8
+ </ul>
9
+ <br class='clear' />
10
+ </div>
11
+ <div id="run_generate_export"></div>
12
+ <%= content_tag :h3, t('configure_yandex_market.export_files'), :class => "name" %>
13
+ <table class="index">
14
+ <tr>
15
+ <th><%= t('configure_yandex_market.name') %></th>
16
+ <th><%= t('configure_yandex_market.date') %></th>
17
+ <th>&nbsp;</th>
18
+ </tr>
19
+ <% @export_files && @export_files.each do |ef| -%>
20
+ <tr>
21
+ <td><%= ef.first %></td>
22
+ <td><%= ef.last.to_s(:long) %></td>
23
+ <td class="actions"><%= link_to t("configure_yandex_market.download"), url_for("/yandex_market/#{ef.first}") %> </td>
24
+ </tr>
25
+ <% end -%>
26
+ </table>
@@ -0,0 +1,56 @@
1
+ <%= render :partial => 'admin/yandex_markets/shared/configuration_menu' %>
2
+ <%= content_tag :h3, t('configure_yandex_market.general'), :class => "name" %>
3
+ <% form_tag(admin_yandex_markets_path, :method => :put) do -%>
4
+ <fieldset>
5
+ <label for="preferences_preferred_short_name">
6
+ <%= t('configure_yandex_market.short_name') %>
7
+ <br class="clear" />
8
+ <%= text_field_tag "preferences[preferred_short_name]", @config.preferred_short_name, :maxlength => 20 %>
9
+ </label>
10
+ <br class="clear" />
11
+ <label for="preferences_preferred_full_name">
12
+ <%= t('configure_yandex_market.full_name') %>
13
+ <br class="clear" />
14
+ <%= text_field_tag "preferences[preferred_full_name]", @config.preferred_full_name, :size => 50 %>
15
+ </label>
16
+ <br class="clear" />
17
+ <label for="preferences_preferred_url">
18
+ <%= t('configure_yandex_market.url') %>
19
+ <br class="clear" />
20
+ <%= text_field_tag "preferences[preferred_url]", @config.preferred_url, :size => 50 %>
21
+ </label>
22
+ </fieldset>
23
+
24
+ <fieldset>
25
+ <legend><span><%= t('configure_yandex_market.export_category') %></span></legend>
26
+ <%= select_tag 'preferences[preferred_category]', options_for_select(@taxons.collect{ |u| [u.name, u.name] }, @config.preferred_category) -%>
27
+ </fieldset>
28
+
29
+ <fieldset>
30
+ <legend><span><%= t('configure_yandex_market.what_wares_export') %></span></legend>
31
+ <ol>
32
+ <li>
33
+ <label for="preferences_preferred_wares_active">
34
+ <%= radio_button_tag 'preferences[preferred_wares]', 'active', @config.preferred_wares == "active" %>
35
+ <%= t('configure_yandex_market.all_active_wares') %>
36
+ </label>
37
+ </li>
38
+
39
+ <li>
40
+ <label for="preferences_preferred_wares_on_hand">
41
+ <%= radio_button_tag 'preferences[preferred_wares]', 'on_hand', @config.preferred_wares == "on_hand" %>
42
+ <%= t('configure_yandex_market.on_hand_wares') %>
43
+ </label>
44
+ </li>
45
+
46
+ </ol>
47
+ </fieldset>
48
+ <fieldset>
49
+ <legend><span><%= t('configure_yandex_market.local_delivery_cost') %></span></legend>
50
+ <%= text_field_tag "preferences[preferred_local_delivery_cost]", @config.preferred_local_delivery_cost %>
51
+ </fieldset>
52
+ <p class="form-buttons">
53
+ <%= button t('update') %>
54
+ <%= t("or") %> <%= link_to t("cancel"), admin_yandex_markets_url %>
55
+ </p>
56
+ <% end -%>
@@ -0,0 +1,23 @@
1
+ <% content_for :sidebar do %>
2
+ <%= content_tag :h3, t('configure_yandex_market.title'), :class => "name" %>
3
+ <br class="clear" />
4
+
5
+ <ul class="sidebar">
6
+ <% content_tag :li, :class => (params[:action] == "general" ? "active": "") do -%>
7
+ <%= link_to t("configure_yandex_market.general"), general_admin_yandex_markets_path %>
8
+ <% end -%>
9
+
10
+ <% content_tag :li, :class => (params[:action] == "currency" ? "active": "") do -%>
11
+ <%= link_to t("configure_yandex_market.list_currency") , currency_admin_yandex_markets_path %>
12
+ <% end -%>
13
+
14
+ <% content_tag :li, :class => (params[:action] == "export_files" ? "active": "") do -%>
15
+ <%= link_to t("configure_yandex_market.export_files"),export_files_admin_yandex_markets_path %>
16
+ <% end -%>
17
+
18
+
19
+ <% content_tag :li, :class => (params[:action] == "ware_property" ? "active": "") do -%>
20
+ <%= link_to t("configure_yandex_market.ware_property"),ware_property_admin_yandex_markets_path %>
21
+ <% end -%>
22
+ </ul>
23
+ <% end -%>
@@ -0,0 +1,55 @@
1
+ <%= render :partial => 'admin/yandex_markets/shared/configuration_menu' %>
2
+ <table>
3
+ <tr>
4
+ <th scope="row"><%= t 'configure_yandex_market.short_name_small' %>:</th>
5
+ <td colspan=2><%= @config.preferred_short_name %></td>
6
+ </tr>
7
+ <tr>
8
+ <th scope="row"><%= t 'configure_yandex_market.full_name_small' %>:</th>
9
+ <td colspan=2><%= @config.preferred_full_name %></td>
10
+ </tr>
11
+ <tr>
12
+ <th scope="row"><%= t 'configure_yandex_market.url' %>:</th>
13
+ <td colspan=2><%= @config.preferred_url %></td>
14
+ </tr>
15
+ <tr>
16
+ <th scope="row"><%= t 'configure_yandex_market.export_category' %>:</th>
17
+ <td colspan=2><%= @config.preferred_category %></td>
18
+ </tr>
19
+ <tr>
20
+ <th scope="row"><%= t 'configure_yandex_market.currency' %>:</th>
21
+ <td colspan=2><%= @config.preferred_currency %></td>
22
+ </tr>
23
+ <tr>
24
+ <th scope="row"><%= t 'configure_yandex_market.export_wares' %>:</th>
25
+ <td colspan=2><%= t("yandex_market_wares_#{@config.preferred_wares}") %></td>
26
+ </tr>
27
+ <tr>
28
+ <th scope="row"><%= t 'configure_yandex_market.local_delivery_cost' %>:</th>
29
+ <td colspan=2><%= number_to_currency(@config.preferred_local_delivery_cost.to_i) %></td>
30
+ </tr>
31
+ <tr>
32
+ <th scope="row"><%= t 'configure_yandex_market.export_file' %>:</th>
33
+ <td>
34
+ <%= link_to(url_for("http://#{@config.preferred_url.sub(%r[^http://],'').sub(%r[/$],'')}/#{'/yandex_market/yandex_market.xml'.sub(%r[^/],'')}"), url_for("/yandex_market/yandex_market.xml")) if @config.preferred_url %>
35
+ </td>
36
+ <td>&nbsp;</td>
37
+ </tr>
38
+
39
+ <tr>
40
+ <th scope="row"><%= t 'configure_yandex_market.ware_property' %>:</th>
41
+ <td colspan=2>
42
+ <ul>
43
+ <% ["type_prefix", "vendor", "model", "vendor_code",
44
+ "country_of_manufacturer", "manufacturer_warranty", "wares_type" ].each do |property| -%>
45
+ <li>
46
+ <%= t("configure_yandex_market.#{property}") %>: <%= @config.send("preferred_#{property}".to_sym) %>
47
+ </li>
48
+ <% end -%>
49
+
50
+ </ul>
51
+ </td>
52
+
53
+ </tr>
54
+ </table>
55
+
@@ -0,0 +1,86 @@
1
+ <%= render :partial => 'admin/yandex_markets/shared/configuration_menu' %>
2
+
3
+ <%= content_tag :h3, t('configure_yandex_market.ware_property'), :class => "name" %>
4
+
5
+ <% form_tag(admin_yandex_markets_path, :method => :put) do -%>
6
+ <fieldset>
7
+ <legend><span><%= t('configure_yandex_market.field_for') %></span></legend>
8
+ <label><%= radio_button_tag 'wares_type', 'basic', true %> Основные</label>
9
+ <label><%= radio_button_tag 'wares_type', 'book' %> Книги </label>
10
+ <label><%= radio_button_tag 'wares_type', 'music_video' %> Музыка/Видео </label>
11
+ <label><%= radio_button_tag 'wares_type', 'event_ticket' %> Билетов на мероприятия</label>
12
+ </fieldset>
13
+
14
+ <fieldset class="fields" id="basic">
15
+ <legend><span><%= t('configure_yandex_market.basic_property') %></span></legend>
16
+ <table class="index">
17
+ <% ["wares_type", "type_prefix","vendor", "model", "vendor_code",
18
+ "country_of_manufacturer", "manufacturer_warranty" ].each do |property| -%>
19
+ <tr>
20
+ <td><%= t("configure_yandex_market.#{property}") %>:</td>
21
+ <td>
22
+ <%= select_tag("preferences[preferred_#{property}]",
23
+ options_for_select(@properties.collect{ |u| ["#{u.presentation} (#{u.name})", u.name] }.unshift([nil, nil]), @config.send("preferred_#{property}".to_sym))) -%>
24
+ </td>
25
+ </tr>
26
+ <% end -%>
27
+ </table>
28
+ </fieldset>
29
+ <fieldset class="fields" id="book" style="display:none;">
30
+ <legend><span><%= t('configure_yandex_market.book_property') %></span></legend>
31
+ <table class="index">
32
+ <% %w{author publisher series year isbn volume part language binding page_extent performed_by storage format recording_length}.each do |property| -%>
33
+ <tr>
34
+ <td><%= t("configure_yandex_market.#{property}") %>:</td>
35
+ <td>
36
+ <%= select_tag("preferences[preferred_#{property}]",
37
+ options_for_select(@properties.collect{ |u| ["#{u.presentation} (#{u.name})", u.name] }.unshift([nil, nil]), @config.send("preferred_#{property}".to_sym))) -%>
38
+ </td>
39
+ </tr>
40
+ <% end -%>
41
+ </table>
42
+ </fieldset>
43
+ <fieldset class="fields" id="music_video" style="display:none;">
44
+ <legend><span><%= t('configure_yandex_market.music_video_property') %></span></legend>
45
+ <table class="index">
46
+ <% %w{ artist title music_video_year media starring director orginal_name video_country }.each do |property| -%>
47
+ <tr>
48
+ <td><%= t("configure_yandex_market.#{property}") %>:</td>
49
+ <td>
50
+ <%= select_tag("preferences[preferred_#{property}]",
51
+ options_for_select(@properties.collect{ |u| ["#{u.presentation} (#{u.name})", u.name] }.unshift([nil, nil]), @config.send("preferred_#{property}".to_sym))) -%>
52
+ </td>
53
+ </tr>
54
+ <% end -%>
55
+ </table>
56
+
57
+ </fieldset>
58
+ <fieldset class="fields" id="event_ticket" style="display:none;">
59
+ <legend><span><%= t('configure_yandex_market.event_ticket_property') %></span></legend>
60
+ <table class="index">
61
+ <% %w{ place hall hall_url_plan event_date is_premiere is_kids }.each do |property| -%>
62
+ <tr>
63
+ <td><%= t("configure_yandex_market.#{property}") %>:</td>
64
+ <td>
65
+ <%= select_tag("preferences[preferred_#{property}]",
66
+ options_for_select(@properties.collect{ |u| ["#{u.presentation} (#{u.name})", u.name] }.unshift([nil, nil]), @config.send("preferred_#{property}".to_sym))) -%>
67
+ </td>
68
+ </tr>
69
+ <% end -%>
70
+ </table>
71
+
72
+ </fieldset>
73
+
74
+ <p class="form-buttons">
75
+ <%= button t('update') %>
76
+ <%= t("or") %> <%= link_to t("cancel"), admin_yandex_markets_url %>
77
+ </p>
78
+ <% end -%>
79
+ <script type="text/javascript" charset="utf-8">
80
+ $(function(){
81
+ $("input[type='radio']").change(function(){
82
+ $("fieldset.fields").hide();
83
+ $("fieldset#"+$(this).val()).show();
84
+ });
85
+ });
86
+ </script>
@@ -0,0 +1,2 @@
1
+ en-US:
2
+ yandex_market: Yandex.Market
@@ -0,0 +1,68 @@
1
+ ru:
2
+ yandex_market: Яндекс.Маркет
3
+ yandex_market_wares_active: Весь доступный товар
4
+ yandex_market_wares_on_hand: Только товар который есть в наличии
5
+ configure_yandex_market:
6
+ title: Настройка Яндекс.Маркет
7
+ general: Основные настройки
8
+ currency: Валюта
9
+ export_category: Категория выгрузки
10
+ list_currency: Список валют
11
+ export_wares: Отбор товара
12
+ export_files: Сформированные файлы
13
+ export_file: Ссылка на файл
14
+ what_wares_export: Какой товар выгружать в Яндекс.Маркет
15
+ all_active_wares: Весь активный товар
16
+ on_hand_wares: Только товар который есть в наличии
17
+ run_generate_file: Запусить формирование файла
18
+ download: Скачать
19
+ name: Наименование
20
+ date: Дата\Время
21
+ ware_property: Выгружаемые свойства товара
22
+ vendor: Производитель
23
+ model: Модель
24
+ vendor_code: Код производителя
25
+ country_of_manufacturer: Страна-производитель
26
+ type_prefix: Группа товаров\категория
27
+ manufacturer_warranty: Есть официальная гарантию производителя
28
+ local_delivery_cost: Стоимость доставки по своему региону
29
+ short_name: Короткое название магазина( не более 20 символов)
30
+ full_name: Полное наименование компании, владеющей магазином.
31
+ short_name_small: Короткое название магазина
32
+ full_name_small: Полное наименование компании
33
+ url: URL-адрес главной страницы магазина
34
+ wares_type: Тип продукции
35
+ basic_property: Поля для основного описания товара
36
+ field_for: Поля для типа описания
37
+ book_property: "Поля для описание типа 'книга', 'аудиокнига' "
38
+ author: Автор книги
39
+ publisher: Издательство
40
+ series: Серия
41
+ year: Год издания
42
+ isbn: Код книги
43
+ volume: Количество томов
44
+ part: Номер тома
45
+ language: Язык произведения
46
+ binding: Переплет
47
+ page_extent: Количествово страниц в книге
48
+ performed_by: Исполнитель для аудиокниги
49
+ storage: Носитель аудиокниги
50
+ format: Формат аудиокниги.
51
+ recording_length: Время звучания
52
+ artist: Исполнитель
53
+ title: Наименование
54
+ music_video_year: Год
55
+ media: Носитель
56
+ starring: Актеры
57
+ director: Режиссер
58
+ orginal_name: Оригинальное наименовани
59
+ video_country: Страна
60
+ music_video_property: "Поля для описание типа 'музыка', 'видео' "
61
+ event_ticket_property: "Поля для описание типа 'билеты на мероприятия' "
62
+ place: Место мероприятия
63
+ hall: Зал
64
+ hall_url_plan: Ссылка на картинку версии зала
65
+ event_date: Дата и время сеанса.
66
+ is_premiere: Признак премьерности мероприятия
67
+ is_kids: Признак детского мероприятия
68
+ export_to_yandex_market: Экспортировать в Яндекс-Маркет
data/config/routes.rb ADDED
@@ -0,0 +1,13 @@
1
+ Rails.application.routes.draw do
2
+ namespace :admin do
3
+ resource :yandex_markets do
4
+ member do
5
+ match :general
6
+ match :currency
7
+ match :export_files
8
+ match :ware_property
9
+ get :run_export
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,9 @@
1
+ class AddExportFlagToProduct < ActiveRecord::Migration
2
+ def self.up
3
+ add_column :products, :export_to_yandex_market, :boolean, :default=>true, :null=>false
4
+ end
5
+
6
+ def self.down
7
+ remove_column :products, :export_to_yandex_market
8
+ end
9
+ end