Version Description
- Woocommerce ( + ).
- (.), (.) (.)
- . , . / .
- .
=
Download this release
Release Info
Developer | Saphali |
Plugin | Saphali Woocommerce Russian |
Version | 1.0 |
Comparing to | |
See all releases |
Version 1.0
- count-column.php +16 -0
- go_pro.php +59 -0
- js/jquery.tablednd.0.5.js +382 -0
- languages/themewoocommerce-ru_RU.mo +0 -0
- languages/themewoocommerce-ru_RU.po +130 -0
- languages/woocommerce-ru_RU.mo +0 -0
- languages/woocommerce-ru_RU.po +576 -0
- readme.txt +71 -0
- saphali-woocommerce-lite.php +556 -0
- screenshot-1.png +0 -0
- screenshot-2.png +0 -0
- screenshot-3.png +0 -0
count-column.php
ADDED
@@ -0,0 +1,16 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?
|
2 |
+
if(isset($_POST['column_count_saphali'])) {
|
3 |
+
if(empty($_POST["clear"])) {
|
4 |
+
if(!empty($_POST["column_count_saphali"])) {
|
5 |
+
if(!update_option('column_count_saphali',$_POST['column_count_saphali'])) add_option('column_count_saphali',$_POST['column_count_saphali']);
|
6 |
+
}
|
7 |
+
} else delete_option('column_count_saphali');
|
8 |
+
}
|
9 |
+
|
10 |
+
?>
|
11 |
+
<form action="" method="POST">
|
12 |
+
Количество колонок: <input value='<?=get_option('column_count_saphali'); ?>' type="text" name="column_count_saphali" />
|
13 |
+
<div class='clear'></div>
|
14 |
+
<input type="submit" class="button alignleft" value="Сохранить"/>
|
15 |
+
</form>
|
16 |
+
<form action="" method="POST"><input type="hidden" name="column_count_saphali" value="1"/><input type="hidden" name="clear" value="1"/><input type="submit" class="button alignright" value="Сброс на умолчание"/></form>
|
go_pro.php
ADDED
@@ -0,0 +1,59 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php echo wpautop('<span style="color: #ff0000;"><strong>У вас установлена бесплатная версия Saphali Woocommerce LITE</strong></span>
|
2 |
+
|
3 |
+
Плагин вносит в магазин следующие дополнения:
|
4 |
+
1. Улучшенная русская локализация Woocommerce.
|
5 |
+
2. В общий список валют добавлены — Украинская гривна (грн.), Русский рубль (руб.) и Белорусский рубль (руб.)
|
6 |
+
3. Управление полями на странице заказа и на странице профиля. Функция позволяет настроить заказную форму регистрации, чтобы настроить магазин на упрощенение оформления заказа. Вы можете сделать некоторые поля необязательными при регистрации/оформленнии заказа либо удалить их полностью.
|
7 |
+
4. Управление количеством колонок в каталоге товаров и рубриках.
|
8 |
+
|
9 |
+
Мы открыты для ваших предложений. Ваши идеи, предложения и пожелания по улучшению Lite версии пишите на saphali@ukr.net. Возможно, именно Ваше предложение добавит новые возможности. Если вы заметили какие-либо неточности перевода или ошибки, сообщите нам об этом, и в ближайшее время исправления будут добавлены в плагин.
|
10 |
+
|
11 |
+
<h2>Другие платные версии Saphali Woocommerce</h2>
|
12 |
+
|
13 |
+
<strong>Saphali Woocommerce STANDARD</strong>
|
14 |
+
Плагин вносит в магазин следующие дополнения:
|
15 |
+
1. Улучшенная русская локализация Woocommerce.
|
16 |
+
2. В общий список валют добавлены — Украинская гривна (грн.), Российский рубль (руб.) и Белорусский рубль (руб.)
|
17 |
+
3. Управление полями на странице заказа и на странице профиля. Функция позволяет настроить заказную форму регистрации, чтобы настроить магазин на упрощенение оформления заказа. Вы можете сделать некоторые поля необязательными при регистрации/оформленнии заказа либо удалить их полностью.
|
18 |
+
|
19 |
+
4. Дополнительные методы оплаты - Приват24, LiqPay (прием оплаты с карт VISA и MasterCard), WebMoney, Яндекс.Деньги, ROBOKASSA, QIWI.
|
20 |
+
5. Импорт / Экспорт товаров из прайсов.
|
21 |
+
6. Экспорт товаров WooCommerce в Яндекс.Маркет (Yandex.Market) в формате YML.
|
22 |
+
7. Поиск по заказным полям (позволяет искать товары по артикулу, цене, свойствам товара и т.д.)
|
23 |
+
8. Скрытие цен. Функция позволяет переключить интернет-магазин в режим каталога - только просмотр, заказ возможен только после регистрации и утверждения администратором.
|
24 |
+
9. Оптовые цены.
|
25 |
+
10. Дополнительная вкладка (таб) «Видео» с возможностью добавления видео как через embed-код, так и через специальную кнопку для быстрого добавления видео с таких сервисов как YouTube, Vimeo и др. (интеграция с плагином Viper’s Video Quicktags).
|
26 |
+
11. Защита изображений от воровства. Наложения водяных знаков (watermark) на изображения товаров.
|
27 |
+
12. Защита авторского права. Блокировка правой кнопки мышки.
|
28 |
+
13. Виджет "Обратный звонок".
|
29 |
+
Подробнее на сайте <strong><a href="http://saphali.com/saphali-woocommerce-plugin-wordpress" target="_blank">saphali.com</a></strong>
|
30 |
+
|
31 |
+
|
32 |
+
<strong>Saphali Woocommerce PLUS</strong>
|
33 |
+
Плагин вносит в магазин следующие дополнения:
|
34 |
+
1. Все функции перечисленные в версии Saphali Woocommerce STANDARD.
|
35 |
+
2. Фильтры по техническим параметрам (по свойствам). Фильтры можно задействовать в каталоге (и категориях), если у товаров заполнены какие-либо дополнительные характеристики.
|
36 |
+
3. Функция "Быстрый заказ".
|
37 |
+
4. Виджет "Фильтр по цене" — удобный регулятор ценового диапазона, с ползунками.
|
38 |
+
5. Функция "Сравнение товаров".
|
39 |
+
6. Список желаний.
|
40 |
+
7. Функция «Уведомить когда будет в наличии», если товара нет в наличии.
|
41 |
+
8. Последние просмотренные товары.
|
42 |
+
9. «Отложить (пометить) товар» — чтобы посетитель, когда зайдет в следующий раз, мог быстро его найти.
|
43 |
+
10. Форсированные продажи. Позволяет связять с основным товаром другие товары/услуги, при добавлении основного товара в корзину, добавляется вся цепь из товаров).
|
44 |
+
11. Комбинированные товары. Позволяет продавать комплекты товаров по особой цене. Например, в качестве "бонуса" к основному товару предложите еще один товар бесплатно (как подарок).
|
45 |
+
12. Минимальное количество заказываемого товара.
|
46 |
+
Подробнее на сайте <strong><a href="http://saphali.com/saphali-woocommerce-plugin-wordpress" target="_blank">saphali.com</a></strong>
|
47 |
+
|
48 |
+
|
49 |
+
<strong>Saphali Woocommerce VIDEO</strong>
|
50 |
+
Плагин позволяет продавать видеоконтент, например, обучающие курсы.
|
51 |
+
Плагин вносит в магазин следующие дополнения:
|
52 |
+
1. Все функции перечисленные в версии Saphali Woocommerce STANDARD.
|
53 |
+
2. Открывает видеоролик (плеер) лайтбоксом при клике на изображение (превью) товара.
|
54 |
+
3. Генерирование тумбнейлов (превью товара) из ваших YouTube, Vimeo... роликов в товарной записи.
|
55 |
+
4. Комбинированные товары - позволяет формировать комплекты из нескольких видеокурсов и продавать по специальной цене.
|
56 |
+
5. Демо-просмотр видеоролика на заданное количество минут.
|
57 |
+
Подробнее на сайте <strong><a href="http://saphali.com/saphali-woocommerce-plugin-wordpress" target="_blank">saphali.com</a></strong>
|
58 |
+
');
|
59 |
+
?>
|
js/jquery.tablednd.0.5.js
ADDED
@@ -0,0 +1,382 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/**
|
2 |
+
* TableDnD plug-in for JQuery, allows you to drag and drop table rows
|
3 |
+
* You can set up various options to control how the system will work
|
4 |
+
* Copyright (c) Denis Howlett <denish@isocra.com>
|
5 |
+
* Licensed like jQuery, see http://docs.jquery.com/License.
|
6 |
+
*
|
7 |
+
* Configuration options:
|
8 |
+
*
|
9 |
+
* onDragStyle
|
10 |
+
* This is the style that is assigned to the row during drag. There are limitations to the styles that can be
|
11 |
+
* associated with a row (such as you can't assign a border--well you can, but it won't be
|
12 |
+
* displayed). (So instead consider using onDragClass.) The CSS style to apply is specified as
|
13 |
+
* a map (as used in the jQuery css(...) function).
|
14 |
+
* onDropStyle
|
15 |
+
* This is the style that is assigned to the row when it is dropped. As for onDragStyle, there are limitations
|
16 |
+
* to what you can do. Also this replaces the original style, so again consider using onDragClass which
|
17 |
+
* is simply added and then removed on drop.
|
18 |
+
* onDragClass
|
19 |
+
* This class is added for the duration of the drag and then removed when the row is dropped. It is more
|
20 |
+
* flexible than using onDragStyle since it can be inherited by the row cells and other content. The default
|
21 |
+
* is class is tDnD_whileDrag. So to use the default, simply customise this CSS class in your
|
22 |
+
* stylesheet.
|
23 |
+
* onDrop
|
24 |
+
* Pass a function that will be called when the row is dropped. The function takes 2 parameters: the table
|
25 |
+
* and the row that was dropped. You can work out the new order of the rows by using
|
26 |
+
* table.rows.
|
27 |
+
* onDragStart
|
28 |
+
* Pass a function that will be called when the user starts dragging. The function takes 2 parameters: the
|
29 |
+
* table and the row which the user has started to drag.
|
30 |
+
* onAllowDrop
|
31 |
+
* Pass a function that will be called as a row is over another row. If the function returns true, allow
|
32 |
+
* dropping on that row, otherwise not. The function takes 2 parameters: the dragged row and the row under
|
33 |
+
* the cursor. It returns a boolean: true allows the drop, false doesn't allow it.
|
34 |
+
* scrollAmount
|
35 |
+
* This is the number of pixels to scroll if the user moves the mouse cursor to the top or bottom of the
|
36 |
+
* window. The page should automatically scroll up or down as appropriate (tested in IE6, IE7, Safari, FF2,
|
37 |
+
* FF3 beta
|
38 |
+
* dragHandle
|
39 |
+
* This is the name of a class that you assign to one or more cells in each row that is draggable. If you
|
40 |
+
* specify this class, then you are responsible for setting cursor: move in the CSS and only these cells
|
41 |
+
* will have the drag behaviour. If you do not specify a dragHandle, then you get the old behaviour where
|
42 |
+
* the whole row is draggable.
|
43 |
+
*
|
44 |
+
* Other ways to control behaviour:
|
45 |
+
*
|
46 |
+
* Add class="nodrop" to any rows for which you don't want to allow dropping, and class="nodrag" to any rows
|
47 |
+
* that you don't want to be draggable.
|
48 |
+
*
|
49 |
+
* Inside the onDrop method you can also call $.tableDnD.serialize() this returns a string of the form
|
50 |
+
* <tableID>[]=<rowID1>&<tableID>[]=<rowID2> so that you can send this back to the server. The table must have
|
51 |
+
* an ID as must all the rows.
|
52 |
+
*
|
53 |
+
* Other methods:
|
54 |
+
*
|
55 |
+
* $("...").tableDnDUpdate()
|
56 |
+
* Will update all the matching tables, that is it will reapply the mousedown method to the rows (or handle cells).
|
57 |
+
* This is useful if you have updated the table rows using Ajax and you want to make the table draggable again.
|
58 |
+
* The table maintains the original configuration (so you don't have to specify it again).
|
59 |
+
*
|
60 |
+
* $("...").tableDnDSerialize()
|
61 |
+
* Will serialize and return the serialized string as above, but for each of the matching tables--so it can be
|
62 |
+
* called from anywhere and isn't dependent on the currentTable being set up correctly before calling
|
63 |
+
*
|
64 |
+
* Known problems:
|
65 |
+
* - Auto-scoll has some problems with IE7 (it scrolls even when it shouldn't), work-around: set scrollAmount to 0
|
66 |
+
*
|
67 |
+
* Version 0.2: 2008-02-20 First public version
|
68 |
+
* Version 0.3: 2008-02-07 Added onDragStart option
|
69 |
+
* Made the scroll amount configurable (default is 5 as before)
|
70 |
+
* Version 0.4: 2008-03-15 Changed the noDrag/noDrop attributes to nodrag/nodrop classes
|
71 |
+
* Added onAllowDrop to control dropping
|
72 |
+
* Fixed a bug which meant that you couldn't set the scroll amount in both directions
|
73 |
+
* Added serialize method
|
74 |
+
* Version 0.5: 2008-05-16 Changed so that if you specify a dragHandle class it doesn't make the whole row
|
75 |
+
* draggable
|
76 |
+
* Improved the serialize method to use a default (and settable) regular expression.
|
77 |
+
* Added tableDnDupate() and tableDnDSerialize() to be called when you are outside the table
|
78 |
+
*/
|
79 |
+
jQuery.tableDnD = {
|
80 |
+
/** Keep hold of the current table being dragged */
|
81 |
+
currentTable : null,
|
82 |
+
/** Keep hold of the current drag object if any */
|
83 |
+
dragObject: null,
|
84 |
+
/** The current mouse offset */
|
85 |
+
mouseOffset: null,
|
86 |
+
/** Remember the old value of Y so that we don't do too much processing */
|
87 |
+
oldY: 0,
|
88 |
+
|
89 |
+
/** Actually build the structure */
|
90 |
+
build: function(options) {
|
91 |
+
// Set up the defaults if any
|
92 |
+
|
93 |
+
this.each(function() {
|
94 |
+
// This is bound to each matching table, set up the defaults and override with user options
|
95 |
+
this.tableDnDConfig = jQuery.extend({
|
96 |
+
onDragStyle: null,
|
97 |
+
onDropStyle: null,
|
98 |
+
// Add in the default class for whileDragging
|
99 |
+
onDragClass: "tDnD_whileDrag",
|
100 |
+
onDrop: null,
|
101 |
+
onDragStart: null,
|
102 |
+
scrollAmount: 5,
|
103 |
+
serializeRegexp: /[^\-]*$/, // The regular expression to use to trim row IDs
|
104 |
+
serializeParamName: null, // If you want to specify another parameter name instead of the table ID
|
105 |
+
dragHandle: null // If you give the name of a class here, then only Cells with this class will be draggable
|
106 |
+
}, options || {});
|
107 |
+
// Now make the rows draggable
|
108 |
+
jQuery.tableDnD.makeDraggable(this);
|
109 |
+
});
|
110 |
+
|
111 |
+
// Now we need to capture the mouse up and mouse move event
|
112 |
+
// We can use bind so that we don't interfere with other event handlers
|
113 |
+
jQuery(document)
|
114 |
+
.bind('mousemove', jQuery.tableDnD.mousemove)
|
115 |
+
.bind('mouseup', jQuery.tableDnD.mouseup);
|
116 |
+
|
117 |
+
// Don't break the chain
|
118 |
+
return this;
|
119 |
+
},
|
120 |
+
|
121 |
+
/** This function makes all the rows on the table draggable apart from those marked as "NoDrag" */
|
122 |
+
makeDraggable: function(table) {
|
123 |
+
var config = table.tableDnDConfig;
|
124 |
+
if (table.tableDnDConfig.dragHandle) {
|
125 |
+
// We only need to add the event to the specified cells
|
126 |
+
var cells = jQuery("td."+table.tableDnDConfig.dragHandle, table);
|
127 |
+
cells.each(function() {
|
128 |
+
// The cell is bound to "this"
|
129 |
+
jQuery(this).mousedown(function(ev) {
|
130 |
+
jQuery.tableDnD.dragObject = this.parentNode;
|
131 |
+
jQuery.tableDnD.currentTable = table;
|
132 |
+
jQuery.tableDnD.mouseOffset = jQuery.tableDnD.getMouseOffset(this, ev);
|
133 |
+
if (config.onDragStart) {
|
134 |
+
// Call the onDrop method if there is one
|
135 |
+
config.onDragStart(table, this);
|
136 |
+
}
|
137 |
+
return false;
|
138 |
+
});
|
139 |
+
})
|
140 |
+
} else {
|
141 |
+
// For backwards compatibility, we add the event to the whole row
|
142 |
+
var rows = jQuery("tr", table); // get all the rows as a wrapped set
|
143 |
+
rows.each(function() {
|
144 |
+
// Iterate through each row, the row is bound to "this"
|
145 |
+
var row = jQuery(this);
|
146 |
+
if (! row.hasClass("nodrag")) {
|
147 |
+
row.mousedown(function(ev) {
|
148 |
+
if (ev.target.tagName == "TD") {
|
149 |
+
jQuery.tableDnD.dragObject = this;
|
150 |
+
jQuery.tableDnD.currentTable = table;
|
151 |
+
jQuery.tableDnD.mouseOffset = jQuery.tableDnD.getMouseOffset(this, ev);
|
152 |
+
if (config.onDragStart) {
|
153 |
+
// Call the onDrop method if there is one
|
154 |
+
config.onDragStart(table, this);
|
155 |
+
}
|
156 |
+
return false;
|
157 |
+
}
|
158 |
+
}).css("cursor", "move"); // Store the tableDnD object
|
159 |
+
}
|
160 |
+
});
|
161 |
+
}
|
162 |
+
},
|
163 |
+
|
164 |
+
updateTables: function() {
|
165 |
+
this.each(function() {
|
166 |
+
// this is now bound to each matching table
|
167 |
+
if (this.tableDnDConfig) {
|
168 |
+
jQuery.tableDnD.makeDraggable(this);
|
169 |
+
}
|
170 |
+
})
|
171 |
+
},
|
172 |
+
|
173 |
+
/** Get the mouse coordinates from the event (allowing for browser differences) */
|
174 |
+
mouseCoords: function(ev){
|
175 |
+
if(ev.pageX || ev.pageY){
|
176 |
+
return {x:ev.pageX, y:ev.pageY};
|
177 |
+
}
|
178 |
+
return {
|
179 |
+
x:ev.clientX + document.body.scrollLeft - document.body.clientLeft,
|
180 |
+
y:ev.clientY + document.body.scrollTop - document.body.clientTop
|
181 |
+
};
|
182 |
+
},
|
183 |
+
|
184 |
+
/** Given a target element and a mouse event, get the mouse offset from that element.
|
185 |
+
To do this we need the element's position and the mouse position */
|
186 |
+
getMouseOffset: function(target, ev) {
|
187 |
+
ev = ev || window.event;
|
188 |
+
|
189 |
+
var docPos = this.getPosition(target);
|
190 |
+
var mousePos = this.mouseCoords(ev);
|
191 |
+
return {x:mousePos.x - docPos.x, y:mousePos.y - docPos.y};
|
192 |
+
},
|
193 |
+
|
194 |
+
/** Get the position of an element by going up the DOM tree and adding up all the offsets */
|
195 |
+
getPosition: function(e){
|
196 |
+
var left = 0;
|
197 |
+
var top = 0;
|
198 |
+
/** Safari fix -- thanks to Luis Chato for this! */
|
199 |
+
if (e.offsetHeight == 0) {
|
200 |
+
/** Safari 2 doesn't correctly grab the offsetTop of a table row
|
201 |
+
this is detailed here:
|
202 |
+
http://jacob.peargrove.com/blog/2006/technical/table-row-offsettop-bug-in-safari/
|
203 |
+
the solution is likewise noted there, grab the offset of a table cell in the row - the firstChild.
|
204 |
+
note that firefox will return a text node as a first child, so designing a more thorough
|
205 |
+
solution may need to take that into account, for now this seems to work in firefox, safari, ie */
|
206 |
+
e = e.firstChild; // a table cell
|
207 |
+
}
|
208 |
+
|
209 |
+
while (e.offsetParent){
|
210 |
+
left += e.offsetLeft;
|
211 |
+
top += e.offsetTop;
|
212 |
+
e = e.offsetParent;
|
213 |
+
}
|
214 |
+
|
215 |
+
left += e.offsetLeft;
|
216 |
+
top += e.offsetTop;
|
217 |
+
|
218 |
+
return {x:left, y:top};
|
219 |
+
},
|
220 |
+
|
221 |
+
mousemove: function(ev) {
|
222 |
+
if (jQuery.tableDnD.dragObject == null) {
|
223 |
+
return;
|
224 |
+
}
|
225 |
+
|
226 |
+
var dragObj = jQuery(jQuery.tableDnD.dragObject);
|
227 |
+
var config = jQuery.tableDnD.currentTable.tableDnDConfig;
|
228 |
+
var mousePos = jQuery.tableDnD.mouseCoords(ev);
|
229 |
+
var y = mousePos.y - jQuery.tableDnD.mouseOffset.y;
|
230 |
+
//auto scroll the window
|
231 |
+
var yOffset = window.pageYOffset;
|
232 |
+
if (document.all) {
|
233 |
+
// Windows version
|
234 |
+
//yOffset=document.body.scrollTop;
|
235 |
+
if (typeof document.compatMode != 'undefined' &&
|
236 |
+
document.compatMode != 'BackCompat') {
|
237 |
+
yOffset = document.documentElement.scrollTop;
|
238 |
+
}
|
239 |
+
else if (typeof document.body != 'undefined') {
|
240 |
+
yOffset=document.body.scrollTop;
|
241 |
+
}
|
242 |
+
|
243 |
+
}
|
244 |
+
|
245 |
+
if (mousePos.y-yOffset < config.scrollAmount) {
|
246 |
+
window.scrollBy(0, -config.scrollAmount);
|
247 |
+
} else {
|
248 |
+
var windowHeight = window.innerHeight ? window.innerHeight
|
249 |
+
: document.documentElement.clientHeight ? document.documentElement.clientHeight : document.body.clientHeight;
|
250 |
+
if (windowHeight-(mousePos.y-yOffset) < config.scrollAmount) {
|
251 |
+
window.scrollBy(0, config.scrollAmount);
|
252 |
+
}
|
253 |
+
}
|
254 |
+
|
255 |
+
|
256 |
+
if (y != jQuery.tableDnD.oldY) {
|
257 |
+
// work out if we're going up or down...
|
258 |
+
var movingDown = y > jQuery.tableDnD.oldY;
|
259 |
+
// update the old value
|
260 |
+
jQuery.tableDnD.oldY = y;
|
261 |
+
// update the style to show we're dragging
|
262 |
+
if (config.onDragClass) {
|
263 |
+
dragObj.addClass(config.onDragClass);
|
264 |
+
} else {
|
265 |
+
dragObj.css(config.onDragStyle);
|
266 |
+
}
|
267 |
+
// If we're over a row then move the dragged row to there so that the user sees the
|
268 |
+
// effect dynamically
|
269 |
+
var currentRow = jQuery.tableDnD.findDropTargetRow(dragObj, y);
|
270 |
+
if (currentRow) {
|
271 |
+
// TODO worry about what happens when there are multiple TBODIES
|
272 |
+
if (movingDown && jQuery.tableDnD.dragObject != currentRow) {
|
273 |
+
jQuery.tableDnD.dragObject.parentNode.insertBefore(jQuery.tableDnD.dragObject, currentRow.nextSibling);
|
274 |
+
} else if (! movingDown && jQuery.tableDnD.dragObject != currentRow) {
|
275 |
+
jQuery.tableDnD.dragObject.parentNode.insertBefore(jQuery.tableDnD.dragObject, currentRow);
|
276 |
+
}
|
277 |
+
}
|
278 |
+
}
|
279 |
+
|
280 |
+
return false;
|
281 |
+
},
|
282 |
+
|
283 |
+
/** We're only worried about the y position really, because we can only move rows up and down */
|
284 |
+
findDropTargetRow: function(draggedRow, y) {
|
285 |
+
var rows = jQuery.tableDnD.currentTable.rows;
|
286 |
+
for (var i=0; i<rows.length; i++) {
|
287 |
+
var row = rows[i];
|
288 |
+
var rowY = this.getPosition(row).y;
|
289 |
+
var rowHeight = parseInt(row.offsetHeight)/2;
|
290 |
+
if (row.offsetHeight == 0) {
|
291 |
+
rowY = this.getPosition(row.firstChild).y;
|
292 |
+
rowHeight = parseInt(row.firstChild.offsetHeight)/2;
|
293 |
+
}
|
294 |
+
// Because we always have to insert before, we need to offset the height a bit
|
295 |
+
if ((y > rowY - rowHeight) && (y < (rowY + rowHeight))) {
|
296 |
+
// that's the row we're over
|
297 |
+
// If it's the same as the current row, ignore it
|
298 |
+
if (row == draggedRow) {return null;}
|
299 |
+
var config = jQuery.tableDnD.currentTable.tableDnDConfig;
|
300 |
+
if (config.onAllowDrop) {
|
301 |
+
if (config.onAllowDrop(draggedRow, row)) {
|
302 |
+
return row;
|
303 |
+
} else {
|
304 |
+
return null;
|
305 |
+
}
|
306 |
+
} else {
|
307 |
+
// If a row has nodrop class, then don't allow dropping (inspired by John Tarr and Famic)
|
308 |
+
var nodrop = jQuery(row).hasClass("nodrop");
|
309 |
+
if (! nodrop) {
|
310 |
+
return row;
|
311 |
+
} else {
|
312 |
+
return null;
|
313 |
+
}
|
314 |
+
}
|
315 |
+
return row;
|
316 |
+
}
|
317 |
+
}
|
318 |
+
return null;
|
319 |
+
},
|
320 |
+
|
321 |
+
mouseup: function(e) {
|
322 |
+
if (jQuery.tableDnD.currentTable && jQuery.tableDnD.dragObject) {
|
323 |
+
var droppedRow = jQuery.tableDnD.dragObject;
|
324 |
+
var config = jQuery.tableDnD.currentTable.tableDnDConfig;
|
325 |
+
// If we have a dragObject, then we need to release it,
|
326 |
+
// The row will already have been moved to the right place so we just reset stuff
|
327 |
+
if (config.onDragClass) {
|
328 |
+
jQuery(droppedRow).removeClass(config.onDragClass);
|
329 |
+
} else {
|
330 |
+
jQuery(droppedRow).css(config.onDropStyle);
|
331 |
+
}
|
332 |
+
jQuery.tableDnD.dragObject = null;
|
333 |
+
if (config.onDrop) {
|
334 |
+
// Call the onDrop method if there is one
|
335 |
+
config.onDrop(jQuery.tableDnD.currentTable, droppedRow);
|
336 |
+
}
|
337 |
+
jQuery.tableDnD.currentTable = null; // let go of the table too
|
338 |
+
}
|
339 |
+
},
|
340 |
+
|
341 |
+
serialize: function() {
|
342 |
+
if (jQuery.tableDnD.currentTable) {
|
343 |
+
return jQuery.tableDnD.serializeTable(jQuery.tableDnD.currentTable);
|
344 |
+
} else {
|
345 |
+
return "Error: No Table id set, you need to set an id on your table and every row";
|
346 |
+
}
|
347 |
+
},
|
348 |
+
|
349 |
+
serializeTable: function(table) {
|
350 |
+
var result = "";
|
351 |
+
var tableId = table.id;
|
352 |
+
var rows = table.rows;
|
353 |
+
for (var i=0; i<rows.length; i++) {
|
354 |
+
if (result.length > 0) result += "&";
|
355 |
+
var rowId = rows[i].id;
|
356 |
+
if (rowId && rowId && table.tableDnDConfig && table.tableDnDConfig.serializeRegexp) {
|
357 |
+
rowId = rowId.match(table.tableDnDConfig.serializeRegexp)[0];
|
358 |
+
}
|
359 |
+
|
360 |
+
result += tableId + '[]=' + rowId;
|
361 |
+
}
|
362 |
+
return result;
|
363 |
+
},
|
364 |
+
|
365 |
+
serializeTables: function() {
|
366 |
+
var result = "";
|
367 |
+
this.each(function() {
|
368 |
+
// this is now bound to each matching table
|
369 |
+
result += jQuery.tableDnD.serializeTable(this);
|
370 |
+
});
|
371 |
+
return result;
|
372 |
+
}
|
373 |
+
|
374 |
+
}
|
375 |
+
|
376 |
+
jQuery.fn.extend(
|
377 |
+
{
|
378 |
+
tableDnD : jQuery.tableDnD.build,
|
379 |
+
tableDnDUpdate : jQuery.tableDnD.updateTables,
|
380 |
+
tableDnDSerialize: jQuery.tableDnD.serializeTables
|
381 |
+
}
|
382 |
+
);
|
languages/themewoocommerce-ru_RU.mo
ADDED
Binary file
|
languages/themewoocommerce-ru_RU.po
ADDED
@@ -0,0 +1,130 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
msgid ""
|
2 |
+
msgstr ""
|
3 |
+
"Project-Id-Version: WooCommerce theme v1.0.0\n"
|
4 |
+
"Report-Msgid-Bugs-To: \n"
|
5 |
+
"POT-Creation-Date: \n"
|
6 |
+
"PO-Revision-Date: 2012-10-19 18:40+0200\n"
|
7 |
+
"Last-Translator: \n"
|
8 |
+
"Language-Team: \n"
|
9 |
+
"MIME-Version: 1.0\n"
|
10 |
+
"Content-Type: text/plain; charset=UTF-8\n"
|
11 |
+
"Content-Transfer-Encoding: 8bit\n"
|
12 |
+
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
13 |
+
"X-Poedit-SourceCharset: utf-8\n"
|
14 |
+
"X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_n:1,2;__ngettext_noop:1,2;"
|
15 |
+
"_n_noop:1,2;_c,_nc:4c,1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2\n"
|
16 |
+
"X-Poedit-Basepath: ../\n"
|
17 |
+
"X-Textdomain-Support: yes\n"
|
18 |
+
"Language: ru\n"
|
19 |
+
"X-Generator: Poedit 1.5.4\n"
|
20 |
+
"X-Poedit-SearchPath-0: .\n"
|
21 |
+
|
22 |
+
# @ woocommerce
|
23 |
+
#: functions.php:40
|
24 |
+
msgid "Ukrainian hryvnia ( grn.)"
|
25 |
+
msgstr "Украинская гривна ( грн.)"
|
26 |
+
|
27 |
+
# @ woocommerce
|
28 |
+
#: functions.php:40
|
29 |
+
msgid "Russian ruble ( rub.)"
|
30 |
+
msgstr "Русский рубль ( руб.)"
|
31 |
+
|
32 |
+
# @ woocommerce
|
33 |
+
#: functions.php:40
|
34 |
+
msgid "Belarusian ruble ( Br.)"
|
35 |
+
msgstr "Белорусский рубль ( Br.)"
|
36 |
+
|
37 |
+
# @ woocommerce
|
38 |
+
#: functions.php:40
|
39 |
+
msgid ""
|
40 |
+
"Log Qiwi events, such as IPN requests, inside <code>woocommerce/logs/qiwi."
|
41 |
+
"txt</code>"
|
42 |
+
msgstr ""
|
43 |
+
"Журнал событий, таких как запросы/ответы на/от сервера Qiwi, внутри "
|
44 |
+
"документа <code>woocommerce/logs/qiwi.txt</code>"
|
45 |
+
|
46 |
+
# @ woocommerce
|
47 |
+
#: functions.php:40
|
48 |
+
msgid ""
|
49 |
+
"Log LiqPay events, such as IPN requests, inside <code>woocommerce/logs/"
|
50 |
+
"liqpay.txt</code>"
|
51 |
+
msgstr ""
|
52 |
+
"Журнал событий, таких как запросы/ответы на/от сервера LiqPay, внутри "
|
53 |
+
"документа <code>woocommerce/logs/liqpay.txt</code>"
|
54 |
+
|
55 |
+
# @ woocommerce
|
56 |
+
#: functions.php:40
|
57 |
+
msgid ""
|
58 |
+
"Log Privat24 events, such as IPN requests, inside <code>woocommerce/logs/"
|
59 |
+
"privat24.txt</code>"
|
60 |
+
msgstr ""
|
61 |
+
"Журнал событий, таких как запросы/ответы на/от сервера Privat24, внутри "
|
62 |
+
"документа <code>woocommerce/logs/privat24.txt</code>"
|
63 |
+
|
64 |
+
# @ woocommerce
|
65 |
+
#: functions.php:40
|
66 |
+
msgid ""
|
67 |
+
"Log WebMoney events, such as IPN requests, inside <code>woocommerce/logs/"
|
68 |
+
"webmoney.txt</code>"
|
69 |
+
msgstr ""
|
70 |
+
"Журнал событий, таких как запросы/ответы на/от сервера WebMoney, внутри "
|
71 |
+
"документа <code>woocommerce/logs/webmoney.txt</code>"
|
72 |
+
|
73 |
+
# @ woocommerce
|
74 |
+
#: functions.php:40
|
75 |
+
msgid "Debug Log"
|
76 |
+
msgstr "Журнал отладки"
|
77 |
+
|
78 |
+
# @ woocommerce
|
79 |
+
#: functions.php:40
|
80 |
+
msgid "Enable logging"
|
81 |
+
msgstr "Включить журналирование"
|
82 |
+
|
83 |
+
# @ woocommerce
|
84 |
+
#: functions.php:40
|
85 |
+
msgid ""
|
86 |
+
"Pay via Qiwi; you can pay with your credit card if you don't have a Qiwi "
|
87 |
+
"account or terminal."
|
88 |
+
msgstr ""
|
89 |
+
"Заплатить через Qiwi. Вы также можете заплатить пластиковой картой или "
|
90 |
+
"через терминал."
|
91 |
+
|
92 |
+
# @ woocommerce
|
93 |
+
#: functions.php:40
|
94 |
+
msgid ""
|
95 |
+
"Pay via LiqPay; you can pay with your credit card if you don't have a LiqPay "
|
96 |
+
"account or terminal."
|
97 |
+
msgstr ""
|
98 |
+
"Заплатить через LiqPay. Вы можете заплатить пластиковой картой, если у вас "
|
99 |
+
"нет LiqPay аккаунта или через терминал."
|
100 |
+
|
101 |
+
msgid ""
|
102 |
+
"Thank you for your order, please click the button below to pay with LiqPay."
|
103 |
+
msgstr ""
|
104 |
+
"Спасибо за заказ, пожалуйста, нажмите на кнопку внизу, чтобы оплатить при "
|
105 |
+
"помощи LiqPay."
|
106 |
+
|
107 |
+
msgid ""
|
108 |
+
"Thank you for your order, please click the button below to pay with Qiwi."
|
109 |
+
msgstr ""
|
110 |
+
"Спасибо за заказ, пожалуйста, нажмите на кнопку внизу, чтобы оплатить при "
|
111 |
+
"помощи Qiwi."
|
112 |
+
|
113 |
+
msgid ""
|
114 |
+
"Thank you for your order, please click the button below to pay with Privat24."
|
115 |
+
msgstr ""
|
116 |
+
"Спасибо за заказ, пожалуйста, нажмите на кнопку внизу, чтобы оплатить при "
|
117 |
+
"помощи Privat24."
|
118 |
+
|
119 |
+
msgid ""
|
120 |
+
"Thank you for your order, please click the button below to pay with WebMoney."
|
121 |
+
msgstr ""
|
122 |
+
"Спасибо за заказ, пожалуйста, нажмите на кнопку внизу, чтобы оплатить при "
|
123 |
+
"помощи WebMoney."
|
124 |
+
|
125 |
+
msgid ""
|
126 |
+
"Thank you for your order, please click the button below to pay with "
|
127 |
+
"Robokassa."
|
128 |
+
msgstr ""
|
129 |
+
"Спасибо за заказ, пожалуйста, нажмите на кнопку внизу, чтобы оплатить при "
|
130 |
+
"помощи Robokassa."
|
languages/woocommerce-ru_RU.mo
ADDED
Binary file
|
languages/woocommerce-ru_RU.po
ADDED
@@ -0,0 +1,576 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
msgid ""
|
2 |
+
msgstr ""
|
3 |
+
"Project-Id-Version: WooCommerce theme v1.0.0\n"
|
4 |
+
"Report-Msgid-Bugs-To: \n"
|
5 |
+
"POT-Creation-Date: \n"
|
6 |
+
"PO-Revision-Date: 2012-10-20 14:27+0200\n"
|
7 |
+
"Last-Translator: \n"
|
8 |
+
"Language-Team: \n"
|
9 |
+
"MIME-Version: 1.0\n"
|
10 |
+
"Content-Type: text/plain; charset=UTF-8\n"
|
11 |
+
"Content-Transfer-Encoding: 8bit\n"
|
12 |
+
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
13 |
+
"X-Poedit-SourceCharset: utf-8\n"
|
14 |
+
"X-Poedit-KeywordsList: __;_e;_x;_n;__ngettext:1,2;_n:1,2;__ngettext_noop:1,2;"
|
15 |
+
"_n_noop:1,2;_c,_nc:4c,1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2\n"
|
16 |
+
"X-Poedit-Basepath: ../\n"
|
17 |
+
"X-Textdomain-Support: yes\n"
|
18 |
+
"Language: ru\n"
|
19 |
+
"X-Generator: Poedit 1.5.4\n"
|
20 |
+
"X-Poedit-SearchPath-0: .\n"
|
21 |
+
|
22 |
+
# @ woocommerce
|
23 |
+
#: functions.php:40
|
24 |
+
msgid ""
|
25 |
+
"SKU refers to a Stock-keeping unit, a unique identifier for each distinct "
|
26 |
+
"product and service that can be purchased."
|
27 |
+
msgstr ""
|
28 |
+
"Артикул относится к складской единице учета, уникальный идентификатор для "
|
29 |
+
"каждого отдельного продукта и услуг, которые могут быть приобретены."
|
30 |
+
|
31 |
+
# @ woocommerce
|
32 |
+
#: admin/post-types/product.php:70 admin/post-types/product.php:483
|
33 |
+
#: admin/post-types/writepanels/writepanel-order_data.php:274
|
34 |
+
#: admin/post-types/writepanels/writepanel-product-type-variable.php:157
|
35 |
+
#: admin/post-types/writepanels/writepanel-product-type-variable.php:367
|
36 |
+
#: admin/post-types/writepanels/writepanel-product_data.php:91
|
37 |
+
#: admin/woocommerce-admin-reports.php:1527
|
38 |
+
#: admin/woocommerce-admin-reports.php:1562
|
39 |
+
msgid "SKU:"
|
40 |
+
msgstr "Артикул:"
|
41 |
+
|
42 |
+
msgid "SKU"
|
43 |
+
msgstr "Артикул"
|
44 |
+
|
45 |
+
msgid "Product SKU:"
|
46 |
+
msgstr "Артикул товара:"
|
47 |
+
|
48 |
+
msgid "[%s with SKU of %s]"
|
49 |
+
msgstr "[%s с артикул из %s]"
|
50 |
+
|
51 |
+
# @ woocommerce
|
52 |
+
#: admin/settings/settings-init.php:598
|
53 |
+
msgid "Enable the SKU field for products"
|
54 |
+
msgstr "Включить для указания поля с артикулом для товаров"
|
55 |
+
|
56 |
+
# @ woocommerce
|
57 |
+
#: admin/post-types/writepanels/writepanel-product-type-variable.php:157
|
58 |
+
#: admin/post-types/writepanels/writepanel-product-type-variable.php:367
|
59 |
+
msgid ""
|
60 |
+
"Enter a SKU for this variation or leave blank to use the parent product SKU."
|
61 |
+
msgstr ""
|
62 |
+
"Введите артикул для этого варианта или оставьте пустым для использования "
|
63 |
+
"артикула согласно главному товару."
|
64 |
+
|
65 |
+
# @ woocommerce
|
66 |
+
#: functions.php:40
|
67 |
+
msgid "Weight in decimal form"
|
68 |
+
msgstr "Вес в десятичном формате"
|
69 |
+
|
70 |
+
# @ woocommerce
|
71 |
+
#: functions.php:40
|
72 |
+
msgid "LxWxH in decimal form"
|
73 |
+
msgstr "ДлинаxШиринаxВысота в десятичном формате"
|
74 |
+
|
75 |
+
# @ woocommerce
|
76 |
+
#: functions.php:40
|
77 |
+
msgid "Taxes"
|
78 |
+
msgstr "Налоги"
|
79 |
+
|
80 |
+
# @ woocommerce
|
81 |
+
#: functions.php:40
|
82 |
+
msgid "Enable reviews"
|
83 |
+
msgstr "Включить отзывы"
|
84 |
+
|
85 |
+
# @ woocommerce
|
86 |
+
#: functions.php:40
|
87 |
+
msgid "Shipping class"
|
88 |
+
msgstr "Класс доставки"
|
89 |
+
|
90 |
+
# @ woocommerce
|
91 |
+
#: functions.php:40
|
92 |
+
msgid ""
|
93 |
+
"Shipping classes are used by certain shipping methods to group similar "
|
94 |
+
"products."
|
95 |
+
msgstr ""
|
96 |
+
"Классы доставки используют определенные методы доставки в группе аналогичных "
|
97 |
+
"продуктов."
|
98 |
+
|
99 |
+
# @ woocommerce
|
100 |
+
#: functions.php:40
|
101 |
+
msgid "No shipping class"
|
102 |
+
msgstr "Нет класса доставки"
|
103 |
+
|
104 |
+
# @ woocommerce
|
105 |
+
#: functions.php:40
|
106 |
+
msgid "Search for a product..."
|
107 |
+
msgstr "Поиск товара..."
|
108 |
+
|
109 |
+
# @ woocommerce
|
110 |
+
#: functions.php:40
|
111 |
+
msgid "Shipping Classes"
|
112 |
+
msgstr "Классы доставки"
|
113 |
+
|
114 |
+
# @ woocommerce
|
115 |
+
#: functions.php:40
|
116 |
+
msgid "Tags"
|
117 |
+
msgstr "Метки"
|
118 |
+
|
119 |
+
# @ woocommerce
|
120 |
+
#: widgets/widget-product_categories.php:110
|
121 |
+
msgid "No product categories exist."
|
122 |
+
msgstr "Нет товаров в существующих категориях."
|
123 |
+
|
124 |
+
# @ woocommerce
|
125 |
+
#: functions.php:40
|
126 |
+
msgid "Categories"
|
127 |
+
msgstr "Рубрики"
|
128 |
+
|
129 |
+
# @ woocommerce
|
130 |
+
#: admin/settings/settings-init.php:535
|
131 |
+
msgid "Default product sorting"
|
132 |
+
msgstr "Сортировать товар по умолчанию"
|
133 |
+
|
134 |
+
# @ woocommerce
|
135 |
+
#: admin/settings/settings-init.php:542 templates/loop/sorting.php:10
|
136 |
+
msgid "Default sorting"
|
137 |
+
msgstr "Сортировать по умолчанию"
|
138 |
+
|
139 |
+
# @ woocommerce
|
140 |
+
#: admin/settings/settings-init.php:543 templates/loop/sorting.php:11
|
141 |
+
msgid "Sort alphabetically"
|
142 |
+
msgstr "Сортировать по наименованию"
|
143 |
+
|
144 |
+
# @ woocommerce
|
145 |
+
#: admin/settings/settings-init.php:544 templates/loop/sorting.php:12
|
146 |
+
msgid "Sort by most recent"
|
147 |
+
msgstr "Сортировать по дате"
|
148 |
+
|
149 |
+
# @ woocommerce
|
150 |
+
#: admin/settings/settings-init.php:545 templates/loop/sorting.php:13
|
151 |
+
msgid "Sort by price"
|
152 |
+
msgstr "Сортировать по цене"
|
153 |
+
|
154 |
+
# @ woocommerce
|
155 |
+
#: admin/settings/settings-init.php:545 templates/loop/sorting.php:13
|
156 |
+
msgid "Enable guest checkout (no account required)"
|
157 |
+
msgstr "Включить гостевой заказ (без необходимости регистрации)"
|
158 |
+
|
159 |
+
# @ woocommerce
|
160 |
+
#: admin/settings/settings-init.php:545 templates/loop/sorting.php:13
|
161 |
+
msgid "Force secure checkout"
|
162 |
+
msgstr "Использовать безопасное соединение при заказе"
|
163 |
+
|
164 |
+
# @ woocommerce
|
165 |
+
#: admin/settings/settings-init.php:545 templates/loop/sorting.php:13
|
166 |
+
msgid "Registration"
|
167 |
+
msgstr "Регистрация"
|
168 |
+
|
169 |
+
# @ woocommerce
|
170 |
+
#: admin/settings/settings-init.php:545 templates/loop/sorting.php:13
|
171 |
+
msgid "Allow registration on the checkout page"
|
172 |
+
msgstr "Разрешить регистрацию на странице оформления заказа"
|
173 |
+
|
174 |
+
msgid "Allow registration on the \"My Account\" page"
|
175 |
+
msgstr "Разрешить регистрацию на странице \"Мой аккаунт\""
|
176 |
+
|
177 |
+
msgid "Register using the email address for the username"
|
178 |
+
msgstr ""
|
179 |
+
"Регистрировать, используя адрес электронной почты в качестве имени "
|
180 |
+
"пользователя"
|
181 |
+
|
182 |
+
msgid "Allow customers to repurchase past orders"
|
183 |
+
msgstr "Разрешить клиентам обратно купить по прошлым заказам"
|
184 |
+
|
185 |
+
msgid "Access Restrictions"
|
186 |
+
msgstr "Ограничения доступа"
|
187 |
+
|
188 |
+
msgid "Must be logged in to download files"
|
189 |
+
msgstr "Должны быть зарегистрированы (авторизированы), чтобы скачивать файлы"
|
190 |
+
|
191 |
+
msgid "This setting does not apply to guest downloads."
|
192 |
+
msgstr "Этот параметр не применяется к гостевой загрузки."
|
193 |
+
|
194 |
+
msgid "Grant access to downloadable products after payment"
|
195 |
+
msgstr "Предоставление доступа к загружаемых продуктам после оплаты"
|
196 |
+
|
197 |
+
msgid ""
|
198 |
+
"Turn this option off to only grant access when an order is \"complete\", "
|
199 |
+
"rather than \"processing\""
|
200 |
+
msgstr ""
|
201 |
+
"Включите эту опцию, чтобы разрешить доступ только, когда заказ находиться в "
|
202 |
+
"статусе \"выполнен\", а не в статусе \"обработка\""
|
203 |
+
|
204 |
+
msgid "Limit the purchasable quantity of downloadable-virtual items to 1"
|
205 |
+
msgstr "Ограничьте количество приобретаемых загружаемо-виртуальных товаров к 1"
|
206 |
+
|
207 |
+
msgid "Advanced"
|
208 |
+
msgstr "Дополнительно"
|
209 |
+
|
210 |
+
msgid "Enable enhanced country select boxes "
|
211 |
+
msgstr ""
|
212 |
+
|
213 |
+
# @ woocommerce
|
214 |
+
#: admin/post-types/writepanels/writepanel-product_data.php:483
|
215 |
+
msgid "Cross-Sells"
|
216 |
+
msgstr "Перекрестные продажи (Cross-Sells) в корзине"
|
217 |
+
|
218 |
+
# @ woocommerce
|
219 |
+
#: admin/post-types/writepanels/writepanel-product_data.php:464
|
220 |
+
msgid "Up-Sells"
|
221 |
+
msgstr "Апселл (Upsell)"
|
222 |
+
|
223 |
+
# @ woocommerce
|
224 |
+
#: admin/post-types/writepanels/writepanel-product_data.php:464
|
225 |
+
msgid "Username or email"
|
226 |
+
msgstr "Имя пользователя или e-mail"
|
227 |
+
|
228 |
+
# @ woocommerce
|
229 |
+
#: admin/post-types/writepanels/writepanel-order_data.php:131
|
230 |
+
#: admin/post-types/writepanels/writepanel-order_data.php:214
|
231 |
+
#: admin/woocommerce-admin-users.php:133 admin/woocommerce-admin-users.php:182
|
232 |
+
#: classes/class-wc-countries.php:899 classes/class-wc-countries.php:900
|
233 |
+
#: classes/class-wc-countries.php:975
|
234 |
+
msgid "State/County"
|
235 |
+
msgstr "Область, Район"
|
236 |
+
|
237 |
+
# @ woocommerce
|
238 |
+
#: classes/class-wc-countries.php:976
|
239 |
+
msgctxt "placeholder"
|
240 |
+
msgid "State/County"
|
241 |
+
msgstr "Область, Район"
|
242 |
+
|
243 |
+
# @ woocommerce
|
244 |
+
# @ woocommerce
|
245 |
+
#: templates/checkout/form-shipping.php:25
|
246 |
+
#: templates/checkout/form-login.php:13
|
247 |
+
msgid ""
|
248 |
+
"If you have shopped with us before, please enter your details in the boxes "
|
249 |
+
"below. If you are a new customer please proceed to the Billing & "
|
250 |
+
"Shipping section."
|
251 |
+
msgstr ""
|
252 |
+
"Если вы раньше делали заказ, пожалуйста, введите Ваши данные в полях снизу. "
|
253 |
+
"Если вы новый клиент, то, пожалуйста, заполните раздел с информацией об "
|
254 |
+
"оплате и доставке."
|
255 |
+
|
256 |
+
# @ woocommerce
|
257 |
+
#: woocommerce.php:744
|
258 |
+
msgctxt "Admin menu name"
|
259 |
+
msgid "Products"
|
260 |
+
msgstr "Товары"
|
261 |
+
|
262 |
+
# @ woocommerce
|
263 |
+
#: woocommerce.php:879
|
264 |
+
msgctxt "Admin menu name"
|
265 |
+
msgid "Coupons"
|
266 |
+
msgstr "Купоны"
|
267 |
+
|
268 |
+
msgid "System Status"
|
269 |
+
msgstr "Состояние системы"
|
270 |
+
|
271 |
+
msgctxt "Admin menu name"
|
272 |
+
msgid "Orders"
|
273 |
+
msgstr "Заказы"
|
274 |
+
|
275 |
+
# @ woocommerce
|
276 |
+
#: woocommerce.php:649
|
277 |
+
msgctxt "Admin menu name"
|
278 |
+
msgid "Shipping Classes"
|
279 |
+
msgstr "Классы доставки"
|
280 |
+
|
281 |
+
# @ woocommerce
|
282 |
+
#: woocommerce.php:587
|
283 |
+
msgctxt "Admin menu name"
|
284 |
+
msgid "Categories"
|
285 |
+
msgstr "Категории"
|
286 |
+
|
287 |
+
# @ woocommerce
|
288 |
+
#: woocommerce.php:618
|
289 |
+
msgctxt "Admin menu name"
|
290 |
+
msgid "Tags"
|
291 |
+
msgstr "Метки"
|
292 |
+
|
293 |
+
# @ woocommerce
|
294 |
+
#: admin/post-types/writepanels/writepanel-product_data.php:984
|
295 |
+
msgid "Featured Product"
|
296 |
+
msgstr "Рекомендуемый товар"
|
297 |
+
|
298 |
+
# @ woocommerce
|
299 |
+
#: admin/post-types/writepanels/writepanels-init.php:36
|
300 |
+
msgid "Product Short Description"
|
301 |
+
msgstr "Краткое описание товара"
|
302 |
+
|
303 |
+
# @ woocommerce
|
304 |
+
#: admin/post-types/writepanels/writepanel-product_data.php:982
|
305 |
+
msgid "Enable this option to feature this product."
|
306 |
+
msgstr "Включите эту опцию, чтобы отметить этот товар, как рекомендуемый."
|
307 |
+
|
308 |
+
# @ woocommerce
|
309 |
+
#: admin/post-types/writepanels/writepanel-product_data.php:946
|
310 |
+
msgid "Catalog/search"
|
311 |
+
msgstr "Каталог/Поиск"
|
312 |
+
|
313 |
+
# @ woocommerce
|
314 |
+
#: admin/post-types/writepanels/writepanel-product_data.php:959
|
315 |
+
msgid "Catalog visibility:"
|
316 |
+
msgstr "Видимость:"
|
317 |
+
|
318 |
+
# @ woocommerce
|
319 |
+
#: admin/post-types/writepanels/writepanel-product_data.php:976
|
320 |
+
msgid ""
|
321 |
+
"Define the loops this product should be visible in. The product will still "
|
322 |
+
"be accessible directly."
|
323 |
+
msgstr ""
|
324 |
+
"Определите циклы, в которых этот продукт должен быть видимым. Продукт также "
|
325 |
+
"будет доступен напрямую."
|
326 |
+
|
327 |
+
# @ woocommerce
|
328 |
+
#: admin/woocommerce-admin-reports.php:36
|
329 |
+
msgid "Taxes by month"
|
330 |
+
msgstr "Налоги за месяц"
|
331 |
+
|
332 |
+
# @ woocommerce
|
333 |
+
#: admin/woocommerce-admin-reports.php:353
|
334 |
+
#: admin/woocommerce-admin-reports.php:620
|
335 |
+
#: admin/woocommerce-admin-reports.php:800
|
336 |
+
msgid "items"
|
337 |
+
msgstr "позиций"
|
338 |
+
|
339 |
+
# @ woocommerce
|
340 |
+
#: admin/woocommerce-admin-reports.php:369
|
341 |
+
msgid "Discounts used"
|
342 |
+
msgstr "Использованы купоны"
|
343 |
+
|
344 |
+
# @ woocommerce
|
345 |
+
#: admin/woocommerce-admin-reports.php:375
|
346 |
+
msgid "Total shipping costs"
|
347 |
+
msgstr "Всего расходы по доставке"
|
348 |
+
|
349 |
+
# @ woocommerce
|
350 |
+
#: admin/woocommerce-admin-reports.php:1149
|
351 |
+
#, php-format
|
352 |
+
msgid "Sales for %s:"
|
353 |
+
msgstr "Продажи %s:"
|
354 |
+
|
355 |
+
# @ woocommerce
|
356 |
+
#: admin/woocommerce-admin-dashboard.php:394
|
357 |
+
#: admin/woocommerce-admin-reports.php:193
|
358 |
+
#: admin/woocommerce-admin-reports.php:482
|
359 |
+
#: admin/woocommerce-admin-reports.php:673
|
360 |
+
#: admin/woocommerce-admin-reports.php:850
|
361 |
+
msgid "Number of sales"
|
362 |
+
msgstr "Число продаж"
|
363 |
+
|
364 |
+
# @ woocommerce
|
365 |
+
#: admin/woocommerce-admin-dashboard.php:395
|
366 |
+
#: admin/woocommerce-admin-reports.php:188
|
367 |
+
#: admin/woocommerce-admin-reports.php:482
|
368 |
+
#: admin/woocommerce-admin-reports.php:673
|
369 |
+
#: admin/woocommerce-admin-reports.php:850
|
370 |
+
msgid "Sales amount"
|
371 |
+
msgstr "Сумма продажи"
|
372 |
+
|
373 |
+
# @ woocommerce
|
374 |
+
#: admin/settings/settings-init.php:143
|
375 |
+
msgid "Enable coupons"
|
376 |
+
msgstr "Включить купоны"
|
377 |
+
|
378 |
+
# @ woocommerce
|
379 |
+
#: admin/settings/settings-init.php:152
|
380 |
+
msgid "Enable coupon form on cart"
|
381 |
+
msgstr "Активировать форму купона в корзине"
|
382 |
+
|
383 |
+
# @ woocommerce
|
384 |
+
#: admin/settings/settings-init.php:254
|
385 |
+
msgid "Enable enhanced country select boxes"
|
386 |
+
msgstr "Включить поиск страны из списка (умный поиск)"
|
387 |
+
|
388 |
+
msgid "Store Notice"
|
389 |
+
msgstr "Уведомления магазина"
|
390 |
+
|
391 |
+
# @ woocommerce
|
392 |
+
#: admin/settings/settings-init.php:551
|
393 |
+
msgid "Show subcategories"
|
394 |
+
msgstr "Показать подкатегории"
|
395 |
+
|
396 |
+
# @ woocommerce
|
397 |
+
#: admin/settings/settings-init.php:594
|
398 |
+
msgid ""
|
399 |
+
"The following options affect the fields available on the edit product page."
|
400 |
+
msgstr ""
|
401 |
+
"Следующие параметры влияют на полях, которые находятся на странице "
|
402 |
+
"редактирования продукта."
|
403 |
+
|
404 |
+
# @ woocommerce
|
405 |
+
#: admin/settings/settings-init.php:663
|
406 |
+
msgid "Product Ratings"
|
407 |
+
msgstr "Рейтинг товара"
|
408 |
+
|
409 |
+
# @ woocommerce
|
410 |
+
#: admin/settings/settings-init.php:664
|
411 |
+
msgid "Enable the star rating field on the review form"
|
412 |
+
msgstr "Активировать звездный рейтинг на форме отзывов"
|
413 |
+
|
414 |
+
# @ woocommerce
|
415 |
+
#: admin/settings/settings-init.php:673
|
416 |
+
msgid "Ratings are required to leave a review"
|
417 |
+
msgstr "Чтобы оставить отзыв, покупателю потребуется указать рейтинг товара"
|
418 |
+
|
419 |
+
# @ woocommerce
|
420 |
+
#: admin/settings/settings-init.php:682
|
421 |
+
msgid "Show \"verified owner\" label for customer reviews"
|
422 |
+
msgstr ""
|
423 |
+
|
424 |
+
# @ woocommerce
|
425 |
+
#: admin/settings/settings-init.php:692
|
426 |
+
msgid "The following options affect how prices are displayed on the frontend."
|
427 |
+
msgstr "Следующие параметры влияют на отображение цен на сайте."
|
428 |
+
|
429 |
+
# @ woocommerce
|
430 |
+
#: admin/settings/settings-init.php:745
|
431 |
+
msgid "Trailing zeros"
|
432 |
+
msgstr "Завершающие нули"
|
433 |
+
|
434 |
+
# @ woocommerce
|
435 |
+
#: admin/settings/settings-init.php:746
|
436 |
+
msgid ""
|
437 |
+
"Remove zeros after the decimal point. e.g. <code>$10.00</code> becomes <code>"
|
438 |
+
"$10</code>"
|
439 |
+
msgstr ""
|
440 |
+
"Удалить нули после запятой, например, <code>10.00 руб.</code> becomes "
|
441 |
+
"<code>10 руб.</code>"
|
442 |
+
|
443 |
+
# @ woocommerce
|
444 |
+
#: admin/settings/settings-init.php:849
|
445 |
+
msgid "Stock display format"
|
446 |
+
msgstr "Формат отображения запаса"
|
447 |
+
|
448 |
+
# @ woocommerce
|
449 |
+
#: admin/settings/settings-init.php:850
|
450 |
+
msgid "This controls how stock is displayed on the frontend."
|
451 |
+
msgstr "Эта опция определяет отображение запаса на сайте."
|
452 |
+
|
453 |
+
# @ woocommerce
|
454 |
+
#: admin/settings/settings-init.php:856
|
455 |
+
msgid "Always show stock e.g. \"12 in stock\""
|
456 |
+
msgstr "Всегда показывать запас, например, \"12 в запасе\""
|
457 |
+
|
458 |
+
# @ woocommerce
|
459 |
+
#: admin/settings/settings-init.php:857
|
460 |
+
msgid "Only show stock when low e.g. \"Only 2 left in stock\" vs. \"In Stock\""
|
461 |
+
msgstr ""
|
462 |
+
"Покавать наличие, только когда оно низкое, например, \"В наличии осталось "
|
463 |
+
"только 2\" вместо \"В наличии\""
|
464 |
+
|
465 |
+
# @ woocommerce
|
466 |
+
#: admin/settings/settings-init.php:858
|
467 |
+
msgid "Never show stock amount"
|
468 |
+
msgstr "Никогда не показывать количество запаса"
|
469 |
+
|
470 |
+
# @ woocommerce
|
471 |
+
#: admin/settings/settings-init.php:980
|
472 |
+
msgid "Display taxes even when the amount is zero"
|
473 |
+
msgstr "Показать налоги, даже если сумма равна нулю"
|
474 |
+
|
475 |
+
# @ woocommerce
|
476 |
+
#: admin/settings/settings-init.php:1030
|
477 |
+
#, php-format
|
478 |
+
msgid "Reduced Rate%sZero Rate"
|
479 |
+
msgstr "Льготный тариф%sНулевой тариф"
|
480 |
+
|
481 |
+
# @ woocommerce
|
482 |
+
#: admin/settings/settings-init.php:890
|
483 |
+
msgid "Hide shipping costs until an address is entered"
|
484 |
+
msgstr "Скрыть стоимость доставки, пока адрес не будет введен"
|
485 |
+
|
486 |
+
# @ woocommerce
|
487 |
+
#: admin/settings/settings-init.php:898
|
488 |
+
msgid "Shipping method display"
|
489 |
+
msgstr "Отображение способа доставки"
|
490 |
+
|
491 |
+
# @ woocommerce
|
492 |
+
#: admin/settings/settings-init.php:899
|
493 |
+
msgid ""
|
494 |
+
"This controls how multiple shipping methods are displayed on the frontend."
|
495 |
+
msgstr ""
|
496 |
+
"Эта опция управляет тем, как будут отображаться несколько способов доставки "
|
497 |
+
"на сайте."
|
498 |
+
|
499 |
+
# @ woocommerce
|
500 |
+
#: admin/settings/settings-init.php:912
|
501 |
+
msgid "Shipping Destination"
|
502 |
+
msgstr "Назначение доставки"
|
503 |
+
|
504 |
+
# @ woocommerce
|
505 |
+
#: admin/settings/settings-init.php:929
|
506 |
+
msgid "Collect shipping address even when not required"
|
507 |
+
msgstr "Сбор адреса доставки, даже если не требуется"
|
508 |
+
|
509 |
+
# @ woocommerce
|
510 |
+
#: admin/settings/settings-shipping-methods.php:17
|
511 |
+
msgid "Drag and drop methods to control their display order."
|
512 |
+
msgstr "Перетащите методы доставки, чтобы указать порядок их отображения."
|
513 |
+
|
514 |
+
# @ woocommerce
|
515 |
+
#: admin/settings/settings-init.php:947
|
516 |
+
msgid ""
|
517 |
+
"Installed payment gateways are displayed below. Drag and drop payment "
|
518 |
+
"gateways to control their display order on the checkout."
|
519 |
+
msgstr ""
|
520 |
+
"Установленные платежные шлюзы показаны ниже. Перетащите платежные шлюзы, "
|
521 |
+
"чтобы указать порядок их отображения при заказе."
|
522 |
+
|
523 |
+
# @ woocommerce
|
524 |
+
#: classes/gateways/bacs/class-wc-bacs.php:68
|
525 |
+
msgid "Account Details"
|
526 |
+
msgstr "Реквизиты счета"
|
527 |
+
|
528 |
+
# @ woocommerce
|
529 |
+
#: classes/gateways/bacs/class-wc-bacs.php:70
|
530 |
+
msgid "Optionally enter your bank details below for customers to pay into."
|
531 |
+
msgstr ""
|
532 |
+
"При необходимости ввести банковские реквизиты ниже для оплаты клиентами."
|
533 |
+
|
534 |
+
# @ woocommerce
|
535 |
+
#: classes/gateways/cod/class-wc-cod.php:47
|
536 |
+
msgid "Enable Cash on Delivery"
|
537 |
+
msgstr "Позволь наложенный платеж"
|
538 |
+
|
539 |
+
msgid "Pay with cash upon delivery."
|
540 |
+
msgstr "Оплата наличными при доставке."
|
541 |
+
|
542 |
+
# @ woocommerce
|
543 |
+
#: classes/integrations/sharethis/class-wc-sharethis.php:58
|
544 |
+
msgid "ShareThis Code"
|
545 |
+
msgstr "Код ShareThis"
|
546 |
+
|
547 |
+
# @ woocommerce
|
548 |
+
#: classes/integrations/sharethis/class-wc-sharethis.php:59
|
549 |
+
msgid "You can tweak the ShareThis code by editing this option."
|
550 |
+
msgstr "Вы можете настроить код ShareThis, редактированием этой опции."
|
551 |
+
|
552 |
+
# @ woocommerce
|
553 |
+
#: templates/checkout/form-billing.php:42
|
554 |
+
msgid ""
|
555 |
+
"Create an account by entering the information below. If you are a returning "
|
556 |
+
"customer please login at the top of the page."
|
557 |
+
msgstr ""
|
558 |
+
"Заполнив нижеуказанные поля, можно создать постоянный профиль на нашем "
|
559 |
+
"сайте. Если вы уже совершали покупки у нас и регистрировались ранее, то вы "
|
560 |
+
"можете авторизоваться, заполнив поле логина и пароля наверху."
|
561 |
+
|
562 |
+
# @ woocommerce
|
563 |
+
#: templates/checkout/form-shipping.php:25
|
564 |
+
msgid "Ship to billing address?"
|
565 |
+
msgstr "Отправлять на платежный адрес?"
|
566 |
+
|
567 |
+
# @ woocommerce
|
568 |
+
#: classes/class-wc-cart.php:704 classes/class-wc-cart.php:712
|
569 |
+
#, php-format
|
570 |
+
msgid ""
|
571 |
+
"<a href=\"%s\" class=\"button\">%s</a> You cannot add that amount to the "
|
572 |
+
"cart — we have %s in stock and you already have %s in your cart."
|
573 |
+
msgstr ""
|
574 |
+
"<a href=\"%s\" class=\"button\">%s</a> Вы не можете добавить этот товар в "
|
575 |
+
"таком количестве в корзину — у нас в наличии: %s, и он уже есть в "
|
576 |
+
"вашей корзине: %s."
|
readme.txt
ADDED
@@ -0,0 +1,71 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
=== Saphali Woocommerce LITE ===
|
2 |
+
Contributors: Saphali
|
3 |
+
Plugin Name: Saphali Woocommerce LITE
|
4 |
+
Plugin URI: http://saphali.com/saphali-woocommerce-plugin-wordpress
|
5 |
+
Donate link: http://saphali.com/
|
6 |
+
Tags: woocommerce, woo commerce russian, russian ruble, ukrainian hryvnia, mod, manadger filds checkout
|
7 |
+
Requires at least: 3.3 or higher
|
8 |
+
Tested up to: 3.4.2
|
9 |
+
Stable tag: 1.0
|
10 |
+
Version: 1.0
|
11 |
+
License: GPLv2 or later
|
12 |
+
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
13 |
+
|
14 |
+
Набор дополнений к магазину на Woocommerce, которые расширяют его возможности.
|
15 |
+
|
16 |
+
== Description ==
|
17 |
+
|
18 |
+
Saphali - set of additions to Woocommerce.
|
19 |
+
|
20 |
+
Это бесплатный вордпресс плагин, который добавляет набор дополнений к интернет-магазину на Woocommerce.
|
21 |
+
|
22 |
+
= Особенности =
|
23 |
+
|
24 |
+
Плагин вносит в магазин следующие дополнения:
|
25 |
+
|
26 |
+
* Улучшенная русская локализация Woocommerce (корректировка перевода + дополнительный перевод).
|
27 |
+
* В общий список валют добавлены — Украинская гривна (грн.), Русский рубль (руб.) и Белорусский рубль (руб.)
|
28 |
+
* Управление полями на странице заказа и на странице профиля. Функция позволяет настроить заказную форму регистрации, чтобы настроить магазин на упрощенение оформления заказа. Вы можете сделать некоторые поля необязательными при регистрации/оформленнии заказа либо удалить их полностью.
|
29 |
+
* Управление количеством колонок в каталоге товаров и рубриках.
|
30 |
+
|
31 |
+
Также есть коммерческие версии плагина Saphali Woocommerce, которые значительно больше расширяют функциональность интернет-магазина на осове плагина Woocommerce, адаптируют его к использованию в странах СНГ, делают магазин более удобным в использовании и администрировании, подключают основные российские и украинские способы оплаты - Приват24, LiqPay (прием оплаты с карт VISA и MasterCard), WebMoney, Яндекс.Деньги, ROBOKASSA, QIWI.
|
32 |
+
Подробнее на сайте http://saphali.com/saphali-woocommerce-plugin-wordpress
|
33 |
+
|
34 |
+
== Installation ==
|
35 |
+
|
36 |
+
1. Разархивируйте содержимое zip файла в папку плагинов вашего сайта (wp-content/plugins/), используя вашу любимую FTP программу.
|
37 |
+
2. Активируйте плагин на странице "Плагины" в панели администратора.
|
38 |
+
3. Все установка завершена.
|
39 |
+
|
40 |
+
== Screenshots ==
|
41 |
+
|
42 |
+
1. Улучшенная русская локализация Woocommerce. В общий список валют добавлены — Украинская гривна (грн.), Русский рубль (руб.) и Белорусский рубль (руб.)
|
43 |
+
2. Управление полями на странице заказа и на странице профиля. Функция позволяет настроить заказную форму регистрации, чтобы настроить магазин на упрощенение оформления заказа. Вы можете сделать некоторые поля необязательными при регистрации/оформленнии заказа либо удалить их полностью.
|
44 |
+
3. Управление количеством колонок в каталоге товаров и рубриках.
|
45 |
+
|
46 |
+
== Changelog ==
|
47 |
+
|
48 |
+
= 1.0 =
|
49 |
+
* Улучшенная русская локализация Woocommerce (корректировка перевода + дополнительный перевод).
|
50 |
+
* В общий список валют добавлены — Украинская гривна (грн.), Русский рубль (руб.) и Белорусский рубль (руб.)
|
51 |
+
* Управление полями на странице заказа и на странице профиля. Функция позволяет настроить заказную форму регистрации, чтобы настроить магазин на упрощенение оформления заказа. Вы можете сделать некоторые поля необязательными при регистрации/оформленнии заказа либо удалить их полностью.
|
52 |
+
* Управление количеством колонок в каталоге товаров и рубриках.
|
53 |
+
|
54 |
+
|
55 |
+
|
56 |
+
== License ==
|
57 |
+
|
58 |
+
Этот плагин является бесплатным для всех, поскольку он выпущен под GPL. Вы можете использовать его бесплатно в ваших интернет-магазинах. Но если Вам нравится этот плагин, вы можете поблагодарить нас, если поделитесь с друзями и коллегами ссылкой на наш сайт.
|
59 |
+
|
60 |
+
== Translations ==
|
61 |
+
|
62 |
+
Мы допускаем, что русскую локализацию для Woocommerce можно еще больше улучшить. Если вы заметили в настройках Woocommerce некорректный перевод или его можно заменить на альтернативный и более подходящий, напишите об этом нам.
|
63 |
+
|
64 |
+
== Demo ==
|
65 |
+
Проверить этот плагин в работе вы можете на нашем сайте http://saphali.com/ - на странице "Демо Интернет-магазин".
|
66 |
+
|
67 |
+
== Upgrade Notice ==
|
68 |
+
|
69 |
+
= 1.0 =
|
70 |
+
Выпущен релиз.
|
71 |
+
|
saphali-woocommerce-lite.php
ADDED
@@ -0,0 +1,556 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/*
|
3 |
+
Plugin Name: Saphali Woocommerce LITE
|
4 |
+
Plugin URI: http://saphali.com/
|
5 |
+
Description: Saphali Woocommerce LITE - это бесплатный вордпресс плагин, который добавляет набор дополнений к интернет-магазину на Woocommerce.
|
6 |
+
Version: 1.0
|
7 |
+
Author: Saphali
|
8 |
+
Author URI: http://saphali.com/saphali-woocommerce-plugin-wordpress
|
9 |
+
*/
|
10 |
+
|
11 |
+
|
12 |
+
/*
|
13 |
+
|
14 |
+
This program is free software; you can redistribute it and/or modify
|
15 |
+
it under the terms of the GNU General Public License, version 2, as
|
16 |
+
published by the Free Software Foundation.
|
17 |
+
|
18 |
+
This program is distributed in the hope that it will be useful,
|
19 |
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
20 |
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
21 |
+
GNU General Public License for more details.
|
22 |
+
|
23 |
+
You should have received a copy of the GNU General Public License
|
24 |
+
along with this program; if not, write to the Free Software
|
25 |
+
|
26 |
+
*/
|
27 |
+
|
28 |
+
|
29 |
+
/* Add a custom payment class to woocommerce
|
30 |
+
------------------------------------------------------------ */
|
31 |
+
// Подключение валюты и локализации
|
32 |
+
define('SAPHALI_PLUGIN_DIR_URL',plugin_dir_url(__FILE__));
|
33 |
+
define('SAPHALI_PLUGIN_DIR_PATH',plugin_dir_path(__FILE__));
|
34 |
+
function add_inr_currency( $currencies ) {
|
35 |
+
$currencies['UAH'] = __( 'Ukrainian hryvnia ( grn.)', 'themewoocommerce' );
|
36 |
+
$currencies['RUR'] = __( 'Russian ruble ( rub.)', 'themewoocommerce' );
|
37 |
+
$currencies['BYR'] = __( 'Belarusian ruble ( Br.)', 'themewoocommerce' );
|
38 |
+
return $currencies;
|
39 |
+
}
|
40 |
+
|
41 |
+
function add_inr_currency_symbol( $symbol ) {
|
42 |
+
$currency = get_option( 'woocommerce_currency' );
|
43 |
+
switch( $currency ) {
|
44 |
+
case 'UAH': $symbol = 'грн.'; break;
|
45 |
+
case 'RUB': $symbol = 'руб.'; break;
|
46 |
+
case 'RUR': $symbol = 'руб.'; break;
|
47 |
+
case 'BYR': $symbol = 'руб.'; break;
|
48 |
+
}
|
49 |
+
return $symbol;
|
50 |
+
}
|
51 |
+
|
52 |
+
|
53 |
+
//END
|
54 |
+
|
55 |
+
add_action('plugins_loaded', 'woocommerce_lang', 0);
|
56 |
+
function woocommerce_lang() {
|
57 |
+
|
58 |
+
add_action('admin_menu', 'woocommerce_saphali_admin_menu', 9);
|
59 |
+
load_plugin_textdomain( 'woocommerce', false, dirname( plugin_basename( __FILE__ ) ) . '/languages' );
|
60 |
+
load_plugin_textdomain( 'themewoocommerce', false, dirname( plugin_basename( __FILE__ ) ) . '/languages' );
|
61 |
+
if($_GET['page'] != 'woocommerce_saphali' && $_GET['tab'] !=1) {
|
62 |
+
// Hook in
|
63 |
+
add_filter( 'woocommerce_checkout_fields' , 'saphali_custom_override_checkout_fields' );
|
64 |
+
add_filter( 'woocommerce_billing_fields', 'saphali_custom_billing_fields', 10, 1 );
|
65 |
+
add_filter( 'woocommerce_shipping_fields', 'saphali_custom_shipping_fields', 10, 1 );
|
66 |
+
}
|
67 |
+
// Our hooked in function - $fields is passed via the filter!
|
68 |
+
function saphali_custom_override_checkout_fields( $fields ) {
|
69 |
+
|
70 |
+
$fieldss = get_option('woocommerce_saphali_filds_filters');
|
71 |
+
if(is_array($fieldss)) {
|
72 |
+
$fields["billing"] = $fieldss["billing"];
|
73 |
+
$fields["shipping"] = $fieldss["shipping"];
|
74 |
+
$fields["order"] = $fieldss["order"];
|
75 |
+
}
|
76 |
+
return $fields;
|
77 |
+
}
|
78 |
+
function saphali_custom_billing_fields( $fields ) {
|
79 |
+
|
80 |
+
$fieldss = get_option('woocommerce_saphali_filds_filters');
|
81 |
+
if(is_array($fieldss))
|
82 |
+
$fields = $fieldss["billing"];
|
83 |
+
return $fields;
|
84 |
+
}
|
85 |
+
function saphali_custom_shipping_fields( $fields ) {
|
86 |
+
|
87 |
+
$fieldss = get_option('woocommerce_saphali_filds_filters');
|
88 |
+
if(is_array($fieldss))
|
89 |
+
$fields = $fieldss["shipping"];
|
90 |
+
return $fields;
|
91 |
+
}
|
92 |
+
add_filter( 'woocommerce_currencies', 'add_inr_currency' );
|
93 |
+
add_filter( 'woocommerce_currency_symbol', 'add_inr_currency_symbol' );
|
94 |
+
add_action( 'admin_enqueue_scripts', 'admin_enqueue_scripts_page_saphali' );
|
95 |
+
|
96 |
+
function admin_enqueue_scripts_page_saphali() {
|
97 |
+
if($_GET['page'] == 'woocommerce_saphali' && $_GET['tab'] ==1 )
|
98 |
+
wp_enqueue_script( 'tablednd', plugins_url('/js/jquery.tablednd.0.5.js', __FILE__) );
|
99 |
+
}
|
100 |
+
|
101 |
+
|
102 |
+
function woocommerce_saphali_page () {
|
103 |
+
|
104 |
+
|
105 |
+
?>
|
106 |
+
<div class="wrap woocommerce"><div class="icon32 icon32-woocommerce-reports" id="icon-woocommerce"><br /></div>
|
107 |
+
<h2 class="nav-tab-wrapper woo-nav-tab-wrapper">
|
108 |
+
Настройки Saphali WC
|
109 |
+
</h2>
|
110 |
+
<ul class="subsubsub">
|
111 |
+
|
112 |
+
<li><a href="admin.php?page=woocommerce_saphali" <? if($_GET["tab"] == '') echo 'class="current"';?>><span color="red">Переход на PRO версии</span></a> | </li>
|
113 |
+
<li><a href="admin.php?page=woocommerce_saphali&tab=1" <? if($_GET["tab"] == 1) echo 'class="current"';?>>Управление полями</a> | </li>
|
114 |
+
<li><a href="admin.php?page=woocommerce_saphali&tab=2" <? if($_GET["tab"] == 2) echo 'class="current"';?>>Число колонок в каталоге</a></li>
|
115 |
+
|
116 |
+
</ul>
|
117 |
+
<? if($_GET["tab"] == '') {?>
|
118 |
+
<div class="clear"></div>
|
119 |
+
<h2 class="woo-nav-tab-wrapper">Переход на PRO версии</h2>
|
120 |
+
<? include_once (SAPHALI_PLUGIN_DIR_PATH . 'go_pro.php'); ?>
|
121 |
+
|
122 |
+
<?php } elseif($_GET["tab"] == 2) {?>
|
123 |
+
<div class="clear"></div>
|
124 |
+
<h2 class="woo-nav-tab-wrapper">Число колонок в каталоге товаров и в рубриках</h2>
|
125 |
+
<? include_once (SAPHALI_PLUGIN_DIR_PATH . 'count-column.php'); ?>
|
126 |
+
|
127 |
+
<?php } elseif($_GET["tab"] == 1) {
|
128 |
+
global $woocommerce;
|
129 |
+
$f = $woocommerce->checkout();
|
130 |
+
if($_POST){
|
131 |
+
if($_POST["reset"] != 'All') {
|
132 |
+
if(is_array($_POST["billing"]["new_fild"])) {
|
133 |
+
foreach($_POST["billing"]["new_fild"] as $k_nf => $v_nf) {
|
134 |
+
if($k_nf == 'name')
|
135 |
+
foreach($v_nf as $v_nf_f)
|
136 |
+
$new_fild[] = $v_nf_f;
|
137 |
+
else {
|
138 |
+
foreach($v_nf as $k_nf_f => $v_nf_f) {
|
139 |
+
$addFild["billing"][$new_fild[$k_nf_f]][$k_nf] = $v_nf_f;
|
140 |
+
}
|
141 |
+
}
|
142 |
+
}
|
143 |
+
unset($_POST["billing"]["new_fild"]);
|
144 |
+
}
|
145 |
+
if(is_array($_POST["shipping"]["new_fild"])) {
|
146 |
+
foreach($_POST["shipping"]["new_fild"] as $k_nf => $v_nf) {
|
147 |
+
if($k_nf == 'name')
|
148 |
+
foreach($v_nf as $v_nf_f)
|
149 |
+
$new_fild[] = $v_nf_f;
|
150 |
+
else {
|
151 |
+
foreach($v_nf as $k_nf_f => $v_nf_f) {
|
152 |
+
$addFild["shipping"][$new_fild[$k_nf_f]][$k_nf] = $v_nf_f;
|
153 |
+
}
|
154 |
+
}
|
155 |
+
}
|
156 |
+
unset($_POST["shipping"]["new_fild"]);
|
157 |
+
}
|
158 |
+
if(is_array($_POST["order"]["new_fild"])) {
|
159 |
+
foreach($_POST["order"]["new_fild"] as $k_nf => $v_nf) {
|
160 |
+
if($k_nf == 'name')
|
161 |
+
foreach($v_nf as $v_nf_f)
|
162 |
+
$new_fild[] = $v_nf_f;
|
163 |
+
else {
|
164 |
+
foreach($v_nf as $k_nf_f => $v_nf_f) {
|
165 |
+
$addFild["order"][$new_fild[$k_nf_f]][$k_nf] = $v_nf_f;
|
166 |
+
}
|
167 |
+
}
|
168 |
+
}
|
169 |
+
unset($_POST["order"]["new_fild"]);
|
170 |
+
}
|
171 |
+
$filds = $f->checkout_fields;
|
172 |
+
foreach($filds["billing"] as $key_post => $value_post) {
|
173 |
+
$filds_new["billing"][$_POST["billing"][$key_post]["order"]][$key_post] = $value_post;
|
174 |
+
foreach($value_post as $k_post=> $v_post){
|
175 |
+
if($_POST["billing"][$key_post]['public'] != 'on') {
|
176 |
+
$filds_new["billing"][$_POST["billing"][$key_post]["order"]][$key_post]["public"] = false;
|
177 |
+
$fild_remove_filter["billing"][] = $key_post;
|
178 |
+
} else {$filds_new["billing"][$_POST["billing"][$key_post]["order"]][$key_post]["public"] = true;}
|
179 |
+
if($k_post == 'required') {$_POST["billing"][$key_post]['required'] = ($_POST["billing"][$key_post]['required'] == 'on') ? true : false ; }
|
180 |
+
|
181 |
+
if( $_POST["billing"][$key_post][$k_post] != $v_post && isset($_POST["billing"][$key_post][$k_post]) ) {
|
182 |
+
$filds_new["billing"][$_POST["billing"][$key_post]["order"]][$key_post][$k_post] = $_POST["billing"][$key_post][$k_post];
|
183 |
+
}
|
184 |
+
|
185 |
+
}
|
186 |
+
unset($_POST["billing"][$key_post]);
|
187 |
+
}
|
188 |
+
foreach($filds["shipping"] as $key_post => $value_post) {
|
189 |
+
$filds_new["shipping"][$_POST["shipping"][$key_post]["order"]][$key_post] = $value_post;
|
190 |
+
|
191 |
+
if($_POST["shipping"][$key_post]['public'] != 'on') {
|
192 |
+
$filds_new["shipping"][$_POST["shipping"][$key_post]["order"]][$key_post]["public"] = false;
|
193 |
+
$fild_remove_filter["shipping"][] = $key_post;
|
194 |
+
} else {$filds_new["shipping"][$_POST["shipping"][$key_post]["order"]][$key_post]["public"] = true;}
|
195 |
+
|
196 |
+
foreach($value_post as $k_post=> $v_post){
|
197 |
+
if($k_post == 'required') {$_POST["shipping"][$key_post]['required'] = ($_POST["shipping"][$key_post]['required'] == 'on') ? true : false ; }
|
198 |
+
|
199 |
+
if( $_POST["shipping"][$key_post][$k_post] != $v_post && isset($_POST["shipping"][$key_post][$k_post]) ) {
|
200 |
+
$filds_new["shipping"][$_POST["shipping"][$key_post]["order"]][$key_post][$k_post] = $_POST["shipping"][$key_post][$k_post];
|
201 |
+
}
|
202 |
+
|
203 |
+
}
|
204 |
+
unset($_POST["shipping"][$key_post]);
|
205 |
+
}
|
206 |
+
|
207 |
+
foreach($filds["order"] as $key_post => $value_post) {
|
208 |
+
$filds_new["order"][$_POST["order"][$key_post]["order"]][$key_post] = $value_post;
|
209 |
+
if($_POST["order"][$key_post]['public'] != 'on') {
|
210 |
+
$filds_new["order"][$_POST["order"][$key_post]["order"]][$key_post]["public"] = false;
|
211 |
+
$fild_remove_filter["order"][] = $key_post;
|
212 |
+
} else {$filds_new["order"][$_POST["order"][$key_post]["order"]][$key_post]["public"] = true;}
|
213 |
+
foreach($value_post as $k_post=> $v_post){
|
214 |
+
if($k_post == 'required') {$_POST["order"][$key_post]['required'] = ($_POST["order"][$key_post]['required'] == 'on') ? true : false ; }
|
215 |
+
|
216 |
+
if( $_POST["order"][$key_post][$k_post] != $v_post && isset($_POST["order"][$key_post][$k_post]) ) {
|
217 |
+
$filds_new["order"][$_POST["order"][$key_post]["order"]][$key_post][$k_post] = $_POST["order"][$key_post][$k_post];
|
218 |
+
}
|
219 |
+
|
220 |
+
}
|
221 |
+
unset($_POST["order"][$key_post]);
|
222 |
+
}
|
223 |
+
|
224 |
+
if(!empty($_POST["billing"])) {
|
225 |
+
foreach($_POST["billing"] as $k_post => $v_post) {
|
226 |
+
if($v_post["public"] != 'on' )
|
227 |
+
$fild_remove_filter["billing"][] = $k_post;
|
228 |
+
}
|
229 |
+
}
|
230 |
+
if(!empty($_POST["shipping"])) {
|
231 |
+
foreach($_POST["shipping"] as $k_post => $v_post) {
|
232 |
+
if($v_post["public"] != 'on' )
|
233 |
+
$fild_remove_filter["shipping"][] = $k_post;
|
234 |
+
}
|
235 |
+
}
|
236 |
+
if(!empty($_POST["order"])) {
|
237 |
+
foreach($_POST["order"] as $k_post => $v_post) {
|
238 |
+
if($v_post["public"] != 'on' )
|
239 |
+
$fild_remove_filter["order"][] = $k_post;
|
240 |
+
}
|
241 |
+
}
|
242 |
+
$filds_finish["billing"] = $filds_finish["shipping"] = $filds_finish["order"] = array();
|
243 |
+
|
244 |
+
for($i = 0; $i<count($filds_new["billing"]); $i++) {
|
245 |
+
if(isset($filds_new["billing"][$i]))
|
246 |
+
$filds_finish["billing"] = $filds_finish["billing"] + $filds_new["billing"][$i];
|
247 |
+
}
|
248 |
+
for($i = 0; $i<count($filds_new["shipping"]); $i++) {
|
249 |
+
if(isset($filds_new["shipping"][$i]))
|
250 |
+
$filds_finish["shipping"] = $filds_finish["shipping"] + $filds_new["shipping"][$i];
|
251 |
+
}
|
252 |
+
for($i = 0; $i<count($filds_new["order"]); $i++) {
|
253 |
+
if(isset($filds_new["order"][$i]))
|
254 |
+
$filds_finish["order"] = $filds_finish["order"] + $filds_new["order"][$i];
|
255 |
+
}
|
256 |
+
|
257 |
+
if(is_array($addFild["billing"]))
|
258 |
+
$filds_finish["billing"] = $filds_finish["billing"] + $addFild["billing"];
|
259 |
+
if(is_array($addFild["shipping"]))
|
260 |
+
$filds_finish["shipping"] = $filds_finish["shipping"] + $addFild["shipping"]+ $_POST["shipping"];
|
261 |
+
if(is_array($addFild["order"]))
|
262 |
+
$filds_finish["order"] = $filds_finish["order"] + $addFild["order"] + $_POST["order"];
|
263 |
+
|
264 |
+
if(is_array($_POST["billing"]))
|
265 |
+
$filds_finish["billing"] = $filds_finish["billing"] + $_POST["billing"];
|
266 |
+
if(is_array($_POST["shipping"]))
|
267 |
+
$filds_finish["shipping"] = $filds_finish["shipping"] + $_POST["shipping"];
|
268 |
+
if(is_array($_POST["order"]))
|
269 |
+
$filds_finish["order"] = $filds_finish["order"] + $_POST["order"];
|
270 |
+
|
271 |
+
$filds_finish_filter = $filds_finish;
|
272 |
+
if(is_array($fild_remove_filter["billing"])) {
|
273 |
+
foreach($fild_remove_filter["billing"] as $v_filt){
|
274 |
+
unset($filds_finish_filter["billing"][$v_filt]);
|
275 |
+
}
|
276 |
+
}
|
277 |
+
if(is_array($fild_remove_filter["shipping"])) {
|
278 |
+
foreach($fild_remove_filter["shipping"] as $v_filt){
|
279 |
+
unset($filds_finish_filter["shipping"][$v_filt]);
|
280 |
+
}
|
281 |
+
}
|
282 |
+
if(is_array($fild_remove_filter["order"])) {
|
283 |
+
foreach($fild_remove_filter["order"] as $v_filt){
|
284 |
+
unset($filds_finish_filter["order"][$v_filt]);
|
285 |
+
}
|
286 |
+
}
|
287 |
+
if(!update_option('woocommerce_saphali_filds',$filds_finish))add_option('woocommerce_saphali_filds',$filds_finish);
|
288 |
+
if(!update_option('woocommerce_saphali_filds_filters',$filds_finish_filter))add_option('woocommerce_saphali_filds_filters',$filds_finish_filter);
|
289 |
+
} else {
|
290 |
+
delete_option('woocommerce_saphali_filds');
|
291 |
+
delete_option('woocommerce_saphali_filds_filters');
|
292 |
+
}
|
293 |
+
}
|
294 |
+
|
295 |
+
?>
|
296 |
+
<div class="clear"></div>
|
297 |
+
<h3 class="nav-tab-wrapper woo-nav-tab-wrapper" style="text-align: center;">Управление полями на странице заказа и на странице профиля</h3>
|
298 |
+
|
299 |
+
<h2 align="center">Реквизиты оплаты</h2>
|
300 |
+
<form action="" method="post">
|
301 |
+
<table class="wp-list-table widefat fixed posts" cellspacing="0">
|
302 |
+
<thead>
|
303 |
+
<tr>
|
304 |
+
<th width="115px">Название</th>
|
305 |
+
<th>Заголовок</th>
|
306 |
+
<th>Текст в поле</th>
|
307 |
+
<th>Обязательное</th>
|
308 |
+
|
309 |
+
<th>Обубликовать</th>
|
310 |
+
|
311 |
+
<th>Удалить/Добавить</th>
|
312 |
+
</tr>
|
313 |
+
</thead>
|
314 |
+
<tfoot>
|
315 |
+
<tr>
|
316 |
+
<th>Название</th>
|
317 |
+
<th>Заголовок</th>
|
318 |
+
<th>Текст в поле</th>
|
319 |
+
<th>Обязательное</th>
|
320 |
+
|
321 |
+
<th>Обубликовать</th>
|
322 |
+
|
323 |
+
<th>Удалить/Добавить</th>
|
324 |
+
</tr>
|
325 |
+
</tfoot>
|
326 |
+
<tbody id="the-list" class="myTable">
|
327 |
+
<?
|
328 |
+
|
329 |
+
$count = 0;
|
330 |
+
|
331 |
+
$checkout_fields = get_option('woocommerce_saphali_filds');
|
332 |
+
|
333 |
+
if(is_array($checkout_fields["billing"])) $f->checkout_fields["billing"] = $checkout_fields["billing"];
|
334 |
+
foreach($f->checkout_fields["billing"] as $key => $value) {
|
335 |
+
if(empty($value['public']) && !is_array($checkout_fields["billing"])) $value['public'] = true;
|
336 |
+
?>
|
337 |
+
<tr>
|
338 |
+
<td><input value='<?=$key?>' type="text" name="billing[<?=$key?>][name]" /></td>
|
339 |
+
<td><input value='<?=$value['label']?>' type="text" name="billing[<?=$key?>][label]" /></td>
|
340 |
+
<td><input value='<?=$value['placeholder']?>' type="text" name="billing[<?=$key?>][placeholder]" /></td>
|
341 |
+
<td><input <? if($value['required']) echo 'checked'?> type="checkbox" name="billing[<?=$key?>][required]" /></td>
|
342 |
+
|
343 |
+
<td><input <? if($value['public']) echo 'checked';?> type="checkbox" name="billing[<?=$key?>][public]" /></td>
|
344 |
+
|
345 |
+
<td><input rel="sort_order" id="order_count" type="hidden" name="billing[<?=$key?>][order]" value="<?=$count?>" />
|
346 |
+
<input type="button" class="button" id="billing_delete" value="Удалить -"/></td>
|
347 |
+
</tr>
|
348 |
+
<? $count++;
|
349 |
+
}
|
350 |
+
?>
|
351 |
+
<tr class="nodrop nodrag">
|
352 |
+
<td></td>
|
353 |
+
<td></td>
|
354 |
+
<td></td>
|
355 |
+
<td></td>
|
356 |
+
|
357 |
+
<td></td>
|
358 |
+
|
359 |
+
<td><input type="button" class="button" id="billing" value="Добавить +"/></td>
|
360 |
+
</tr>
|
361 |
+
</tbody>
|
362 |
+
</table>
|
363 |
+
|
364 |
+
<h2 align="center">Реквизиты доставки</h2>
|
365 |
+
<table class="wp-list-table widefat fixed posts" cellspacing="0">
|
366 |
+
<thead>
|
367 |
+
<tr>
|
368 |
+
<th width="115px">Название</th>
|
369 |
+
<th>Заголовок</th>
|
370 |
+
<th>Текст в поле</th>
|
371 |
+
<th>Обязательное</th>
|
372 |
+
|
373 |
+
<th>Обубликовать</th>
|
374 |
+
|
375 |
+
<th>Удалить/Добавить</th>
|
376 |
+
</tr>
|
377 |
+
</thead>
|
378 |
+
<tfoot>
|
379 |
+
<tr>
|
380 |
+
<th>Название</th>
|
381 |
+
<th>Заголовок</th>
|
382 |
+
<th>Текст в поле</th>
|
383 |
+
<th>Обязательное</th>
|
384 |
+
|
385 |
+
<th>Обубликовать</th>
|
386 |
+
|
387 |
+
<th>Удалить/Добавить</th>
|
388 |
+
</tr>
|
389 |
+
</tfoot>
|
390 |
+
<tbody id="the-list" class="myTable">
|
391 |
+
<? $count = 0;
|
392 |
+
if(is_array($checkout_fields["shipping"])) $f->checkout_fields["shipping"] = $checkout_fields["shipping"];
|
393 |
+
foreach($f->checkout_fields["shipping"] as $key => $value) {
|
394 |
+
if( empty($value['public']) && !is_array($checkout_fields["billing"]) ) $value['public'] = true;
|
395 |
+
?>
|
396 |
+
<tr>
|
397 |
+
<td><input disabled value=<?=$key?> type="text" name="shipping[<?=$key?>][name]" /></td>
|
398 |
+
<td><input value='<?=$value['label']?>' type="text" name="shipping[<?=$key?>][label]" /></td>
|
399 |
+
<td><input value='<?=$value['placeholder']?>' type="text" name="shipping[<?=$key?>][placeholder]" /></td>
|
400 |
+
<td><input <? if($value['required']) echo 'checked'?> type="checkbox" name="shipping[<?=$key?>][required]" /></td>
|
401 |
+
|
402 |
+
<td><input <? if($value['public']) echo 'checked';?> type="checkbox" name="shipping[<?=$key?>][public]" /></td>
|
403 |
+
|
404 |
+
<td><input rel="sort_order" id="order_count" type="hidden" name="shipping[<?=$key?>][order]" value="<?=$count?>" /><input type="button" class="button" id="billing_delete" value="Удалить -"/></td>
|
405 |
+
</tr>
|
406 |
+
<? $count++;
|
407 |
+
}
|
408 |
+
?>
|
409 |
+
<tr class="nodrop nodrag">
|
410 |
+
<td></td>
|
411 |
+
<td></td>
|
412 |
+
<td></td>
|
413 |
+
|
414 |
+
<td></td>
|
415 |
+
<td></td>
|
416 |
+
|
417 |
+
<td><input type="button" class="button" id="shipping" value="Добавить +"/></td>
|
418 |
+
</tr>
|
419 |
+
|
420 |
+
</tbody>
|
421 |
+
</table>
|
422 |
+
<br />
|
423 |
+
<h2 align="center">Дополнительные поля</h2>
|
424 |
+
<table class="wp-list-table widefat fixed posts" cellspacing="0">
|
425 |
+
<thead>
|
426 |
+
<tr>
|
427 |
+
<th width="120px">Название</th>
|
428 |
+
<th>Заголовок</th>
|
429 |
+
<th>Текст в поле</th>
|
430 |
+
<th>Тип поля</th>
|
431 |
+
<th>Обубликовать</th>
|
432 |
+
|
433 |
+
<th>Удалить/Добавить</th>
|
434 |
+
</tr>
|
435 |
+
</thead>
|
436 |
+
<tfoot>
|
437 |
+
<tr>
|
438 |
+
<th>Название</th>
|
439 |
+
<th>Заголовок</th>
|
440 |
+
<th>Текст в поле</th>
|
441 |
+
<th>Тип поля</th>
|
442 |
+
<th>Обубликовать</th>
|
443 |
+
|
444 |
+
<th>Удалить/Добавить</th>
|
445 |
+
</tr>
|
446 |
+
</tfoot>
|
447 |
+
<tbody id="the-list" class="myTable">
|
448 |
+
<? $count = 0;
|
449 |
+
if(is_array($checkout_fields["order"])) $f->checkout_fields["order"] = $checkout_fields["order"];
|
450 |
+
foreach($f->checkout_fields["order"] as $key => $value) {
|
451 |
+
if(empty($value['public']) && !is_array($checkout_fields["billing"])) $value['public'] = true;
|
452 |
+
?>
|
453 |
+
<tr>
|
454 |
+
<td><input disabled value=<?=$key?> type="text" name="order[<?=$key?>][name]" /></td>
|
455 |
+
<td><input value='<?=$value['label']?>' type="text" name="order[<?=$key?>][label]" /></td>
|
456 |
+
<td><input value='<?=$value['placeholder']?>' type="text" name="order[<?=$key?>][placeholder]" /></td>
|
457 |
+
<td><input value='<?=$value['type']?>' type="text" name="order[<?=$key?>][type]" /></td>
|
458 |
+
<td><input <? if($value['public']) echo 'checked';?> type="checkbox" name="order[<?=$key?>][public]" /></td>
|
459 |
+
|
460 |
+
<td><input id="order_count" rel="sort_order" type="hidden" name="order[<?=$key?>][order]" value="<?=$count?>" /><input type="button" class="button" id="billing_delete" value="Удалить -"/></td>
|
461 |
+
</tr>
|
462 |
+
<? $count++;
|
463 |
+
}
|
464 |
+
?>
|
465 |
+
<tr class="nodrop nodrag">
|
466 |
+
<td></td>
|
467 |
+
<td></td>
|
468 |
+
<td></td>
|
469 |
+
<td></td>
|
470 |
+
<td></td>
|
471 |
+
|
472 |
+
<td><input type="button" class="button" id="order" value="Добавить +"/></td>
|
473 |
+
</tr>
|
474 |
+
</tbody>
|
475 |
+
</table><br />
|
476 |
+
<input type="submit" class="button alignleft" value="Сохранить"/>
|
477 |
+
</form>
|
478 |
+
<form action="" method="post">
|
479 |
+
<input type="hidden" name="reset" value="All"/>
|
480 |
+
<input type="submit" class="button alignright" value="Восстановить поля по умолчанию"/>
|
481 |
+
</form>
|
482 |
+
|
483 |
+
<script>
|
484 |
+
jQuery('.button#billing').live('click',function() {
|
485 |
+
var obj = jQuery(this).parent().parent();
|
486 |
+
obj.html('<td><input value="new_fild'+(parseInt(obj.parent().find('tr td input#order_count:last').val(),10)+1)+'" type="text" name="billing[new_fild][name][]" /></td><td><input value="" type="text" name="billing[new_fild][label][]" /></td><td><input value="" type="text" name="billing[new_fild][placeholder][]" /></td><td><input checked type="checkbox" name="billing[new_fild][required][]" /></td><td><input checked type="checkbox" name="billing[new_fild][public][]" /></td><td><input id="order_count" rel="sort_order" type="hidden" name="billing[new_fild][order][]" value="'+(parseInt(obj.parent().find('tr td input#order_count:last').val(),10)+1)+'" /><input type="button" class="button" id="billing_delete" value="Удалить -"/></td>');
|
487 |
+
obj.removeClass('nodrop nodrag');
|
488 |
+
obj.after('<tr class="nodrop nodrag"><td></td><td></td><td></td><td></td><td></td><td><input type="button" class="button" id="billing" value="Добавить +"/></td></tr>');
|
489 |
+
});
|
490 |
+
jQuery('.button#shipping').live('click',function() {
|
491 |
+
var obj = jQuery(this).parent().parent();
|
492 |
+
obj.html('<td><input value="new_fild'+(parseInt(obj.parent().find('tr td input#order_count:last').val(),10)+1)+'" type="text" name="shipping[new_fild][name][]" /></td><td><input value="" type="text" name="shipping[new_fild][label][]" /></td><td><input value="" type="text" name="shipping[new_fild][placeholder][]" /></td><td><input checked type="checkbox" name="shipping[new_fild][required][]" /></td><td><input checked type="checkbox" name="shipping[new_fild][public][]" /></td><td><input id="order_count" rel="sort_order" type="hidden" name="shipping[new_fild][order][]" value="'+(parseInt(obj.parent().find('tr td input#order_count:last').val(),10)+1)+'" /><input type="button" class="button" id="billing_delete" value="Удалить -"/></td>');
|
493 |
+
obj.removeClass('nodrop nodrag');
|
494 |
+
obj.after('<tr class="nodrop nodrag"><td></td><td></td><td></td><td></td><td></td><td><input type="button" class="button" id="shipping" value="Добавить +"/></td></tr>');
|
495 |
+
});
|
496 |
+
jQuery('.button#order').live('click',function() {
|
497 |
+
var obj = jQuery(this).parent().parent();
|
498 |
+
obj.html('<td><input value="new_fild'+(parseInt(obj.parent().find('tr td input#order_count:last').val(),10)+1)+'" type="text" name="order[new_fild][name][]" /></td><td><input value="" type="text" name="order[new_fild][label][]" /></td><td><input value="" type="text" name="order[new_fild][placeholder][]" /></td><td><input checked type="text" name="order[new_fild][type][]" /></td><td><input checked type="checkbox" name="order[new_fild][public][]" /></td><td><input id="order_count" rel="sort_order" type="hidden" name="order[new_fild][order][]" value="'+(parseInt(obj.parent().find('tr td input#order_count:last').val(),10)+1)+'" /><input type="button" class="button" id="billing_delete" value="Удалить -"/></td>');
|
499 |
+
obj.removeClass('nodrop nodrag');
|
500 |
+
obj.after('<tr class="nodrop nodrag"><td></td><td></td><td></td><td></td><td></td><td><input type="button" class="button" id="order" value="Добавить +"/></td></tr>');
|
501 |
+
});
|
502 |
+
|
503 |
+
jQuery('.button#billing_delete').live('click',function() {
|
504 |
+
var obj = jQuery(this).parent().parent();
|
505 |
+
var obj_r = obj.parent();
|
506 |
+
obj.remove();
|
507 |
+
obj_r.find("tr").each(function(i, e){
|
508 |
+
jQuery(e).find("td input#order_count").val(i);
|
509 |
+
});
|
510 |
+
});
|
511 |
+
jQuery(document).ready(function() {
|
512 |
+
jQuery(".myTable").tableDnD({
|
513 |
+
onDragClass: "sorthelper",
|
514 |
+
onDrop: function(table, row) {
|
515 |
+
var data = new Object();
|
516 |
+
data.data = new Object();
|
517 |
+
data.key = jQuery(table).find("tr td input").attr("rel");
|
518 |
+
jQuery(row).fadeOut("fast").fadeIn("slow");
|
519 |
+
|
520 |
+
jQuery(table).find("tr").each(function(i, e){
|
521 |
+
var id = jQuery(e).find("td input#order_count").attr("id");
|
522 |
+
data.data[i] = id;
|
523 |
+
jQuery(e).find("td input#order_count").val(i);
|
524 |
+
});
|
525 |
+
}
|
526 |
+
});
|
527 |
+
});
|
528 |
+
</script>
|
529 |
+
<? } ?>
|
530 |
+
|
531 |
+
</div>
|
532 |
+
<?
|
533 |
+
}
|
534 |
+
}
|
535 |
+
function woocommerce_saphali_admin_menu() {
|
536 |
+
add_submenu_page('woocommerce', __('Настройки Saphali WC Lite', 'woocommerce'), __('Saphali WC Lite', 'woocommerce') , 'manage_woocommerce', 'woocommerce_saphali', 'woocommerce_saphali_page');
|
537 |
+
}
|
538 |
+
$column_count_saphali = get_option('column_count_saphali');
|
539 |
+
if(!empty($column_count_saphali)) {
|
540 |
+
global $woocommerce_loop;
|
541 |
+
$woocommerce_loop['columns'] = $column_count_saphali;
|
542 |
+
add_action("wp_head", 'print_script_columns', 10, 1);
|
543 |
+
function print_script_columns($woocommerce_loop) {
|
544 |
+
global $woocommerce_loop;
|
545 |
+
if($woocommerce_loop['columns'] > 0) {
|
546 |
+
?>
|
547 |
+
<style type='text/css'>
|
548 |
+
ul.products li.product {
|
549 |
+
width:<? if($woocommerce_loop['columns'] <= 3 ) echo floor(100/$woocommerce_loop['columns'] - $woocommerce_loop['columns']); elseif($woocommerce_loop['columns'] > 3 )echo floor(100/$woocommerce_loop['columns'] - 4);?>%;
|
550 |
+
}
|
551 |
+
</style>
|
552 |
+
<?
|
553 |
+
}
|
554 |
+
}
|
555 |
+
}
|
556 |
+
?>
|
screenshot-1.png
ADDED
Binary file
|
screenshot-2.png
ADDED
Binary file
|
screenshot-3.png
ADDED
Binary file
|