praiadeseselle/wire/modules/Inputfield/InputfieldPageTable/InputfieldPageTable.js

192 lines
6.3 KiB
JavaScript
Raw Normal View History

2022-03-08 15:55:41 +01:00
function InputfieldPageTableDialog() {
var $a = $(this);
var url = $a.attr('data-url');
var title = $a.attr('data-title');
var closeOnSave = true;
var $container = $(this).parents('.InputfieldPageTableContainer');
var dialogPageID = 0;
var noclose = parseInt($container.attr('data-noclose'));
var modalSettings = {
close: function(event, ui) {
if(dialogPageID > 0) {
var ajaxURL = $container.attr('data-url') + '&InputfieldPageTableAdd=' + dialogPageID;
var sort = $container.siblings(".InputfieldPageTableSort").val();
if(typeof sort != "undefined" && sort.length) ajaxURL += '&InputfieldPageTableSort=' + sort.replace(/\|/g, ',');
$.get(ajaxURL, function(data) {
$container.html(data);
$container.find(".Inputfield").trigger('reloaded', ['InputfieldPageTable']);
$container.effect('highlight', 500, function() {
var $table = $container.find('table');
$table.find('tbody').css('overflow', 'visible');
InputfieldPageTableSortable($table);
2023-03-10 19:41:40 +01:00
// restore appearance of any items marked for deletion
2022-03-08 15:55:41 +01:00
var deleteIDs = $container.siblings("input.InputfieldPageTableDelete").eq(0).val().split('|');
if(deleteIDs.length) {
for(var n = 0; n < deleteIDs.length; n++) {
var deleteID = deleteIDs[n];
2023-03-10 19:41:40 +01:00
if(!deleteID.length) continue;
2022-03-08 15:55:41 +01:00
$table.find("tr[data-id=" + deleteID + "]")
.addClass('InputfieldPageTableDelete ui-state-error-text ui-state-disabled');
}
}
});
});
}
}
}
var $iframe = pwModalWindow(url, modalSettings, 'large');
var closeOnSaveReady = false;
if($a.is('.InputfieldPageTableAdd')) closeOnSave = false;
$iframe.on('load', function() {
2022-03-08 15:55:41 +01:00
var buttons = [];
//$dialog.dialog('option', 'buttons', {});
var $icontents = $iframe.contents();
var n = 0;
// var title = $icontents.find('title').text();
dialogPageID = $icontents.find('#Inputfield_id').val(); // page ID that will get added if not already present
// hide things we don't need in a modal context
$icontents.find('#wrap_Inputfield_template, #wrap_template, #wrap_parent_id').hide();
//$icontents.find('#breadcrumbs ul.nav, #_ProcessPageEditDelete, #_ProcessPageEditChildren').hide();
$icontents.find('#_ProcessPageEditDelete, #_ProcessPageEditChildren').hide();
closeOnSave = noclose == 0 && $icontents.find('#ProcessPageAdd').length == 0;
if(closeOnSave && closeOnSaveReady) {
if($icontents.find(".NoticeError, .NoticeWarning, .ui-state-error").length == 0) {
if(typeof Notifications != "undefined") {
var messages = [];
$icontents.find(".NoticeMessage").each(function() {
messages[messages.length] = $(this).text();
});
if(messages.length > 0) setTimeout(function() {
for(var i = 0; i < messages.length; i++) {
Notifications.message(messages[i]);
}
}, 500);
}
$iframe.dialog('close');
return;
} else {
// errors occurred, so keep it open
}
}
// copy buttons in iframe to dialog
$icontents.find("#content form button.ui-button[type=submit]").each(function() {
var $button = $(this);
var text = $button.text();
var skip = false;
// avoid duplicate buttons
for(var i = 0; i < buttons.length; i++) {
if(buttons[i].text == text || text.length < 1) skip = true;
}
if(!skip) {
buttons[n] = {
'text': text,
'class': ($button.is('.ui-priority-secondary') ? 'ui-priority-secondary' : ''),
'click': function() {
$button.trigger('click');
2022-03-08 15:55:41 +01:00
if(closeOnSave) closeOnSaveReady = true;
if(!noclose) closeOnSave = true; // only let closeOnSave happen once
}
};
n++;
};
$button.hide();
});
$iframe.setButtons(buttons);
});
return false;
}
function InputfieldPageTableUpdate($table) {
var value = '';
if(!$table.is('tbody')) $table = $table.find('tbody');
$table.find('tr').each(function() {
var pageID = $(this).attr('data-id');
if(value.length > 0) value += '|';
value += pageID;
});
var $container = $table.parents('.InputfieldPageTableContainer');
var $input = $container.siblings('.InputfieldPageTableSort');
$input.val(value);
}
function InputfieldPageTableSortable($tables) {
$tables.each(function() {
var $table = $(this);
if($table.closest('.InputfieldRenderValueMode').length) return;
$table.find('tbody').sortable({
axis: 'y',
start: function(event, ui) {
var widths = [];
var n = 0;
$table.find('thead').find('th').each(function() {
widths[n] = $(this).width();
n++;
});
n = 0;
ui.helper.find('td').each(function() {
$(this).attr('width', widths[n]);
n++;
});
},
stop: function(event, ui) {
InputfieldPageTableUpdate($(this));
2022-11-05 18:32:48 +01:00
},
update: function(e, ui) {
$table.closest('.Inputfield').trigger('sorted', [ ui.item ]);
2022-03-08 15:55:41 +01:00
}
});
});
}
function InputfieldPageTableDelete() {
var $row = $(this).closest('tr');
$row.toggleClass('InputfieldPageTableDelete ui-state-error-text ui-state-disabled');
var ids = '';
$row.parents('tbody').children('tr').each(function() {
var $tr = $(this);
var id = $tr.attr('data-id');
if($tr.is('.InputfieldPageTableDelete')) ids += (ids.length > 0 ? '|' : '') + id;
});
var $input = $(this).parents('.InputfieldPageTableContainer').siblings('input.InputfieldPageTableDelete');
$input.val(ids);
return false;
}
$(document).ready(function() {
$(document).on('click', '.InputfieldPageTableAdd, .InputfieldPageTableEdit', InputfieldPageTableDialog);
$(document).on('click', 'a.InputfieldPageTableDelete', InputfieldPageTableDelete);
$(document).on('dblclick', '.InputfieldPageTable .AdminDataTable td', function() {
$(this).closest('tr').find('.InputfieldPageTableEdit').trigger('click');
2022-03-08 15:55:41 +01:00
});
InputfieldPageTableSortable($(".InputfieldPageTable table"));
$(document).on('reloaded', '.InputfieldPageTable', function() {
InputfieldPageTableSortable($(this).find(".InputfieldPageTableContainer > table"));
});
$(document).on('click', '.InputfieldPageTableOrphansAll', function() {
var $checkboxes = $(this).closest('.InputfieldPageTableOrphans').find('input');
// if($checkboxes.eq(0).is(":checked")) $checkboxes.removeAttr('checked'); // JQM
// else $checkboxes.attr('checked', 'checked'); // JQM
$checkboxes.prop('checked', ($checkboxes.eq(0).is(':checked') ? false : true));
return false;
});
});