mirror of
https://github.com/LinkStackOrg/LinkStack.git
synced 2025-02-03 12:37:39 +01:00
fef2e09aa9
LittleLink Custom now includes an .env config editor. This editor can be accessed via the Admin Panel under Admin>Config. This editor allows admins to edit, backup, download and upload the .env configuration file. All in all, the new feature, allows users to more easily edit the configuration file, contributing to my goal of making LittleLink Custom easier to use. Read more about this topic on the Blog https://blog.littlelink-custom.com/built-in-config-editor
119 lines
5.7 KiB
PHP
119 lines
5.7 KiB
PHP
@php($translatePrefix='env-editor::env-editor.views.backup.')
|
|
<template id="env-editor-backups">
|
|
<div>
|
|
<div class="h5 my-4">{{__($translatePrefix.'title')}}</div>
|
|
<div>
|
|
<button class="btn-info btn " @click="createBackUp">{{__($translatePrefix.'btn.backUpCurrentEnv')}}</button>
|
|
<a class="btn-info btn" href="{{route(config($package.'.route.name').'.download')}}">{{__($translatePrefix.'btn.downloadCurrentEnv')}}</a>
|
|
</div>
|
|
<div class=" my-3">
|
|
|
|
<div v-if="items.length" class="table-responsive">
|
|
<table id="env-editor-table-accordion" class="table">
|
|
<thead>
|
|
<tr class="table-secondary">
|
|
<th scope="col">{{__($translatePrefix.'tableTitles.filename')}}</th>
|
|
<th scope="col">{{__($translatePrefix.'tableTitles.created_at')}}</th>
|
|
<th scope="col">{{__($translatePrefix.'tableTitles.actions')}}</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<template v-for="(item, index) in items">
|
|
<tr :key="item.real_name" :bind="item">
|
|
<th scope="row" class="font-weight-bold ">@{{ item.name }}</th>
|
|
<td>@{{ item.created_at_formatted }}</td>
|
|
<td>
|
|
<div class="btn-group" role="group">
|
|
<button class="btn btn-info" data-toggle="collapse" aria-expanded="false"
|
|
:data-target="'#collapse_'+item.real_name"
|
|
:aria-controls="'#collaps_'+item.real_name" title="{{__($translatePrefix.'btn.viewContent')}}"><span class="fas fa-eye"></span></button>
|
|
<a class="btn btn-info" :href="getDownLoadLink(item)" title="{{__($translatePrefix.'btn.download')}}"><span
|
|
class="fas fa-download"></span></a>
|
|
<button class="btn btn-secondary" @click="restore(item)" title="{{__($translatePrefix.'btn.restore')}}"><span class="fas fa-redo"></span>
|
|
</button>
|
|
<button class="btn btn-danger" @click="destroy(item)" title="{{__($translatePrefix.'btn.delete')}}"><span class="fas fa-trash"></span></button>
|
|
</div>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td colspan="100%" class="p-0">
|
|
<div class="collapse" :id="'collapse_'+item.real_name" data-parent="#env-editor-table-accordion">
|
|
<div class="table-responsive table-sm px-3 pb-3">
|
|
<table class="w-100 bg-light">
|
|
<tr v-for="(dt, index) in item.parsed_data">
|
|
<td class="pl-3"><code>@{{ dt.key||' ' }}</code></td>
|
|
<td><code>@{{ dt.value }}</code></td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
|
|
</div>
|
|
</td>
|
|
</tr>
|
|
</template>
|
|
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
<div class="text-primary font-italic" v-else>{!! __($translatePrefix.'noBackUpItems') !!}</div>
|
|
</div>
|
|
</div>
|
|
</template>
|
|
|
|
|
|
@push('scripts')
|
|
|
|
<script>
|
|
const backUps = {
|
|
template: '#env-editor-backups',
|
|
data: () => {
|
|
return {
|
|
modalItem: '',
|
|
items: []
|
|
}
|
|
},
|
|
computed: {},
|
|
mounted() {
|
|
this.getItemsWithAjax();
|
|
envEventBus.$on('env:backupsChanged', () => {
|
|
this.getItemsWithAjax();
|
|
});
|
|
},
|
|
methods: {
|
|
|
|
getDownLoadLink(item) {
|
|
let downloadUrl = '{{route(config($package.'.route.name').'.download')}}/';
|
|
return downloadUrl + item.real_name;
|
|
},
|
|
createBackUp() {
|
|
let url = '{{route(config($package.'.route.name').'.createBackup')}}';
|
|
this.sendBasicAjaxRequest('post', url, 'backupsChanged');
|
|
},
|
|
restore(item) {
|
|
let url = '{{route(config($package.'.route.name').'.restoreBackup')}}/';
|
|
this.sendBasicAjaxRequest('post', url + item.real_name, 'changed');
|
|
},
|
|
destroy(item) {
|
|
let url = '{{route(config($package.'.route.name').'.destroyBackup')}}/';
|
|
this.sendBasicAjaxRequest('delete', url + item.real_name, 'backupsChanged');
|
|
|
|
},
|
|
sendBasicAjaxRequest($method, $url, $eventToTrigger) {
|
|
envClient($url, { method: $method }).then((data) => {
|
|
if (data.message) {
|
|
envAlert('info', data.message);
|
|
}
|
|
envEventBus.$emit('env:' + $eventToTrigger);
|
|
})
|
|
},
|
|
getItemsWithAjax() {
|
|
envClient('{{route(config($package.'.route.name').'.getBackups')}}')
|
|
.then(data => this.items = Object.values(data.items))
|
|
}
|
|
},
|
|
};
|
|
|
|
|
|
</script>
|
|
@endpush
|