diff --git a/layout-webapp/src/main/resources/locale/portlet/SiteManagement_en.properties b/layout-webapp/src/main/resources/locale/portlet/SiteManagement_en.properties
index 6903e9be6..3815fac01 100644
--- a/layout-webapp/src/main/resources/locale/portlet/SiteManagement_en.properties
+++ b/layout-webapp/src/main/resources/locale/portlet/SiteManagement_en.properties
@@ -8,10 +8,13 @@ siteManagement.label.confirm=Confirm
siteManagement.label.confirmDelete=Delete site
siteManagement.label.confirmDelete.message=Are you sure you want to delete "{0}" site?
siteManagement.drawer.properties.title=Site properties
+siteManagement.drawer.addSite.title=Add Site
siteManagement.label.properties=Properties
siteManagement.label.siteName.title=Site name
siteManagement.label.siteLabel.title=Site label
+siteManagement.label.siteLabel.placeholder=Give a name to your site
siteManagement.label.siteDescription.title=Site description
+siteManagement.label.siteDescription.placeholder=Describe purpose to inform users via the sidebar
siteManagement.label.editLayout=Layout
siteManagement.label.manageAccess=Permissions
siteManagement.label.managePermissions=Manage permissions
@@ -33,6 +36,7 @@ siteManagement.label.btn.save=Save
siteManagement.label.btn.cancel=Cancel
siteManagement.label.btn.next=Next
siteManagement.label.btn.add=Add
+siteManagement.label.btn.previous=Previous
siteManagement.label.createSite.error=Error while creating site
siteManagement.label.createSite.success=Site created successfully
siteManagement.label.siteTemplate.drawer.title=Select site template
@@ -49,3 +53,21 @@ sites.label.siteNavigation=Site navigation
sites.filter.placeholder=Filter by name, description
sites.label.system.noDelete=This default site cannot be deleted
sites.menu.open=Open
+sites.urlSlug.label=URL Slug
+sites.urlSlug.caption=This can't be updated once created
+sites.urlSlug.placeholder=add your URN
+sites.urlSlug.alreadyExists=Already exists
+sites.urlSlug.badFormat=Only alphanumeric characters, '-' or '_' are accepted
+sites.stepper.properties=Properties
+sites.stepper.permissions=Permissions
+sites.stepper.start=Start
+sites.selectTemplate=Select a template
+sites.permissionSuggester.placeholder=Enter group name
+sites.permissionSuggester.noData=No data
+sites.permission.administrators=Administrators
+sites.permission.users=Users
+sites.permission.guests=Guests
+sites.permission.groupMembers=Group Members
+sites.permission.everyone=Any
+
+
diff --git a/layout-webapp/src/main/webapp/images/defaultSiteBanner.webp b/layout-webapp/src/main/webapp/images/defaultSiteBanner.webp
new file mode 100644
index 000000000..86b3f1c34
Binary files /dev/null and b/layout-webapp/src/main/webapp/images/defaultSiteBanner.webp differ
diff --git a/layout-webapp/src/main/webapp/vue-app/common-layout-components/components/manage-permissions/ManageAccessPermission.vue b/layout-webapp/src/main/webapp/vue-app/common-layout-components/components/manage-permissions/ManageAccessPermission.vue
index 68269a3bb..640bad24b 100644
--- a/layout-webapp/src/main/webapp/vue-app/common-layout-components/components/manage-permissions/ManageAccessPermission.vue
+++ b/layout-webapp/src/main/webapp/vue-app/common-layout-components/components/manage-permissions/ManageAccessPermission.vue
@@ -55,7 +55,6 @@
-
\ No newline at end of file
diff --git a/layout-webapp/src/main/webapp/vue-app/common-layout-components/components/manage-permissions/SiteEditPermission.vue b/layout-webapp/src/main/webapp/vue-app/common-layout-components/components/manage-permissions/SiteEditPermission.vue
new file mode 100644
index 000000000..dfb544507
--- /dev/null
+++ b/layout-webapp/src/main/webapp/vue-app/common-layout-components/components/manage-permissions/SiteEditPermission.vue
@@ -0,0 +1,153 @@
+
+
+
+
+ {{ $t('siteManagement.label.whoCanEdit') }}
+
+
+
+
+
+ {{ $t('sites.permission.administrators') }}
+
+
+
+
+
+
+ {{ $t('sites.permission.groupMembers') }}
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/layout-webapp/src/main/webapp/vue-app/common-layout-components/components/site-navigation/NodeIconPickerDrawer.vue b/layout-webapp/src/main/webapp/vue-app/common-layout-components/components/site-navigation/NodeIconPickerDrawer.vue
index 9ee6bb4f6..cf06fe84b 100644
--- a/layout-webapp/src/main/webapp/vue-app/common-layout-components/components/site-navigation/NodeIconPickerDrawer.vue
+++ b/layout-webapp/src/main/webapp/vue-app/common-layout-components/components/site-navigation/NodeIconPickerDrawer.vue
@@ -20,22 +20,16 @@
-
-
-
- fas fa-arrow-left
-
- {{ $t('siteNavigation.nodeIconPickerDrawer.title') }}
-
+
+ {{ $t('siteNavigation.nodeIconPickerDrawer.title') }}
-
+
-
-
diff --git a/layout-webapp/src/main/webapp/vue-app/site-management/components/drawer/SitePropertiesDrawer.vue b/layout-webapp/src/main/webapp/vue-app/site-management/components/drawer/SitePropertiesDrawer.vue
deleted file mode 100644
index af9dafdda..000000000
--- a/layout-webapp/src/main/webapp/vue-app/site-management/components/drawer/SitePropertiesDrawer.vue
+++ /dev/null
@@ -1,335 +0,0 @@
-
-
-
-
- {{ $t('siteManagement.drawer.properties.title') }}
-
-
-
-
-
-
-
- {{ $t('siteManagement.label.siteLabel.title') }} *
-
-
-
-
-
-
- {{ $t('siteManagement.label.siteName.title') }} *
-
-
-
-
-
-
-
-
-
- {{ $t('siteManagement.label.siteDescription.title') }}
-
-
-
-
-
-
-
- {{ $t('siteManagement.label.banner') }}
- {{ $t('siteManagement.label.caption') }}
-
-
-
-
-
-
-
- {{ $t('siteManagement.label.btn.cancel') }}
-
-
- {{ $t('siteManagement.label.btn.save') }}
-
-
- {{ $t('siteManagement.label.btn.next') }}
-
-
-
-
-
-
diff --git a/layout-webapp/src/main/webapp/vue-app/site-management/components/form/SiteBanner.vue b/layout-webapp/src/main/webapp/vue-app/site-management/components/form/SiteBanner.vue
new file mode 100644
index 000000000..ad9fec258
--- /dev/null
+++ b/layout-webapp/src/main/webapp/vue-app/site-management/components/form/SiteBanner.vue
@@ -0,0 +1,132 @@
+
+
+
+
+
+
+
+ {{ $t('siteManagement.label.banner') }}
+
+ {{ $t('siteManagement.label.caption') }}
+
+
+
+
+
+
+
+
+
+
+ {{ $t('sites.uploadPreviewTitle') }}
+
+
+
+
+
+
\ No newline at end of file
diff --git a/layout-webapp/src/main/webapp/vue-app/site-management/components/form/SiteBannerSelector.vue b/layout-webapp/src/main/webapp/vue-app/site-management/components/form/SiteBannerSelector.vue
deleted file mode 100644
index 0f42a4652..000000000
--- a/layout-webapp/src/main/webapp/vue-app/site-management/components/form/SiteBannerSelector.vue
+++ /dev/null
@@ -1,126 +0,0 @@
-
-
-
-
-
-
-
-
-
- mdi-delete
-
-
- fas fa-file-image
-
-
-
-
- {{ $t(`siteManagement.label.bannerSelector.tooltip`) }}
-
-
-
-
-
\ No newline at end of file
diff --git a/layout-webapp/src/main/webapp/vue-app/site-management/components/form/SiteTemplate.vue b/layout-webapp/src/main/webapp/vue-app/site-management/components/form/SiteTemplate.vue
new file mode 100644
index 000000000..6164ee5f9
--- /dev/null
+++ b/layout-webapp/src/main/webapp/vue-app/site-management/components/form/SiteTemplate.vue
@@ -0,0 +1,116 @@
+
+
+
+
+
+
+
{{ siteTemplate.icon }}
+
+
+
+
+
+
+
+ {{ $t('layout.use') }}
+
+
+ {{ $t('layout.preview') }}
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/layout-webapp/src/main/webapp/vue-app/site-management/components/main/Item.vue b/layout-webapp/src/main/webapp/vue-app/site-management/components/main/Item.vue
index 0655a4aab..38634bdb2 100644
--- a/layout-webapp/src/main/webapp/vue-app/site-management/components/main/Item.vue
+++ b/layout-webapp/src/main/webapp/vue-app/site-management/components/main/Item.vue
@@ -30,7 +30,7 @@
min-width="35"
class="me-4"
flat>
- {{ site.icon || 'fa-globe' }}
+ {{ site.icon || 'fa-globe' }}
diff --git a/layout-webapp/src/main/webapp/vue-app/site-management/initComponents.js b/layout-webapp/src/main/webapp/vue-app/site-management/initComponents.js
index f194acfb6..cd8261a78 100644
--- a/layout-webapp/src/main/webapp/vue-app/site-management/initComponents.js
+++ b/layout-webapp/src/main/webapp/vue-app/site-management/initComponents.js
@@ -25,10 +25,11 @@ import SiteList from './components/main/List.vue';
import SiteItem from './components/main/Item.vue';
import SiteItemMenu from './components/main/Menu.vue';
-import SitePropertiesDrawer from './components/drawer/SitePropertiesDrawer.vue';
+import SiteFormDrawer from './components/drawer/SiteFormDrawer.vue';
import SiteTemplateDrawer from './components/drawer/SiteTemplateDrawer.vue';
-import SiteBannerSelector from './components/form/SiteBannerSelector.vue';
+import SiteBanner from './components/form/SiteBanner.vue';
+import SiteTemplate from './components/form/SiteTemplate.vue';
const components = {
'site-management': SiteManagement,
@@ -39,10 +40,11 @@ const components = {
'site-management-item': SiteItem,
'site-management-item-menu': SiteItemMenu,
- 'site-properties-drawer': SitePropertiesDrawer,
+ 'site-form-drawer': SiteFormDrawer,
'site-template-drawer': SiteTemplateDrawer,
- 'site-management-banner-selector': SiteBannerSelector ,
+ 'site-management-banner': SiteBanner,
+ 'site-management-template': SiteTemplate,
};
for (const key in components) {
diff --git a/layout-webapp/src/main/webapp/vue-app/site-management/main.js b/layout-webapp/src/main/webapp/vue-app/site-management/main.js
index 3d99791ac..5c92cbdaf 100644
--- a/layout-webapp/src/main/webapp/vue-app/site-management/main.js
+++ b/layout-webapp/src/main/webapp/vue-app/site-management/main.js
@@ -19,7 +19,7 @@
import './initComponents.js';
import '../common-layout-components/initComponents.js';
-import '../common-site-template/initComponents.js';
+import '../common-site-template/main.js';
// get overridden components if exists
if (extensionRegistry) {
@@ -39,7 +39,8 @@ const lang = eXo?.env.portal.language || 'en';
//should expose the locale ressources as REST API
const urls = [
`/layout/i18n/locale.portlet.SiteManagement?lang=${lang}`,
- `/layout/i18n/locale.portlet.SiteNavigation?lang=${lang}`
+ `/layout/i18n/locale.portlet.SiteNavigation?lang=${lang}`,
+ `/layout/i18n/locale.portlet.LayoutEditor?lang=${lang}`
];
export function init() {
@@ -52,6 +53,7 @@ export function init() {
i18n,
data: () => ({
pageTemplates: null,
+ collator: new Intl.Collator(eXo.env.portal.language, {numeric: true, sensitivity: 'base'}),
}),
computed: {
isMobile() {