diff --git a/src/resources/lang/en/ui.php b/src/resources/lang/en/ui.php
--- a/src/resources/lang/en/ui.php
+++ b/src/resources/lang/en/ui.php
@@ -337,6 +337,7 @@
'room' => [
'create' => "Create room",
'delete' => "Delete room",
+ 'copy-location' => "Copy room location",
'description-hint' => "This is an optional short description for the room, so you can find it more easily on the list.",
'goto' => "Enter the room",
'list-empty' => "There are no conference rooms in this account.",
diff --git a/src/resources/themes/app.scss b/src/resources/themes/app.scss
--- a/src/resources/themes/app.scss
+++ b/src/resources/themes/app.scss
@@ -127,6 +127,10 @@
white-space: nowrap;
}
+ td .btn-link {
+ vertical-align: initial;
+ }
+
td.email,
td.price,
td.datetime,
diff --git a/src/resources/vue/Room/List.vue b/src/resources/vue/Room/List.vue
--- a/src/resources/vue/Room/List.vue
+++ b/src/resources/vue/Room/List.vue
@@ -12,7 +12,8 @@
-
+
+
@@ -26,6 +27,7 @@
import { library } from '@fortawesome/fontawesome-svg-core'
library.add(
+ require('@fortawesome/free-regular-svg-icons/faClipboard').definition,
require('@fortawesome/free-solid-svg-icons/faArrowUpRightFromSquare').definition,
require('@fortawesome/free-solid-svg-icons/faComments').definition
)
@@ -48,7 +50,8 @@
{
prop: 'name',
icon: 'comments',
- link: true
+ link: true,
+ className: 'text-nowrap'
},
{
prop: 'description',
@@ -73,8 +76,13 @@
},
methods: {
goto(room) {
- const location = window.config['app.url'] + '/meet/' + encodeURI(room.name)
- window.open(location, '_blank')
+ window.open(this.roomLocation(room), '_blank')
+ },
+ roomLinkCopy(room) {
+ navigator.clipboard.writeText(this.roomLocation(room));
+ },
+ roomLocation(room) {
+ return window.config['app.url'] + '/meet/' + encodeURI(room.name)
}
}
}
diff --git a/src/tests/Browser/Meet/RoomsTest.php b/src/tests/Browser/Meet/RoomsTest.php
--- a/src/tests/Browser/Meet/RoomsTest.php
+++ b/src/tests/Browser/Meet/RoomsTest.php
@@ -75,16 +75,18 @@
->with('tbody tr:nth-child(1)', function ($browser) {
$browser->assertSeeIn('td:nth-child(1) a', 'john')
->assertSeeIn('td:nth-child(2) a', "Standard room")
- ->assertVisible('td.buttons button')
- ->assertAttribute('td.buttons button', 'title', 'Enter the room');
+ ->assertElementsCount('td.buttons button', 2)
+ ->assertAttribute('td.buttons button:nth-child(1)', 'title', 'Copy room location')
+ ->assertAttribute('td.buttons button:nth-child(2)', 'title', 'Enter the room');
})
->with('tbody tr:nth-child(2)', function ($browser) {
$browser->assertSeeIn('td:nth-child(1) a', 'shared')
->assertSeeIn('td:nth-child(2) a', "Shared room")
- ->assertVisible('td.buttons button')
- ->assertAttribute('td.buttons button', 'title', 'Enter the room');
+ ->assertElementsCount('td.buttons button', 2)
+ ->assertAttribute('td.buttons button:nth-child(1)', 'title', 'Copy room location')
+ ->assertAttribute('td.buttons button:nth-child(2)', 'title', 'Enter the room');
})
- ->click('tbody tr:nth-child(1) button');
+ ->click('tbody tr:nth-child(1) button:nth-child(2)');
});
$newWindow = collect($browser->driver->getWindowHandles())->last();