From 0736dfeb63060a534db1e7bfdbeb0bceebe1063c Mon Sep 17 00:00:00 2001 From: tavo Date: Sun, 22 Sep 2024 18:22:29 -0600 Subject: [PATCH] accept tags as well --- README.org | 1 + public/client.js | 29 +++++++++++++++++++++++++---- public/index.html | 5 ++++- public/lang/es.json | 2 ++ public/paypal.js | 1 + public/static/css/style.css | 7 ++++++- server/db.go | 8 +++++--- server/main.go | 1 + 8 files changed, 45 insertions(+), 9 deletions(-) diff --git a/README.org b/README.org index a80b3a0..314fa44 100644 --- a/README.org +++ b/README.org @@ -35,6 +35,7 @@ CREATE TABLE sites ( code VARCHAR(2), title VARCHAR(35) NOT NULL, slogan VARCHAR(100), + tags TEXT, banner TEXT, raw JSONB NOT NULL, auth INTEGER, diff --git a/public/client.js b/public/client.js index 518abc0..b973905 100644 --- a/public/client.js +++ b/public/client.js @@ -154,6 +154,15 @@ function initializeEventListeners() { } }); + document.getElementById('buyModeDirectoryInput').addEventListener('input', function() { + const input = this.value.trim(); + const sanitizedDirectory = sanitizeDirectoryTitle(input); + const previewElement = document.getElementById('checkdir-preview'); + + previewElement.style.display = "block" + previewElement.innerHTML = `Su sitio se publicará en:
https://conex.one/${sanitizedDirectory}`; + }); + document.getElementById("continueToEditModeButton").addEventListener('click', () => editMode(extractSitePath(document.getElementById("editModeDirectoryInput").value)) ); @@ -372,15 +381,12 @@ function loadLanguage(lang) { fetch(`./lang/${lang}.json`) .then(response => response.json()) .then(translations => { - // Find all elements with a 'data-translate' attribute document.querySelectorAll('[data-translate]').forEach(element => { const translationKey = element.getAttribute('data-translate'); - // Check if the element is an input field (update placeholder) if (element.tagName.toLowerCase() === 'input' || element.tagName.toLowerCase() === 'textarea') { element.placeholder = translations[translationKey]; } else { - // Update text content for non-input elements element.innerText = translations[translationKey]; } }); @@ -401,10 +407,25 @@ function dashboardMode() { function buyMode() { localStorage.removeItem('conex_data'); + title = document.getElementById('buyModeDirectoryInput').value.trim(); + directory = sanitizeDirectoryTitle(title); + + let tagsInput = document.getElementById('buyModeTagsInput').value.trim(); + let tags = tagsInput + .split(/[\s,]+/) + .map(tag => tag.trim().toLowerCase().replace(/[^a-z0-9]/g, '')) + .filter(tag => tag.length > 0); + + const tagsString = tags.join(' '); + const dataToSave = { - title: document.getElementById('buyModeDirectoryInput').value.trim(), + title: title, + directory: directory, + tags: tagsString }; + localStorage.setItem('conex_data', JSON.stringify(dataToSave)); + loadEditorState(); closeDialog(); diff --git a/public/index.html b/public/index.html index 6d12ab8..30524f8 100644 --- a/public/index.html +++ b/public/index.html @@ -36,7 +36,7 @@ @@ -103,7 +103,10 @@

+

+

+
diff --git a/public/lang/es.json b/public/lang/es.json index 0e00063..76baba8 100644 --- a/public/lang/es.json +++ b/public/lang/es.json @@ -8,6 +8,8 @@ "continueEditingModeButton": "Continuar editando", "buyDialogHeader": "Diseñar un nuevo sitio web", "buyDialogParagraph": "Ingresa el nombre del sitio y revisa el enlace en el que se publicará una vez adquirido.", + "buyDialogTags": "Las etiquetas son palabras clave que ayudan a las personas a encontrar tu sitio, por ejemplo, las etiquetas de una página web relacionada al turismo: vacaciones, paseos, viajes, destinos, tours", + "buyModeTagsInput": "vacaciones paseos viajes destinos tours", "updateContentDialogHeader": "Actualizar mi sitio", "updateContentDialogParagraph": "Para actualizar el sitio web, requerimos confirmar que el sitio es suyo. Para esto, enviaremos un correo electrónico a la cuenta de correo con la que compró este sitio web, con un código temporal de 6 dígitos que expirará en 5 minutos luego de ser enviado. Por favor, presione el botón para enviar el código y luego compruebe su identidad digitándolo en la casilla.", "tempCodePlaceholder": "Código de 6 dígitos enviado a su correo", diff --git a/public/paypal.js b/public/paypal.js index fc5b6a3..900fcb7 100644 --- a/public/paypal.js +++ b/public/paypal.js @@ -52,6 +52,7 @@ paypal.Buttons({ banner: savedData.banner, title: savedData.title, slogan: savedData.slogan, + tags: savedData.tags, editor_data: savedData.editor_data }; diff --git a/public/static/css/style.css b/public/static/css/style.css index 801d458..d2c09e6 100644 --- a/public/static/css/style.css +++ b/public/static/css/style.css @@ -466,10 +466,15 @@ a { color: #721c24; } +.neutral-message { + background-color: #d1ecf1; + color: #0c5460; +} + .loader { width: 1.5em; height: 1.5em; - border: 0.2em solid #FFF; + border: 0.2em solid var(--color); border-bottom-color: transparent; border-radius: 50%; display: inline-block; diff --git a/server/db.go b/server/db.go index a98c78c..e5786e7 100644 --- a/server/db.go +++ b/server/db.go @@ -57,6 +57,7 @@ func RegisterSitePayment(db *sql.DB, capture Capture, cart ConexData) error { directory string title string slogan string + tags string banner string editorData json.RawMessage ) @@ -79,6 +80,7 @@ func RegisterSitePayment(db *sql.DB, capture Capture, cart ConexData) error { directory = cart.Directory title = cart.Title slogan = cart.Slogan + tags = cart.Tags banner = cart.Banner editorData = cart.EditorData @@ -90,12 +92,12 @@ func RegisterSitePayment(db *sql.DB, capture Capture, cart ConexData) error { if newSite == sql.ErrNoRows { if err := db.QueryRow(` INSERT INTO sites - (folder, status, due, name, sur, email, phone, code, title, slogan, banner, raw) - VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12) + (folder, status, due, name, sur, email, phone, code, title, slogan, tags, banner, raw) + VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13) RETURNING id `, directory, wstatus, due, name, surname, email, phone, country, title, slogan, - banner, editorData).Scan(&pkey); err != nil { + tags, banner, editorData).Scan(&pkey); err != nil { return fmt.Errorf("%s: %v", errDBRegisterSite, err) } } else { diff --git a/server/main.go b/server/main.go index 6244ff2..9278f8e 100644 --- a/server/main.go +++ b/server/main.go @@ -54,6 +54,7 @@ type ConexData struct { Banner string `json:"banner"` Title string `json:"title"` Slogan string `json:"slogan"` + Tags string `json:"tags"` EditorData json.RawMessage `json:"editor_data"` }