Viewing File: /usr/local/cpanel/whostmgr/docroot/templates/autossl/views/ManageUsersController.js
/* global define: false */
define(
[
"angular",
"cjt/util/locale",
"lodash",
"uiBootstrap",
"cjt/directives/toggleSortDirective",
"cjt/directives/searchDirective",
"cjt/directives/pageSizeDirective",
"cjt/directives/toggleSwitchDirective",
"cjt/filters/startFromFilter",
"cjt/decorators/paginationDecorator",
"ngSanitize",
],
function(angular, LOCALE, _) {
// Retrieve the current application
var app = angular.module("App");
// Setup the controller
var controller = app.controller(
"ManageUsersController", [
"$scope", "$filter", "AutoSSLConfigureService", "ssl_users", "growl",
function($scope, $filter, $service, ssl_users, growl) {
function _growl_error(error) {
if (!error) {
return;
}
return growl.error(_.escape(error));
}
$scope.users = ssl_users;
$scope.items = $scope.users;
$scope.selected_items = [];
$scope.filteredList = [];
$scope.showPager = true;
$scope.all_rows_selected = false;
$scope.meta = {
// sort settings
sortReverse: false,
sortBy: "user",
sortDirection: "asc",
// pager settings
maxPages: 0,
totalItems: $scope.items.length,
currentPage: 1,
pageSize: 10,
pageSizes: [10, 20, 50, 100],
start: 0,
limit: 10,
filterValue: "",
};
$scope.fetch = function() {
var filteredList = [];
// filter list based on search text
if ($scope.meta.filterValue !== "") {
filteredList = $filter("filter")($scope.items, $scope.meta.filterValue, false);
} else {
filteredList = $scope.items;
}
// sort the filtered list
if ($scope.meta.sortDirection !== "" && $scope.meta.sortBy !== "") {
filteredList = $filter("orderBy")(filteredList, $scope.meta.sortBy, $scope.meta.sortDirection === "asc" ? false : true);
}
// update the total items after search
$scope.meta.totalItems = filteredList.length;
// filter list based on page size and pagination
if ($scope.meta.totalItems > _.min($scope.meta.pageSizes)) {
var start = ($scope.meta.currentPage - 1) * $scope.meta.pageSize;
var limit = $scope.meta.pageSize;
filteredList = $filter("limitTo")($filter("startFrom")(filteredList, start), limit);
$scope.showPager = true;
// table statistics
$scope.meta.start = start + 1;
$scope.meta.limit = start + filteredList.length;
} else {
// hide pager and pagination
$scope.showPager = false;
if (filteredList.length === 0) {
$scope.meta.start = 0;
} else {
// table statistics
$scope.meta.start = 1;
}
$scope.meta.limit = filteredList.length;
}
var countNonSelected = $filter("filter")(filteredList, function(item) {
if (item.rowSelected) {
return false;
}
return true;
}).length;
$scope.filteredList = filteredList;
// Clear the 'Select All' checkbox if at least one row is not selected.
$scope.all_rows_selected = (filteredList.length > 0) && (countNonSelected === 0);
return filteredList;
};
$scope.can_run_check = function(user) {
if (user.auto_ssl_enabled === "enabled" || (user.auto_ssl_enabled === "inherit" && user.auto_ssl_settings.feature_list_setting.toString() === "1")) {
return true;
}
};
$scope.filter_table = function() {
$scope.fetch();
$scope.get_settings_for_current_users();
};
$scope.sort_table = function() {
$scope.fetch();
$scope.get_settings_for_current_users();
};
$scope.set_page = function() {
$scope.fetch();
$scope.get_settings_for_current_users();
};
$scope.set_page_size = function() {
$scope.fetch();
$scope.get_settings_for_current_users();
};
$scope.get_settings_for_current_users = function() {
$service.fetch_users_features_settings($scope.filteredList).then($scope.fetch, _growl_error);
};
$scope.showing_text = function() {
var first_item = ($scope.meta.currentPage - 1) * $scope.meta.pageSize;
first_item += 1;
var last_item = $scope.meta.currentPage * $scope.meta.pageSize;
last_item = Math.min(last_item, $scope.items.length);
return LOCALE.maketext("[output,strong,Showing] [numf,_1] - [numf,_2] of [quant,_3,item,items]", first_item, last_item, $scope.items.length);
};
$scope.enable_auto_ssl = function(items) {
// These are items that are "disabled" or "inherit"
var not_enabled_items = $filter("filter")(items, function(item) {
return item.auto_ssl_enabled !== "enabled";
});
if (not_enabled_items.length === 0) {
growl.info(LOCALE.maketext("No users needed to be updated."));
return;
}
return $service.enable_auto_ssl_for_users(not_enabled_items).then(function() {
$scope.items = $scope.users = $service.get_users();
var flat_user_list = not_enabled_items.map(function(item) {
return item.user;
});
if (flat_user_list.length > 5) {
growl.success(LOCALE.maketext("[quant,_1,user has had its,users have had their] feature list “[asis,autossl]” setting overridden and [numerate,_1,is,are] now set to “[_2]”", flat_user_list.length, LOCALE.maketext("enabled")));
} else {
growl.success(LOCALE.maketext("You forcibly enabled the [asis,autossl] feature for the following [numerate,_1,user,users]: [list_and_quoted,_2]", flat_user_list.length, flat_user_list));
}
}, _growl_error);
};
$scope.disable_auto_ssl = function(items) {
// These are items that are "enabled" or "inherit"
var not_disabled_items = $filter("filter")(items, function(item) {
return item.auto_ssl_enabled !== "disabled";
});
if (not_disabled_items.length === 0) {
growl.info(LOCALE.maketext("No users needed to be updated."));
return;
}
return $service.disable_auto_ssl_for_users(not_disabled_items).then(function() {
$scope.items = $scope.users = $service.get_users();
var flat_user_list = not_disabled_items.map(function(item) {
return item.user;
});
if (flat_user_list.length > 5) {
growl.success(LOCALE.maketext("[quant,_1,user has had its,users have had their] feature list “[asis,autossl]” setting overridden and [numerate,_1,is,are] now set to “[_2]”", flat_user_list.length, LOCALE.maketext("disabled")));
} else {
growl.success(LOCALE.maketext("You forcibly disabled the [asis,autossl] feature for the following [numerate,_1,user,users]: [list_and_quoted,_2]", flat_user_list.length, flat_user_list));
}
}, _growl_error);
};
$scope.reset_auto_ssl = function(items) {
items = $filter("filter")(items, function(item) {
/* no point in resetting reset ones */
if (item.auto_ssl_enabled === "inherit") {
return false;
}
return true;
});
if (items.length === 0) {
growl.info(LOCALE.maketext("No users needed to be updated."));
return;
}
return $service.reset_auto_ssl_for_users(items).then(function() {
$scope.items = $scope.users = $service.get_users();
var flat_user_list = items.map(function(item) {
return item.user;
});
if (flat_user_list.length > 5) {
growl.success(LOCALE.maketext("[quant,_1,user has had its,users have had their] feature list “[asis,autossl]” setting reset to use the setting established by [numerate,_1,its,their] feature [numerate,_1,list,lists]", flat_user_list.length));
} else {
growl.success(LOCALE.maketext("You reset the [asis,autossl] feature to the feature list setting for the following [numerate,_1,user,users]: [list_and_quoted,_2]", flat_user_list.length, flat_user_list));
}
}, _growl_error);
};
$scope.update_auto_ssl_setting = function(user, new_value) {
if (user.auto_ssl_enabled === new_value) {
return;
}
if (new_value === "inherit") {
$scope.reset_auto_ssl([user]);
} else if (new_value === "enabled") {
$scope.enable_auto_ssl([user]);
} else if (new_value === "disabled") {
$scope.disable_auto_ssl([user]);
}
};
$scope.start_autossl_for_user = function(username) {
return $service.start_autossl_for_user(username).then(
function(result) {
growl.success(LOCALE.maketext("The system is checking the “[_1]” account’s domains (process [asis,ID] “[_2]”).", _.escape(username), result.data.pid));
},
_growl_error
);
};
$scope.select_all_items = function(items, force_on) {
if (force_on) {
$scope.all_rows_selected = true;
}
angular.forEach(items, function(item) {
item.rowSelected = $scope.all_rows_selected;
});
$scope.selected_items = $scope.get_selected_items();
$scope.fetch();
$scope.get_settings_for_current_users();
};
$scope.clear_all_selections = function() {
angular.forEach($scope.items, function(item) {
item.rowSelected = 0;
});
$scope.selected_items = $scope.get_selected_items();
$scope.fetch();
$scope.get_settings_for_current_users();
};
$scope.select_item = function() {
$scope.selected_items = $scope.get_selected_items();
$scope.fetch();
$scope.get_settings_for_current_users();
};
$scope.get_selected_items = function() {
return $filter("filter")($scope.items, function(item) {
if (item.rowSelected) {
return true;
}
});
};
$scope.auto_ssl_items = function(items) {
return $filter("filter")(items, function(item) {
return item.auto_ssl_enabled === "enabled";
});
};
$scope.get_reset_string = function(user) {
if (user.auto_ssl_settings.feature_list_setting) {
return LOCALE.maketext("Use setting established by the feature list “[_1]” which is currently set to “[_2]”.", user.feature_list, user.auto_ssl_settings.feature_list_setting === "1" ? LOCALE.maketext("enabled") : LOCALE.maketext("disabled"));
} else {
return "";
}
};
$scope.get_enable_button_label = function() {
return LOCALE.maketext("Enable [asis,AutoSSL] on selected [quant,_1,user,users]", $scope.selected_items.length);
};
$scope.get_disable_button_label = function() {
return LOCALE.maketext("Disable [asis,AutoSSL] on selected [quant,_1,user,users]", $scope.selected_items.length);
};
$scope.get_reset_button_label = function() {
return LOCALE.maketext("Reset [asis,AutoSSL] on selected [quant,_1,user,users]", $scope.selected_items.length);
};
$scope.fetch();
$scope.get_settings_for_current_users();
}
]
);
return controller;
}
);
Back to Directory
File Manager