Viewing File: /usr/local/cpanel/whostmgr/docroot/templates/backup_configuration/views/config.ptt

<div class="section-body">
        <div id="loadingSettingsMsg" class="ng-hide" ng-show="!backupConfigLoaded">
                <i class="fas fa-spinner fa-spin"></i>
                <span>[% locale.maketext("Loading settings …") %]</span>
        </div>
        <form name="backup_config_form" id="backupConfigForm" ng-if="backupConfigLoaded" novalidate>
            <div class="form-group">
                <div class="row">
                    <div class="col-xs-12 col-sm-6 col-md-6 col-lg-6">
                        <h3 id="backup_status">[% locale.maketext('Backup Status') %]</h3>
                    </div>
                </div>
                <div class="row">
                    <div class="col-xs-12 col-sm-6 col-md-6 col-lg-6">
                        <input type="checkbox" id="enable_backups_toggle" ng-model="formData.backupenable" ng-change="enableBackupConfig()"><label for="enable_backups_toggle">[% locale.maketext('Enable Backups') %]</label>
                        <p class="text-muted">[% locale.maketext('Toggle backup activity.') %]</p>
                    </div>
                </div>
                <div class="row">
                    <div class="col-xs-12 col-sm-6 col-md-6 col-lg-6">
                        <h3>[% locale.maketext('Global Settings') %]</h3>
                    </div>
                </div>
                <div class="row">
                    <div class="col-xs-12 col-sm-6 col-md-6 col-lg-6">
                        <p>[% locale.maketext('[output,strong,Backup Type]') %]</p>
                        <input type="radio" ng-model="formData.backuptype" value="compressed" id="type_compressed" name="backup_type" ng-disabled="!formEnabled" /><span><label for="type_compressed">[% locale.maketext('Compressed') %]</label></span>
                        <p class="text-muted">[% locale.maketext('Save all of your information, use less disk space, but take more time to create a backup.') %]</p>
                        <input type="radio" ng-model="formData.backuptype" value="uncompressed" id="type_uncompressed" name="backup_type" ng-disabled="!formEnabled" /><span><label for="type_uncompressed">[% locale.maketext('Uncompressed') %]</label></span>
                        <p class="text-muted">[% locale.maketext('Save all of your information, use more disk space, but take less time to complete a backup.') %]</p>
                        <input type="radio" ng-model="formData.backuptype" value="incremental" id="type_incremental" name="backup_type" ng-disabled="!formEnabled" /><span><label for="type_incremental">[% locale.maketext('Incremental') %]</label></span>
                        <p class="text-muted">[% locale.maketext('Only save the information that has changed since your last backup.') %]</p>
                    </div>
                </div>
                <div class="row">
                    <div class="col-xs-12 col-sm-6 col-md-6 col-lg-6">
                        <div id="incremental_warning" class="alert alert-warning" ng-if="formData.backuptype === 'incremental'">
                            <span class="glyphicon glyphicon-warning-sign"></span>
                            <p class="alert-message">[% locale.maketext('When you select incremental backups, the system will [output,strong,not] change or alter the state of your existing non-incremental backup destinations.') %]</p>
                            <p class="alert-message">[% locale.maketext('You can [output,strong,only] use the [asis,Rsync] transport with incremental backups.') %]</p>
                        </div>
                    </div>
                </div>
            </div>
    <div class="form-group">
        <div class="row">
            <div class="col-xs-12 col-sm-6 col-md-6 col-lg-6">
