revert Полям Изображение Каскад и Мега добавлена сортировка изображений по именам файлов и заголовкам / описаниям.
This commit is contained in:
2026-03-16 18:31:39 +00:00
parent f18c41c848
commit c3508141af
5 changed files with 14 additions and 105 deletions

View File

@@ -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: #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 { 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: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; }

View File

@@ -24,10 +24,4 @@ resp_m_m = "Кол-во загружаемых файлов превышает
resp_m_h = "Ошибка"
max_f_f = "Макимальное кол-во загружаемых файлов: "
max_f_h = "Ошибка"
max_f_t = "Превышено максимальное число файлов,<br>для одновременной загрузки"
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 = "Заголовок"
max_f_t = "Превышено максимальное число файлов,<br>для одновременной загрузки"

View File

@@ -17,45 +17,12 @@
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);
}
</script>
{assign var=cascad_new value="load" scope="global"}
{/if}
<div class="cascad" id="cascad_{$doc_id}_{$field_id}" data-id="{$field_id}" data-doc="{$doc_id}" data-rubric="{if isset($smarty.request.rubric_id)}{$smarty.request.rubric_id}{/if}">
<input type="hidden" value="" id="cascad___$field_id_$doc_id">
<input type="hidden" value="" id="cascad__{$field_id}_{$doc_id}">
<input type="hidden" name="feld[{$field_id}][__empty__]" value="">
{if $show_upload}
<input type="file" class="cascade_upload cascade_upload_field_{$field_id}_{$doc_id}" multiple="multiple" name="cascade_files_{$field_id}_{$doc_id}[]" style="visibility: hidden; display: none;" data-max-files="{$max_files}" />
@@ -75,20 +42,12 @@
&nbsp;|&nbsp;
<a href="javascript:void(0);" class="topDir" title="{#add_upl_e#}<br><br>{$max_files}<br>{$dir_upload}">[?]</a>
{/if}
&nbsp;|&nbsp;
<span style="color: #666; font-weight: bold;">{#sort_titel#} {#sort_file#}</span>
<a href="javascript:void(0);" onclick="cascadSortItems('{$field_id}', '{$doc_id}', 'asc', 'url')" class="link" title="{#sort_F_A_Z#}">[A-Z]</a>
<a href="javascript:void(0);" onclick="cascadSortItems('{$field_id}', '{$doc_id}', 'desc', 'url')" class="link" title="{#sort_F_Z_A#}">[Z-A]</a>
&nbsp;|&nbsp;
<span style="color: #666; font-weight: bold;">{#place#}:</span>
<a href="javascript:void(0);" onclick="cascadSortItems('{$field_id}', '{$doc_id}', 'asc', 'descr')" class="link" title="{#sort_A_Z#}">[A-Z]</a>
</li>
</ul>
<div class="cascad_sortable">
{foreach from=$images key=key item=image}
<div class="cascad_item ui-state-default" id="cascad_image_{$field_id}_{$doc_id}_{$key}" data-id="{$key}" data-doc="{$doc_id}">
<div class="header grey_bg"></div>
<a class="topDir icon_sprite ico_photo view fancy preview__{$field_id}_{$doc_id}_{$key}" href="{$image.url}" title="{#look#}"></a>
@@ -98,6 +57,8 @@
<img id="preview__{$field_id}_{$doc_id}_{$key}" src="{$image.thumb}" onclick="browse_uploads('image__{$field_id}_{$doc_id}_{$key}');" class="image" alt="" width="100" height="100" />
<textarea class="mousetrap" name="feld[{$field_id}][{$key}][descr]" placeholder="{#place#}">{$image.desc}</textarea>
</div>
{/foreach}
</div>
</div>

View File

@@ -27,10 +27,4 @@ img_title = "Заголовок"
img_description = "Описание"
img_link = "Ссылка"
from_file = "Файл"
from_docs = "Документ"
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 = "Заголовок"
from_docs = "Документ"

View File

@@ -21,42 +21,6 @@
mega_max_f_h = '{#max_f_h#}',
mega_from_file = '{#from_file#}',
mega_from_docs = '{#from_docs#}';
/**
* Универсальная сортировка элементов
*/
function megaSortItems(fieldId, docId, direction, type = 'url') {
let container = $('#mega_' + docId + '_' + fieldId + ' .mega_sortable');
let items = container.find('.mega_item').get();
items.sort(function(a, b) {
let valA, valB;
if (type === 'title') {
valA = $(a).find('textarea[name*="[title]"]').val().trim().toLowerCase();
valB = $(b).find('textarea[name*="[title]"]').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);
}
</script>
{assign var=mega_new value="load" scope="global"}
{/if}
@@ -77,26 +41,20 @@
{if $show_upload}
&nbsp;|&nbsp;
<a href="javascript:void(0);" class="mega_upload_local link">{#add_l#}</a>&nbsp;<a href="javascript:void(0);" class="topDir" title="{$max_files}<br>{$dir_upload}">[?]</a>
{else}
&nbsp;|&nbsp;
<a href="javascript:void(0);" class="topDir" title="{#add_upl_e#}<br><br>{$max_files}<br>{$dir_upload}">[?]</a>
{/if}
{if $dir_uploaded}
&nbsp;|&nbsp;
<input type="hidden" value="{$dir_uploaded}" name="feld[{$field_id}][dir]" id="dir__{$field_id}_{$doc_id}">
<a href="javascript:void(0);" class="mega_upload_dir topDir" title="{$dir_uploaded}" onclick="browse_uploads('dir__{$field_id}_{$doc_id}');">Show folder</a>
{/if}
&nbsp;|&nbsp;
<span style="color: #666; font-weight: bold;">{#sort_titel#} {#sort_file#}</span>
<a href="javascript:void(0);" onclick="megaSortItems('{$field_id}', '{$doc_id}', 'asc', 'url')" class="link" title="{#sort_F_A_Z#}">[A-Z]</a>
<a href="javascript:void(0);" onclick="megaSortItems('{$field_id}', '{$doc_id}', 'desc', 'url')" class="link" title="{#sort_F_Z_A#}">[Z-A]</a>
&nbsp;|&nbsp;
<span style="color: #666; font-weight: bold;">{#sort_title#}</span>
<a href="javascript:void(0);" onclick="megaSortItems('{$field_id}', '{$doc_id}', 'asc', 'title')" class="link" title="{#sort_A_Z#}">[A-Z]</a>
</li>
</ul>
<div class="mega_sortable">
{foreach from=$images key=key item=image}
<div class="mega_item ui-state-default" id="mega_image_{$field_id}_{$doc_id}_{$key}" data-id="{$key}" data-doc="{$doc_id}">
<div class="header grey_bg"></div>
<a class="topDir icon_sprite ico_photo view fancy preview__{$field_id}_{$doc_id}_{$key}" href="{$image.url}" title="{#look#}"></a>
@@ -118,6 +76,8 @@
<a class="btn greyishBtn" onclick="openLinkWin('link_{$field_id}_{$doc_id}_{$key}', 'link_{$field_id}_{$doc_id}_{$key}', '');">{#from_docs#}</a>
</div>
</div>
{/foreach}
</div>
</div>