File manager - Edit - /usr/local/cpanel/whostmgr/docroot/templates/transfer_tool/getacctlist.tmpl
Back
[% # cpanel - whostmgr/docroot/templates/transfer_tool/getacctlist.tmpl # Copyright 2022 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 USE JSON; USE Whostmgr; USE CPUsername; USE CpanelDB; USE NVData; SET locale_is_rtl = 0; WRAPPER 'master_templates/master.tmpl' header = data.header, breadcrumburl = '/scripts5/account_copy_input', stylesheets = [ '/css/whm_dynamic_notices.css', Whostmgr.find_file_url('/libraries/chosen/1.5.1/chosen.min.css'), Whostmgr.find_file_url('/templates/transfer_tool/getacctlist.min.css'), ], scripts = [], theme = 'bootstrap'; PROCESS '_ajaxapp.tmpl'; SET MAJOR_VERSIONS_MATCH = 1; IF data.remote.major_version && data.remote.major_version != data.local.major_version; MAJOR_VERSIONS_MATCH = 0; END; SET ROUNDCUBE_DBTYPES_MATCH = 1; IF data.remote.roundcube_dbtype && data.remote.roundcube_dbtype != data.local.roundcube_dbtype; ROUNDCUBE_DBTYPES_MATCH = 0; END; -%] <div id="content" ng-controller="MainController as main" ng-cloak> <div id="callback_block"></div> <section class="callout callout-[%- MAJOR_VERSIONS_MATCH ? "info" : "warning" -%]"> <div class="limit-info"> <p> [% locale.maketext('Source: “[output,strong,_1]” version “[output,strong,_2]” …', '{{ main.PAGE.remote.host }}', '{{main.PAGE.remote.display_version}}' ) %] </p> <p> [% locale.maketext('Target: “[output,strong,_1]” version “[output,strong,_2]” …', '{{ main.PAGE.local.host }}', '{{main.PAGE.local.display_version}}' ) %] </p> [% IF !MAJOR_VERSIONS_MATCH %] <p> [% locale.maketext('The source server is not running the same major version as the target server.'); %] [% locale.maketext('[asis,cPanel] highly recommends that the source server runs the same major version for at least 24 hours to ensure any data conversions have completed.') %] </p> [% END %] </div> <button class="btn btn-primary" id="reAnalyzeRemoteButton" type="button" title="Reanalyze {{main.PAGE.remote.host}}"> <span class="glyphicon glyphicon-download-alt"></span> <span>[% locale.maketext("Rescan Source Server") %]</span> </button> </section> [% IF data.hostname_err -%] <section id="hostnameWarning" class="callout callout-warning hostname-warning"> <div id="hostnameWarningHeader" class="callout-heading">[% locale.maketext('[output,strong,Warning]: Hostname Lookup Error') %]</div> <div>[% locale.maketext('The system failed to determine if its hostname ([_1]) resolves locally.', data.hostname.html()) %]</div> <div>[% data.hostname_err.html() %]</div> </section> [% ELSIF !data.hostname_resolves -%] <section id="hostnameWarning" class="callout callout-warning hostname-warning"> <div id="hostnameWarningHeader" class="callout-heading">[% locale.maketext('[output,strong,Warning]: Hostname Resolution Mismatch') %]</div> <div> [% locale.maketext('The system’s hostname ([_1]) does not resolve locally. Because of this, [output,url,_2,Live Transfers,target,_blank] are disabled.', data.hostname.html(), 'https://go.cpanel.net/livetransfers') %] </div> <div> [% locale.maketext('Run the “[output,url,_1,_2,target,_blank]” script to assign your server an automatically-resolving hostname.', 'https://go.cpanel.net/cprapid', '/scripts/ensure_hostname_resolves') -%] </div> </section> [% END -%] <div class="row" ng-if="!main.PAGE.local.available_ips.length"> <div class="col-sm-6"> <div class="alert alert-warning"> <span class="glyphicon glyphicon-exclamation-sign"></span> <div class="alert-message"> [% locale.maketext('[output,strong,Warning]: You have no available [asis,IP] addresses on your local machine.') %] </div> </div> </div> </div> <div class="row" ng-if="main.PAGE.ineligible_transfer_features.length"> <div class="col-sm-6"> <div class="alert alert-warning"> <span class="glyphicon glyphicon-exclamation-sign"></span> <div class="alert-message"> [% locale.maketext('[output,strong,Warning]: The remote system is running a different [asis,WHM] product.') %] </div> <div class="alert-message"> [% locale.maketext('Some features will not function after transfer:') %] <ul> [% FOREACH feature IN data.ineligible_transfer_features %] <li>[% feature %]</li> [% END %] </ul> </div> </div> </div> </div> <uib-tabset class="server-configuration-tabset"> <uib-tab select="setAcctTabActive(true)"> <uib-tab-heading> [% locale.maketext('Accounts') %] <span ng-if="main.selectedAccounts.length" class="label label-info" ng-bind="main.selectedAccounts.length"></span> </uib-tab-heading> <div class="tab-content"> <section class="section-body"> [% PROCESS "transfer_tool/_select_accounts.tmpl" %] </section> </div> </uib-tab> <uib-tab select="setAcctTabActive(false)"> <uib-tab-heading> [% locale.maketext('Packages') %] <span ng-if="main.selectedPackages.length" class="label label-info" ng-bind="main.selectedPackages.length"></span> </uib-tab-heading> <div class="tab-content"> <section class="section-body"> [% PROCESS "transfer_tool/_select_packages.tmpl" %] </section> </div> </uib-tab> <uib-tab select="setAcctTabActive(false)"> <uib-tab-heading> [% locale.maketext('Service Configurations') %] <span ng-if="main.selectedConfigurations.length" class="label label-info" ng-bind="main.selectedConfigurations.length"></span> </uib-tab-heading> <div class="tab-content"> <section class="section-body"> [% PROCESS "transfer_tool/_select_configurations.tmpl" %] </section> </div> </uib-tab> </uib-tabset> <div class="row" ng-if="main.SERVER_MAX_USERS && (newSelectedUserList = (main.selectedAccounts | filter:main.overwriteIsDefault) ).length > main.REMAINING_ACCOUNT_SLOTS"> <div class="col-sm-12"> <div class="alert alert-danger"> <span class="glyphicon glyphicon-remove-sign"></span> <div class="alert-message"> <p> [% locale.maketext('[output,strong,Error]:') %] {{ main.licenseOverloadMessage() }} </p> <p ng-if="main.REMAINING_ACCOUNT_SLOTS > 0">{{ main.licenseOverloadCancelMessage(newSelectedUserList.length - main.REMAINING_ACCOUNT_SLOTS) }}</p> </div> </div> </div> </div> <div class="row" ng-if="(overwriteableUserList = (main.selectedAccounts | existingUsers:true | filter:main.noUsernameChange | filter:main.overwriteIsDefault)).length"> <div class="col-sm-12"> <div class="alert alert-danger"> <span class="glyphicon glyphicon-remove-sign"></span> <div class="alert-message"> <p> [% locale.maketext('[output,strong,Error]:') %] {{ main.accountConflictSelectedMessage(overwriteableUserList.length) }} </p> <ul> <li ng-repeat="acct in overwriteableUserList | orderBy:'localuser'">{{ main.getExistingUserMessage(acct); }}</li> </ul> <p> {{ main.accountOverwiteResolveMessage(overwriteableUserList.length) }} </p> <p><a href="" ng-click="main.toggleCheckAllAndReValidate(overwriteableUserList, 'overwrite_type', main.overwriteOptions[1]); main.updateSelectedAccounts()"> {{ main.accountOverwriteConfirmMessage(overwriteableUserList.length) }} </a></p> <p><a href="" ng-click="main.toggleCheckAllAndReValidate(overwriteableUserList, 'selected', 0); main.updateSelectedAccounts()"> {{ main.accountConflictCancelMessage(overwriteableUserList.length) }} </a></p> </div> </div> </div> </div> <div class="row" ng-if="(existingUserList = (main.selectedAccounts | existingUsers:false | filter:main.overwriteIsDefault)).length"> <div class="col-sm-12"> <div class="alert alert-danger"> <span class="glyphicon glyphicon-remove-sign"></span> <div class="alert-message"> <p> [% locale.maketext('[output,strong,Error]:') %] {{ main.accountConflictSelectedMessage(existingUserList.length) }} </p> <ul> <li ng-repeat="acct in existingUserList | orderBy:'localuser'">{{ main.getExistingUserMessage(acct); }}</li> </ul> <p> {{ main.accountConflictResolveMessage(existingUserList.length) }} </p> <p><a href="" ng-click="main.toggleCheckAllAndReValidate(existingUserList, 'selected', 0); main.updateSelectedAccounts()"> {{ main.accountConflictCancelMessage(existingUserList.length) }} </a></p> </div> </div> </div> </div> <div class="row" ng-if="(reservedUserList = (main.selectedAccounts | filter:main.reservedUserFilter)).length"> <div class="col-sm-12"> <div class="alert alert-danger"> <span class="glyphicon glyphicon-remove-sign"></span> <div class="alert-message"> <p> [% locale.maketext('[output,strong,Error]:') %] {{ main.accountConflictSelectedResolveMessage(reservedUserList.length) }} </p> <p><a href="" ng-click="main.toggleCheckAllAndReValidate(reservedUserList, 'selected', 0); main.updateSelectedAccounts()"> {{ main.accountConflictCancelMessage(reservedUserList.length) }} </a></p> </div> </div> </div> </div> <div class="row" ng-if="(duplicateUserList = (main.selectedAccounts | filter:main.duplicateUserFilter)).length"> <div class="col-sm-12"> <div class="alert alert-danger"> <span class="glyphicon glyphicon-remove-sign"></span> <div class="alert-message"> <p> [% locale.maketext('[output,strong,Error]:') %] {{ main.accountConflictNameResolveMessage(duplicateUserList.length) }} <ul> <li ng-repeat="user in duplicateUserList | orderBy:'localuser'">{{ main.accountRenameMessage(user.remote_user, user.localuser) }}</li> </ul> </p> <p><a href="" ng-click="main.toggleCheckAllAndReValidate(duplicateUserList, 'selected', 0); main.updateSelectedAccounts()"> {{ main.accountConflictCancelMessage(duplicateUserList.length) }} </a></p> </div> </div> </div> </div> <div class="row" ng-if="(invalidUsernamesList = (main.selectedAccounts | filter:main.invalidUsernameFilter)).length"> <div class="col-sm-12"> <div class="alert alert-danger"> <span class="glyphicon glyphicon-remove-sign"></span> <div class="alert-message"> <p> [% locale.maketext('[output,strong,Error]:') %] {{ main.usernameValidationTitle(invalidUsernamesList.length) }} <ul> <li ng-repeat="user in invalidUsernamesList | orderBy:'localuser'">{{ user.localuser }}</li> </ul> {{ main.usenameValidationMessage(invalidUsernamesList.length) }} </p> <p><a href="" ng-click="main.toggleCheckAllAndReValidate(invalidUsernamesList, 'selected', 0); main.updateSelectedAccounts()"> {{ main.usernameValidationAction(invalidUsernamesList.length) }} </a></p> </div> </div> </div> </div> <div class="row" ng-if="(invalidDomainList = (main.selectedAccounts | filter:main.invalidDomainFilter)).length"> <div class="col-sm-12"> <div class="alert alert-danger"> <span class="glyphicon glyphicon-remove-sign"></span> <div class="alert-message"> <p ng-bind-html="main.existingDomainWarning(invalidDomainList.length)"></p> <p><a href="" ng-click="main.toggleCheckAllAndReValidate(invalidDomainList, 'selected', 0); main.updateSelectedAccounts()"> {{ main.accountConflictCancelMessage(invalidDomainList.length) }} </a></p> </div> </div> </div> </div> <div class="row" ng-if="(selectedAcctsWithNewDedicatedIp = (main.selectedAccounts | filter:main.newDedicatedIpFilter )).length > main.PAGE.local.available_ips.length"> <div class="col-sm-12"> <div class="alert alert-danger"> <span class="glyphicon glyphicon-remove-sign"></span> <div class="alert-message"> <p ng-bind-html="main.dedicatedIpAddrWarning(selectedAcctsWithNewDedicatedIp.length, main.PAGE.local.available_ips.length)"></p> <p><a href="" ng-click="main.toggleCheckAllAndReValidate(selectedAcctsWithNewDedicatedIp, 'dedicated_ip', 0)"> {{ main.dedicatedIPDeselectAction(selectedAcctsWithNewDedicatedIp.length) }} </a></p> <p><a href="" ng-click="main.toggleCheckAllAndReValidate(selectedAcctsWithNewDedicatedIp, 'selected', 0); main.updateSelectedAccounts()"> {{ main.accountConflictCancelMessage(selectedAcctsWithNewDedicatedIp.length) }} </a></p> </div> </div> </div> </div> <div class="row" ng-if="(acctsWithUnselectedIp = (main.selectedAccounts | filter:{existing_dedicated_ip:1, dedicated_ip:0} )).length"> <div class="col-sm-12"> <div class="alert alert-warning"> <span class="glyphicon glyphicon-exclamation-sign"></span> <div class="alert-message"> <p ng-bind-html="main.unusedDedicatedIpWarning(acctsWithUnselectedIp.length)"></p> <p><a href="" ng-click="main.toggleCheckAllAndReValidate(acctsWithUnselectedIp, 'dedicated_ip', 1)"> {{ main.dedicatedIPReselectAction(acctsWithUnselectedIp.length) }} </a></p> <p><a href="" ng-click="main.toggleCheckAllAndReValidate(acctsWithUnselectedIp, 'selected', 0); main.updateSelectedAccounts()"> {{ main.accountConflictCancelMessage(acctsWithUnselectedIp.length) }} </a></p> </div> </div> </div> </div> <div class="row" ng-if="(resellerNoCopyList = (main.selectedAccounts | filter:main.resellerNoCopyFilter )).length"> <div class="col-sm-12"> <div class="alert alert-warning"> <span class="glyphicon glyphicon-exclamation-sign"></span> <div class="alert-message"> <p> [% locale.maketext('[output,strong,Warning]:') %] {{ main.resellerNoCopyTitle(resellerNoCopyList.length) }} </p> <ul> <li ng-repeat="user in resellerNoCopyList | orderBy:'localuser'">{{ user.localuser }}</li> </ul> <p ng-bind-html="main.resellerNoCopyMessage(resellerNoCopyList.length)"></p> <p> <a href="" ng-if="!main.PAGE.restricted_restore" ng-click="main.toggleCheckAllAndReValidate(resellerNoCopyList, 'copy_reseller_privs', 1); main.updateSelectedAccounts()"> {{ main.resellerNoCopyFixMessage(resellerNoCopyList.length) }} </a> </p> </div> </div> </div> </div> <div class="row" ng-if="(canNotTransferTempDomain = (main.selectedAccounts | filter:main.canNotTransferTempDomainFilter ).length)"> <div class="col-sm-12"> <div class="alert alert-warning"> <span class="glyphicon glyphicon-exclamation-sign"></span> <div class="alert-message"> <p> [% locale.maketext('[output,strong,Warning]:') %] {{ main.canNotTransferTempDomainTitle(canNotTransferTempDomain) }} </p> <p ng-bind-html="main.canNotTransferTempDomainMessage(canNotTransferTempDomain)"></p> <ul> <li ng-repeat="domain in (main.selectedAccounts | filter:main.canNotTransferTempDomainFilter )">{{ domain.domain }}</li> </ul> </div> </div> </div> </div> <!-- summary --> <div class="row" ng-if="(canSubmit = main.canSubmitForm([overwriteableUserList,existingUserList,reservedUserList,duplicateUserList,invalidUsernamesList,invalidDomainList],selectedAcctsWithNewDedicatedIp,newSelectedUserList,canNotTransferTempDomain))"> <div class="col-sm-12"> <div class="alert alert-info"> <div class="alert-message" ng-bind-html="main.submitSummaryMessage()"></div> </div> </div> </div> <form ng-if="showTable()" method=POST action="maincopy" name="secform" class="form"> <input type="hidden" name="transfer_session_id" value="{{main.PAGE.transfer_session_id}}"> <input type="hidden" name="transfer_accts" value="{{ main.selectedAccounts | json}}"> <input type="hidden" name="transfer_pkgs" value="{{ main.selectedPackages | json}}"> <input ng-repeat="(module_name, module) in main.PAGE.configuration_modules" type="hidden" name="{{ module_name + '_enable' }}" value="{{ module.selected ? 1 : 0 }}"> <button type="submit" class="btn btn-primary" click-once id="form_submit_button" ng-disabled="!canSubmit" ng-bind="main.getCopyButtonLabel()"> </button> </form> <script id="directives/accountExpandPanel.ptt" type="text/ng-template"> [%- PROCESS "transfer_tool/directives/accountExpandPanel.ptt" -%] </script> <script id="overwriteWithDeleteDescription.ptt" type="text/ng-template"> [%- PROCESS "transfer_tool/overwriteWithDeleteDescription.ptt" -%] </script> </div> <script type="text/javascript"> var PAGE = PAGE || {}; PAGE = [% JSON.stringify(data) %]; /* TODO: refactor to be stand-alone username js validation */ PAGE.local.reserved_username_patterns = [% JSON.stringify(CPUsername.get_reserved_username_patterns()) %]; PAGE.local.reserved_usernames = [% JSON.stringify(CPUsername.get_reserved_usernames()) %]; PAGE.USERNAME_UNIQUE_LENGTH = parseInt( [% JSON.stringify(CpanelDB.PREFIX_LENGTH) %], 10 ); PAGE.MAX_USERNAME_LENGTH = parseInt( [% JSON.stringify(CPUsername.get_max_username_length()) %], 10 ); PAGE.USERNAME_TRANSFER_REGEXP = [% JSON.stringify(CPUsername.make_strict_regexp_str(1)) %] PAGE.USERNAME_REGEXP = [% JSON.stringify(CPUsername.make_strict_regexp_str(0)) %] PAGE.UN_TRIM_REG_EXP = new RegExp("^\\s*(.{1," + PAGE.USERNAME_UNIQUE_LENGTH + "}).*$", "i"); PAGE.transfer_session_id = [% data.transfer_session_id.json(); %]; PAGE.configuration_modules = [% data.modules.json(); %]; PAGE.REMAINING_ACCOUNT_SLOTS = [% Whostmgr.get_max_users() - Whostmgr.get_users_count() %]; PAGE.SERVER_MAX_USERS = [% Whostmgr.get_max_users() %]; PAGE.all_possible_page_sizes = [ 10, 50, 200, 500, 1000 ]; PAGE.locale_is_rtl = [% locale_is_rtl.json() %]; PAGE.liveTransfersNoticeIsDismissed = [% NVData.get('live_transfers_notice_is_dismissed') ? 'true' : 'false' %]; PAGE.liveTransfersPre90NoticeIsDismissed = [% NVData.get('live_transfers_pre_90_notice_is_dismissed') ? 'true' : 'false' %]; PAGE.disable_live_transfers = [% data.disable_live_transfers ? 'true' : 'false' %]; PAGE.restricted_restore = [% data.restricted_restore ? 'true' : 'false' %]; </script> <!-- CPANEL-1946: The CPANEL.PAGE JSON.stringify can take a long time with a large account list. We need to load angular after to ensure we avoid this race condition --> <!-- TODO: Once user finishes updating, make remote call to check if good then update accordingly--> [% PROCESS 'master_templates/cjt2_header_include.tt' %] [% END #wrapper -%]
| ver. 1.4 |
Github
|
.
| PHP 8.1.34 | Generation time: 0.02 |
proxy
|
phpinfo
|
Settings