', 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 );
}