<__trans phrase="Manage [_1]" params=""> ">
" label_class="top-label"> " label_class="top-label">
  • hidden"> " name="custom_prefs" class="main show-default" id="custom-prefs-<$mt:var name="id" escape="html"$>" checked="checked" />
  • " name="custom_prefs" class="sub show-default" id="custom-prefs-<$mt:var name="id" escape="html"$>." checked="checked" />
var messages = {}; messages[''] = '<__trans phrase="" escape="js">'; " class="button xhr">
<__trans phrase=" src="images/indicator.white.gif" /> <__trans phrase="Loading...">
-listing-form" method="post" action=""> " /> " /> " /> " />
-table" class="listing-table list-">
">
" label_class="top-label">
jQuery.event.special.listReady = { setup:function( data, ns ) { return false; }, teardown:function( ns ) { return false; } }; jQuery(window).bind( 'ajaxStart', function() { jQuery('#msg-block .msg-error').remove(); }); var line = ' style="display: none;">'; var table = jQuery('table.listing-table')[0]; var col_classes = {}; line += ' primary ">" class="sort-link">'; jQuery.data(table, '', 'desc'); jQuery.data(table, '', 'asc'); col_classes[""] = ""; jQuery('table.listing-table thead, table.listing-table tfoot').append(''); jQuery(line).appendTo('table.listing-table thead tr, table.listing-table tfoot tr'); var filter_types = {}; filter_types[''] = '
no-edit base-">
<__trans phrase="Add" escape="js"><__trans phrase="Remove" escape="js">
';
jQuery('#filter_types').hide(); jQuery('#filter-detail').hide(); jQuery('.filter-block').mtToggleField({default_hide: false}); var cols = []; var vals = []; var checked = []; var total = 0; var editable_total = 0; var editable_count_in_page; var filters = ; var initial_filter = ; var allpass_filter = ; var current_id = initial_filter.id; var currentPage = 1; var inputCount = 0; var initial_load = true; function handleMessages( data, additional_class ) { if ( initial_load ) { initial_load = false; } else { jQuery('#msg-block .msg-success').remove(); jQuery('#msg-container .msg-success').remove(); } if ( data.error ) { var error_cls = 'error'; if ( additional_class ) error_cls += ' ' + additional_class; showMessage( data.error, error_cls); return false; } if ( !data.result ) return false; var messages = data.result.messages; if ( !data.result.messages ) return true; for ( var i=0; i < messages.length; i++ ) { var msg = messages[i]; var cls = msg.cls; if ( additional_class ) cls += ' ' + additional_class; showMessage(msg.msg, cls); } return true; } function showMessage( content, cls ){ var error_block; if ( typeof content == 'object' ) { jQuery('#msg-block').append( error_block = jQuery('
') .attr('class', 'msg msg-' + cls ) .append( jQuery('

') .attr('class', 'msg-text') .append(content) .append('<__trans phrase="Close" escape="js">') ) ); } else { jQuery('#msg-block').append( error_block = jQuery('

') .attr('class', 'msg msg-' + cls ) .append( jQuery('

') .attr('class', 'msg-text') .append(content) .append('<__trans phrase="Close" escape="js">') ) ); } return error_block; } function loginAgain(fn) { jQuery(window) .unbind('dialogReady.loginAgain') .bind('dialogReady.loginAgain', function(){ var dialog = jQuery('#mt-dialog-iframe').contents(); dialog .find('#sign-in-button') .text('<__trans phrase="Continue" escape="js">') .unbind() .click(function(){ dialog.find('#msg-block').empty(); jQuery.ajax({ type: 'POST', contentType: 'application/x-www-form-urlencoded; charset=utf-8', async: false, url: '', dataType: 'json', data: { __mode: 'login_json', username: dialog.find('#username').val(), password: dialog.find('#password').val() }, success: function(data) { var token = data.result['magic_token']; if (token) { jQuery('input[name="magic_token"]').val(token); jQuery('a[href*="magic_token="]').each(function() { var replace = jQuery(this) .attr('href') .replace(/magic_token=[\d\w]+/, 'magic_token=' + token); jQuery(this).attr('href', replace); }); } jQuery.fn.mtDialog.close(); fn(data); return false; }, error: function(data) { dialog.find('#password').val(''); dialog .find('#msg-block') .append('

<__trans phrase="Invalid login." escape="js">
'); } }); return false; }); }); jQuery.fn.mtDialog.open('?__mode=dashboard'); } function renderFilterList() { jQuery('#dialog_filter_content').empty(); var has_user_filter = 0; var has_sys_filter = 0; for (var i = 0, length = filters.length; i < length; i++) { if ( parseInt(filters[i].can_save) ) has_user_filter++; else has_sys_filter++; } jQuery('
') .append( jQuery('

').text('<__trans phrase="My Filters" escape="js">')) .append( jQuery('')) .appendTo('#dialog_filter_content'); if ( has_sys_filter ) { jQuery('
') .append( jQuery('

').text('<__trans phrase="Built in Filters" escape="js">')) .append( jQuery('
    ')) .appendTo('#dialog_filter_content'); } for (var i = 0, length = filters.length; i < length; i++) { var filter = filters[i]; if ( parseInt(filter.can_save) ) { var line = ''+filter.label+'' + '<__trans phrase="Rename" escape="js"><__trans phrase="Delete" escape="js">'; jQuery('
  • ').append(line).prependTo('#user-filters'); } else { var line = ''+filter.label+''; jQuery('
  • ').append(line).appendTo('#built-in-filters'); } } jQuery('#new_filter').click(function() { jQuery('#filter-detail').show().parent('#filter').addClass('active'); jQuery('#item_list').attr('selectedIndex', 0); resetFilterDetails(); jQuery('input[name=filter_name]').mtUnvalidate().val('<__trans phrase="New Filter" escape="js">'); jQuery('#opener').html('<__trans phrase="New Filter" escape="js">'); jQuery('#filter_id').val(''); jQuery('input[name=filter_id]').val(''); updateItemList(); jQuery('#dialog_filter').dialog('close'); updateFilterSaveButtons({ system: 0, new_filter: 1, allpass: 0 }); }); jQuery('#dialog_filter .filter-label a:not(#new_filter)').click(function() { jQuery('#dialog_filter').dialog('close'); jQuery(this).attr('href').match(/#(.*)/); var index = RegExp.$1; applyFilter(index); updateFilterSaveButtons(); return false; }); jQuery('#dialog_filter .delete-link').click(function() { var $this = jQuery(this); var label = $this.parents('.filter').find('.apply-link').text(); var message = trans("Are you sure you want to remove the filter '[_1]'?", label); if (confirm(message)) { $this.parents('.filter').addClass('edit-mode').find('.item-ctrl').hide(); $this.parents('.filter').find('.filter-label').hide().after( jQuery('<__trans phrase=" src="images/indicator.white.gif" />') ); removeFilter(this); } return false; }); jQuery('#dialog_filter .rename-link').click(openFilterRenameField); } var editSysFilter = 0; var editNewFilter = 0; var allPass = 0; jQuery.mtValidateRules['[name=filter_name], .rename-filter-input'] = function ($e) { return validateFilterName($e.val()) ? true : this.raise(trans('Label "[_1]" is already in use.', $e.val() )); }; function updateFilterSaveButtons ( opts ){ if ( opts ) { if ( opts.allpass != undefined ) allPass = opts.allpass; if ( opts.new_filter != undefined ) editNewFilter = opts.new_filter; if ( opts.system != undefined ) editSysFilter = opts.system; } if ( jQuery('#filter-detail div.filteritem').length > 0 ) { jQuery('#apply').removeClass('disabled').removeAttr('disabled'); if ( editSysFilter ) jQuery('#save').addClass('disabled').attr('disabled', 'disabled'); else jQuery('#save').removeClass('disabled').removeAttr('disabled'); if ( editNewFilter ) jQuery('#saveas').hide(); else jQuery('#saveas').show(); } else { jQuery('#apply').addClass('disabled').attr('disabled','disabled'); jQuery('#save').addClass('disabled').attr('disabled', 'disabled'); jQuery('#saveas').hide(); } if ( allPass ) { jQuery('#allpass-filter').hide(); } else { jQuery('#allpass-filter').show(); } } function openFilterRenameField() { cancelFilterRenameField(); var $this = jQuery(this); $this.parents('.filter').addClass('edit-mode'); $this.attr('href').match(/#(.*)/); var index = RegExp.$1; var fid = filters[index].id; var $label = $this.parents('.filter').children('.filter-label'); var $handle = $this.parents('.filter').children('.item-ctrl'); var text = $label.find('.apply-link').hide().text(); jQuery('') .val(text) .appendTo($label); $this.hide().next('.delete-link').hide(); jQuery('<__trans phrase="Save" escape="js">').bind('click', function() { var name = jQuery('#filter_'+fid).val(); if (name == text) { // Not modified. $handle.find('.cancel').click(); return false; } if ( !jQuery('#filter_' + fid).mtValidate('simple') ) return false; $this.parents('.filter').find('.item-ctrl').hide(); $this.parents('.filter').find('input').hide().after( jQuery('<__trans phrase=" src="images/indicator.white.gif" />') ); renameFilter(index, fid, name); return false; }).appendTo($handle); jQuery('<__trans phrase="Cancel" escape="js">') .bind('click', cancelFilterRenameField ) .appendTo($handle); return false; } function cancelFilterRenameField() { jQuery('.rename-filter-input').mtUnvalidate(); jQuery('.filter').removeClass('edit-mode'); jQuery('.filter-label') .find('.apply-link:hidden').show().end() .find('input').remove(); jQuery('.item-ctrl') .find('a.save, a.cancel').remove().end() .find('a:hidden').css('display','inline-block') return false; } function renameFilter(index, fid, name) { jQuery.ajax({ type: 'POST', contentType: 'application/x-www-form-urlencoded; charset=utf-8', url: '', dataType: 'json', data: { __mode: 'save_filter', datasource: '', blog_id: , fid: fid, label: name, items: jQuery.toJSON(filters[index].items), list: 0, magic_token: jQuery('input[name="magic_token"]').val() }, success: function(data) { if ( !handleMessages(data) ) return; filters = data.result.filters; }, complete: function() { if ( fid == current_id ) { jQuery('#opener').text(name); } renderFilterList(); }, error: function(xhr, status) { if ( xhr.status == 401 ) { loginAgain(function(){ renameFilter(index, fid, name); }); } else { alert( trans('Communication Error ([_1])', xhr.status) ); } } }); } function removeFilter(element) { var $node = jQuery(element).parents('li'); jQuery(element).attr('href').match(/#(.*)/); var index = RegExp.$1; var remove_current = filters[index].id == current_id; if ( remove_current ) { updateFilterSaveButtons({ allpass: 1 }); doApplyFilter(allpass_filter, 1); renderList({ mode: 'delete_filter', id: filters[index].id, magic_token: 1 }); } else { jQuery.ajax({ type: 'POST', contentType: 'application/x-www-form-urlencoded; charset=utf-8', url: '', dataType: 'json', data: { __mode: 'delete_filter', id: filters[index].id, datasource: '', blog_id: , list: 0, magic_token: jQuery('input[name="magic_token"]').val() }, success: function(data) { if ( !handleMessages(data) ) return; filters = data.result.filters; }, complete: function() { renderFilterList(); }, error: function(xhr, status) { if ( xhr.status == 401 ) { loginAgain(function(){ removeFilter(element); }); } else { alert( trans('Communication Error ([_1])', xhr.status) ); } } }); } } function renderColumns( col, chk ) { cols = []; jQuery('table.listing-table thead th, table.listing-table tfoot th').hide().filter('.cb').show(); jQuery('ul#disp_cols input:checked').each(function() { jQuery(this).attr('id').match(/custom-prefs-(.*)/); var id = RegExp.$1; cols.push(id); }); jQuery('ul#disp_cols input.main:checked').each(function() { var id = jQuery(this).val(); jQuery('table.listing-table th.'+id).show(); }); if ( col && chk ) { var header = jQuery('table.listing-table thead th.' + col); var idx = jQuery('table.listing-table thead th:visible').index(header) - 1; jQuery('table.listing-table tr').each( function() { jQuery(this).find('td:eq(' + idx + ')').after( ' ' ); }); } else if ( col && !chk ) { jQuery('table.listing-table td.' + col).remove(); } jQuery('table.listing-table thead, table.listing-table tfoot').each(function() { jQuery(this) .find('th') .removeClass('first-visible-child') .filter(':visible:first') .addClass('first-visible-child'); }); // Re-render the table for IE. if ( window.navigator.userAgent.match(/MSIE/) ) jQuery('table.listing-table').insertAfter('#listing-table-overlay'); } function saveChecked(page) { checked[page] = []; jQuery('table.listing-table tbody tr input:checked').each(function() { var id = jQuery(this).parents('tr').attr('id'); checked[page][id] = 1; }); } function renderPagination(count, limit, page, last, total) { var $e = jQuery('.pagination').empty(); if (count == 0) { return; } var usefirst = false; var uselast = false; var start; if (page > 1) { usefirst = true; start = (page-1)*limit+1; } else { start = 1; } if (total / limit > 1) { if (page + 1 <= last) { uselast = true; } } currentPage = page; if (usefirst) { $e.append('« <__trans phrase="First" escape="js">') .append('‹ <__trans phrase="Prev" escape="js">'); } else { $e.append('« <__trans phrase="First" escape="js">') .append('‹ <__trans phrase="Prev" escape="js">'); } var end = (page == last) ? total : start+limit-1; var page_status = trans('[_1] - [_2] of [_3]', start, end, total); $e.append(''+page_status+'') if (uselast) { $e.append('<__trans phrase="Next" escape="js"> ›') .append('<__trans phrase="Last" escape="js"> »'); } else { $e.append('<__trans phrase="Next" escape="js"> ›') .append('<__trans phrase="Last" escape="js"> »'); } jQuery('a.start').click(function() { saveChecked(page); renderList('filtered_list', cols, vals, jQuery('#row').val(), 1); return false; }); jQuery('a.to-start').click(function() { saveChecked(page); renderList('filtered_list', cols, vals, jQuery('#row').val(), page-1); return false; }); jQuery('a.to-end').click(function() { saveChecked(page); renderList('filtered_list', cols, vals, jQuery('#row').val(), page+1); return false; }); jQuery('a.end').click(function() { saveChecked(page); renderList('filtered_list', cols, vals, jQuery('#row').val(), last); return false; }); } function saveListPrefs() { cols = []; jQuery('ul#disp_cols input:checked').each(function() { jQuery(this).attr('id').match(/custom-prefs-(.*)/); var id = RegExp.$1; cols.push(id); }); jQuery.ajax({ type: 'POST', contentType: 'application/x-www-form-urlencoded; charset=utf-8', url: '', dataType: 'json', data: { __mode: 'save_list_prefs', datasource: '', blog_id: '', columns: cols.join(','), limit: jQuery('#row').val() }, success: function(data) { handleMessages(data); return false; }, error: function(xhr, status) { if ( this_request != request_id ) { return false; } if ( xhr.status == 401 ) { loginAgain(function(){ renderList(mode, columns, values, limit, page); }); } else { alert( trans('Communication Error ([_1])', xhr.status) ); } } }); } var request_id = 0; function renderList(mode, columns, values, limit, page ) { var this_request = ++request_id; // If the first arg is Object, it's Hash style call var args = {}; if ( typeof mode == 'object' ) { args = mode; var defaults = { mode: 'filtered_list', columns: cols, values: vals, limit: jQuery('#row').val(), page: currentPage }; mode = ( 'mode' in args ) ? args['mode'] : defaults['mode']; columns = ( 'columns' in args ) ? args['columns'] : defaults['columns']; values = ( 'values' in args ) ? args['values'] : defaults['values']; limit = ( 'limit' in args ) ? args['limit'] : defaults['limit']; page = ( 'page' in args ) ? args['page'] : defaults['page']; delete args['mode']; delete args['columns']; delete args['values']; delete args['limit']; delete args['page']; } limit = parseInt(limit); if ( args['magic_token'] ) { args['magic_token'] = jQuery('input[name="magic_token"]').val(); } var params = { __mode: mode, datasource: '', blog_id: , columns: columns.join(','), limit: limit, page: page, magic_token: jQuery('input[name="magic_token"]').val() }; params = jQuery.extend( params, args ); if (values.length) { params['items'] = jQuery.toJSON(values); } if (jQuery('table.listing-table th.sorted').length) { jQuery('table.listing-table th.sorted').find('a').attr('href').match(/#(.*)/); params['sort_by'] = RegExp.$1; params['sort_order'] = jQuery('table.listing-table th.sorted').find('span').hasClass('desc') ? 'descend' : 'ascend'; } if (jQuery('input[name=filter_id]').val()) { params['fid'] = jQuery('input[name=filter_id]').val(); } if (jQuery('input[name=filter_name]').val()) { params['label'] = jQuery('input[name=filter_name]').val(); } jQuery('.indicator, #listing-table-overlay').show(); jQuery('div.pagination').hide(); jQuery('#msg-block div.msg-error.filtered-list-msg').remove() // adding random bits to avoid cache in Android. var script_url = '?.r=' + Math.random(1); jQuery.ajax({ type: 'POST', contentType: 'application/x-www-form-urlencoded; charset=utf-8', url: script_url, dataType: 'json', data: params, success: function(data) { if ( this_request != request_id ) { return false; } if ( !handleMessages(data, 'filtered-list-msg' ) ) return; if (data.result.debug) { jQuery('#listing-debug-block').text(data.result.debug); } jQuery('table.listing-table tbody').empty(); jQuery('table.listing-table th :checkbox').removeAttr('checked'); var objs = data.result.objects; var count = objs.length; var last = data.result.page_max; total = parseInt(data.result.count); editable_total = parseInt(data.result.editable_count); var return_columns = data.result.columns.split(','); var return_cols = jQuery.grep( return_columns, function( val, idx ){ return val.match(/\./); }, true ); var main_cols = {}; jQuery('#disp_cols input.main.checkbox:checked').each(function() { main_cols[ jQuery(this).val() ] = 1; }); editable_count_in_page = 0; for (var row = 0; row < count; row++) { var id = objs[row][0]; var line = ''; if ( id ) { editable_count_in_page++; if (checked[page] && checked[page][id]) { line = ' style="display: none;">'; } else { line = ' style="display: none;">'; } } else { line = ' style="display: none;">'; } for (var col = 1, col_length = objs[row].length; col < col_length; col++) { var col_id = return_cols[ col - 1 ]; if ( main_cols[col_id] ) line += '' + objs[row][col] + ''; } jQuery(''+line+'').appendTo('table.listing-table tbody'); } jQuery('#resultstats').remove(); var n = columnLength(); if (count == 0) { var message = trans('No [_1] could be found.', ''); jQuery(''+message+'').appendTo('table.listing-table tbody'); } renderPagination(count, limit, page, last, total); filters = data.result.filters; if ( data.result.label ) { jQuery('#opener').html(data.result.label); jQuery('#filter_name').val(data.result.label); } if ( data.result.id ) { jQuery('#filter_id').val(data.result.id); current_id = data.result.id; } }, complete: function() { if ( this_request != request_id ) { return false; } jQuery('.indicator, #listing-table-overlay').hide(); jQuery('div.pagination').show(); jQuery('table.listing-table tbody tr:even').addClass('even'); jQuery('table.listing-table tbody tr:odd').addClass('odd'); var $checkboxes = jQuery('td :checkbox'); var $checked = jQuery('td :checked'); $checked.parents('tr').addClass('selected'); if ($checkboxes.length && $checkboxes.length == $checked.length) { jQuery('table.listing-table th :checkbox').attr('checked', 'checked'); addSelectAll($checkboxes); } if (mode == 'save_filter' || mode == 'delete_filter') { renderFilterList(); updateFilterSaveButtons({ system: 0, new_filter: 0 }); } if (!jQuery('#msg-block .msg-error').length) { jQuery('#dialog_save_filter').dialog('close'); } else { if (jQuery('#dialog_save_filter:visible').length) { jQuery('.msg-error').clone().appendTo('#dialog-msg-block'); jQuery('#msg-block').hide(); } } jQuery(window).trigger('listReady'); }, error: function(xhr, status, error) { if ( this_request != request_id ) { return false; } if ( xhr.status == 401 ) { loginAgain(function(){ renderList(mode, columns, values, limit, page); }); } else if ( xhr.status == 0 ) { // Maybe this is user abort. do nothing. } else { alert( trans('Communication Error ([_1])', xhr.status) ); } } }); } jQuery.fn.mtRenderList = renderList; function itemValues() { var $items = jQuery('#filter-detail .filteritem:not(.error)'); vals = []; $items.each(function() { var data = {}; var fields = []; var $types = jQuery(this).find('.filtertype'); $types.each(function() { jQuery(this).attr('class').match(/type-(\w+)/); var type = RegExp.$1; jQuery(this).find('.item-content').each(function() { var args = {}; jQuery(this).find(':input').each(function() { var re = new RegExp(type+'-(\\w+)'); jQuery(this).attr('class').match(re); var key = RegExp.$1; args[key] = jQuery(this).val(); }); fields.push({'type': type, 'args': args}); }); }); if (fields.length > 1 ) { data['type'] = 'pack'; data['args'] = { "op":"and", "items":fields }; } else { data = fields.pop(); } vals.push(data); }); } jQuery('ul#disp_cols .main:checkbox').click(function() { var col = jQuery(this).val(); var checked = jQuery(this).is(':checked'); renderColumns(col, checked); if (checked) renderList('filtered_list', cols, vals, jQuery('#row').val(), currentPage); else saveListPrefs(); var n = columnLength(); jQuery('td.fullwidth-row').attr('colspan', n); }); jQuery('ul#disp_cols .sub:checkbox').click(function() { toggleSubField(this); var n = columnLength(); jQuery('td.fullwidth-row').attr('colspan', n); saveListPrefs(); }); jQuery('#reset-display-options').click(function() { jQuery('#disp_cols input[type=checkbox]').each(function() { if ( jQuery(this).is('.show-default') ) { jQuery(this).attr('checked', 'checked'); } else { jQuery(this).removeAttr('checked'); } }); renderColumns(); renderList({}); var n = columnLength(); jQuery('td.fullwidth-row').attr('colspan', n); return false; }); function toggleSubField (obj) { if ( jQuery(obj).attr('checked') ) jQuery( '#listing-table .' + jQuery(obj).val() ).show(); else jQuery( '#listing-table .' + jQuery(obj).val() ).hide(); } jQuery('#row').change(function() { jQuery('table.listing-table tbody').empty(); checked = []; renderColumns(); renderList('filtered_list', cols, vals, jQuery(this).val(), 1); }); function addSelectAll($node) { if (editable_count_in_page >= editable_total) { return false; } var n = columnLength(); $node .parents('tbody') .append('') .prepend(''); var select_text = trans('Select all [_1] items', editable_total); var cancel_text = trans('All [_1] items are selected', editable_total); jQuery('') .appendTo('.select-all td') .text(select_text) .bind('click', function() { var $input = jQuery('input[name=all_selected]'); if ($input.val()) { $input.val(''); jQuery('.select-all td').find('a').text(select_text); } else { $input.val('1'); jQuery('.select-all td').append(cancel_text).addClass('highlight').find('a').remove(); } return false; }); } function removeSelectAll($node) { $node .parents('tbody') .find('.select-all') .remove(); jQuery('input[name=all_selected]').val(''); } function columnLength () { return jQuery('#disp_cols').find('input.main:checked').length + 1; } jQuery('table.listing-table tbody').selectable({ filter: 'tr', cancel: 'tr.no-action, a, .select-all, .text, .can-select, button, pre, :input:not([name=id])', selected: function(event, ui) { var $checkboxes = jQuery(ui.selected).find(':checkbox'); if ($checkboxes.attr('checked')) { jQuery(ui.selected).removeClass('selected'); $checkboxes.removeAttr('checked'); } else { jQuery(ui.selected).addClass('selected'); $checkboxes.attr('checked', 'checked'); } if (jQuery('table.listing-table td :checkbox').length == jQuery('table.listing-table td :checked').length) { jQuery('table.listing-table th :checkbox').attr('checked', 'checked'); if (!jQuery('table.listing-table tr.select-all').length) { addSelectAll($checkboxes); } } else { jQuery('table.listing-table th :checkbox').removeAttr('checked'); removeSelectAll($checkboxes); } } }); jQuery('table.listing-table th :checkbox').click(function() { var $checkboxes = jQuery('tr :checkbox'); if (this.checked) { $checkboxes.attr('checked', 'checked'); addSelectAll($checkboxes); $checkboxes.parents('tr').addClass('selected'); } else { $checkboxes.removeAttr('checked'); removeSelectAll($checkboxes); $checkboxes.parents('tr').removeClass('selected'); } }); jQuery('table.listing-table thead a, tfoot a').click(function() { var url = jQuery(this).attr('href'); var $th = jQuery('a[href=\''+url+'\']').parents('th'); if ($th.hasClass('sorted')) { var $order = $th.find('span'); if ($order.hasClass('desc')) { $order.removeClass('desc').addClass('asc'); } else { $order.removeClass('asc').addClass('desc'); } } else { jQuery('table.listing-table thead th, tfoot th').removeClass('sorted').find('span.sm').removeClass('asc desc'); $th.addClass('sorted').find('span.sm').remove(); url.match(/#(.*)/); jQuery('').appendTo($th.find('.sort-link')); } checked = []; renderColumns(); renderList('filtered_list', cols, vals, jQuery('#row').val(), 1); return false; }); function dateOption($node) { var val = $node.val(); var type; switch (val) { case 'days': type = 'days'; break; case 'before': case 'after': type = 'date'; break; case 'future': case 'past': type = 'none'; break; default: type = 'range'; } $node.parent('.item-content').find('input').mtUnvalidate(); $node.parent('.item-content').find('.date-options span.date-option').hide(); $node.parent('.item-content').find('.date-option.'+type).show(); } function filterItem(type, datepicker_off) { var $item = jQuery(filter_types[type]); if ( $item && $item.attr('class') && $item.attr('class').match(/no-edit/) ) { $item.find('input').attr('disabled', 1); $item.find('select').attr('disabled', 1); } if ( !datepicker_off ) { $item .find('.filter-date').each(function() { dateOption(jQuery(this)); }).bind('change', function() { dateOption(jQuery(this)); }).end() .find('input.date').datepicker({ dateFormat: 'yy-mm-dd', dayNamesMin: [<__trans phrase="_LOCALE_CALENDAR_HEADER_">], monthNames: ['- 01','- 02','- 03','- 04','- 05','- 06','- 07','- 08','- 09','- 10','- 11','- 12'], showMonthAfterYear: true, prevText: '<', nextText: '>', onSelect: function( dateText, inst ) { inst.input.mtValid(); } }); } return $item; } jQuery('#item_list').change(function() { var type = jQuery('#item_list').val(); if ( !type ) return false; var $item = filterItem(type); $item .insertAfter('.selectfilter') .wrap('
    ') .find('.minus').hide().end() .find('input').each( function() { var id = jQuery(this).attr('id') || jQuery(this).attr('name') || 'input-' + inputCount++; jQuery(this) .attr('id', id) .attr('name', id); }); jQuery('#item_list').attr('selectedIndex', 0); jQuery('<__trans phrase="Remove item" escape="js">') .insertAfter($item) .bind('click', function() { jQuery(this).parent('.filteritem').find('input').mtUnvalidate().end().remove(); updateItemList(); updateFilterSaveButtons(); }); if ( allPass ) { jQuery('#filter_id').val(''); jQuery('#opener').text('<__trans phrase="Unknown Filter" escape="js">'); editNewFilter = 1; editSysFilter = 0; allPass = 0; } updateItemList(); updateFilterSaveButtons({ allpass: false }); return false; }); var validateErrorMessage; function validateFilterDetails () { if ( validateErrorMessage ) { validateErrorMessage.remove(); } var errors = 0; jQuery('div#filter-detail div.filteritem').each( function () { if ( !jQuery(this).find('input:visible').mtValidate() ) { errors++; jQuery(this).addClass('highlight error'); } else { jQuery(this).removeClass('highlight error'); } }) if ( errors ) { validateErrorMessage = showMessage( trans('[_1] Filter Items have errors', errors ), 'error' ); } return errors ? false : true; } function resetFilterDetails() { if ( validateErrorMessage ) { validateErrorMessage.remove(); } validateErrorMessage = false; jQuery('div#filter-detail div.filteritem') .find('input, select') .mtUnvalidate() .end() .remove(); } jQuery('#apply').click(function() { if (!validateFilterDetails()) return false; jQuery('input[name=filter_id]').val(''); itemValues() renderList('filtered_list', cols, vals, jQuery('#row').val(), 1); return false; }); jQuery('#-listing-form').bind('submit.as_apply', function() { jQuery('#apply').click(); return false; }); jQuery('#save').click(function() { if (!validateFilterDetails()) return false; if (jQuery('#filter_id').val() && jQuery('#filter_id').val().match(/^[1-9][0-9]*$/) ) { // Overwrite current filter. jQuery('input[name=filter_name]').val(jQuery('#filter_name').val()); jQuery('input[name=filter_id]').val(jQuery('#filter_id').val()); itemValues() renderList('save_filter', cols, vals, jQuery('#row').val(), 1); } else { // Create new filter. var temp_base = 1; var temp; while ( 1 ) { temp = trans('[_1] - Filter [_2]', '', temp_base++); if ( 0 == jQuery.grep(filters, function(f){ return f.label == temp }).length ) break; } jQuery('input[name=filter_name]').mtUnvalidate().val(temp); jQuery('input[name=filter_id]').val(''); jQuery('#dialog_save_filter').dialog({ title: trans('Save Filter'), dialogClass: 'save', width: 450, modal: true, resizable: false, draggable: false, closeOnEscape: false, open: function(){ jQuery('input[name=filter_name]').focus(); } }).dialog('open'); } return false; }); jQuery('#saveas').click(function() { if (!validateFilterDetails()) return false; jQuery('input[name=filter_name]').mtUnvalidate().val(jQuery('#opener').text()); jQuery('input[name=filter_id]').val(''); jQuery('#dialog_save_filter') .dialog({ title: trans('Save As Filter'), dialogClass: 'save', width: 450, modal: true, resizable: false, open: function () { jQuery('input[name=filter_name]').focus(); } }).dialog('open'); return false; }); jQuery('#dialog_filter').dialog({ autoOpen: false, title: trans('Select Filter'), width: 380, resizable: false }); jQuery('#opener').click(function() { jQuery('#dialog_filter').dialog('open'); return false; }); jQuery('#dialog_save_filter').dialog({ autoOpen: false, dialogClass: 'save', width: 450, minHeight: 100 }); // When the enter key is pressed, click the primary button instead of submitting. jQuery('#dialog_save_filter form').submit(function() { jQuery('button.primary', this).click(); return false; }); jQuery('#save-filter').click(function() { if ( !jQuery('input[name=filter_name]').mtValidate('simple') ) return false; var name = jQuery('input[name=filter_name]').val(); itemValues(); jQuery(window).one('listReady', function() { updateFilterSaveButtons({ new_filter: 0 }); }); renderList('save_filter', cols, vals, jQuery('#row').val(), 1); return false; }); jQuery('#cancel-save-filter').click(function() { jQuery(this).parents().dialog('close'); }); function validateFilterName (name) { var res = true; jQuery('a.apply-link').each( function() { if ( jQuery(this).text() == name ) res = false; }); return res; } function addItems(items, op) { var type; var args; if ( !items ) items = []; for (var i = 0, length = items.length; i < length; i++) { type = items[i].type; if (type == 'pack') { addItems(items[i].args.items, items[i].args.op); } var $filteritem = jQuery('.filteritem:first'); var $filtertype; var prev_type; if ($filteritem.length) { $filtertype = $filteritem.children('.filtertype:last'); $filtertype.attr('class').match(/type-(\w+)/); prev_type = RegExp.$1; } var $item = filterItem(type); $item.find('input').each( function() { var id = jQuery(this).attr('id') || jQuery(this).attr('name') || 'input-' + inputCount++; jQuery(this) .attr('id', id) .attr('name', id); }); if (op && type == prev_type) { $item .insertAfter($filtertype) .find('.item-label').addClass('invisible'); } else { var $div = jQuery('
    ').addClass('itemtype-' . type); $item .insertAfter('.selectfilter') .wrap($div) .find('.minus').hide().end(); jQuery('<__trans phrase="Remove item" escape="js">') .insertAfter($item) .bind('click', function() { jQuery(this).parent('.filteritem').find('input').mtUnvalidate().end().remove(); updateItemList(); updateFilterSaveButtons(); }); } args = items[i].args; for (var key in args) { if ( typeof args[key] != 'string' && typeof args[key] != 'number' ) continue; // A sort of hack to decode HTML entities using jQuery. var decoded = jQuery('
    ').html( args[key] ).text(); $item.find('.'+type+'-'+key).each( function(){ if ( jQuery(this).is('input, select') ) jQuery(this).val( decoded ); else jQuery(this).text( decoded ); }); } var $node = $item.find('.filter-date'); if ($node) { dateOption($node); } } updateItemList(); updateFilterSaveButtons(); } jQuery('#allpass-filter').click( function() { allPass = 1; jQuery('#filter-detail').hide(); jQuery('#filter').removeClass('active'); doApplyFilter(allpass_filter); return false; }); function applyFilter(index, no_render) { if (index >= 0 && filters[index].items) { var filter = filters[index]; doApplyFilter(filter, no_render); allPass = 0; } } function doApplyFilter(filter, no_render) { jQuery('#filter_name').val(''); jQuery('#filter_id').val(''); resetFilterDetails(); var name = filter.label; addItems(filter.items); jQuery('#opener').html(name); jQuery('#filter_name').val(name); jQuery('#filter_id').val(filter.id); current_id = filter.id; if ( parseInt(filter.can_save) ) editSysFilter = 0; else editSysFilter = 1; if ( filter.id == '_allpass' ) allPass = 1; jQuery('input[name=filter_id]').val(filter.id); itemValues(); if ( !no_render ) renderList('filtered_list', cols, vals, jQuery('#row').val(), 1); } jQuery('.action_selector').change(function() { var selected = jQuery(this).val(); jQuery('.action_selector').val(selected); }); function doForMarked(formid, action, singlar, plural, phrase, xhr) { var $form = jQuery('#'+formid); if (!$form.length) { return; } var mode; var params = {}; if ( action == 'itemset_action' ) { var $selected = $form.find('option:selected'); action = $selected.val(); } if (action == '' || action == '0') { alert(trans('You must select an action.')); return; } var opt = itemset_options[action]; if ( !opt ) return false; var xhr = opt['xhr']; var mode = opt['mode'] || 'itemset_action'; if ($form.find('input[name=itemset_action_input]').val()) { $form.find('input[name=itemset_action_input]').val(''); } var count = $form.find('input[name=id]').filter(':checked').length; if ( jQuery('input[name=all_selected]').val() == 1 ) { count = total; } if (!count) { alert(trans('You did not select any [_1] to [_2].', plural, phrase)); return; } if (opt['min'] && (count < opt['min'])) { alert(trans('You can only act upon a minimum of [_1] [_2].', opt['min'], plural)); return false; } else if (opt['max'] && (count > opt['max'])) { alert(trans('You can only act upon a maximum of [_1] [_2].', opt['max'], plural)); return false; } else if (opt['input']) { if (input = prompt(opt['input'])) { $form.find('[name=itemset_action_input]').val(input); params['itemset_action_input'] = input; } else { return false; } } if (xhr) { params['mode'] = mode; params['xhr'] = 1; params['all_selected'] = jQuery('input[name=all_selected]').val(); params['magic_token'] = 1; params['id'] = $form .find('input[name=id]:checked') .map(function(){ return jQuery(this).val(); }) .get() .join(","); params['_type'] = ''; } else { jQuery('input[name=return_args]').val(jQuery('input[name=return_args]').val()+'&does_act=1'); } if (action) { $form.find('input[name=action_name]').val(action); params['action_name'] = action; } else { $form.find('input[name=action_name]').val(''); } if (vals.length) { var items = jQuery.toJSON(vals); $form.find('input[name=items]').val(items); params['items'] = items; } if (opt['no_prompt']) { // Do always. } else if (opt['continue_prompt']) { if (!confirm(opt['continue_prompt'])) { return false; } } else if (phrase) { var message = ( count == 1 ) ? trans('Are you sure you want to [_2] this [_1]?', singlar, phrase) : trans('Are you sure you want to [_3] the [_1] selected [_2]?', count, plural, phrase); if (!confirm(message)) { return; } } $form.find('input[name=__mode]').val(mode); if ( xhr ) renderList(params); else if ( opt['dialog'] ) jQuery.fn.mtDialog.open(ScriptURI + '?' + $form.serialize()); else { $form.unbind('submit.as_apply').submit(); } } jQuery('button.mt--listing-form-action').click(function() { var id = '-listing-form'; var singlar = ''; var plural = ''; var phrase = '<__trans phrase="act upon" escape="js">'; doForMarked(id, 'itemset_action', singlar, plural, phrase); return false; }); jQuery('.actions-bar a.button').click(function() { jQuery(this).attr('href').match(/#(.*)/); var action = RegExp.$1; var id = '-listing-form'; var singlar = ''; var plural = ''; var phrase = messages[action]; doForMarked(id, action, singlar, plural, phrase); return false; }); jQuery('.filtertype .minus').live('click', function() { var $item = jQuery(this).parents('.filteritem'); jQuery(this).parents('.filtertype').find('input').mtUnvalidate().end().remove(); if ( $item.find('.filtertype').length == 1 ) { $item.find('.minus').hide(); } }); jQuery('.filtertype .plus').live('click', function() { var op = 'and'; jQuery(this).parents('.filteritem').addClass(op); var $filtertype = jQuery(this).parents('.filtertype'); var $filteritem = jQuery(this).parents('.filteritem'); $filtertype.attr('class').match(/type-(\w+)/); var type = RegExp.$1; var $node = filterItem(type, true); var $clone = $node.clone(true); $clone.insertAfter($filtertype) .find('.item-label').addClass('invisible'); $clone.find('.filter-date').each(function() { dateOption(jQuery(this)); }).bind('change', function() { dateOption(jQuery(this)); }).end() .find('input.date').datepicker({ dateFormat: 'yy-mm-dd', dayNamesMin: [<__trans phrase="_LOCALE_CALENDAR_HEADER_">], monthNames: ['- 01','- 02','- 03','- 04','- 05','- 06','- 07','- 08','- 09','- 10','- 11','- 12'], showMonthAfterYear: true, prevText: '<', nextText: '>' }); $filteritem.find('.minus').show(); }); jQuery(window).bind('listReady', function(){ jQuery('ul#disp_cols .sub:checkbox').each(function () { toggleSubField(this); }); }); jQuery(window).bind('listReady', function() { jQuery('a.action-link.mt-open-dialog').mtDialog(); }) function updateItemList () { var list = jQuery('#item_list'); list.find('option').removeAttr('disabled'); jQuery('#filter-detail').find('.filtertype').each( function() { jQuery(this).attr('class').match(/type-(\w+)/); var type = RegExp.$1; list.find('option[value=' + type + ']').attr('disabled','disabled'); }); } addItems(initial_filter.items); jQuery('#opener').html(initial_filter.label); jQuery('#filter_name').val(initial_filter.label); jQuery('#filter_id').val(initial_filter.id); jQuery('input[name=filter_id]').val(initial_filter.id); if ( initial_filter.id == '_allpass' ) allPass = 1; jQuery('input[name=filter_name]').val(initial_filter.label); editSysFilter = !parseInt(initial_filter.can_edit); if (jQuery('#disp_cols li:not(.hidden)').size() == 0) jQuery('#display_columns-field, #reset-display-options').hide(); itemValues() renderColumns(); renderFilterList(); var $initial_sort_button = jQuery('table.listing-table thead th. a.sort-link'); if ( $initial_sort_button.length ) $initial_sort_button.click(); else renderList('filtered_list', cols, vals, jQuery('#row').val(), 1); renderList('filtered_list', cols, vals, jQuery('#row').val(), 1); updateFilterSaveButtons(); var system_messages = ; for ( var i=0; i < system_messages.length; i++ ) { var message = system_messages[i]; showMessage( message.msg, message.cls ); }