From 3dee61010e1300dc31bb2ead6a6e5d16918a3662 Mon Sep 17 00:00:00 2001 From: Nicolas Sanchez Date: Tue, 16 May 2023 17:02:48 +0200 Subject: [PATCH] =?UTF-8?q?changement=20de=20format=20des=20url=20et=20cor?= =?UTF-8?q?rection=20cases=20=C3=A0=20cocher?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- db/db.sqlite3 | Bin 217088 -> 217088 bytes launch.bash | 3 +++ src/commons.rs | 2 +- src/page.rs | 18 +++++++++----- static/cheezenotes.css | 7 +++++- static/modules/cheezenotes.js | 7 +++++- static/modules/md.js | 44 +++++++++++++++++++++++++++------- static/modules/tools.js | 4 ++-- templates/domain.html | 3 ++- templates/index.html | 1 + 10 files changed, 68 insertions(+), 21 deletions(-) create mode 100755 launch.bash diff --git a/db/db.sqlite3 b/db/db.sqlite3 index 26c43ca5ce620c4509959d38ddbb9116f6e1c074..e8f49a05d32ef3c5053283f71f14f5f4e17f160b 100644 GIT binary patch delta 1317 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 diff --git a/launch.bash b/launch.bash new file mode 100755 index 0000000..b294924 --- /dev/null +++ b/launch.bash @@ -0,0 +1,3 @@ +#!/usr/bin/env bash + +cargo run -- --port 9090 --root https://vscode.cheeze.fr/proxy/9090/ diff --git a/src/commons.rs b/src/commons.rs index 376bf6f..8faae1b 100644 --- a/src/commons.rs +++ b/src/commons.rs @@ -12,7 +12,7 @@ impl NormalizeName for String { fn normalize_name(&self) -> String { let space_re = Regex::new(r"[\s_]+").unwrap(); - let remove_re = Regex::new(r"[^a-z0-9_]").unwrap(); + let remove_re = Regex::new(r"[^a-z0-9_\-]").unwrap(); let mut str = unidecode(self); str = space_re.replace_all(&str, "_").to_string(); diff --git a/src/page.rs b/src/page.rs index 4e8582b..7d36ebb 100644 --- a/src/page.rs +++ b/src/page.rs @@ -26,6 +26,7 @@ struct QueryParams { pub data: Option, pub fromDomain: Option, pub fromPage: Option, + pub libelle: Option, } #[derive(Serialize, Deserialize)] @@ -53,12 +54,17 @@ fn new_page_text( page_name: String, domain_from: &Option, page_from: &Option, + libelle: &Option, ) -> String { let mut retour = String::from(""); if let (Some(domain_f), Some(page_f)) = (domain_from, page_from) { - retour = format!("[retour](/{}/{})\n", domain_f, page_f); + retour = format!("[retour]({}:{})\n", domain_f, page_f); } - retour + "# " + page_name.replace("_", " ").as_str() + let mut titre = page_name.replace("_", " "); + if let Some(lib) = libelle { + titre = lib.to_string(); + } + retour + "# " + titre.as_str() } async fn get_data( @@ -71,12 +77,12 @@ async fn get_data( db::get_page_by_name(&data.db_pool, domain.to_owned(), page_name.to_owned()); let page_datas = fut_page_datas.await.unwrap(); match page_datas.first() { - None => new_page_text(page_name, ¶ms.fromDomain, ¶ms.fromPage), + None => new_page_text(page_name, ¶ms.fromDomain, ¶ms.fromPage, ¶ms.libelle), Some(dat) => (*dat.page_text).to_string(), } } -#[get("/{domain}/{page}")] +#[get("/{domain}:{page}")] async fn page( path: web::Path<(String, String)>, data: web::Data, @@ -99,7 +105,7 @@ async fn page( let app_name = data.app_name.to_owned() + " - " + page_name.as_str(); let base_url = data.base_url.to_owned(); //let init = String::from("init();"); - let init = format!("init({:?}, {:?});", domain, page_name); + let init = format!("init({:?}, {:?}, {:?});", domain, base_url, page_name); PageTemplate { app_name, base_url, @@ -109,7 +115,7 @@ async fn page( .to_response() } -#[put("/{domain}/{page}")] +#[put("/{domain}:{page}")] async fn save_page( body: String, path: web::Path<(String, String)>, diff --git a/static/cheezenotes.css b/static/cheezenotes.css index c42eac4..d347b29 100644 --- a/static/cheezenotes.css +++ b/static/cheezenotes.css @@ -40,7 +40,12 @@ body { p.domain { padding-left: 2rem; - font-size: 2rem; + font-size: 1.5rem; +} + +p.page { + padding-left: 2rem; + font-size: 1.5rem; } div#content { diff --git a/static/modules/cheezenotes.js b/static/modules/cheezenotes.js index 973c626..34610f3 100644 --- a/static/modules/cheezenotes.js +++ b/static/modules/cheezenotes.js @@ -156,6 +156,10 @@ function onedit(e) { let line = ret[0]; let position = ret[1]; + if (! line) { + return; + } + if (line.innerText == '\n') { line.className = 'cheezenotes_line'; line.classList.add('body'); @@ -360,10 +364,11 @@ function onparentbutton(e) { } -function init(domain, page) { +function init(domain, base_url, page) { let cheezenotes = document.getElementById('cheezenotes'); window.domain = domain; window.page = page; + window.base_url = base_url; dpwidth(cheezenotes); diff --git a/static/modules/md.js b/static/modules/md.js index f8fcae6..8c63285 100644 --- a/static/modules/md.js +++ b/static/modules/md.js @@ -1,11 +1,12 @@ import { saveSelection, loadSelection } from "./caret.js"; -import { normalizePagename } from "./tools.js"; +import { normalizeName } from "./tools.js"; function setEditable() { let editModeButton = document.getElementById('editModeButton'); let cheezenotes = document.getElementById('cheezenotes'); if (editModeButton.classList.contains('buttonoff')) { cheezenotes.contentEditable = false; + window.getSelection().removeAllRanges(); } else { cheezenotes.contentEditable = true; } @@ -94,6 +95,7 @@ function onlinkin(e) { let link = e.currentTarget; if (document.getElementById('cheezenotes') !== document.activeElement) { document.getElementById('cheezenotes').contentEditable = false; + window.getSelection().removeAllRanges(); } } @@ -103,10 +105,11 @@ function onlink(e) { e.preventDefault(); setEditable(); let link = e.currentTarget; - if (link.host !== document.location.host) { + let datahref = link.getAttribute('data-href'); + if (datahref.includes('/')) { open(link.href); } else { - fetch(link.href + '?data=&fromDomain=' + window.domain + '&fromPage=' + window.page).then((response) => { + fetch(link.href + '?data=&fromDomain=' + window.domain + '&fromPage=' + window.page + '&libelle=' + link.innerText).then((response) => { let ta = document.getElementById('ta'); response.text().then((data) => { let content = document.getElementById('content'); @@ -114,9 +117,9 @@ function onlink(e) { let top = content.scrollTop; window.history.replaceState({ top: top, left: left }, ""); window.history.pushState({}, "", link.href); - document.title = 'CheezeNotes - ' + link.getAttribute('data-href'); + document.title = 'CheezeNotes - ' + datahref; ta.value = data; - let url = link.getAttribute('data-href').split('/'); + let url = datahref.split(':'); let page = url[0]; let domain = window.domain; if (url.length == 3) { @@ -145,7 +148,19 @@ function onlinkout(e) { } } +function onclickcheckbox(e) { + let cheezenotes = document.getElementById('cheezenotes'); + cheezenotes.contentEditable = false; + window.getSelection().removeAllRanges(); + console.log("onclickcheckbox"); +} + function oncheckbox(e) { + /*let cheezenotes = document.getElementById('cheezenotes'); + cheezenotes.contentEditable = false; + window.getSelection().removeAllRanges();*/ + console.log("oncheckbox"); + let cb = e.currentTarget; let line = cb.parentNode; let text = line.innerText; @@ -270,6 +285,7 @@ function formatLine(line) { for (let i = 0; i < checkboxes.length; i++) { let checkbox = checkboxes[i]; checkbox.addEventListener('mouseover', onlinkin); + checkbox.addEventListener('click', onclickcheckbox); checkbox.addEventListener('change', oncheckbox); checkbox.addEventListener('mouseout', onlinkout); } @@ -581,16 +597,26 @@ function formatLink(link) { if (href == '') { href = libelle; } - if (href.match(/^[^\:\/]+\/.*$/)) { - href = '/' + href; + let datahref = href; + + if (href.match(/\:\/\//)) { + datahref = href; + } else { + let dh = datahref.split(':'); + if (dh.length === 1) { + datahref = window.domain + ":" + datahref; + } + datahref = normalizeName(datahref); + href = window.base_url + datahref; } + if (libelle == '') { - return '[](' + url + ')'; + return '[](' + url + ')'; } else { if (libelle.startsWith('!')) { return '[' + libelle + '](' + url + ')'; } else { - return '[' + libelle + '](' + url + ')'; + return '[' + libelle + '](' + url + ')'; } } } diff --git a/static/modules/tools.js b/static/modules/tools.js index 4df069e..324a7c7 100644 --- a/static/modules/tools.js +++ b/static/modules/tools.js @@ -1,6 +1,6 @@ -function normalizeName(pagename) { - return str.normalize("NFKD").replace(/\p{Diacritic}/gu, "").toLowerCase().replace(/œ/g, "oe").replace(/æ/g, "ae").replace(/\s+/g, "_").replace(/[^a-z0-9_]/g, "").replace(/_+/g, "_"); +function normalizeName(name) { + return name.normalize("NFKD").replace(/\p{Diacritic}/gu, "").toLowerCase().replace(/œ/g, "oe").replace(/æ/g, "ae").replace(/[\s_]+/g, "_").replace(/[^a-z0-9_\-:]/g, ""); } export { normalizeName }; \ No newline at end of file diff --git a/templates/domain.html b/templates/domain.html index f1c889f..63f0b8b 100644 --- a/templates/domain.html +++ b/templates/domain.html @@ -12,8 +12,9 @@

{{app_name}} {{ domain }}

+

Liste des pages

{% for page in pages %} -

{{ page.page_name }}

+

{{ page.page_name }}

{% endfor %} diff --git a/templates/index.html b/templates/index.html index c2448ee..dd4ac6e 100644 --- a/templates/index.html +++ b/templates/index.html @@ -12,6 +12,7 @@

{{app_name}}

+

Liste des domaines

{% for domain in domains %}

{{ domain.domain_name }}

{% endfor %}