PluginProbe ʕ •ᴥ•ʔ
JetBackup – Backup, Restore & Migrate / trunk
JetBackup – Backup, Restore & Migrate vtrunk
3.1.22.3 1.4.3 1.4.4 1.4.5 1.4.6 1.4.7 1.4.8 1.4.8.1 1.4.9 1.5.0 1.5.1 1.5.1.1 1.5.2 1.5.3 1.5.4 1.5.5 1.5.6 1.5.7 1.5.8 1.6.0 1.6.10 1.6.11 1.6.12 1.6.13 1.6.15 1.6.5.1 1.6.8.8 1.6.9 1.6.9.1 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7.5 2.0.8.7 2.0.9.11 2.0.9.14 2.0.9.15 2.0.9.6 2.0.9.7 2.0.9.9 3.1.10.7 3.1.11.1 3.1.12.3 3.1.13.4 3.1.14.17 3.1.15.4 3.1.16.1 3.1.17.5 3.1.18.10 3.1.18.8 3.1.18.9 3.1.19.8 3.1.20.3 3.1.21.3 3.1.7.9 3.1.9.2 trunk 1.1.90 1.1.91 1.2.0 1.2.5 1.2.6 1.2.7 1.2.8 1.2.9 1.3.0 1.3.1 1.3.2 1.3.3 1.3.4 1.3.6 1.3.7 1.3.8 1.3.9 1.4.0 1.4.1 1.4.2
backup / public / views / destinations.htm
backup / public / views Last commit date
destinations 1 year ago modal 10 months ago settings 6 days ago 404.htm 1 year ago alerts.htm 1 year ago backups.htm 1 year ago dashboard.htm 1 year ago destinations.htm 9 months ago downloads.htm 1 year ago jobs.htm 1 year ago main.htm 1 year ago mfa.htm 1 year ago queue.htm 1 year ago schedules.htm 1 year ago settings.htm 1 year ago system.htm 11 months ago
destinations.htm
156 lines
1 <div ng-controller="destinations" class="jb-list-backups-container jb-grey-0">
2
3 <div class="row" navigation active="menuItem"></div>
4
5 <div class="row rounded-4 jb-white-0 jb-panel-row shadow-lg">
6 <div class="jb-main-title rounded-3">
7 {{ lang.t('Destinations') }}
8 </div>
9 <div class="jb-title-description">
10 <p>{{ lang.t('Set up and manage where your backups are stored. We recommend using remote/off-site destinations for disaster recovery. Use the Export Config option to store a lightweight version of your plugin settings.') }}</p>
11 <p
12 class="fw-bold jetbackup-license-warning"
13 ng-if="!hasValidLicense"
14 ng-bind-html="::lang.t('* Destinations are limited to Local and <a href=&quot;https://www.jetbackup.com/jetbackup-storage&quot; target=&quot;_blank&quot;>JetBackup Cloud Storage</a> without a Pro License. Already have a license and want to back up to other remote destinations? Make sure you’ve saved it in <a href=&quot;#!/settings/general&quot; aria-label=&quot;General settings&quot;>Settings</a>.')">
15 </p>
16 </div>
17
18 <div class="row jb-table-row">
19 <div class="table-responsive">
20
21 <div class="row mb-10">
22 <div class="col-md-8 d-flex pt-2">
23 <search placeholder="{{ lang.t('Search here...') }}" ng-model="metaData.filterValue" ng-change="fetch()"></search>
24 </div>
25 <div class="col-md-4 d-flex justify-content-end align-items-center gap-2">
26
27 <!--
28 <a ng-show="!hasActiveJetStorage"
29 href="https://www.jetbackup.com/jetbackup-for-wordpress/free-storage"
30 target="_blank"
31 class="jb-action-button jb-orange-button">
32 <i class="fa-solid fa-gift"></i> {{ lang.t('Get Free Storage') }}
33 </a>
34 -->
35
36 <a ng-click="manageDestination()" class="jb-action-button jb-green-button">
37 <i class="fa-sharp fa-solid fa-plus"></i> {{ lang.t('Create new destination') }}
38 </a>
39 </div>
40
41
42 </div>
43
44 <div class="snake-line" ng-class="{ 'loading': loading }"></div>
45 <table class="jb-table table table-hover">
46 <thead>
47 <tr>
48 <th></th>
49 <th scope="col">
50 <button sort-by sort-meta="meta" sort-field="name" onSort="fetch()" title="{{ lang.t('Sort by Name') }}">{{ lang.t('Name') }}</button>
51 </th>
52 <th scope="col">{{ lang.t('Type') }}</th>
53 <th scope="col">{{ lang.t('Jobs Assigned') }}</th>
54 <th scope="col">
55 <button sort-by sort-meta="meta" sort-field="read_only" onSort="fetch()" title="{{ lang.t('Sort by Read Only') }}">{{ lang.t('Read Only') }}</button>
56 </th>
57 <th scope="col">
58 <button sort-by sort-meta="meta" sort-field="enable" onSort="fetch()" title="{{ lang.t('Sort by Enable') }}">{{ lang.t('Enable') }}</button>
59 </th>
60 <th scope="col">
61 <button sort-by sort-meta="meta" sort-field="export_config" onSort="fetch()" title="{{ lang.t('Sort by Export Config') }}">{{ lang.t('Export Config') }}</button>
62 </th>
63 <th scope="col">
64 <button sort-by sort-meta="meta" sort-field="notes" onSort="fetch()" title="{{ lang.t('Sort by Notes') }}">{{ lang.t('Notes') }}</button>
65 </th>
66 </tr>
67 </thead>
68 <tbody>
69
70 <tr ng-if="initialLoading">
71 <td colspan="8" class="text-center jb-loading-row">
72 <div class="jb-loading-screen">
73 <p class="jb-loading-text">
74 Loading<span class="jb-dots"><span></span><span></span><span></span></span>
75 </p>
76 </div>
77 </td>
78 </tr>
79
80 <!-- No Jobs Found -->
81 <tr ng-if="!initialLoading && destinations.length === 0 && !loading">
82 <td colspan="8" class="text-center">
83 {{ lang.t("No Destinations found.") }}
84 </td>
85 </tr>
86
87 <tr ng-repeat-start="destination in destinations"
88 class="jb-table-tr destinations"
89 ng-click="toggleDetail($index)"
90 ng-class="{'jb-table-tr-selected': isDetailVisible($index)}">
91
92 <!-- Default Marker Column -->
93 <td class="text-center" title="{{ destination.default ? lang.t('This is the default destination.') : '' }}">
94 <i class="fa fa-star" ng-class="{'text-warning': destination.default, 'text-muted': !destination.default}" aria-hidden="true"></i>
95 </td>
96
97 <!-- Name Column -->
98 <td>{{ destination.name }}</td>
99 <td>{{ destination.type }}</td>
100 <td>{{ destination.jobs_assigned }}</td>
101 <td>{{ destination.read_only ? lang.t('Yes') : lang.t('No') }}</td>
102
103 <td class="switch-main">
104 <label class="switch">
105 <input type="checkbox" aria-label="Enable/Disable destination" value="{{destination.enabled}}" ng-checked="destination.enabled == 1" ng-click="performAction(destination._id, 'setStatus')">
106 <span class="slider round"></span>
107 </label>
108 </td>
109
110 <td class="switch-main">
111 <label class="switch">
112 <input type="checkbox" aria-label="Enable/Disable export config" value="{{destination.export_config}}" ng-checked="destination.export_config == 1" ng-click="performAction(destination._id, 'toggleExportConfig')">
113 <span class="slider round"></span>
114 </label>
115 </td>
116 <td>{{ destination.notes }}</td>
117 </tr>
118
119 <tr ng-repeat-end ng-show="isDetailVisible($index)"
120 ng-class="{'jb-table-tr-selected': isDetailVisible($index)}">
121 <td colspan="8" class="jb-table-elements">
122 <div class="d-grid gap-2 d-md-flex justify-content-md-start">
123 <div class="row g-2">
124
125 <!-- buttons start -->
126 <div class="col-12 col-md-auto" ng-repeat="action in actions">
127 <button ng-click="performAction(destination._id, action.name)"
128 id="destid_{{destination._id}}_{{action.name}}"
129 name="{{action.name}}"
130 class="btn btn-primary jb-full-restore-button w-100"
131 ng-class="{'jb-red-button': action.name === 'delete'}"
132 type="button"
133 ng-disabled="(action.name === 'delete' && (destination.jobs_assigned > 0 || destination.default)) || isButtonLoading(destination._id, action.name)"
134 title="{{ (action.name === 'delete' && destination.jobs_assigned > 0) ? lang.t('Cannot delete this destination because it has assigned backup jobs.') :
135 (destination.default ? lang.t('Cannot delete the default destination.') : '') }}">
136 <span class="icon">
137 <i class="fa-sharp fa-light" ng-class="isButtonLoading(destination._id, action.name) ? 'fa-spinner fa-spin' : action.icon"></i>
138 </span>
139 {{ lang.t(action.label) }}
140 </button>
141 </div>
142
143 <!-- buttons end -->
144 </div>
145 </div>
146 </td>
147 </tr>
148
149 </tbody>
150 </table>
151 <pagination fetch="fetch" meta="meta"></pagination>
152 </div>
153 </div>
154 </div>
155 </div>
156