spree_yandex_market 1.1.1
Sign up to get free protection for your applications and to get access to all the features.
- data/.DS_Store +0 -0
- data/.gitignore +1 -0
- data/LICENSE +23 -0
- data/README.markdown +54 -0
- data/Rakefile +31 -0
- data/app/controllers/admin/yandex_markets_controller.rb +55 -0
- data/app/helpers/admin/yandex_markets_helper.rb +2 -0
- data/app/models/.DS_Store +0 -0
- data/app/models/yandex_market_configuration.rb +56 -0
- data/app/views/admin/yandex_markets/currency.html.erb +39 -0
- data/app/views/admin/yandex_markets/export_files.html.erb +26 -0
- data/app/views/admin/yandex_markets/general.html.erb +56 -0
- data/app/views/admin/yandex_markets/shared/_configuration_menu.html.erb +23 -0
- data/app/views/admin/yandex_markets/show.html.erb +55 -0
- data/app/views/admin/yandex_markets/ware_property.html.erb +86 -0
- data/config/locales/en-US.yml +2 -0
- data/config/locales/ru.yml +68 -0
- data/config/routes.rb +13 -0
- data/db/migrate/20110110094042_add_export_flag_to_product.rb +9 -0
- data/lib/export/torg_mail_ru_exporter.rb +111 -0
- data/lib/export/yandex_market_exporter.rb +291 -0
- data/lib/spree_yandex_market.rb +37 -0
- data/lib/spree_yandex_market_hooks.rb +5 -0
- data/lib/tasks/install.rake +26 -0
- data/lib/tasks/yandex_market.rake +68 -0
- data/spec/controllers/admin/yandex_markets_controller_spec.rb +10 -0
- data/spec/controllers/yandex_market_controller_spec.rb +26 -0
- data/spec/helpers/admin/yandex_markets_helper_spec.rb +11 -0
- data/spec/helpers/yandex_market_helper_spec.rb +11 -0
- data/spec/spec.opts +6 -0
- data/spec/spec_helper.rb +31 -0
- data/spree_yandex_market.gemspec +23 -0
- 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
|
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> </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> </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,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