feat: migrer système notes/todos vers convention Android avec URLs uniques générées (shaarit://note-*, shaarit://todo-*), remplacement tags shaarli-note/shaarli-todo par note/todo, ajout handler bouton sidebar Note avec génération URL via ShaarItRules.generateNoteUrl(), mise à jour createNewNoteViaForm/createNewTodoViaForm pour utiliser URLs Android, correction URL git clone README (dracodev.net), et suppression hardcoded URLs http://shaarli-todo

This commit is contained in:
Bruno Charest 2026-04-19 22:17:12 -04:00
parent f99c1cbecb
commit 9ba90f4d76
4 changed files with 27 additions and 7 deletions

View File

@ -160,7 +160,7 @@ Le thème offre un layout de type application avec barre latérale fixe, navigat
### 1. Téléchargement
```bash
git clone https://github.com/votre-utilisateur/shaarli_bc_theme.git
git clone https://git.dracodev.net/Projets/Shaarli_bm_theme.git
```
### 3. Supprimer le thème en place

View File

@ -2566,11 +2566,13 @@ async function fetchShaareFormBaseData(url) {
async function createNewNoteViaForm({ title, markdown, visual = null }) {
const basePath = typeof shaarli !== "undefined" && shaarli.basePath ? shaarli.basePath : "";
const formUrl = `${basePath}/admin/shaare?post=&tags=shaarli-note`;
// Generate Android note URL
const noteUrl = window.ShaarItRules ? window.ShaarItRules.generateNoteUrl() : "";
const formUrl = `${basePath}/admin/shaare?post=${encodeURIComponent(noteUrl)}&tags=note`;
const { action, baseData } = await fetchShaareFormBaseData(formUrl);
const formData = new URLSearchParams(baseData.toString());
formData.set("lf_url", "");
formData.set("lf_url", noteUrl);
formData.set("lf_title", title || "");
formData.set("lf_description", markdown || "");
@ -2643,11 +2645,13 @@ async function createNewNoteViaForm({ title, markdown, visual = null }) {
async function createNewTodoViaForm({ title, items = [], visual = null }) {
const basePath = typeof shaarli !== "undefined" && shaarli.basePath ? shaarli.basePath : "";
const formUrl = `${basePath}/admin/shaare?post=http%3A%2F%2Fshaarli-todo&tags=shaarli-todo`;
// Generate Android todo URL
const todoUrl = window.ShaarItRules ? window.ShaarItRules.generateTodoUrl() : "";
const formUrl = `${basePath}/admin/shaare?post=${encodeURIComponent(todoUrl)}&tags=todo`;
const { action, baseData } = await fetchShaareFormBaseData(formUrl);
const formData = new URLSearchParams(baseData.toString());
formData.set("lf_url", "http://shaarli-todo");
formData.set("lf_url", todoUrl);
formData.set("lf_title", title || "");
const normalizedItems = (Array.isArray(items) ? items : [])
@ -2659,7 +2663,7 @@ async function createNewTodoViaForm({ title, items = [], visual = null }) {
const currentTags = (formData.get("lf_tags") || "").trim();
let tagsArray = currentTags.split(/[\s,]+/).filter((t) => t.trim() !== "");
tagsArray = tagsArray.filter((t) => t !== "note" && t !== "shaarli-note");
if (!tagsArray.includes("shaarli-todo")) tagsArray.push("shaarli-todo");
if (!tagsArray.includes("todo")) tagsArray.push("todo");
if (visual) {
const colorKey = visual.color || "default";

View File

@ -1,4 +1,20 @@
document.addEventListener('DOMContentLoaded', () => {
// ===== Add Note Button Handler (Android convention) =====
const addNoteBtn = document.querySelector('.sidebar-add-note');
if (addNoteBtn) {
addNoteBtn.addEventListener('click', (e) => {
e.preventDefault();
if (!window.ShaarItRules) {
console.warn('[shaarit] ShaarItRules not available, cannot generate note URL');
return;
}
const basePath = addNoteBtn.getAttribute('data-base-path') || '';
const noteUrl = window.ShaarItRules.generateNoteUrl();
const redirectUrl = `${basePath}/admin/shaare?post=${encodeURIComponent(noteUrl)}&tags=note`;
window.location.href = redirectUrl;
});
}
// ===== Add Todo Button Handler (Android convention) =====
const addTodoBtn = document.querySelector('.sidebar-add-todo');
if (addTodoBtn) {

View File

@ -90,7 +90,7 @@ Bookmarklet detection logic
<a href="{$base_path}/admin/add-shaare" class="sidebar-add-segment" title="Bookmark">
<i class="mdi mdi-bookmark-outline"></i>
</a>
<a href="{$base_path}/admin/shaare?tags=note" class="sidebar-add-segment" title="Note">
<a href="#" class="sidebar-add-segment sidebar-add-note" title="Note" data-base-path="{$base_path}">
<i class="mdi mdi-note-text-outline"></i>
</a>
<a href="#" class="sidebar-add-segment sidebar-add-todo" title="Todo" data-base-path="{$base_path}">