HEX
Server: Apache
System: Linux 185.122.168.184.host.secureserver.net 5.14.0-570.60.1.el9_6.x86_64 #1 SMP PREEMPT_DYNAMIC Wed Nov 5 05:00:59 EST 2025 x86_64
User: barbeatleanalyti (1024)
PHP: 8.1.33
Disabled: NONE
Upload Files
File: /home/barbeatleanalyti/www/public_html/webmail/modules/AdminPanelWebclient/js/manager.js
'use strict';

module.exports = function (oAppData) {
	var 
		App = require('%PathToCoreWebclientModule%/js/App.js'),
		Promise = require("bluebird")
	;
	
	if (App.getUserRole() === Enums.UserRole.SuperAdmin)
	{
		var
			_ = require('underscore'),
			
			TextUtils = require('%PathToCoreWebclientModule%/js/utils/Text.js'),
			
			Cache = require('modules/%ModuleName%/js/Cache.js'),
			Settings = require('modules/%ModuleName%/js/Settings.js'),
			
			aEntityTypesToRegister = [],
			aEntityDataToChange = [],
				
			aAdminPanelTabsParams = [],
			aAdminPanelTabsSectionsParams = []
		;

		Settings.init(oAppData);
		Cache.init(oAppData);
		
		return {
			start: function () {
				aAdminPanelTabsParams.push({
					GetTabView: function(resolve) {
						require.ensure(
							['modules/%ModuleName%/js/views/DbAdminSettingsView.js'],
							function() {
								resolve(require('modules/%ModuleName%/js/views/DbAdminSettingsView.js'));
							},
							"admin-bundle"
						);
					},
					TabName: Settings.HashModuleName + '-db',
					TabTitle: TextUtils.i18n('%MODULENAME%/LABEL_DB_SETTINGS_TAB')
				});
				aAdminPanelTabsParams.push({
					GetTabView: function(resolve) {
						require.ensure(
							['modules/%ModuleName%/js/views/SecurityAdminSettingsView.js'],
							function() {
								resolve(require('modules/%ModuleName%/js/views/SecurityAdminSettingsView.js'));
							},
							"admin-bundle"
						);
					},
					TabName: Settings.HashModuleName + '-security',
					TabTitle: TextUtils.i18n('%MODULENAME%/LABEL_SECURITY_SETTINGS_TAB')
				});
				aAdminPanelTabsParams.push({
					GetTabView: function(resolve) {
						require.ensure(
							['modules/%ModuleName%/js/views/CommonSettingsPaneView.js'],
							function() {
								resolve(require('modules/%ModuleName%/js/views/CommonSettingsPaneView.js'));
							},
							"admin-bundle"
						);
					},
					TabName: 'common',
					TabTitle: TextUtils.i18n('%MODULENAME%/LABEL_COMMON_SETTINGS_TAB')
				});
				aAdminPanelTabsParams.push({
					GetTabView: function(resolve) {
						require.ensure(
							['modules/%ModuleName%/js/views/AboutAdminSettingsView.js'],
							function() {
								resolve(require('modules/%ModuleName%/js/views/AboutAdminSettingsView.js'));
							},
							"admin-bundle"
						);
					},
					TabName: 'about',
					TabTitle: TextUtils.i18n('%MODULENAME%/LABEL_ABOUT_SETTINGS_TAB')
				});
			},
			getScreens: function () {
				var oScreens = {};
				oScreens[Settings.HashModuleName] = function () {
					
					return new Promise(function(resolve, reject) {
						require.ensure(
							['modules/%ModuleName%/js/views/SettingsView.js'],
							function(require) {
								// EntitiesTabs shouldn't be required before every module will be initialized.
								// (Requires view. All views should be required after initialization of all modules.)
								var EntitiesTabs = require('modules/%ModuleName%/js/EntitiesTabs.js');
								_.each(aEntityTypesToRegister, function (oEntityData) {
									EntitiesTabs.registerEntityType(oEntityData);
								});
								_.each(aEntityDataToChange, function (oEntityData) {
									EntitiesTabs.changeEntityData(oEntityData);
								});
								
								var
									oSettingsView = require('modules/%ModuleName%/js/views/SettingsView.js'),
									aPromises = []
								;
								
								_.each(aAdminPanelTabsParams, function (oParams) {
									var oPromise = oSettingsView.registerTab(oParams.GetTabView, oParams.TabName, oParams.TabTitle);
									
									if (oPromise)
									{
										aPromises.push(oPromise);
									}
								});
								
								Promise.all(aPromises).then(function () { 
									oSettingsView.sortRegisterTabs();
									resolve(oSettingsView);
									_.each(aAdminPanelTabsSectionsParams, function (oSectionParams) {
										oSettingsView.registerTabSection(oSectionParams.GetTabView, oSectionParams.TabName, oSectionParams.TabTitle);
									});
								}, function () {
									oSettingsView.sortRegisterTabs();
									resolve(oSettingsView);
									_.each(aAdminPanelTabsSectionsParams, function (oSectionParams) {
										oSettingsView.registerTabSection(oSectionParams.GetTabView, oSectionParams.TabName, oSectionParams.TabTitle);
									});
								});
							},
							"admin-bundle"
						);
					});
				};
				return oScreens;
			},
			getAbstractSettingsFormViewClass: function () {
				return require('modules/%ModuleName%/js/views/CAbstractSettingsFormView.js');
			},
			registerAdminPanelTab: function (fGetTabView, sTabName, sTabTitle) {
				aAdminPanelTabsParams.push({
					GetTabView: fGetTabView,
					TabName: sTabName,
					TabTitle: sTabTitle
				});
			},
			registerAdminPanelTabSection: function (fGetTabView, sTabName) {
				aAdminPanelTabsSectionsParams.push({
					GetTabView: fGetTabView,
					TabName: sTabName
				});
			},
			showEntities: function (sCurrentEntityType, oEntitiesId) {
				var
					Routing = require('%PathToCoreWebclientModule%/js/Routing.js'),
					Links = require('modules/%ModuleName%/js/utils/Links.js')
				;
				Routing.setHash(Links.get(sCurrentEntityType, oEntitiesId, ''));
			},
			setAddHash: function (aAddHash) {
				var SettingsView = require('modules/%ModuleName%/js/views/SettingsView.js');
				SettingsView.setAddHash(aAddHash);
			},
			registerAdminPanelEntityType: function (oEntityData) {
				aEntityTypesToRegister.push(oEntityData);
			},
			changeAdminPanelEntityData: function (oEntityData) {
				aEntityDataToChange.push(oEntityData);
			},
			getKoSelectedTenantId: function () {
				return Cache.selectedTenantId;
			},
			getTenantsObservable: function () {
				return Cache.tenants;
			}
		};
	}
	
	return null;
};