diff --git a/admin/templates/css/main.css b/admin/templates/css/main.css
index 20db152..a691d2f 100644
--- a/admin/templates/css/main.css
+++ b/admin/templates/css/main.css
@@ -375,8 +375,8 @@ input, textarea { box-sizing:border-box; }
.blackBtn:hover { background-position: 0 -25px; }
.blackBtn:active { background-position: 0 -50px; }
-.greyishBtn { background: url(../images/ui/greyishBtn.png) repeat-x 0 0; border: 1px solid #4f5a68; color: #fff; -moz-box-shadow: 0 0 2px #545454; -webkit-box-shadow: 0 0 2px #545454; box-shadow: 0 0 2px #545454; }
-.greyishBtn:hover { background-position: 0 -25px; }
+.greyishBtn { background: url(../images/ui/greyishBtn.png) repeat-x 0 0; border: 1px solid #4f5a68; color: #F0F0F0 !important; -moz-box-shadow: 0 0 2px #545454; -webkit-box-shadow: 0 0 2px #545454; box-shadow: 0 0 2px #545454; }
+.greyishBtn:hover { background-position: 0 -25px; color: #FFF !important; }
.greyishBtn:active { background-position: 0 -50px; }
.greenBtn { background: url(../images/ui/greenBtn.png) repeat-x 0 0; border: 1px solid #418d4f; color: #fff; -moz-box-shadow: 0 0 2px #545454; -webkit-box-shadow: 0 0 2px #545454; box-shadow: 0 0 2px #545454; }
diff --git a/fields/image_cascade/lang/ru.txt b/fields/image_cascade/lang/ru.txt
index f74e7c3..4bc047c 100644
--- a/fields/image_cascade/lang/ru.txt
+++ b/fields/image_cascade/lang/ru.txt
@@ -24,4 +24,10 @@ resp_m_m = "Кол-во загружаемых файлов превышает
resp_m_h = "Ошибка"
max_f_f = "Макимальное кол-во загружаемых файлов: "
max_f_h = "Ошибка"
-max_f_t = "Превышено максимальное число файлов,
для одновременной загрузки"
\ No newline at end of file
+max_f_t = "Превышено максимальное число файлов,
для одновременной загрузки"
+sort_titel = "Сортировать:"
+sort_A_Z = "По алфавиту (A-Z, 1-9)"
+sort_F_A_Z = "По имени (A-Z, 1-9)"
+sort_F_Z_A = "По имени (Z-A, 9-1)"
+sort_file = "Файл"
+sort_title = "Заголовок"
\ No newline at end of file
diff --git a/fields/image_cascade/tpl/field.tpl b/fields/image_cascade/tpl/field.tpl
index 957fb17..4c6a944 100644
--- a/fields/image_cascade/tpl/field.tpl
+++ b/fields/image_cascade/tpl/field.tpl
@@ -17,6 +17,39 @@
var del_all_h = '{#del_all_h#}';
var max_f_t = '{#max_f_t#}';
var max_f_h = '{#max_f_h#}';
+
+ /**
+ * Сортировка для Каскада
+ */
+ function cascadSortItems(fieldId, docId, direction, type = 'url') {
+ let container = $('#cascad_' + docId + '_' + fieldId + ' .cascad_sortable');
+ let items = container.find('.cascad_item').get();
+
+ items.sort(function(a, b) {
+ let valA, valB;
+ if (type === 'descr') {
+ valA = $(a).find('textarea[name*="[descr]"]').val().trim().toLowerCase();
+ valB = $(b).find('textarea[name*="[descr]"]').val().trim().toLowerCase();
+
+ if (valA === '' && valB !== '') return 1;
+ if (valA !== '' && valB === '') return -1;
+ } else {
+ valA = $(a).find('input[id^="image__"]').val().toLowerCase();
+ valB = $(b).find('input[id^="image__"]').val().toLowerCase();
+ }
+
+ if (direction === 'asc') {
+ return valA.localeCompare(valB, undefined, { numeric: true, sensitivity: 'base' });
+ } else {
+ return valB.localeCompare(valA, undefined, { numeric: true, sensitivity: 'base' });
+ }
+ });
+
+ $.each(items, function(i, li) {
+ container.append(li);
+ });
+ container.fadeOut(100).fadeIn(100);
+ }
{assign var=cascad_new value="load" scope="global"}
{/if}
@@ -42,12 +75,20 @@
|
[?]
{/if}
+
+ |
+ {#sort_titel#} {#sort_file#}
+ [A-Z]
+ [Z-A]
+
+ |
+ {#place#}:
+ [A-Z]