diff --git a/client/web/compose/src/views/Admin/Charts/Edit.vue b/client/web/compose/src/views/Admin/Charts/Edit.vue
index 6a4f74f38..6ed9b2cdd 100644
--- a/client/web/compose/src/views/Admin/Charts/Edit.vue
+++ b/client/web/compose/src/views/Admin/Charts/Edit.vue
@@ -303,7 +303,7 @@
:hide-save="hideSave"
hide-clone
:disable-save="disableSave"
- @delete="handleDelete"
+ @delete="handleDelete()"
@save="handleSave()"
@saveAndClose="handleSave({ closeOnSuccess: true })"
/>
diff --git a/client/web/compose/src/views/Admin/Modules/List.vue b/client/web/compose/src/views/Admin/Modules/List.vue
index 08710ddf5..609b5fd6b 100644
--- a/client/web/compose/src/views/Admin/Modules/List.vue
+++ b/client/web/compose/src/views/Admin/Modules/List.vue
@@ -109,6 +109,7 @@
@@ -26,7 +25,6 @@
-
+
+
+
+
+
@@ -706,7 +714,7 @@
!l.meta.title || handle.handleState(l.handle) === false)
+ return !this.page || [this.titleState, this.handleState].includes(false) || this.layouts.some(l => !l.meta.title || handle.handleState(l.handle) === false)
},
hideDelete () {
- return this.hasChildren || !this.page.canDeletePage || !!this.page.deletedAt
+ return !this.page || this.hasChildren || !this.page.canDeletePage || !!this.page.deletedAt
+ },
+
+ hideSave () {
+ return !this.page || !this.page.canUpdatePage
},
showDeleteDropdown () {
@@ -936,7 +948,7 @@ export default {
this.processing = true
const { namespaceID } = this.namespace
- this.findPageByID({ namespaceID, pageID }).then((page) => {
+ this.findPageByID({ namespaceID, pageID, force: true }).then((page) => {
this.page = page.clone()
return this.fetchAttachments()
}).then(this.fetchLayouts)
diff --git a/client/web/compose/src/views/Public/Pages/Records/View.vue b/client/web/compose/src/views/Public/Pages/Records/View.vue
index b12e7b099..cd44f50f4 100644
--- a/client/web/compose/src/views/Public/Pages/Records/View.vue
+++ b/client/web/compose/src/views/Public/Pages/Records/View.vue
@@ -17,8 +17,15 @@
{{ title }}
+
+
+
+
config.visibility.expression)) {
+ expressions = await this.evaluateLayoutExpressions()
+ }
// Check layouts for expressions/roles and find the first one that fits
this.layout = this.layouts.find(l => {
diff --git a/client/web/compose/src/views/Public/Pages/View.vue b/client/web/compose/src/views/Public/Pages/View.vue
index 4ec989c7e..53553c752 100644
--- a/client/web/compose/src/views/Public/Pages/View.vue
+++ b/client/web/compose/src/views/Public/Pages/View.vue
@@ -58,6 +58,13 @@
class="flex-grow-1 overflow-auto d-flex flex-column"
/>
+
+
+
+
config.visibility.expression)) {
+ this.pageTitle = this.page.title
+ expressions = await this.evaluateLayoutExpressions()
+ }
// Check layouts for expressions/roles and find the first one that fits
this.layout = this.layouts.find(({ pageLayoutID, config = {} }) => {