PageSourceSearch

https://support.rowriter.com/App/Components/Administration/Adminis…?21ed1c0294cbf1b58a6d3e5849a35af4

js rowriter.com collected 2026-09-29 02:44:27 UTC 9,990 bytes, 200 lines download raw bytes

1app.controller('administrationController', ['$scope', '$rootScope', '$http', '$timeout', 'Upload', 'administrationService', function ($scope, $rootScope, $http, $timeout, Upload, administrationService) {
2    $scope.hubForm = {};
3    $scope.featureForm = {};
4    $scope.authenticationForm = {};
5    $scope.displayForm = {};
6    $scope.logo = [];
7
8    $scope.displaySettingsForm = {};
9    var migrationConfirmWarningMessage = 'Warning this will replace your current settings with any portal settings you defined in your old portal.\nDo you want to continue with this operation?';
10
11    administrationService.GetAdminConfiguration(function (data) {
12        $scope.adminConfig = data;
13        $scope.hubSettingsForm = angular.copy($scope.adminConfig.CustomerHub);
14        $scope.hubSettingsForm.DisplaySAMLConfiguration = $scope.adminConfig.DisplaySAMLConfiguration;
15        $scope.hubSettingsForm.DisplayOAuth2Configuration = $scope.adminConfig.DisplayOAuth2Configuration;
16        $scope.hubSettingsForm.AllowExternalDomainCookies = $scope.adminConfig.AllowExternalDomainCookies;
17        $scope.hubSettingsForm.SAML = $scope.adminConfig.SAML;
18        $scope.hubSettingsForm.OAuth2Configuration = angular.copy($scope.adminConfig.OAuth2Configuration);
19        $scope.hubSettingsForm.associatedProductFamilies = angular.copy($scope.adminConfig.AssociatedProductFamilies);
20        $scope.authenticationSettingsForm = angular.copy($scope.adminConfig.AuthenticationSettings);
21        $scope.authenticationSettingsForm.RequireEmailVerificationForSignup = $scope.adminConfig.RequireEmailVerificationForSignup;
22        $scope.featureSettingsForm = angular.copy($scope.adminConfig.FeatureSettings);
23        $scope.displaySettingsForm = angular.copy($scope.adminConfig.DisplaySettings);
24        $scope.requestTicketTypes = $scope.adminConfig.TicketTypes;
25        $scope.requestGroups = $scope.adminConfig.Groups;
26        $scope.productLines = $scope.adminConfig.ProductLines;
27        $scope.sortOrderTypes = $scope.adminConfig.SortOrderTypes;
28    });
29
30    $scope.submitHub = function (form) {
31        var r = confirm("Changing these settings can impact the ability for you and users to access the hub, please verify your settings are correct and click ok to continue.");
32        if (r == true) {
33            var formInfo = this.hubForm;
34            administrationService.UpdateCustomerHub(form, function (data) {
35                if (data.ClassName) {
36                    alert(data.Message);
37                }
38                else {
39                    $scope.adminConfig.CustomerHub = form;
40                    $scope.adminConfig.SAML = form.SAML
41                    $scope.adminConfig.AllowExternalDomainCookies = form.AllowExternalDomainCookies
42                    $scope.adminConfig.OAuth2Configuration = angular.copy(form.OAuth2Configuration);
43                    formInfo.$setPristine();
44                }
45            });
46        }
47    };
48
49    $scope.resetHub = function () {
50        $scope.hubSettingsForm = angular.copy($scope.adminConfig.CustomerHub);
51        $scope.hubSettingsForm.DisplaySAMLConfiguration = $scope.adminConfig.DisplaySAMLConfiguration;
52        $scope.hubSettingsForm.DisplayOAuth2Configuration = $scope.adminConfig.DisplayOAuth2Configuration;
53        $scope.hubSettingsForm.AllowExternalDomainCookies = $scope.adminConfig.AllowExternalDomainCookies;
54        $scope.hubSettingsForm.SAML = $scope.adminConfig.SAML;
55        $scope.hubSettingsForm.OAuth2Configuration = angular.copy($scope.adminConfig.OAuth2Configuration);
56
57        this.hubForm.$setPristine();
58    };
59
60    $scope.submitAuthenticationSettings = function (form) {
61        var formInfo = this.authenticationForm;
62        administrationService.UpdateAuthenticationSettings(form, function (data) {
63            $scope.adminConfig.AuthenticationSettings = data.AuthenticationSettings;
64            $scope.adminConfig.RequireEmailVerificationForSignup = data.RequireEmailVerificationForSignup;
65            $scope.authenticationSettingsForm = angular.copy(data.AuthenticationSettings);
66            $scope.authenticationSettingsForm.RequireEmailVerificationForSignup = data.RequireEmailVerificationForSignup;
67            formInfo.$setPristine();
68        })
69    };
70
71    $scope.resetAuthenticationSettings = function () {
72        $scope.authenticationSettingsForm = angular.copy($scope.adminConfig.AuthenticationSettings);
73        $scope.authenticationSettingsForm.RequireEmailVerificationForSignup = $scope.adminConfig.RequireEmailVerificationForSignup;
74        this.authenticationForm.$setPristine();
75    };
76
77    $scope.submitFeatureSettings = function (form) {
78        var formInfo = this.featureForm;
79        administrationService.UpdateFeatureSettings(form, function (data) {
80            $scope.adminConfig.FeatureSettings = data;
81            $scope.featureSettingsForm = angular.copy($scope.adminConfig.FeatureSettings);
82            formInfo.$setPristine();
83        });
84    };
85
86    $scope.resetFeatureSettings = function () {
87        $scope.featureSettingsForm = angular.copy($scope.adminConfig.FeatureSettings);
88        this.featureForm.$setPristine();
89    };
90
91    $scope.submitDisplaySettings = function (form) {
92        var formInfo = this.displayForm;
93        administrationService.UpdateDisplaySettings(form, function (data) {
94            $rootScope.settings.Display = data;
95            $scope.adminConfig.DisplaySettings = data;
96            formInfo.$setPristine();
97        });
98
99        $scope.uploadLogo(function () { });
100    };
101
102    $scope.resetDisplaySettings = function () {
103        $scope.displaySettingsForm = angular.copy($scope.adminConfig.DisplaySettings);
104        this.displayForm.$setPristine();
105    };
106
107    $scope.toggleAllTicketing = function (val) {
108        $scope.featureSettingsForm.EnableTicketCreation = val;
109        $scope.featureSettingsForm.EnableMyTickets = val;
110        $scope.featureSettingsForm.EnableOrganizationTickets = val;
111    }
112
113    $scope.toggleAllAnonymous = function (val) {
114        $scope.authenticationSettingsForm.AnonymousKBAccess = val;
115        $scope.authenticationSettingsForm.AnonymousProductAccess = val;
116        $scope.authenticationSettingsForm.AnonymousTicketAccess = val;
117        $scope.authenticationSettingsForm.AnonymousWikiAccess = val;
118    }
119
120    $scope.toggleChildProductAssociation = function (val) {
121        if (val === false) {
122            $scope.featureSettingsForm.EnableAnonymousProductAssociation = val;
123        }
124    }
125
126    $scope.toggleParentProductAssociation = function (val) {
127        if (val === true) {
128            $scope.featureSettingsForm.EnableCustomerProductAssociation = val;
129        }
130    }
131
132    // On toggling off of the enable Contact additions, we want to also toggle off the filter contacts by same customer setting.
133    $scope.onToggleEnableContactAssociation = function (val) {
134        if (val === false) {
135            $scope.featureSettingsForm.AssociateContactsFromSameOrgOnly = false;
136        }
137    }
138
139    // When toggling the "Contacts must be part of the authenticated customer" setting, we also want to toggle other settings
140    $scope.onToggleFilterContactBySameCustomer = function (val) {
141        if (val === true) {
142            // toggle on the "enable Contact additions" setting since you cant have this feature turned on if you cannot add additional contacts.
143            $scope.featureSettingsForm.EnableTicketContactAdditions = true;
144            // toggle off the "anonymous ticketing" setting since you cant have both on at once.
145            $scope.authenticationSettingsForm.AnonymousTicketAccess = false;
146            this.authenticationForm.$setDirty();
147        }
148    }
149
150    // When toggling the "Anonymous Ticketing" setting on, turn off "Contacts must be part of the authenticated customer" since you can't have both on at once
151    $scope.onToggleAnonymousTicketing = function (val) {
152        if (val === true) {
153            $scope.featureSettingsForm.AssociateContactsFromSameOrgOnly = false;
154            this.featureForm.$setDirty();
155        }
156    }
157
158    // If contact/product Restriction is turned on, turn organization tickets on.
159    $scope.toggleParentOrganizationTickets = function (val) {
160        if (val === true) { $scope.featureSettingsForm.EnableOrganizationTickets = val; }
161    }
162
163    // If Organization Tickets is turned off, turn off also its children 
164    $scope.toggleChildOrganizationTickets = function (val) {
165        if (val === false) { $scope.featureSettingsForm.EnableContactProductRestriction = val; }
166    }
167
168    $scope.addLogo = function (file) {
169        var filename = file[0].name.replace(" ", '%20');
170        file = Upload.rename(file[0], filename)
171        $scope.logo = file;
172        $scope.uploadLogo(function () {
173        });
174    };
175
176    $scope.uploadLogo = function (callback) {
177        if ($scope.logo) {
178            Upload.upload({
179                url: '../../api/Administration/UploadLogo',
180                data: { files: $scope.logo }
181            }).then(function (response) {
182                $timeout(function () {
183                    var path = $rootScope.settings.TSAppURL + '/dc/' + $rootScope.settings.Hub.OrganizationID + '/images/hublogo/' + $rootScope.settings.Hub.CustomerHubID + '/' + response.data.Attachments[0].FileName;
184                    $rootScope.settings.HubLogoURL = path;
185                    $scope.logo = [];
186                    callback();
187                });
188            }, function (response) {
189                if (response.status > 0) {
190                    $scope.errorMsg = response.status + ': ' + response.data;
191                    $scope.logo = [];
192                }
193            }, function (evt) {
194                $scope.progress =
195                    Math.min(100, parseInt(100.0 * evt.loaded / evt.total));
196            });
197        }
198    };
199
200}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.