<input
    type="checkbox"
    id="check_disk_space_toggle"
    ng-model="formData.check_min_free_space"
    ng-disabled="!formEnabled">
        <label for="check_disk_space_toggle">[% locale.maketext('[output,strong,Check the Available Disk Space]') %]</label>
                <p class="text-muted">[% locale.maketext('If you enable this option and the available disk space is less than the amount that you specified, the system will not run the backup.') %]</p>
            </div>
        </div>
        <div class="row">
            <div class="col-xs-12 col-sm-6 col-md-6 col-lg-6">
                <div class="input-group">
                    <input
                        type="number"
                        ng-model="formData.min_free_space"
                        class="form-control"
                        ng-min="1"
                        ng-max="formData.min_free_space_unit === 'percent' ? 99 : 9900000000000"
                        id="min_free_space" name="min_free_space"
                        ng-disabled="!formData.check_min_free_space || !formEnabled"
                        ng-required="formData.check_min_free_space"
                        positive-integer
                        ng-keydown="noDecimalPoints($event)"
                        ng-paste="onlyNumbers($event)" />
                    <span class="input-group-addon zero-width"></span>
                    <select name="min_free_space_unit" id="min_free_space_unit" class="form-control" ng-model="formData.min_free_space_unit" ng-disabled="!formData.check_min_free_space || !formEnabled">
                        <option value="percent">%</option>
                        <option value="MB">[% locale.maketext('MB') %]</option>
                    </select>
                </div>
            </div>
            <div class="col-xs-12 col-sm-6 col-md-6 col-lg-6" ng-if="backup_config_form.min_free_space.$error.required || backup_config_form.min_free_space.$error.min || backup_config_form.min_free_space.$error.max || backup_config_form.min_free_space.$error.number || backup_config_form.min_free_space.$error.positiveInteger">
                <ul class="validation-container">
                    <li class="validation validation-error" ng-if="backup_config_form.min_free_space.$error.required || backup_config_form.min_free_space.$error.min || backup_config_form.min_free_space.$error.number || backup_config_form.min_free_space.$error.positiveInteger">
                        <span class="glyphicon glyphicon-exclamation-sign"></span>
                        <span class="validation-message">
                            [% locale.maketext('You must enter an integer greater than zero.') %]
                        </span>
                    </li>
                    <li class="validation validation-error" ng-if="backup_config_form.min_free_space.$error.max && formData.min_free_space_unit === 'percent'">
                        <span class="glyphicon glyphicon-exclamation-sign"></span>
                        <span class="validation-message">
                           [% locale.maketext('You must enter a value of less than 100 percent.') %]
                        </span>
                    </li>
                    <li class="validation validation-error" ng-if="backup_config_form.min_free_space.$error.max && formData.min_free_space_unit === 'MB'">
                        <span class="glyphicon glyphicon-exclamation-sign"></span>
                        <span class="validation-message">
                           [% locale.maketext('You must enter a value of less than 9900000000000 MB (990 petabytes).') %]
                        </span>
                    </li>
                </ul>
            </div>
        </div>
        <div class="row">
            <div class="col-xs-12 col-sm-6 col-md-6 col-lg-6">
                <p>[% locale.maketext('[output,strong,Maximum Destination Backup Timeout]') %]</p>
                <p class="text-muted">[% locale.maketext('Enter the number of seconds during which the destination backup will attempt to run.') %] [%locale.maketext('If the destination backup attempt is not successful during this time, it will time out and stop.') %]</p>
            </div>
        </div>
        <div class="row">
            <div class="col-xs-12 col-sm-6 col-md-6 col-lg-6">
                <div class="input-group">
                    <input
                        type="number"
                        name="maximum_timeout"
                        id="maximum_timeout"
                        ng-model=formData.maximum_timeout
                        class="form-control"
                        ng-min="300"
                        ng-max="50000"
                        ng-disabled="!formEnabled"
                        required
                        positive-integer
                        ng-keydown="noDecimalPoints($event)"
                        ng-paste="onlyNumbers($event)" />
                    <span class="input-group-addon">[% locale.maketext('seconds') %]</span>
                </div>
            </div>
            <div class="col-xs-12 col-sm-6 col-md-6 col-lg-6" ng-if="backup_config_form.maximum_timeout.$dirty && (backup_config_form.maximum_timeout.$error.required || backup_config_form.maximum_timeout.$error.min || backup_config_form.maximum_timeout.$error.max || backup_config_form.maximum_timeout.$error.number || backup_config_form.maximum_timeout.$error.positiveInteger)">
                <ul class="validation-container">
                    <li class="validation validation-error" ng-if="backup_config_form.maximum_timeout.$error.required">
                        <span class="glyphicon glyphicon-exclamation-sign"></span>
                        <span class="validation-message">
                            [% locale.maketext('You must enter a value.') %]
                        </span>
                    </li>
                    <li class="validation validation-error" ng-if="backup_config_form.maximum_timeout.$error.min || backup_config_form.maximum_timeout.$error.max">
                        <span class="glyphicon glyphicon-exclamation-sign"></span>
                        <span class="validation-message">
                            [% locale.maketext('You must enter a timeout value between [numf,_1] and [numf,_2] seconds.', '300', '50000') %]
                        </span>
                    </li>
                    <li class="validation validation-error" ng-if="backup_config_form.maximum_timeout.$error.positiveInteger || backup_config_form.maximum_timeout.$error.number">
                        <span class="glyphicon glyphicon-exclamation-sign"></span>
                        <span class="validation-message">
                            [% locale.maketext('You must enter a positive integer value.') %]
                        </span>
                    </li>
                </ul>
            </div>
        </div>
        <div class="row">
            <div class="col-xs-12 col-sm-6 col-md-6 col-lg-6">
                <p>[% locale.maketext('[output,strong,Maximum Backup Restoration Timeout]') %]</p>
                <p class="text-muted">[% locale.maketext('Enter the number of seconds during which the system will attempt to run the backup restoration.') %] [% locale.maketext('If the restoration cannot complete in the specified time, it will cancel.') %]</p>
            </div>
        </div>
        <div class="row">
            <div class="col-xs-12 col-sm-6 col-md-6 col-lg-6">
                <div class="input-group">
                    <input
                        type="number"
                        name="maximum_restore_timeout"
                        id="maximum_restore_timeout"
                        ng-model="formData.maximum_restore_timeout"
                        class="form-control"
                        ng-min="600"
                        ng-max="86400"
                        ng-disabled="!formEnabled"
                        required
                        positive-integer
                        ng-keydown="noDecimalPoints($event)"
                        ng-paste="onlyNumbers($event)" />
                    <span class="input-group-addon">[% locale.maketext('seconds') %]</span>
                </div>
            </div>
            <div class="col-xs-12 col-sm-6 col-md-6 col-lg-6" ng-if="backup_config_form.maximum_restore_timeout.$dirty && (backup_config_form.maximum_restore_timeout.$error.required || backup_config_form.maximum_restore_timeout.$error.min || backup_config_form.maximum_restore_timeout.$error.max || backup_config_form.maximum_restore_timeout.$error.number || backup_config_form.maximum_restore_timeout.$error.positiveInteger)">
                <ul class="validation-container">
                    <li class="validation validation-error" ng-if="backup_config_form.maximum_restore_timeout.$error.required">
                        <span class="glyphicon glyphicon-exclamation-sign"></span>
                        <span class="validation-message">
                            [% locale.maketext('You must enter a value.') %]
                        </span>
                    </li>
                    <li class="validation validation-error" ng-if="backup_config_form.maximum_restore_timeout.$error.min || backup_config_form.maximum_restore_timeout.$error.max">
                        <span class="glyphicon glyphicon-exclamation-sign"></span>
                        <span class="validation-message">
                            [% locale.maketext('You must enter a timeout value between [numf,_1] and [numf,_2] seconds.', '600', '86400') %]
                        </span>
                    </li>
                    <li class="validation validation-error" ng-if="backup_config_form.maximum_restore_timeout.$error.positiveInteger || backup_config_form.maximum_restore_timeout.$error.number">
                        <span class="glyphicon glyphicon-exclamation-sign"></span>
                        <span class="validation-message">
                            [% locale.maketext('You must enter a positive integer value.') %]
                        </span>
                    </li>
                </ul>
            </div>
        </div>
    </div>
    <div class="form-group">
        <div class="row">
            <div class="col-xs-12 col-sm-6 col-md-6 col-lg-6">
                <h3>[% locale.maketext('Scheduling and Retention') %]</h3>
            </div>
        </div>
        <div class="row">
            <div class="col-xs-12 col-sm-6 col-md-6 col-lg-6">
                <input type="checkbox" ng-model="formData.backup_daily_enable" id="set_daily_backup" ng-disabled="!formEnabled" /><span>[% locale.maketext('Daily Backup') %]</span>
            </div>
        </div>
        <div class="row" ng-if="formData.backup_daily_enable">
            <div class="col-xs-offset-1 col-sm-offset-1 col-md-offset-1 col-lg-offset-1 col-xs-11 col-sm-5 col-md-5 col-lg-5">
                <div ng-repeat="dailyDay in dailyDays track by $index">
                    <input type="checkbox" class="backup_daily" name="daily_backup_{{dailyDay}}" id="daily_backup_{{dailyDay}}" ng-checked="formData.backupdays[$index]" ng-click="handleDaysToggle($index,backup_config_form)" ng-disabled="!formEnabled" /><span>{{dailyDay}}</span>
                </div>
            </div>
            <div class="col-xs-12 col-sm-6 col-md-6 col-lg-6" ng-if="formData.backup_daily_enable && selectedDays.length === 0">
                <ul class="validation-container">
                    <li class="validation validation-error">
                        <span class="glyphicon glyphicon-exclamation-sign"></span>
                        <span class="validation-message">
                            [% locale.maketext('You must select at least one day.') %]
                        </span>
                    </li>
                </ul>
            </div>
        </div>
        <div class="row" ng-if="formData.backup_daily_enable">
            <div class="col-xs-offset-1 col-sm-offset-1 col-md-offset-1 col-lg-offset-1 col-xs-11 col-sm-5 col-md-5 col-lg-5">
                <p>[% locale.maketext('[output,strong,Retention]') %]</p>
                <p class="text-muted">[% locale.maketext('Enter the number of daily backups that you wish to keep in the system at one time.') %]</p>
            </div>
        </div>
        <div class="row" ng-if="formData.backup_daily_enable">
            <div class="col-xs-offset-1 col-sm-offset-1 col-md-offset-1 col-lg-offset-1 col-xs-11 col-sm-5 col-md-5 col-lg-5">
                <div class="input-group">
                    <input
                        type="number"
                        name="backup_daily_retention"
                        ng-model="formData.backup_daily_retention"
                        class="form-control"
                        id="daily_retention"
                        ng-min="1"
                        ng-max="9999"
                        ng-disabled="!formEnabled"
                        ng-required="formData.backup_daily_enable"
                        positive-integer
                        ng-keydown="noDecimalPoints($event)"
                        ng-paste="onlyNumbers($event)" />
                    <span class="input-group-addon">[% locale.maketext('backups') %]</span>
                </div>
            </div>
            <div class="col-xs-12 col-sm-6 col-md-6 col-lg-6" ng-if="backup_config_form.backup_daily_retention.$error.required || backup_config_form.backup_daily_retention.$error.min || backup_config_form.backup_daily_retention.$error.max || backup_config_form.backup_daily_retention.$error.number || backup_config_form.backup_daily_retention.$error.positiveInteger">
                <ul class="validation-container">
                    <li class="validation validation-error" ng-if="backup_config_form.backup_daily_retention.$error.required || backup_config_form.backup_daily_retention.$error.min || backup_config_form.backup_daily_retention.$error.max || backup_config_form.backup_daily_retention.$error.number || backup_config_form.backup_daily_retention.$error.positiveInteger">
                        <span class="glyphicon glyphicon-exclamation-sign"></span>
                        <span class="validation-message">
                            [% locale.maketext('You must enter an integer between 1 and 9999.') %]
                        </span>
                    </li>
                </ul>
            </div>
        </div>
        <div class="row" ng-if="formData.backup_daily_enable">
            <div class="col-xs-offset-1 col-sm-offset-1 col-md-offset-1 col-lg-offset-1 col-xs-11 col-sm-5 col-md-5 col-lg-5">
                <input type="checkbox" ng-model="formData.force_prune_daily" id="daily_strict_enforce" ng-disabled="!formEnabled" /><span>[% locale.maketext('Strictly enforce retention, regardless of backup success.') %]</span>
                <p class="text-muted">[% locale.maketext('For more information, read our [output,url,_1,Backup Configuration,_2,_3] documentation.', 'https://go.cpanel.net/whmdocsBackupRetention','target','_blank') %]</p>
            </div>
        </div>
        <div class="row">
            <div class="col-xs-12 col-sm-6 col-md-6 col-lg-6">
                <input type="checkbox" ng-model="formData.backup_weekly_enable" id="backup_weekly" ng-disabled="!formEnabled" /><span>[% locale.maketext('Weekly Backup') %]</span>
            </div>
        </div>
        <div class="row" ng-if="formData.backup_weekly_enable">
            <div class="col-xs-offset-1 col-sm-offset-1 col-md-offset-1 col-lg-offset-1 col-xs-11 col-sm-5 col-md-5 col-lg-5">
                <div ng-repeat="weeklyDay in weeklyDays track by $index">
                    <input type="radio" value="{{weeklyDay}}" name="weekly_backup_day" ng-checked="formData.backup_weekly_day === $index" id="weekly_backup_{{weeklyDay}}" ng-click="handleDayToggle($index,backup_config_form)" ng-disabled="!formEnabled" /><span>{{weeklyDay}}</span>
                </div>
            </div>
        </div>
        <div class="row" ng-if="formData.backup_weekly_enable">
            <div class="col-xs-offset-1 col-sm-offset-1 col-md-offset-1 col-lg-offset-1 col-xs-11 col-sm-5 col-md-5 col-lg-5">
                <p>[% locale.maketext('[output,strong,Retention]') %]</p>
                <p class="text-muted">[% locale.maketext('Enter the number of weekly backups that you wish to keep in the system at one time.') %]</p>
            </div>
        </div>
        <div class="row" ng-if="formData.backup_weekly_enable">
            <div class="col-xs-offset-1 col-sm-offset-1 col-md-offset-1 col-lg-offset-1 col-xs-11 col-sm-5 col-md-5 col-lg-5">
                <div class="input-group">
                    <input
                        type="number"
                        name="backup_weekly_retention"
                        ng-model="formData.backup_weekly_retention"
                        class="form-control"
                        id="weekly_retention"
                        ng-min="1"
                        ng-max="9999"
                        ng-disabled="!formEnabled"
                        ng-required="formData.backup_weekly_enable"
                        positive-integer
                        ng-keydown="noDecimalPoints($event)"
                        ng-paste="onlyNumbers($event)" />
                    <span class="input-group-addon">[% locale.maketext('backups') %]</span>
                </div>
            </div>
            <div class="col-xs-12 col-sm-6 col-md-6 col-lg-6" ng-if="backup_config_form.backup_weekly_retention.$error.required || backup_config_form.backup_weekly_retention.$error.min || backup_config_form.backup_weekly_retention.$error.max || backup_config_form.backup_weekly_retention.$error.number || backup_config_form.backup_weekly_retention.$error.positiveInteger">
                <ul class="validation-container">
                    <li class="validation validation-error" ng-if="backup_config_form.backup_weekly_retention.$error.required || backup_config_form.backup_weekly_retention.$error.min || backup_config_form.backup_weekly_retention.$error.max || backup_config_form.backup_weekly_retention.$error.number || backup_config_form.backup_weekly_retention.$error.positiveInteger">
                        <span class="glyphicon glyphicon-exclamation-sign"></span>
                        <span class="validation-message">
                            [% locale.maketext('You must enter an integer between 1 and 9999.') %]
                        </span>
                    </li>
                </ul>
            </div>
        </div>
        <div class="row" ng-if="formData.backup_weekly_enable">
            <div class="col-xs-offset-1 col-sm-offset-1 col-md-offset-1 col-lg-offset-1 col-xs-11 col-sm-5 col-md-5 col-lg-5">
                <input type="checkbox" ng-model="formData.force_prune_weekly" id="weekly_strict_enforce" ng-disabled="!formEnabled" /><span>[% locale.maketext('Strictly enforce retention, regardless of backup success.') %]</span>
                <p class="text-muted">[% locale.maketext('For more information, read our [output,url,_1,Backup Configuration,_2,_3] documentation.', 'https://go.cpanel.net/whmdocsBackupRetention','target','_blank') %]</p>
            </div>
        </div>
        <div class="row">
            <div class="col-xs-12 col-sm-6 col-md-6 col-lg-6">
                <input type="checkbox" ng-model="formData.backup_monthly_enable" id="backup_monthly" ng-disabled="!formEnabled" /><span>[% locale.maketext('Monthly Backup') %]</span>
            </div>
        </div>
        <div class="row" ng-if="formData.backup_monthly_enable">
            <div class="col-xs-offset-1 col-sm-offset-1 col-md-offset-1 col-lg-offset-1 col-xs-11 col-sm-5 col-md-5 col-lg-5">
                <input type="checkbox" id="monthly_first" ng-model="monthlyBackupBool.first" ng-click="handleMonthlyToggle('first')" value="first" ng-disabled="!formEnabled" /><span>[% locale.maketext('The 1st day of the month.') %]</span>
                <input type="checkbox" id="monthly_fifteenth" ng-model="monthlyBackupBool.fifteenth" ng-click="handleMonthlyToggle('fifteenth')" value="fifteenth" ng-disabled="!formEnabled" /><span>[% locale.maketext('The 15th day of the month.') %]</span>
            </div>
            <div class="col-xs-12 col-sm-6 col-md-6 col-lg-6" ng-if="formData.backup_monthly_enable && !monthlyBackupBool.first && !monthlyBackupBool.fifteenth">
                <ul class="validation-container">
                    <li class="validation validation-error" ng-if="formData.backup_monthly_enable && !monthlyBackupBool.first && !monthlyBackupBool.fifteenth">
                        <span class="glyphicon glyphicon-exclamation-sign"></span>
                        <span class="validation-message">
                            [% locale.maketext('You must select at least one day.') %]
                        </span>
                    </li>
                </ul>
            </div>
        </div>
        <div class="row" ng-if="formData.backup_monthly_enable">
            <div class="col-xs-offset-1 col-sm-offset-1 col-md-offset-1 col-lg-offset-1 col-xs-11 col-sm-5 col-md-5 col-lg-5">
                <p>[% locale.maketext('[output,strong,Retention]') %]</p>
        <p class="text-muted">[% locale.maketext('Enter the number of monthly backups that you wish to keep in the system at one time.') %]</p>
            </div>
        </div>
        <div class="row" ng-if="formData.backup_monthly_enable">
            <div class="col-xs-offset-1 col-sm-offset-1 col-md-offset-1 col-lg-offset-1 col-xs-11 col-sm-5 col-md-5 col-lg-5">
                <div class="input-group">
                    <input
                        type="number"
                        name="backup_monthly_retention"
                        ng-model="formData.backup_monthly_retention"
                        class="form-control"
                        id="monthly_retention"
                        ng-min="1"
                        ng-max="9999"
                        ng-disabled="!formEnabled"
                        ng-required="formData.backup_monthly_enable"
                        ng-keydown="noDecimalPoints($event)"
                        ng-paste="onlyNumbers($event)"
                        positive-integer />
                    <span class="input-group-addon">[% locale.maketext('backups') %]</span>
                </div>
            </div>
            <div class="col-xs-12 col-sm-6 col-md-6 col-lg-6" ng-if="backup_config_form.backup_monthly_retention.$error.required || backup_config_form.backup_monthly_retention.$error.min || backup_config_form.backup_monthly_retention.$error.max || backup_config_form.backup_monthly_retention.$error.number || backup_config_form.backup_monthly_retention.$error.positiveInteger">
                <ul class="validation-container">
                    <li class="validation validation-error" ng-if="backup_config_form.backup_monthly_retention.$error.required || backup_config_form.backup_monthly_retention.$error.min || backup_config_form.backup_monthly_retention.$error.max || backup_config_form.backup_monthly_retention.$error.number || backup_config_form.backup_monthly_retention.$error.positiveInteger">
                        <span class="glyphicon glyphicon-exclamation-sign"></span>
                        <span class="validation-message">
                            [% locale.maketext('You must enter an integer between 1 and 9999.') %]
                        </span>
                    </li>
                </ul>
            </div>
        </div>
        <div class="row" ng-if="formData.backup_monthly_enable">
            <div class="col-xs-offset-1 col-sm-offset-1 col-md-offset-1 col-lg-offset-1 col-xs-11 col-sm-5 col-md-5 col-lg-5">
                <input type="checkbox" ng-model="formData.force_prune_monthly" id="monthly_strict_enforce" ng-disabled="!formEnabled" /><span>[% locale.maketext('Strictly enforce retention, regardless of backup success.') %]</span>
                <p class="text-muted">[% locale.maketext('For more information, read our [output,url,_1,Backup Configuration,_2,_3] documentation.', 'https://go.cpanel.net/whmdocsBackupRetention','target','_blank') %]</p>
            </div>
        </div>
        <div class="row">
            <div class="col-xs-12 col-sm-6 col-md-6 col-lg-6" ng-if="!formData.backup_daily_enable && !formData.backup_weekly_enable && !formData.backup_monthly_enable">
                <ul class="validation-container">
                    <li class="validation validation-error" ng-if="!formData.backup_daily_enable && !formData.backup_weekly_enable && !formData.backup_monthly_enable">
                        <span class="glyphicon glyphicon-exclamation-sign"></span>
                        <span class="validation-message">
                            [% locale.maketext('You must select at least one backup timing setting.') %]
                        </span>
                    </li>
                </ul>
            </div>
        </div>
    </div>
    <div class="form-group">
        <div class="row">
            <div class="col-xs-12 col-sm-6 col-md-6 col-lg-6">
                <h3>[% locale.maketext('Files') %]</h3>
                <p class="text-muted">[% locale.maketext('Select the files that you want to include in a backup.') %]</p>
            </div>
        </div>
        <div class="row">
            <div class="col-xs-12 col-sm-6 col-md-6 col-lg-6">
                <input type="checkbox" ng-model="formData.backupaccts" id="account_backup" ng-disabled="!formEnabled" /><span><label for="account_backup">[% locale.maketext('Back up User Accounts') %]</label></span>
                <button type="button" class="btn btn-default" id="select_users_btn" ng-click="redirectToSelectUsers()" ng-disabled="!formEnabled">[% locale.maketext('Select Users') %]</button>
                <p class="text-muted">[% locale.maketext('Root users can toggle a user account backup or assign a specific backup system to a user.') %]</p>
            </div>
        </div>
        <div class="row" ng-if="formData.backupaccts">
            <div class="col-xs-offset-1 col-sm-offset-1 col-md-offset-1 col-lg-offset-1 col-xs-12 col-sm-6 col-md-6 col-lg-6">
                <input id="suspend_account_toggle" type="checkbox" ng-model="formData.backupsuspendedaccts" ng-disabled="!formEnabled"><label for="suspend_account_toggle">[% locale.maketext('[output,strong,Back up Suspended Accounts]') %]</label>
                <p class="text-muted">[% locale.maketext('Toggle backups for suspended accounts.') %]</p>
            </div>
        </div>
        <div class="row" ng-if="formData.backupaccts">
            <div class="col-xs-offset-1 col-sm-offset-1 col-md-offset-1 col-lg-offset-1 col-xs-12 col-sm-6 col-md-6 col-lg-6">
                <input id="access_log__toggle" type="checkbox" ng-model="formData.backuplogs" ng-disabled="!formEnabled"><label for="access_log__toggle">[% locale.maketext('[output,strong,Back up Access Logs]') %]
            </div>
        </div>
        <div class="row" ng-if="formData.backupaccts">
            <div class="col-xs-offset-1 col-sm-offset-1 col-md-offset-1 col-lg-offset-1 col-xs-12 col-sm-6 col-md-6 col-lg-6">
                <input id="backup_bandwidth_toggle" type="checkbox" ng-model="formData.backupbwdata" ng-disabled="!formEnabled"><label for="backup_bandwidth_toggle">[% locale.maketext('[output,strong,Back up Bandwidth Data]') %]</label>
            </div>
        </div>
        <div class="row" ng-if="formData.backupaccts">
            <div class="col-xs-offset-1 col-sm-offset-1 col-md-offset-1 col-lg-offset-1 col-xs-12 col-sm-6 col-md-6 col-lg-6">
                <input id="local_zone_toggle" type="checkbox" ng-model="formData.localzonesonly" ng-disabled="!formEnabled"><label for="local_zone_toggle">[% locale.maketext('[output,strong,Use Local DNS]') %]</label>
                <p class="text-muted">[% locale.maketext('Confine the domain lookup to this server only and do not query the DNS cluster.') %]</p>
            </div>
        </div>
        <div class="row">
            <div class="col-xs-12 col-sm-6 col-md-6 col-lg-6">
                <input type="checkbox" ng-model="formData.backupfiles" id="set_backup_system_files" ng-disabled="!formEnabled" /><span><label for="set_backup_system_files">[% locale.maketext('Back up System Files') %]</label></span>
            </div>
        </div>
        <div class="row">
            <div class="col-xs-12 col-sm-6 col-md-6 col-lg-6">
                <p class="text-muted">[% locale.maketext('[output,strong,Recommended.] Supports server restoration.') %]</p>
            </div>
            <div class="row">
                <div class="col-xs-12 col-sm-6 col-md-6 col-lg-6" ng-if="!formData.backupaccts && !formData.backupfiles">
                    <ul class="validation-container">
                        <li class="validation validation-error" ng-if="!formData.backupaccts && !formData.backupfiles">
                            <span class="glyphicon glyphicon-exclamation-sign"></span>
                            <span class="validation-message">
                                [% locale.maketext('You must select at least one set of files to back up.') %]
                            </span>
                        </li>
                    </ul>
                </div>
            </div>
        </div>
    </div>
    <div class="form-group">
        <div class="row">
            <div class="col-xs-12 col-sm-6 col-md-6 col-lg-6">
                <h3>[% locale.maketext('Databases') %]</h3>
                <p class="text-muted">[% locale.maketext('Select the databases that you want to include in a backup.') %]</p>
            </div>
        </div>
        <div class="row">
            <div class="col-xs-12 col-sm-6 col-md-6 col-lg-6">
                <p>[% locale.maketext('[output,strong,Back up SQL Databases]') %]</p>
            </div>
        </div>
        <div class="row">
            <div class="col-xs-12 col-sm-6 col-md-6 col-lg-6">
                <div>
                    <input type="radio" ng-model="formData.mysqlbackup" name="set_sql_database" id="backup_sql_database_per_acct" value="accounts" ng-disabled="!formEnabled" /><span><label for="backup_sql_database_per_acct">[% locale.maketext('Per Account Only') %]</label></span>
                    <p class="text-muted">[% locale.maketext('Use the “[_1]” command to create backup files with the “[_2]” file extension for each account.', 'mysqldump', '.sql') %]</p>
                </div>
                <div>
                    <input type="radio" ng-model="formData.mysqlbackup" name="set_sql_database" id="backup_sql_database_entire_dir" value="dir"
                    [% IF data.is_remote_mysql %]
                        ng-disabled="true"
                    [% ELSE %]
                        ng-disabled="!formEnabled"
                    [% END %]
                        /><span><label for="backup_sql_database_entire_dir">[% locale.maketext('Entire Data Directory') %]</label></span>
                    <p class="text-muted">[% locale.maketext('Back up all files in the “[_1]” directory.', data.mysql_data_dir.html) %]</p>
                </div>
                <div>
                    <input type="radio" ng-model="formData.mysqlbackup" name="set_sql_database" id="backup_sql_database_per_acct_and_entire_dir" value="both"
                    [% IF data.is_remote_mysql %]
                        ng-disabled="true"
                    [% ELSE %]
                        ng-disabled="!formEnabled"
                    [% END %]
                        /><span><label for="backup_sql_database_per_acct_and_entire_dir">[% locale.maketext('Per Account and Entire Data Directory') %]</label></span>
                    <p class="text-muted">[% locale.maketext('Back up all files in the “[_1]” directory, and use the “[_2]” command to create backup files with the “[_3]” extension for each account.', data.mysql_data_dir.html, 'mysqldump', '.sql') %]</p>
                </div>
                <div id="msyqlWarning" class="callout callout-warning" ng-if="formData.mysqlbackup == 'both' || formData.mysqlbackup == 'dir'">
                    [% locale.maketext("[output,strong,Warning:] Exercise extreme caution if you select this setting.") %] [% locale.maketext("This setting backs up the data directory without stopping the database service.") %]
                    [% locale.maketext("This action may cause [asis,InnoDB] issues with the data directory backup.") %]
                    <p ng-if="formData.mysqlbackup == 'both'"><br />[% locale.maketext("This will not affect “[_1]” backups.", 'mysqldump') %]</p>
                </div>
            </div>
        </div>
    </div>
    <div class="form-group">
        <div class="row">
            <div class="col-xs-12 col-sm-6 col-md-6 col-lg-6">
                <h3>[% locale.maketext('Configure the Backup Directory') %]</h3>
            </div>
        </div>
        <div class="row">
            <div class="col-xs-12 col-sm-6 col-md-6 col-lg-6">
                <p>[% locale.maketext('[output,strong,Default Backup Directory]') %]</p>
                <p class="text-muted">[% locale.maketext('You must enter an absolute path to the local backup directory.') %]</p>
            </div>
        </div>
        <div class="row">
            <div class="col-xs-12 col-sm-6 col-md-6 col-lg-6">
                <input type="text" name="backup_directory" class="form-control" ng-pattern="absolutePathRegEx" ng-model="formData.backupdir" id="backup_directory" ng-disabled="!formEnabled" required/>
            </div>
            <div class="col-xs-12 col-sm-6 col-md-6 col-lg-6" ng-if="backup_config_form.backup_directory.$error.pattern || backup_config_form.backup_directory.$error.required">
                <ul class="validation-container">
                    <li class="validation validation-error" ng-if="backup_config_form.backup_directory.$error.pattern">
                        <span class="glyphicon glyphicon-exclamation-sign"></span>
                        <span class="validation-message">
                            [% locale.maketext('You must enter the backup destination path with a forward slash to be a valid absolute path.') %]
                        </span>
                    </li>
                    <li class="validation validation-error" ng-if="backup_config_form.backup_directory.$error.required">
                        <span class="glyphicon glyphicon-exclamation-sign"></span>
                        <span class="validation-message">
                            [% locale.maketext('You must enter a backup path.') %]
                        </span>
                    </li>
                </ul>
            </div>
        </div>
        [% IF data.are_quotas_on %]
            <div class="row">
                <div class="col-xs-12 col-sm-6 col-md-6 col-lg-6">
                    <div class="callout callout-info">
                        [% locale.maketext('The system does not apply quota limits to the default backup directory, /backup.') %] [% locale.maketext('To avoid performance degradation, we recommend that you store backups in a quota-disabled filesystem.') %]
                    </div>
                </div>
            </div>
        [% END %]
        <div class="row">
            <div class="col-xs-12 col-sm-6 col-md-6 col-lg-6">
                <p>[% locale.maketext('[output,strong,Backup Staging Directory]') %]</p>
                <p class="text-muted">[% locale.maketext('You must enter an absolute path. The backup staging directory temporarily stores a remote backup’s files and directories during a backup restoration. The directory empties once the system restores the backup.') %]</p>
            </div>
        </div>
        <div class="row">
            <div class="col-xs-12 col-sm-6 col-md-6 col-lg-6">
                <input type="text" name="staging_directory" class="form-control" ng-pattern="absolutePathRegEx" ng-model="formData.remote_restore_staging_dir" id="staging_directory" ng-disabled="!formEnabled" required/>
            </div>
            <div class="col-xs-12 col-sm-6 col-md-6 col-lg-6" ng-if="backup_config_form.staging_directory.$error.pattern || backup_config_form.staging_directory.$error.required">
                <ul class="validation-container">
                    <li class="validation validation-error" ng-if="backup_config_form.staging_directory.$error.pattern">
                        <span class="glyphicon glyphicon-exclamation-sign"></span>
                        <span class="validation-message">
                            [% locale.maketext('You must enter an absolute path.') %]
                        </span>
                    </li>
                    <li class="validation validation-error" ng-if="backup_config_form.staging_directory.$error.required">
                        <span class="glyphicon glyphicon-exclamation-sign"></span>
                        <span class="validation-message">
                            [% locale.maketext('You must enter a backup staging directory path.') %]
                        </span>
                    </li>
                </ul>
            </div>
        </div>
        <div class="row">
            <div class="col-xs-12 col-sm-6 col-md-6 col-lg-6">
                <div class="callout callout-info">
                    [% locale.maketext('The system restores backups one at a time. The backup staging directory must be large enough to contain the largest remote backup file that you wish to restore.') %]
                </div>
            </div>
        </div>
        <div class="row">
            <div class="col-xs-12 col-sm-6 col-md-6 col-lg-6">
                <input type="checkbox" ng-model="formData.keeplocal" id="set_backups_retain" ng-disabled="!formEnabled" /><label for="set_backups_retain">[% locale.maketext('Retain Backups in the Default Backup Directory') %]</label>
                <p class="text-muted">[% locale.maketext('Retain backups in the default local backup directory, even after the system transfers the backups to another destination.') %]</p>
                <p class="text-muted">[% locale.maketext('If you disable this option, the system will delete the backups after they move to another destination.') %]</p>
            </div>
        </div>
        <div class="row">
            <div class="col-xs-12 col-sm-6 col-md-6 col-lg-6">
                <input type="checkbox" id="mount_backup_toggle" ng-model="formData.backupmount" ng-disabled="!formEnabled" ng-checked="formData.backupmount"><label for="mount_backup_toggle">[% locale.maketext('Mount Backup Drive as Needed') %]</label>
                <p class="text-muted">[% locale.maketext('Requires a separate drive or other mount point.') %]</p>
            </div>
        </div>
    </div>
    <div class="row">
        <div class="col-xs-12 col-sm-6 col-md-6 col-lg-6">
            <button type="submit"
                    id="save_config_btn" cp-action="saveConfiguration(backup_config_form)" ng-disabled="!backup_config_form.$dirty || !backup_config_form.$valid ||
                    (formData.backup_daily_enable && selectedDays.length === 0) ||
                    (formData.backup_monthly_enable && !monthlyBackupBool.first && !monthlyBackupBool.fifteenth) ||
                    (!formData.backup_daily_enable && !formData.backup_weekly_enable && !formData.backup_monthly_enable)">[% locale.maketext('Save Configuration') %]</button>
            <button type="reset" class="btn btn-default" id="reset_config" ng-disabled="backup_config_form.$pristine" ng-click="resetConfiguration(backup_config_form)">[% locale.maketext('Reset') %]</button>
        </div>
    </div>
</form>
</div>
Back to Directory File Manager