From b1fc510d1ee162c727dc328dc40fb82143fb2cb2 Mon Sep 17 00:00:00 2001 From: Coleman Watts Date: Sat, 14 Feb 2015 19:08:02 -0500 Subject: [PATCH] CRM-15705 - Set ui dialog defaults in Angular --- js/Common.js | 29 ++++++++++++++++++++++++++++- js/angular-crmMailing.js | 20 ++++++++------------ js/angular-crmMailing/services.js | 5 ++--- js/angular-crmMailingAB.js | 5 ++--- js/crm.ajax.js | 28 +++------------------------- 5 files changed, 43 insertions(+), 44 deletions(-) diff --git a/js/Common.js b/js/Common.js index ca2d5ea8a8..f970256458 100644 --- a/js/Common.js +++ b/js/Common.js @@ -324,7 +324,34 @@ CRM.strings = CRM.strings || {}; }); 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 diff --git a/js/angular-crmMailing.js b/js/angular-crmMailing.js index fa103049c9..cb6e6449d0 100644 --- a/js/angular-crmMailing.js +++ b/js/angular-crmMailing.js @@ -250,23 +250,21 @@ 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, @@ -314,11 +312,10 @@ })); 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); }; }); @@ -349,11 +346,10 @@ 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; diff --git a/js/angular-crmMailing/services.js b/js/angular-crmMailing/services.js index 08efca1fb4..1ee3c89378 100644 --- a/js/angular-crmMailing/services.js +++ b/js/angular-crmMailing/services.js @@ -399,13 +399,12 @@ 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); diff --git a/js/angular-crmMailingAB.js b/js/angular-crmMailingAB.js index 227b7c5720..e1b822a5e0 100644 --- a/js/angular-crmMailingAB.js +++ b/js/angular-crmMailingAB.js @@ -199,13 +199,12 @@ 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); }; }); diff --git a/js/crm.ajax.js b/js/crm.ajax.js index 6a2c1a593e..8a8e74cc49 100644 --- a/js/crm.ajax.js +++ b/js/crm.ajax.js @@ -304,35 +304,13 @@ 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); $('
' + ts('Loading') + '...
').dialog(settings.dialog); $(settings.target) .on('dialogclose', function() { @@ -586,7 +564,7 @@ $('.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'); -- 2.25.1