From 9b3dd9b2f65ade6d689a63cb4f8ee405d882f170 Mon Sep 17 00:00:00 2001 From: f Date: Mon, 27 Jan 2025 15:32:18 -0300 Subject: [PATCH 1/6] fix: usar el formato de permalink --- app/models/site.rb | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/app/models/site.rb b/app/models/site.rb index ea49e147..6b61f3d9 100644 --- a/app/models/site.rb +++ b/app/models/site.rb @@ -434,7 +434,9 @@ class Site < ApplicationRecord # Si estamos usando nuestro propio plugin de i18n, los posts están # en "colecciones" locales.map(&:to_s).each do |i| - @configuration['collections'][i] = {} + @configuration['collections'][i] = { + 'permalink' => configuration.send(:style_to_permalink, configuration['permalink']) + } end @configuration From b32c67f1686358cf1fb5e44bd5c0ae76790fdfd7 Mon Sep 17 00:00:00 2001 From: f Date: Mon, 27 Jan 2025 15:32:44 -0300 Subject: [PATCH 2/6] fix: solo mostrar el permalink cuando ya se puede generar uno --- app/views/posts/attributes/_permalink.haml | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/app/views/posts/attributes/_permalink.haml b/app/views/posts/attributes/_permalink.haml index aa033643..ab951cbe 100644 --- a/app/views/posts/attributes/_permalink.haml +++ b/app/views/posts/attributes/_permalink.haml @@ -1,7 +1,8 @@ -.form-group - = label_tag "#{base}_#{attribute}", post_label_t(attribute, post: post) - = text_field base, attribute, value: metadata.value, - dir: dir, lang: locale, - **field_options(attribute, metadata) - = render 'posts/attribute_feedback', - post: post, attribute: attribute, metadata: metadata +- if post.written? + .form-group + = label_tag "#{base}_#{attribute}", post_label_t(attribute, post: post) + = text_field base, attribute, value: metadata.value, + dir: dir, lang: locale, + **field_options(attribute, metadata) + = render 'posts/attribute_feedback', + post: post, attribute: attribute, metadata: metadata From 2048cb8e03b086c29fc1b9f5a7b5b56bf29bdb5d Mon Sep 17 00:00:00 2001 From: f Date: Mon, 27 Jan 2025 15:33:23 -0300 Subject: [PATCH 3/6] feat: url absoluta del post --- app/models/post.rb | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/app/models/post.rb b/app/models/post.rb index 8885897f..09e9a2e5 100644 --- a/app/models/post.rb +++ b/app/models/post.rb @@ -404,6 +404,19 @@ class Post @usuaries ||= document_usuaries.empty? ? [] : Usuarie.where(id: document_usuaries).to_a end + + # Devuelve la URL absoluta + # + # @return [String, nil] + def absolute_url + return unless written? + + @absolute_url ||= + URI.parse(site.url).tap do |uri| + uri.path = document.url + end.to_s + end + private # Levanta un error si al construir el artículo no pasamos un atributo. From b7b435efc4bda5942a77b12bb32eefd049bb1d30 Mon Sep 17 00:00:00 2001 From: f Date: Mon, 27 Jan 2025 15:33:31 -0300 Subject: [PATCH 4/6] =?UTF-8?q?feat:=20poder=20visitar=20la=20p=C3=A1gina?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/posts/attribute_ro/_permalink.haml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/posts/attribute_ro/_permalink.haml b/app/views/posts/attribute_ro/_permalink.haml index 67642e2c..13f878c6 100644 --- a/app/views/posts/attribute_ro/_permalink.haml +++ b/app/views/posts/attribute_ro/_permalink.haml @@ -1,3 +1,3 @@ %tr{ id: attribute } %th= post_label_t(attribute, post: post) - %td{ dir: dir, lang: locale }= metadata.value + %td{ dir: dir, lang: locale }= link_to post.absolute_url, post.absolute_url, target: '_blank', rel: 'noopener' From 103daa356bb55db228742ec7c0c6c1ca51b1a09a Mon Sep 17 00:00:00 2001 From: f Date: Mon, 27 Jan 2025 15:33:54 -0300 Subject: [PATCH 5/6] fix: sugerir la url actual como valor por defecto --- app/models/metadata_permalink.rb | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/app/models/metadata_permalink.rb b/app/models/metadata_permalink.rb index 895b7439..59d1bdb8 100644 --- a/app/models/metadata_permalink.rb +++ b/app/models/metadata_permalink.rb @@ -7,6 +7,17 @@ class MetadataPermalink < MetadataString false end + # Devuelve la URL actual del sitio + # + # @return [String, nil] + def default_value + if post.written? + super.presence || document.url + else + super.presence + end + end + private # Al hacer limpieza, validamos la ruta. Eliminamos / multiplicadas, From 859f51526d41084f8527be97d51ff8eb56172a9c Mon Sep 17 00:00:00 2001 From: f Date: Mon, 27 Jan 2025 15:34:08 -0300 Subject: [PATCH 6/6] fix: permitir vaciar el campo #3871 --- app/models/metadata_permalink.rb | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/models/metadata_permalink.rb b/app/models/metadata_permalink.rb index 59d1bdb8..935202c9 100644 --- a/app/models/metadata_permalink.rb +++ b/app/models/metadata_permalink.rb @@ -24,6 +24,8 @@ class MetadataPermalink < MetadataString # puntos suspensivos, la primera / para que siempre sea relativa y # agregamos una / al final si la ruta no tiene extensión. def sanitize(value) + return value.strip if value.blank? + value = value.strip.unicode_normalize.gsub('..', '/').gsub('./', '').squeeze('/') value = value[1..-1] if value.start_with? '/' value += '/' if File.extname(value).blank?