Viewing File: /usr/local/cpanel/base/frontend/jupiter/passenger/services/domains.js

/*
# passenger/services/domains.js                 Copyright(c) 2020 cPanel, L.L.C.
#                                                           All rights reserved.
# copyright@cpanel.net                                         http://cpanel.net
# This code is subject to the cPanel license. Unauthorized copying is prohibited
*/

/* global define: false */

define(
    [
        "angular",
        "jquery",
        "lodash",
        "cjt/util/locale",
        "cjt/io/api",
        "cjt/io/api2-request",
        "cjt/io/api2",
        "cjt/util/httpStatus",
        "cjt/core",
        "cjt/services/APIService"
    ],
    function(angular, $, _, LOCALE, API, APIREQUEST, APIDRIVER, HTTP_STATUS, CJT) {

        var app = angular.module("cpanel.applicationManager");
        var factory = app.factory(
            "Domains",
            ["$q", "defaultInfo", "APIService", function($q, defaultInfo, APIService) {

                var types = {
                    "addon_domains": LOCALE.maketext("Addon Domains"),
                    "main_domain": LOCALE.maketext("Main Domain"),
                    "sub_domains": LOCALE.maketext("Subdomains")
                };

                function determine_group(type) {
                    if (types[type]) {
                        return types[type];
                    } else {
                        return LOCALE.maketext("Other");
                    }
                }

                function massage_data(data) {
                    var formatted_data = [];

                    for (var j = 0, keys = _.keys(data).sort(), key_len = keys.length; j < key_len; j++) {
                        var category = keys[j];
                        if (category === "cp_php_magic_include_path.conf" || category === "parked_domains") {
                            continue;
                        }

                        if (!_.isArray(data[category])) {
                            formatted_data.push({
                                "domain": data[category],
                                "type": determine_group(category)
                            });
                        } else {
                            var temp_array = [];
                            for (var i = 0, len = data[category].length; i < len; i++) {
                                temp_array.push({
                                    "domain": data[category][i],
                                    "type": determine_group(category)
                                });
                            }
                            formatted_data = formatted_data.concat(_.sortBy(temp_array, ["domain"]));
                        }
                    }

                    return formatted_data;
                }

                var DomainsService = function() {};
                DomainsService.prototype = new APIService();
                DomainsService.domains = [];

                angular.extend(DomainsService.prototype, {
                    fetch: function() {
                        if (this.domains.length === 0) {
                            var apiCall = new APIREQUEST.Class();
                            apiCall.initialize("DomainInfo", "list_domains");

                            var deferred = this.deferred(apiCall, {
                                transformAPISuccess: function(response) {
                                    this.domains = massage_data(response.data);
                                    return this.domains;
                                }
                            });
                            return deferred.promise;
                        } else {
                            return $q.when(this.domains);
                        }
                    },

                    init: function() {
                        this.domains = massage_data(defaultInfo.domains);
                    }

                });


                var service = new DomainsService();
                service.init();

                return service;
            }]);

        return factory;
    }
);
Back to Directory File Manager