Ура-ура-ура! Это мой первый тематический пост на этом сервисе!
На днях возникла необходимость сортировать большое количество свойств в редактировании инфоблока (>1000) визуально, дабы отображалось в нужном порядке на сайте в умном фильтре.
Спешу поделиться, и ваши мнения велкам: может уже есть готовый бесплатный модуль для этого дела?
> следующий код помещаем в bitrix/php_interface/init/admin_header.php
Интересно, почему это до сих пор не реализовано стандартно в битрикс, в друпале уже давно есть.
На днях возникла необходимость сортировать большое количество свойств в редактировании инфоблока (>1000) визуально, дабы отображалось в нужном порядке на сайте в умном фильтре.
Спешу поделиться, и ваши мнения велкам: может уже есть готовый бесплатный модуль для этого дела?
> следующий код помещаем в bitrix/php_interface/init/admin_header.php
<?php CJSCore::Init( 'jquery' ); //CUtil::InitJSCore(); $curPage = $APPLICATION->GetCurPage(true); $url_parts = explode('/', $curPage); if ($url_parts[1] == 'bitrix' && $url_parts[2] == 'admin' && $url_parts[3] == 'iblock_edit.php' ) { $APPLICATION->AddHeadScript('/bitrix/templates/capitalim2/js/jquery-ui-1.10.4.sortable.min.js'); ?> <st yle> #ib_prop_list tbody tr.ui-state-highlight td { height:54px; background-color:lightyellow !important; } #ib_prop_list tbody td:first-child:hover { cursor:move; } </style> <sc ript> $(document).ready(function() { jQuery.expr[':'].regex = function(elem, index, match) { var matchParams = match[3].split(','), validLabels = /^(data|css):/, attr = { method: matchParams[0].match(validLabels) ? matchParams[0].split(':')[0] : 'attr', property: matchParams.shift().replace(validLabels,'') }, regexFlags = 'ig', regex = new RegExp(matchParams.join('').replace(/^\s+|\s+$/g,''), regexFlags); return regex.test(jQuery(elem)[attr.method](attr.property)); } //console.log('before') $( "#ib_prop_list tbody" ).sortable({ items: "tr:not(.heading)", placeholder: "ui-state-highlight", change: function( event, ui ) { //console.log('changing'); }, update: function( event, ui ) { BX.showWait(); setTimeout(function(){ var max = 50000; var found = $('input:regex(id,SORT)'); var step = Math.round(max/found.length); var prev = 0; $('input:regex(id,SORT)').each(function() { $(this).val(prev + step) ; prev = prev + step; }) BX.closeWait(); }, 100); console.log('updateing'); } }); //console.log('after') }); </sc ript> <? } |