discourse/app/assets/javascripts/admin/addon/templates/backups-index.hbs
Martin Brennan 49c49e8ae0
FEATURE: Local chunked uppy backup uploads with a new uploader plugin (#14894)
This takes the uppy chunking algorithm and combines it with some
form submission from resumable.js for parity with the current
backup controller to make local backup uploads work with uppy.
We can then use this to replace the resumable-upload component
and the resumable.js library from our codebase, once stable.

This is disabled by default, so people using local backups will not
be affected. The enable_experimental_backup_uploader site setting
must be enabled for this to work.
2021-11-23 08:45:42 +10:00

106 lines
3.7 KiB
Handlebars

<div class="backup-options">
{{#if localBackupStorage}}
{{#if siteSettings.enable_experimental_backup_uploader}}
{{uppy-backup-uploader done=(route-action "uploadSuccess") localBackupStorage=localBackupStorage}}
{{else}}
{{resumable-upload
target="/admin/backups/upload"
success=(route-action "uploadSuccess")
error=(route-action "uploadError")
uploadText=uploadLabel
title="admin.backups.upload.title"
class="btn-default"}}
{{/if}}
{{else}}
{{#if (and siteSettings.enable_direct_s3_uploads siteSettings.enable_experimental_backup_uploader)}}
{{uppy-backup-uploader done=(route-action "remoteUploadSuccess")}}
{{else}}
{{backup-uploader done=(route-action "remoteUploadSuccess")}}
{{/if}}
{{/if}}
{{#if site.isReadOnly}}
{{d-button
class="btn-default"
icon="far-eye"
action=(action "toggleReadOnlyMode")
disabled=status.isOperationRunning
title="admin.backups.read_only.disable.title"
label="admin.backups.read_only.disable.label"}}
{{else}}
{{d-button
class="btn-default"
icon="far-eye"
action=(action "toggleReadOnlyMode")
disabled=status.isOperationRunning
title="admin.backups.read_only.enable.title"
label="admin.backups.read_only.enable.label"}}
{{/if}}
<div class="backup-message">
{{#if status.restoreDisabled}}
<a href="site_settings/category/all_results?filter=allow_restore">{{d-icon "info-circle"}} {{i18n "admin.backups.operations.restore.is_disabled"}}</a>
{{/if}}
</div>
</div>
<table class="grid">
<thead>
<th width="55%">{{i18n "admin.backups.columns.filename"}}</th>
<th width="10%">{{i18n "admin.backups.columns.size"}}</th>
<th></th>
</thead>
<tbody>
{{#each model as |backup|}}
<tr>
<td class="backup-filename">{{backup.filename}}</td>
<td class="backup-size">{{human-size backup.size}}</td>
<td class="backup-controls">
<div>
{{d-button class="btn-default download"
action=(action "download")
actionParam=backup
icon="download"
title="admin.backups.operations.download.title"
label="admin.backups.operations.download.label"}}
{{#if status.isOperationRunning}}
{{d-button
icon="far-trash-alt"
action=(route-action "destroyBackup")
actionParam=backup class="btn-danger"
disabled="true"
title="admin.backups.operations.is_running"}}
{{d-button
icon="play"
action=(route-action "startRestore")
actionParam=backup disabled=status.restoreDisabled
class="btn-default"
title=restoreTitle
label="admin.backups.operations.restore.label"}}
{{else}}
{{d-button
icon="far-trash-alt"
action=(route-action "destroyBackup")
actionParam=backup
class="btn-danger"
title="admin.backups.operations.destroy.title"}}
{{d-button
icon="play"
action=(route-action "startRestore")
actionParam=backup
disabled=status.restoreDisabled
class="btn-default btn-restore"
title=restoreTitle
label="admin.backups.operations.restore.label"}}
{{/if}}
</div>
</td>
</tr>
{{else}}
<tr>
<td>{{i18n "admin.backups.none"}}</td>
<td></td>
<td></td>
</tr>
{{/each}}
</tbody>
</table>