fix: auto-save met à jour le titre du sidebar sans recharger la page
- sidebar items: attribut data-page-id ajouté pour ciblage DOM - save(): après PUT réussi, met à jour .page-name dans le sidebar - saveTitle(): reload la page (changement de titre = reload ok)
This commit is contained in:
@@ -56,7 +56,8 @@
|
|||||||
{% for page in recent_pages %}
|
{% for page in recent_pages %}
|
||||||
<li class="sidebar-item {% if page.active %}active{% endif %} {% if page.indent %}indent-{{ page.indent }}{% endif %}"
|
<li class="sidebar-item {% if page.active %}active{% endif %} {% if page.indent %}indent-{{ page.indent }}{% endif %}"
|
||||||
@click="navigateTo('{{ page.url }}')"
|
@click="navigateTo('{{ page.url }}')"
|
||||||
@contextmenu.prevent="showContextMenu($event, '{{ page.id }}', '{{ page.name }}')">
|
@contextmenu.prevent="showContextMenu($event, '{{ page.id }}', '{{ page.name }}')"
|
||||||
|
data-page-id="{{ page.id }}">
|
||||||
<span class="page-icon">{{ page.icon }}</span>
|
<span class="page-icon">{{ page.icon }}</span>
|
||||||
<span class="page-name">{{ page.name }}</span>
|
<span class="page-name">{{ page.name }}</span>
|
||||||
<span class="item-actions">
|
<span class="item-actions">
|
||||||
@@ -89,7 +90,8 @@
|
|||||||
{% for page in private_pages %}
|
{% for page in private_pages %}
|
||||||
<li class="sidebar-item {% if page.active %}active{% endif %} {% if page.indent %}indent-{{ page.indent }}{% endif %}"
|
<li class="sidebar-item {% if page.active %}active{% endif %} {% if page.indent %}indent-{{ page.indent }}{% endif %}"
|
||||||
@click="navigateTo('{{ page.url }}')"
|
@click="navigateTo('{{ page.url }}')"
|
||||||
@contextmenu.prevent="showContextMenu($event, '{{ page.id }}', '{{ page.name }}')">
|
@contextmenu.prevent="showContextMenu($event, '{{ page.id }}', '{{ page.name }}')"
|
||||||
|
data-page-id="{{ page.id }}">
|
||||||
<span class="page-icon">{{ page.icon }}</span>
|
<span class="page-icon">{{ page.icon }}</span>
|
||||||
<span class="page-name">{{ page.name }}</span>
|
<span class="page-name">{{ page.name }}</span>
|
||||||
<span class="item-actions">
|
<span class="item-actions">
|
||||||
@@ -134,7 +136,8 @@
|
|||||||
{% for page in favorite_pages %}
|
{% for page in favorite_pages %}
|
||||||
<li class="sidebar-item {% if page.active %}active{% endif %}"
|
<li class="sidebar-item {% if page.active %}active{% endif %}"
|
||||||
@click="navigateTo('{{ page.url }}')"
|
@click="navigateTo('{{ page.url }}')"
|
||||||
@contextmenu.prevent="showContextMenu($event, '{{ page.id }}', '{{ page.name }}')">
|
@contextmenu.prevent="showContextMenu($event, '{{ page.id }}', '{{ page.name }}')"
|
||||||
|
data-page-id="{{ page.id }}">
|
||||||
<span class="page-icon">{{ page.icon }}</span>
|
<span class="page-icon">{{ page.icon }}</span>
|
||||||
<span class="page-name">{{ page.name }}</span>
|
<span class="page-name">{{ page.name }}</span>
|
||||||
<span class="item-actions">
|
<span class="item-actions">
|
||||||
|
|||||||
@@ -138,7 +138,8 @@
|
|||||||
const title = document.querySelector('.page-title h1')?.textContent || 'New page';
|
const title = document.querySelector('.page-title h1')?.textContent || 'New page';
|
||||||
const csrf = document.cookie.match(/csrf_token=([^;]+)/);
|
const csrf = document.cookie.match(/csrf_token=([^;]+)/);
|
||||||
const token = csrf ? csrf[1] : '';
|
const token = csrf ? csrf[1] : '';
|
||||||
fetch(`/board/api/pages/{{ page.id }}?title=${encodeURIComponent(title)}&content=${encodeURIComponent(this.content)}`, {
|
const pageId = '{{ page.id }}';
|
||||||
|
fetch(`/board/api/pages/${pageId}?title=${encodeURIComponent(title)}&content=${encodeURIComponent(this.content)}`, {
|
||||||
method: 'PUT',
|
method: 'PUT',
|
||||||
headers: { 'X-CSRF-Token': token }
|
headers: { 'X-CSRF-Token': token }
|
||||||
})
|
})
|
||||||
@@ -147,6 +148,12 @@
|
|||||||
this.dirty = false;
|
this.dirty = false;
|
||||||
this.saving = false;
|
this.saving = false;
|
||||||
this.lastSaved = new Date().toLocaleTimeString();
|
this.lastSaved = new Date().toLocaleTimeString();
|
||||||
|
// Update sidebar title without reloading
|
||||||
|
const sidebarItem = document.querySelector(`.sidebar-item[data-page-id="page/${pageId}"]`);
|
||||||
|
if (sidebarItem) {
|
||||||
|
const nameEl = sidebarItem.querySelector('.page-name');
|
||||||
|
if (nameEl) nameEl.textContent = title;
|
||||||
|
}
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
saveTitle(newTitle) {
|
saveTitle(newTitle) {
|
||||||
|
|||||||
Reference in New Issue
Block a user