Viewing File: /usr/local/cpanel/base/frontend/jupiter/user_manager/directives/ftpServiceConfig.ptt
<div class="panel" ng-class="{
'panel-default': !conflictResolutionRequired || !needsConflictResolution(),
'panel-warning': conflictResolutionRequired && (needsConflictResolution() || isLinking),
'panel-success': service.willLink && !isLinking,
'panel-danger': service.willDismiss
}">
<div class="panel-heading">
<label>[% locale.maketext('FTP') %]</label>
<span class="pull-right flip ng-hide" ng-show="showToggle">
<toggle-switch id="toggleFTP"
ng-model="service.enabled"
no-spinner="true"
label-position="left"
on-toggle="toggleService()"
enabled-label="[% locale.maketext('Enabled') %]"
disabled-label="[% locale.maketext('Disabled') %]"
ng-disabled="isDisabled || hasConflict() && isResolved() && !isLinking"
ng-hide="(hasConflict() && !isResolved()) || isLinking">
</toggle-switch>
</span>
<span class="fas fa-exclamation-triangle" id="ftp-has-conflicts-warning" ng-show=" conflictResolutionRequired && (needsConflictResolution() || isLinking)" title="[% locale.maketext('The system detected a service account with the same username.') %] [% locale.maketext('You must select an action.') %]"></span>
<span class="fas fa-info-circle" id="ftp-has-conflicts-info" ng-show="!conflictResolutionRequired && (needsConflictResolution() || isLinking)" title="[% locale.maketext('The system detected a service account with the same username.') %]"></span>
</div>
<div class="panel-body">
<!-- Handle merge candidates -->
<div ng-class="{ 'text-warning': conflictResolutionRequired }" ng-show="needsConflictResolution() || isLinking">
<p>[% locale.maketext('An [asis,FTP] service account with the same username and domain as this [asis,subaccount] already exists.') %]</p>
<div class="well well-sm existing-service-summary" ng-show="needsConflictResolution() || isLinking">
<div id="ftp-details-expander" class="text-center existing-service-summary-header" ng-click="toggleConflictSummary()">
<label>[% locale.maketext('Existing Account Summary') %]</label>
<span class="fas fa-fw fa-caret-down" ng-class="{ 'fa-rotate-180': !isSummaryCollapsed }"></span>
</div>
<div class="existing-service-summary-body" uib-collapse="isSummaryCollapsed">
<hr>
<ul>
<li id="existing-ftp-homedir">
<label>[% locale.maketext('Home Directory') %]:</label>
<span ng-bind-html="service.homedir | wrap:'':5"></span>
</li>
<li id="existing-ftp-quota">
<label>[% locale.maketext('Quota') %]:</label>
<span ng-show="service.quota">{{ service.quota }} MB</span>
<span ng-show="!service.quota">[% locale.maketext('Unrestricted') %]</span>
</li>
</ul>
</div>
</div>
<p>[% locale.maketext('You cannot create a duplicate [asis,FTP] service account. To manage their settings jointly, link the [asis,FTP] account to the [asis,subaccount].') %]</p>
<div class="conflict-button-container text-center">
<button id="ftp-conflict-link"
type="button"
ng-disabled="isInProgress()"
cp-action="runLinkAction()"
button-ng-class="{ 'btn-warning': conflictResolutionRequired, 'btn-small': !conflictResolutionRequired, 'btn-default': !conflictResolutionRequired }">
<span class="fas fa-link" ng-hide="isLinking"></span>
[% locale.maketext('Link') %]
</button>
<button class="btn btn-warning"
id="ftp-conflict-dismiss"
type="button"
ng-click="setDismiss()"
ng-show="showConflictDismiss">
<span class="fas fa-unlink"></span>
[% locale.maketext('Dismiss') %]
</button>
</div>
</div>
<div class="text-success" ng-show="service.willLink && !isLinking">
<p>[% locale.maketext('The system will link this [asis,FTP] service account to the [asis,subaccount].') %]</p>
<div class="conflict-button-container text-center">
<button class="btn btn-link"
id="ftp-link-undo"
type="button"
ng-click="clearConflictResolution()">
<span class="fas fa-undo"></span>
[% locale.maketext('Undo') %]
</button>
</div>
</div>
<div class="text-danger" ng-show="service.willDismiss">
<p>[% locale.maketext('This [asis,subaccount] will not have [asis,FTP] access.') %] [% locale.maketext('You can edit this setting later in the User Manager interface.') %]</p>
<div class="conflict-button-container text-center">
<button class="btn btn-link"
id="ftp-dismiss-undo"
type="button"
ng-click="clearConflictResolution()">
<span class="fas fa-undo"></span>
[% locale.maketext('Undo') %]
</button>
</div>
</div>
<!-- Normal configuration settings -->
<div ng-hide="hasConflict()">
<div class="ng-hide" cp-alert ng-show="showWarning" id="ftpWarningMessage">
{{warningMessage}}
</div>
<div class="ng-hide" cp-alert ng-show="showInfo" id="ftpInfoMessage" type="info">
{{infoMessage}}
</div>
<div class="form-group" ng-if="daemon.supports.quota">
<div class="row">
<div class="col-xs-12">
<label>[% locale.maketext('Quota') %]</label>
</div>
</div>
<div class="row">
<div class="col-xs-12">
<app-limit id="ftpQuota"
ng-model="service.quota"
ng-disabled="!service.enabled"
units-label="MB"
unlimited-value="0"
minimum-value="1"
maximum-length="9"
default-value="defaults.ftp.default_quota"
selected-unit="service.quotaUnit"
ng-disabled="isDisabled">
</app-limit>
</div>
</div>
</div>
[%- SET quota_required = locale.maketext("You must enter a valid number or select [output,em,Unlimited]."); -%]
<div class="col-xs-12 spacing-after">
<ul validation-container field-name="ftpQuota_txtLimit">
<li validation-item field-name="ftpQuota_txtLimit" validation-name="required">
[%- quota_required -%]
</li>
<li validation-item field-name="ftpQuota_txtLimit" validation-name="number">
[%- quota_required -%]
</li>
<li validation-item field-name="ftpQuota_txtLimit" validation-name="min">
[%- locale.maketext("Quota must be greater than zero.") -%]
</li>
<li validation-item field-name="ftpQuota_txtLimit" validation-name="integer">
[%- locale.maketext("Quota must be an integer.") -%]
</li>
</ul>
</div>
<div class="form-group">
<div class="row">
<div class="col-xs-12">
<label>[% locale.maketext('Home Directory') %]</label>
</div>
</div>
<div class="row">
<div class="col-xs-12">
<span class="input-group">
<span class="input-group-addon">
<i class="fas fa-home"></i>
<span>/</span>
</span>
<input id="txtFtpHomeDirectory"
class="form-control"
name="txtFtpHomeDirectory"
ng-model="service.homedir"
ng-disabled="!service.enabled"
uib-typeahead="directory for directory in completeDirectory($viewValue)"
typeahead-template-url="pathSuggester.html"
autocomplete="off"
ng-disabled="isDisabled" />
</span>
</div>
</div>
</div>
</div>
</div>
<div class="panel-footer ng-hide" ng-show="showUnlink">
<div class="row">
<div class="col-xs-12">
<action-button id="unlinkFTP"
class="btn btn-link btn-xs pull-right"
ng-click="unlinkService()"
ng-disabled="isInProgress()"
title="[% locale.maketext('Unlink this [asis,FTP] service account from this [asis,subaccount].') %]">
<i class="fas fa-unlink"></i>
[% locale.maketext('Unlink') %]
</action-button>
</div>
</div>
</div>
</div>
Back to Directory
File Manager