});
return isDirty;
};
-
+
+ /**
+ * This provides defaults for ui.dialog which either need to be calculated or are different from global defaults
+ *
+ * @param settings
+ * @returns {*}
+ */
+ CRM.utils.adjustDialogDefaults = function(settings) {
+ settings = $.extend({width: '65%', height: '65%', modal: true}, settings || {});
+ // Support relative height
+ if (typeof settings.height === 'string' && settings.height.indexOf('%') > 0) {
+ settings.height = parseInt($(window).height() * (parseFloat(settings.height)/100), 10);
+ }
+ // Responsive adjustment - increase percent width on small screens
+ if (typeof settings.width === 'string' && settings.width.indexOf('%') > 0) {
+ var screenWidth = $(window).width(),
+ percentage = parseInt(settings.width.replace('%', ''), 10),
+ gap = 100-percentage;
+ if (screenWidth < 701) {
+ settings.width = '100%';
+ }
+ else if (screenWidth < 1400) {
+ settings.width = '' + parseInt(percentage+gap-((screenWidth - 700)/7*(gap)/100), 10) + '%';
+ }
+ }
+ return settings;
+ };
+
/**
* Wrapper for select2 initialization function; supplies defaults
* @param options object
var model = {
recipients: $scope.recipients
};
- var options = {
+ var options = CRM.utils.adjustDialogDefaults({
autoOpen: false,
- modal: true,
title: ts('Preview (%1)', {
1: $scope.getRecipientsEstimate()
})
- };
+ });
dialogService.open('recipDialog', '~/crmMailing/dialog/recipients.html', model, options);
};
// Open a dialog for editing the advanced recipient options.
$scope.editOptions = function editOptions(mailing) {
- var options = {
+ var options = CRM.utils.adjustDialogDefaults({
autoOpen: false,
- modal: true,
title: ts('Edit Options')
- };
+ });
$q.when(crmMetadata.getFields('Mailing')).then(function(fields) {
var model = {
fields: fields,
}));
return;
}
- var options = {
+ var options = CRM.utils.adjustDialogDefaults({
autoOpen: false,
- modal: true,
title: title // component[0].name
- };
+ });
dialogService.open('previewComponentDialog', '~/crmMailing/dialog/previewComponent.html', component[0], options);
};
});
msg_html: mailing.body_html
}
};
- var options = {
+ var options = CRM.utils.adjustDialogDefaults({
autoOpen: false,
- modal: true,
title: ts('Save Template')
- };
+ });
return dialogService.open('saveTemplateDialog', '~/crmMailing/dialog/saveTemplate.html', model, options)
.then(function (item) {
mailing.msg_template_id = item.id;
var p = crmMailingMgr
.preview(mailing)
.then(function (content) {
- var options = {
+ var options = CRM.utils.adjustDialogDefaults({
autoOpen: false,
- modal: true,
title: ts('Subject: %1', {
1: content.subject
})
- };
+ });
result = dialogService.open('previewDialog', templates[mode], content, options);
});
crmStatus({start: ts('Previewing'), success: ''}, p);
abtest: abtest,
mailingName: mailingName
};
- var options = {
+ var options = CRM.utils.adjustDialogDefaults({
autoOpen: false,
- modal: true,
title: ts('Select Winner (%1)', {
1: mailingName.toUpperCase()
})
- };
+ });
return dialogService.open('selectWinnerDialog', '~/crmMailingAB/selectWinner.html', model, options);
};
});
CRM.loadPage = function(url, options) {
var settings = {
target: '#crm-ajax-dialog-' + (dialogCount++),
- dialog: false
+ dialog: (options && options.target) ? false : {}
};
- if (!options || !options.target) {
- settings.dialog = {
- modal: true,
- width: '65%',
- height: '75%'
- };
- }
if (options) $.extend(true, settings, options);
settings.url = url;
// Create new dialog
if (settings.dialog) {
- // HACK: jQuery UI doesn't support relative height
- if (typeof settings.dialog.height === 'string' && settings.dialog.height.indexOf('%') > 0) {
- settings.dialog.height = parseInt($(window).height() * (parseFloat(settings.dialog.height)/100), 10);
- }
- // Increase percent width on small screens
- if (typeof settings.dialog.width === 'string' && settings.dialog.width.indexOf('%') > 0) {
- var screenWidth = $(window).width(),
- percentage = parseInt(settings.dialog.width.replace('%', ''), 10),
- gap = 100-percentage;
- if (screenWidth < 701) {
- settings.dialog.width = '100%';
- }
- else if (screenWidth < 1400) {
- settings.dialog.width = '' + parseInt(percentage+gap-((screenWidth - 700)/7*(gap)/100), 10) + '%';
- }
- }
+ settings.dialog = CRM.utils.adjustDialogDefaults(settings.dialog);
$('<div id="'+ settings.target.substring(1) +'"><div class="crm-loading-element">' + ts('Loading') + '...</div></div>').dialog(settings.dialog);
$(settings.target)
.on('dialogclose', function() {
$('.ui-dialog-content.crm-ajax-container:hidden[data-unsaved-changes=true]').crmSnippet('destroy').dialog('destroy').remove();
})
// Auto-resize dialogs when loading content
- .on('crmLoad', 'div.ui-dialog.ui-resizable.crm-container', function(e) {
+ .on('crmLoad dialogopen', 'div.ui-dialog.ui-resizable.crm-container', function(e) {
var
$wrapper = $(this),
$dialog = $wrapper.children('.ui-dialog-content');