function ExtractXmlDocumentFromFrame(frame)
{
var doc = frame.contentWindow ?
frame.contentWindow.document :
frame.contentDocument ?
frame.contentDocument :
frame.document;
if (doc == null)
return null;
if (doc.XMLDocument)
return $(doc.XMLDocument);
else
return $(doc);
}
$.fn.sm_show_grid_error = function (a_options) {
var _this = this;
var grid;
var defaults =
{
errorMessageHeader: 'Errors:',
errorMessage: 'Some error message',
columnSpan: 0,
useBlockGUI: false
};
var options = $.extend(defaults, a_options);
function ConstructErrorRow() {
var row = $('
');
errorPanel.addClass('alert').addClass('alert-error');
errorPanel.append('
' + options.errorMessageHeader + '');
errorPanel.append(options.errorMessage);
var closeButton = $('
');
closeButton.addClass('close');
closeButton
.click(RemoveErrorPanelHandler);
errorPanel.prepend(closeButton);
row.append(cell);
cell.append(errorPanel);
return row;
}
function RemoveErrorPanelHandler(event) {
event.preventDefault();
var errorRow = $(this).closest('tr');
RemoveErrorPanel(errorRow);
}
function RemoveErrorPanel(errorRow) {
var errorPanel = errorRow.find('div.grid_error_message');
errorPanel.remove();
errorRow.remove();
}
function construct() {
grid = $(_this);
grid.each(function () {
$(this).find('> thead > tr.header').before(ConstructErrorRow());
});
return _this;
}
return construct();
}
$.fn.sm_inline_grid_edit = function (a_options) {
var _this = this;
var defaults =
{
row: null,
debug: false,
editControlsContainer: '[data-column-name=InlineEdit]',
initEditControl: 'a.inline_edit_init',
cancelEditControl: 'a.inline_edit_cancel',
commitEditControl: 'a.inline_edit_commit',
cancelInsertControl: 'a.inline_insert_cancel',
commitInsertControl: 'a.inline_insert_commit',
requestAddress: '',
useBlockGUI: true,
inlineAddControl: '.inline_add_button',
cancelButtonHint: 'Cancel',
commitButtonHint: 'Commit',
useImagesForActions: true,
newRecordRowTemplate: '.new-record-row[data-new-row=false]',
newRecordAfterRowTemplate: '.new-record-after-row[data-new-row=false]',
responseCheckCount: 200,
editingErrorMessageHeader: 'Errors:'
};
var options = $.extend(defaults, a_options);
var grid;
function ClearErrorRow() {
var row = $('td.grid_error_row').closest('tr');
row.remove();
}
function SetupEditControls(editControlsContainer) {
var initEditControl = editControlsContainer.find(options.initEditControl);
initEditControl.click(InlineEditHandler);
var cancelControl = editControlsContainer.find(options.cancelEditControl);
cancelControl.click(CancelEditingClickHandler)
var commitControl = editControlsContainer.find(options.commitEditControl);
commitControl.click(CommitClickHandler);
HideCompleteEditControls(editControlsContainer);
}
function HideInitEditControls(editControlsContainer) {
editControlsContainer.find(options.initEditControl).hide();
}
function ShowInitEditControls(editControlsContainer) {
editControlsContainer.find(options.initEditControl).show();
}
function HideCompleteEditControls(editControlsContainer) {
editControlsContainer.find(options.cancelEditControl).hide();
editControlsContainer.find(options.commitEditControl).hide();
}
function ShowCompleteEditControls(editControlsContainer) {
editControlsContainer.find(options.cancelEditControl).show();
editControlsContainer.find(options.commitEditControl).show();
}
function CancelEditingClickHandler(event) {
event.preventDefault();
var cancelControl = $(this);
var row = cancelControl.closest('tr');
var editControlsContainer = cancelControl.closest(options.editControlsContainer);
CancelInlineEditing(row, editControlsContainer);
}
function CommitClickHandler(event) {
event.preventDefault();
var commitControl = $(this);
var row = commitControl.closest('tr');
var editControlsContainer = commitControl.closest(options.editControlsContainer);
CommitInlineEditing(row, editControlsContainer);
}
function CompleteEditing(editControlsContainer) {
ShowInitEditControls(editControlsContainer);
HideCompleteEditControls(editControlsContainer);
DestroyValidationErrorContainer(editControlsContainer);
ClearErrorRow();
require(['pgui.controls'], function(ctrls) {
ctrls.destroyEditors(editControlsContainer);
});
}
function ReturnOldHtmlForCell(dataCell) {
var oldHtml = dataCell.children('div.phpgen-ui-inline-edit-cell-old-data').html();
dataCell.html(oldHtml);
}
function EmbedEditorFromXml(row, editorXmlElement, isInsert) {
var editorHtml = editorXmlElement.find('html').text();
var editorScript = editorXmlElement.find('script').text();
var editorFieldName = editorXmlElement.attr('name');
var dataCell = row.find('[data-column-name="' + editorFieldName + '"]');
dataCell.attr('data-inline-editing', 'true');
var inlineEditorContainer = $('
');
inlineEditorContainer.addClass('inline_editor_container');
var form = $('