Page Menu
Home
Phorge
Search
Configure Global Search
Log In
Files
F118442292
D3373.1775816280.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Flag For Later
Award Token
Authored By
Unknown
Size
17 KB
Referenced Files
None
Subscribers
None
D3373.1775816280.diff
View Options
diff --git a/src/resources/js/bootstrap.js b/src/resources/js/bootstrap.js
--- a/src/resources/js/bootstrap.js
+++ b/src/resources/js/bootstrap.js
@@ -20,12 +20,14 @@
import FontAwesomeIcon from './fontawesome'
import Vue from 'vue'
import VueRouter from 'vue-router'
+import RouterLinkButton from '../vue/Widgets/RouterLinkButton'
import Toast from '../vue/Widgets/Toast'
import store from './store'
window.Vue = Vue
Vue.component('SvgIcon', FontAwesomeIcon)
+Vue.component('RouterLinkButton', RouterLinkButton)
const vTooltip = (el, binding) => {
let t = []
diff --git a/src/resources/vue/Distlist/Info.vue b/src/resources/vue/Distlist/Info.vue
--- a/src/resources/vue/Distlist/Info.vue
+++ b/src/resources/vue/Distlist/Info.vue
@@ -6,7 +6,7 @@
<div class="card-body">
<div class="card-title" v-if="list_id !== 'new'">
{{ $tc('distlist.list-title', 1) }}
- <button class="btn btn-outline-danger button-delete float-end" @click="deleteList()" tag="button">
+ <button class="btn btn-outline-danger button-delete float-end" @click="deleteList()" type="button">
<svg-icon icon="trash-alt"></svg-icon> {{ $t('distlist.delete') }}
</button>
</div>
diff --git a/src/resources/vue/Distlist/List.vue b/src/resources/vue/Distlist/List.vue
--- a/src/resources/vue/Distlist/List.vue
+++ b/src/resources/vue/Distlist/List.vue
@@ -5,9 +5,12 @@
<div class="card-title">
{{ $tc('distlist.list-title', 2) }}
<small><sup class="badge bg-primary">{{ $t('dashboard.beta') }}</sup></small>
- <router-link v-if="!$root.isDegraded()" class="btn btn-success float-end create-list" :to="{ path: 'distlist/new' }" tag="button">
- <svg-icon icon="users"></svg-icon> {{ $t('distlist.create') }}
- </router-link>
+ <router-link-button v-if="!$root.isDegraded()"
+ class="btn-success float-end"
+ to="distlist/new"
+ icon="users"
+ label="distlist.create"
+ ></router-link-button>
</div>
<div class="card-text">
<table class="table table-sm table-hover">
diff --git a/src/resources/vue/Domain/List.vue b/src/resources/vue/Domain/List.vue
--- a/src/resources/vue/Domain/List.vue
+++ b/src/resources/vue/Domain/List.vue
@@ -4,9 +4,12 @@
<div class="card-body">
<div class="card-title">
{{ $t('user.domains') }}
- <router-link v-if="!$root.isDegraded()" class="btn btn-success float-end create-domain" :to="{ path: 'domain/new' }" tag="button">
- <svg-icon icon="globe"></svg-icon> {{ $t('domain.create') }}
- </router-link>
+ <router-link-button v-if="!$root.isDegraded()"
+ class="btn-success float-end"
+ to="domain/new"
+ icon="globe"
+ label="domain.create"
+ ></router-link-button>
</div>
<div class="card-text">
<table class="table table-sm table-hover">
diff --git a/src/resources/vue/Resource/Info.vue b/src/resources/vue/Resource/Info.vue
--- a/src/resources/vue/Resource/Info.vue
+++ b/src/resources/vue/Resource/Info.vue
@@ -6,7 +6,7 @@
<div class="card-body">
<div class="card-title" v-if="resource_id !== 'new'">
{{ $tc('resource.list-title', 1) }}
- <button class="btn btn-outline-danger button-delete float-end" @click="deleteResource()" tag="button">
+ <button class="btn btn-outline-danger button-delete float-end" @click="deleteResource()" type="button">
<svg-icon icon="trash-alt"></svg-icon> {{ $t('resource.delete') }}
</button>
</div>
diff --git a/src/resources/vue/Resource/List.vue b/src/resources/vue/Resource/List.vue
--- a/src/resources/vue/Resource/List.vue
+++ b/src/resources/vue/Resource/List.vue
@@ -5,9 +5,12 @@
<div class="card-title">
{{ $tc('resource.list-title', 2) }}
<small><sup class="badge bg-primary">{{ $t('dashboard.beta') }}</sup></small>
- <router-link v-if="!$root.isDegraded()" class="btn btn-success float-end create-resource" :to="{ path: 'resource/new' }" tag="button">
- <svg-icon icon="cog"></svg-icon> {{ $t('resource.create') }}
- </router-link>
+ <router-link-button v-if="!$root.isDegraded()"
+ to="resource/new"
+ class="btn-success float-end"
+ icon="cog"
+ label="resource.create"
+ ></router-link-button>
</div>
<div class="card-text">
<table class="table table-sm table-hover">
diff --git a/src/resources/vue/SharedFolder/Info.vue b/src/resources/vue/SharedFolder/Info.vue
--- a/src/resources/vue/SharedFolder/Info.vue
+++ b/src/resources/vue/SharedFolder/Info.vue
@@ -6,7 +6,7 @@
<div class="card-body">
<div class="card-title" v-if="folder_id !== 'new'">
{{ $tc('shf.list-title', 1) }}
- <button class="btn btn-outline-danger button-delete float-end" @click="deleteFolder()" tag="button">
+ <button class="btn btn-outline-danger button-delete float-end" @click="deleteFolder()" type="button">
<svg-icon icon="trash-alt"></svg-icon> {{ $t('shf.delete') }}
</button>
</div>
diff --git a/src/resources/vue/SharedFolder/List.vue b/src/resources/vue/SharedFolder/List.vue
--- a/src/resources/vue/SharedFolder/List.vue
+++ b/src/resources/vue/SharedFolder/List.vue
@@ -5,9 +5,12 @@
<div class="card-title">
{{ $tc('shf.list-title', 2) }}
<small><sup class="badge bg-primary">{{ $t('dashboard.beta') }}</sup></small>
- <router-link v-if="!$root.isDegraded()" class="btn btn-success float-end create-folder" :to="{ path: 'shared-folder/new' }" tag="button">
- <svg-icon icon="cog"></svg-icon> {{ $t('shf.create') }}
- </router-link>
+ <router-link-button v-if="!$root.isDegraded()"
+ to="shared-folder/new"
+ class="btn-success float-end"
+ icon="cog"
+ label="shf.create"
+ ></router-link-button>
</div>
<div class="card-text">
<table class="table table-sm table-hover">
diff --git a/src/resources/vue/User/List.vue b/src/resources/vue/User/List.vue
--- a/src/resources/vue/User/List.vue
+++ b/src/resources/vue/User/List.vue
@@ -8,11 +8,12 @@
<div class="card-text">
<div class="mb-2 d-flex">
<list-search :placeholder="$t('user.search')" :on-search="searchUsers"></list-search>
- <div v-if="!$root.isDegraded()">
- <router-link class="btn btn-success ms-1 create-user" :to="{ path: 'user/new' }" tag="button">
- <svg-icon icon="user"></svg-icon> {{ $t('user.create') }}
- </router-link>
- </div>
+ <router-link-button v-if="!$root.isDegraded()"
+ to="user/new"
+ class="btn-success ms-1"
+ icon="user"
+ label="user.create"
+ ></router-link-button>
</div>
<table id="users-list" class="table table-sm table-hover">
<thead>
diff --git a/src/resources/vue/User/Profile.vue b/src/resources/vue/User/Profile.vue
--- a/src/resources/vue/User/Profile.vue
+++ b/src/resources/vue/User/Profile.vue
@@ -4,13 +4,12 @@
<div class="card-body">
<div class="card-title">
{{ $t('user.profile-title') }}
- <router-link
- v-if="$root.isController(wallet.id)"
- class="btn btn-outline-danger button-delete float-end"
- to="/profile/delete" tag="button"
- >
- <svg-icon icon="trash-alt"></svg-icon> {{ $t('user.profile-delete') }}
- </router-link>
+ <router-link-button v-if="$root.isController(wallet.id)"
+ to="profile/delete"
+ class="btn-outline-danger button-delete float-end"
+ icon="trash-alt"
+ label="user.profile-delete"
+ ></router-link-button>
</div>
<div class="card-text">
<form @submit.prevent="submit">
diff --git a/src/resources/vue/User/ProfileDelete.vue b/src/resources/vue/User/ProfileDelete.vue
--- a/src/resources/vue/User/ProfileDelete.vue
+++ b/src/resources/vue/User/ProfileDelete.vue
@@ -8,10 +8,12 @@
<p>{{ $t('user.profile-delete-text2') }}</p>
<p v-if="supportEmail" v-html="$t('user.profile-delete-support', { href: 'mailto:' + supportEmail, email: supportEmail })"></p>
<p>{{ $t('user.profile-delete-contact', { app: $root.appName }) }}</p>
- <button class="btn btn-secondary button-cancel" @click="$router.go(-1)">{{ $t('btn.cancel') }}</button>
- <button class="btn btn-danger button-delete" @click="deleteProfile">
- <svg-icon icon="trash-alt"></svg-icon> {{ $t('user.profile-delete') }}
- </button>
+ <p class="buttons">
+ <button class="btn btn-secondary button-cancel" @click="$router.go(-1)">{{ $t('btn.cancel') }}</button>
+ <button class="btn btn-danger button-delete" @click="deleteProfile">
+ <svg-icon icon="trash-alt"></svg-icon> {{ $t('user.profile-delete') }}
+ </button>
+ </p>
</div>
</div>
</div>
diff --git a/src/resources/vue/Widgets/RouterLinkButton.vue b/src/resources/vue/Widgets/RouterLinkButton.vue
new file mode 100644
--- /dev/null
+++ b/src/resources/vue/Widgets/RouterLinkButton.vue
@@ -0,0 +1,17 @@
+<template>
+ <router-link :to="to" custom v-slot="{ navigate }">
+ <button type="button" :class="['btn', label.replace('.', '-')]" @click="navigate">
+ <svg-icon :icon="icon"></svg-icon> {{ $t(label) }}
+ </button>
+ </router-link>
+</template>
+
+<script>
+ export default {
+ props: {
+ to: { type: [ Object, String ], default: () => {} },
+ icon: { type: [ Array, String ], default: '' },
+ label: { type: String, default: '' }
+ }
+ }
+</script>
diff --git a/src/tests/Browser/DegradedAccountTest.php b/src/tests/Browser/DegradedAccountTest.php
--- a/src/tests/Browser/DegradedAccountTest.php
+++ b/src/tests/Browser/DegradedAccountTest.php
@@ -76,31 +76,31 @@
->assertVisible('tbody tr:nth-child(3) td:first-child svg.text-warning') // John
->assertText('tbody tr:nth-child(3) td:first-child svg.text-warning title', 'Degraded');
})
- ->assertMissing('button.create-user');
+ ->assertMissing('button.user-create');
// Goto /domains and assert that the warning is also displayed there
$browser->visit(new DomainList())
->assertSeeIn('#status-degraded p.alert', 'The account is degraded')
->assertSeeIn('#status-degraded p.alert', 'Please, make a payment')
- ->assertMissing('button.create-domain');
+ ->assertMissing('button.domain-create');
// Goto /distlists and assert that the warning is also displayed there
$browser->visit(new DistlistList())
->assertSeeIn('#status-degraded p.alert', 'The account is degraded')
->assertSeeIn('#status-degraded p.alert', 'Please, make a payment')
- ->assertMissing('button.create-list');
+ ->assertMissing('button.distlist-create');
// Goto /resources and assert that the warning is also displayed there
$browser->visit(new ResourceList())
->assertSeeIn('#status-degraded p.alert', 'The account is degraded')
->assertSeeIn('#status-degraded p.alert', 'Please, make a payment')
- ->assertMissing('button.create-resource');
+ ->assertMissing('button.resource-create');
// Goto /shared-folders and assert that the warning is also displayed there
$browser->visit(new SharedFolderList())
->assertSeeIn('#status-degraded p.alert', 'The account is degraded')
->assertSeeIn('#status-degraded p.alert', 'Please, make a payment')
- ->assertMissing('button.create-resource');
+ ->assertMissing('button.shf-create');
// Test that /rooms is not accessible
$browser->visit('/rooms')
diff --git a/src/tests/Browser/DistlistTest.php b/src/tests/Browser/DistlistTest.php
--- a/src/tests/Browser/DistlistTest.php
+++ b/src/tests/Browser/DistlistTest.php
@@ -124,8 +124,8 @@
$this->browse(function (Browser $browser) {
// Create a group
$browser->visit(new DistlistList())
- ->assertSeeIn('button.create-list', 'Create list')
- ->click('button.create-list')
+ ->assertSeeIn('button.distlist-create', 'Create list')
+ ->click('button.distlist-create')
->on(new DistlistInfo())
->assertSeeIn('#distlist-info .card-title', 'New distribution list')
->assertSeeIn('@nav #tab-general', 'General')
diff --git a/src/tests/Browser/ResourceTest.php b/src/tests/Browser/ResourceTest.php
--- a/src/tests/Browser/ResourceTest.php
+++ b/src/tests/Browser/ResourceTest.php
@@ -125,8 +125,8 @@
$this->browse(function (Browser $browser) {
// Create a resource
$browser->visit(new ResourceList())
- ->assertSeeIn('button.create-resource', 'Create resource')
- ->click('button.create-resource')
+ ->assertSeeIn('button.resource-create', 'Create resource')
+ ->click('button.resource-create')
->on(new ResourceInfo())
->assertSeeIn('#resource-info .card-title', 'New resource')
->assertSeeIn('@nav #tab-general', 'General')
diff --git a/src/tests/Browser/SharedFolderTest.php b/src/tests/Browser/SharedFolderTest.php
--- a/src/tests/Browser/SharedFolderTest.php
+++ b/src/tests/Browser/SharedFolderTest.php
@@ -131,8 +131,8 @@
$this->browse(function (Browser $browser) {
// Create a folder
$browser->visit(new SharedFolderList())
- ->assertSeeIn('button.create-folder', 'Create folder')
- ->click('button.create-folder')
+ ->assertSeeIn('button.shf-create', 'Create folder')
+ ->click('button.shf-create')
->on(new SharedFolderInfo())
->assertSeeIn('#folder-info .card-title', 'New shared folder')
->assertSeeIn('@nav #tab-general', 'General')
diff --git a/src/tests/Browser/UsersTest.php b/src/tests/Browser/UsersTest.php
--- a/src/tests/Browser/UsersTest.php
+++ b/src/tests/Browser/UsersTest.php
@@ -405,8 +405,8 @@
$this->browse(function (Browser $browser) {
$browser->visit(new UserList())
- ->assertSeeIn('button.create-user', 'Create user')
- ->click('button.create-user')
+ ->assertSeeIn('button.user-create', 'Create user')
+ ->click('button.user-create')
->on(new UserInfo())
->assertSeeIn('#user-info .card-title', 'New user account')
->with('@general', function (Browser $browser) {
@@ -660,7 +660,7 @@
// Packages on new user page
$this->browse(function (Browser $browser) {
$browser->visit(new UserList())
- ->click('button.create-user')
+ ->click('button.user-create')
->on(new UserInfo())
->with('@general', function (Browser $browser) {
$browser->whenAvailable('@packages', function (Browser $browser) {
@@ -768,7 +768,7 @@
// Packages on new user page
$this->browse(function (Browser $browser) {
$browser->visit(new UserList())
- ->click('button.create-user')
+ ->click('button.user-create')
->on(new UserInfo())
->with('@general', function (Browser $browser) {
$browser->whenAvailable('@packages', function (Browser $browser) {
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Fri, Apr 10, 10:18 AM (2 w, 6 d ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
18855700
Default Alt Text
D3373.1775816280.diff (17 KB)
Attached To
Mode
D3373: Add button widgets
Attached
Detach File
Event Timeline