X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=ang%2FcrmCxn%2FManageCtrl.js;h=cd843c3304ae7a70508bef764e9dbff60be9131c;hb=30234954b1c55ae6e9e972b2b71cc3a389915a23;hp=f8929e5895e8be07e4e77d97cd9384f8384aca1e;hpb=32f4359b126b925347282af05c21f8f862a0b083;p=civicrm-core.git diff --git a/ang/crmCxn/ManageCtrl.js b/ang/crmCxn/ManageCtrl.js index f8929e5895..cd843c3304 100644 --- a/ang/crmCxn/ManageCtrl.js +++ b/ang/crmCxn/ManageCtrl.js @@ -1,6 +1,6 @@ (function(angular, $, _) { - angular.module('crmCxn').controller('CrmCxnManageCtrl', function CrmCxnManageCtrl($scope, apiCalls, crmApi, crmUiAlert, crmBlocker, crmStatus, $timeout, dialogService) { + angular.module('crmCxn').controller('CrmCxnManageCtrl', function CrmCxnManageCtrl($scope, apiCalls, crmApi, crmUiAlert, crmBlocker, crmStatus, $timeout, dialogService, crmCxnCheckAddr) { var ts = $scope.ts = CRM.ts(null); if (apiCalls.appMetas.is_error) { $scope.appMetas = []; @@ -12,6 +12,17 @@ $scope.cxns = apiCalls.cxns.values; $scope.alerts = _.where(apiCalls.sysCheck.values, {name: 'checkCxnOverrides'}); + crmCxnCheckAddr(apiCalls.cfg.values.siteCallbackUrl).then(function(response) { + if (response.valid) return; + crmUiAlert({ + type: 'warning', + title: ts('Internet Access Required'), + templateUrl: '~/crmCxn/Connectivity.html', + scope: $scope.$new(), + options: {expires: false} + }); + }); + $scope.filter = {}; var block = $scope.block = crmBlocker(); @@ -19,18 +30,30 @@ crmUiAlert({text: alert.message, title: alert.title, type: 'error'}); }); - $scope.findCxnByAppId = function(appId) { - var result = _.where($scope.cxns, { - app_guid: appId - }); + // Convert array [x] to x|null|error + function asOne(result, msg) { switch (result.length) { case 0: return null; case 1: return result[0]; default: - throw "Error: Too many connections for appId: " + appId; + throw msg; } + } + + $scope.findCxnByAppId = function(appId) { + var result = _.where($scope.cxns, { + app_guid: appId + }); + return asOne(result, "Error: Too many connections for appId: " + appId); + }; + + $scope.findAppByAppId = function(appId) { + var result = _.where($scope.appMetas, { + appId: appId + }); + return asOne(result, "Error: Too many apps for appId: " + appId); }; $scope.hasAvailApps = function() { @@ -52,12 +75,20 @@ }; $scope.register = function(appMeta) { - var reg = crmApi('Cxn', 'register', {app_guid: appMeta.appId}).then($scope.refreshCxns); + var reg = crmApi('Cxn', 'register', {app_guid: appMeta.appId}).then($scope.refreshCxns).then(function() { + if (appMeta.links.welcome) { + return $scope.openLink(appMeta, 'welcome', {title: ts('%1: Welcome (External)', {1: appMeta.title})}); + } + }); return block(crmStatus({start: ts('Connecting...'), success: ts('Connected')}, reg)); }; $scope.reregister = function(appMeta) { - var reg = crmApi('Cxn', 'register', {app_guid: appMeta.appId}).then($scope.refreshCxns); + var reg = crmApi('Cxn', 'register', {app_guid: appMeta.appId}).then($scope.refreshCxns).then(function() { + if (appMeta.links.welcome) { + return $scope.openLink(appMeta, 'welcome', {title: ts('%1: Welcome (External)', {1: appMeta.title})}); + } + }); return block(crmStatus({start: ts('Reconnecting...'), success: ts('Reconnected')}, reg)); }; @@ -67,14 +98,15 @@ }; $scope.toggleCxn = function toggleCxn(cxn) { - var reg = crmApi('Cxn', 'create', {id: cxn.id, is_active: !cxn.is_active, debug: 1}).then(function(){ - cxn.is_active = !cxn.is_active; + var is_active = (cxn.is_active=="1" ? 0 : 1); // we switch the flag + var reg = crmApi('Cxn', 'create', {id: cxn.id, app_guid: cxn.app_meta.appId, is_active: is_active, debug: 1}).then(function(){ + cxn.is_active = is_active; }); return block(crmStatus({start: ts('Saving...'), success: ts('Saved')}, reg)); }; $scope.openLink = function openLink(appMeta, page, options) { - var promise = crmApi('Cxn', 'getlink', {app_guid: appMeta.appId, page: page}).then(function(result) { + var promise = crmApi('Cxn', 'getlink', {app_guid: appMeta.appId, page_name: page}).then(function(result) { var mode = result.values.mode ? result.values.mode : 'popup'; switch (result.values.mode) { case 'iframe':