5
0
Fork 0
mirror of https://0xacab.org/sutty/sutty synced 2025-03-14 17:38:18 +00:00

Merge branch 'issue-15068' into production.panel.sutty.nl

This commit is contained in:
f 2024-06-04 17:14:45 -03:00
commit e2d9774229
No known key found for this signature in database
8 changed files with 75 additions and 12 deletions

View file

@ -117,7 +117,7 @@ class PostsController < ApplicationController
service = PostService.new(site: site,
usuarie: current_usuarie,
params: params)
@post = service.create
@post = service.create_or_update
if post.persisted?
site.touch
@ -165,7 +165,24 @@ class PostsController < ApplicationController
if service.update.persisted?
site.touch
forget_content
end
if htmx?
if post.persisted?
swap_modals
@value = post.title.value
@uuid = post.uuid.value
@name = params.require(:name)
render render_path_from_attribute, layout: false
else
headers['HX-Retarget'] = "##{params.require(:form)}"
headers['HX-Reswap'] = 'outerHTML'
render 'posts/form', layout: false, post: post, site: site, **params.permit(:form, :base, :dir, :locale)
end
elsif post.persisted?
redirect_to site_post_path(site, post)
else
render 'posts/edit'

View file

@ -41,5 +41,5 @@ Rails.start()
Turbolinks.start()
ActiveStorage.start()
window.htmx = require('htmx.org/dist/htmx.js')
window.htmx = require("@suttyweb/htmx.org/dist/htmx.js");
window.htmx.config.selfRequestsOnly = true;

View file

@ -5,12 +5,30 @@
PostService = Struct.new(:site, :usuarie, :post, :params, keyword_init: true) do
include AutoPublishConcern
# Si estamos pasando el UUID con los parámetros, el post quizás
# existe.
#
# @return [Post]
def create_or_update
uuid = params.require(base).permit(:uuid).values.first
binding.pry
if uuid.blank?
create
elsif (indexed_post = site.indexed_posts.find_by(post_id: uuid)).present?
self.post = indexed_post.post
update
else
create
end
end
# Crea un artículo nuevo
#
# @return Post
def create
self.post = site.posts(lang: locale)
.build(layout: layout)
self.post ||= site.posts(lang: locale).build(layout: layout)
post.usuaries << usuarie
post.draft.value = true if site.invitade? usuarie
post.assign_attributes(post_params)

View file

@ -38,7 +38,8 @@
datos y recibir su UUID en respuesta.
- content_for :post_form do
%div{ id: modal_id, data: { controller: 'modal' }}
- if layout.is_a?(String)
-# Si hay un solo layout o el post asociado ya existía
- if layout.is_a?(String) || metadata.has_one.present?
= render 'bootstrap/modal', id: id, modal_content_attributes: { class: 'h-100' } do
- content_for :"#{id}_body" do
-# @todo ocultar el modal después de guardar
@ -47,7 +48,8 @@
- content_for :"#{id}_footer" do
= render 'bootstrap/btn', form: form_id, content: t('.save'), type: 'submit', class: 'm-0 mt-1 mr-1'
= render 'bootstrap/btn', content: t('.cancel'), action: 'modal#hide', class: 'm-0 mt-1 mr-1'
= render 'bootstrap/btn', content: t('.close'), action: 'modal#hide', class: 'm-0 mt-1 mr-1'
- else
-# @todo Implementar selección de layout para cargar el formulario correcto
Nada

View file

@ -758,6 +758,18 @@ en:
empty: "(Empty)"
draft:
label: Draft
new_has_many:
edit: "Edit"
new_has_and_belongs_to_many:
edit: "Edit"
new_predefined_array:
edit: "Edit"
new_array:
edit: "Edit"
new_has_one:
edit: "Edit"
new_belongs_to:
edit: "Edit"
reorder:
submit: 'Save order'
select: 'Select this post'
@ -946,6 +958,7 @@ en:
add: "Add %{layout}"
add_new: "Add new option"
cancel: "Cancel"
close: "Close"
edit: "Edit"
filter: "Start typing to filter..."
save: "Save"

View file

@ -766,6 +766,18 @@ es:
empty: "(Vacío)"
draft:
label: Borrador
new_has_many:
edit: "Editar"
new_has_and_belongs_to_many:
edit: "Editar"
new_predefined_array:
edit: "Editar"
new_array:
edit: "Editar"
new_has_one:
edit: "Editar"
new_belongs_to:
edit: "Editar"
reorder:
submit: 'Guardar orden'
select: 'Seleccionar este artículo'
@ -954,6 +966,7 @@ es:
add: "Agregar %{layout}"
add_new: "Agregar nueva opción"
cancel: "Cancelar"
close: "Cerrar"
edit: "Editar"
filter: "Empezá a escribir para filtrar..."
save: "Guardar"

View file

@ -14,6 +14,7 @@
"@rails/ujs": "^6.1.3-1",
"@rails/webpacker": "5.4.4",
"@suttyweb/editor": "^0.1.29",
"@suttyweb/htmx.org": "^1.9.13",
"babel-loader": "^8.2.2",
"bs-custom-file-input": "^1.3.4",
"chart.js": "^3.5.1",
@ -22,7 +23,6 @@
"commonmark": "^0.29.0",
"fork-awesome": "^1.1.7",
"fork-ts-checker-webpack-plugin": "^6.1.0",
"htmx.org": "^1.9.11",
"input-map": "git+https://0xacab.org/sutty/input-map.git",
"input-tag": "git+https://0xacab.org/sutty/input-tag.git",
"leaflet": "^1.7.1",

View file

@ -1984,6 +1984,11 @@
linkifyjs "^4.1.1"
prosemirror-svelte-nodeview "^1.0.2"
"@suttyweb/htmx.org@^1.9.13":
version "1.9.13"
resolved "https://registry.yarnpkg.com/@suttyweb/htmx.org/-/htmx.org-1.9.13.tgz#bc67a5e2947d7cc125649b829610da8ee61f21af"
integrity sha512-/2x3AGXT2CFOmp8Nf59XY2brah5wSo4YvcctYA2zD4BByNft4XE0rUk4VM7TjPxR1LOzg6VK1crZmdiy3JyzxQ==
"@types/caseless@*":
version "0.12.2"
resolved "https://registry.npmjs.org/@types/caseless/-/caseless-0.12.2.tgz"
@ -4575,11 +4580,6 @@ html-entities@^1.3.1:
resolved "https://registry.npmjs.org/html-entities/-/html-entities-1.4.0.tgz"
integrity sha512-8nxjcBcd8wovbeKx7h3wTji4e6+rhaVuPNpMqwWgnHh+N9ToqsCs6XztWRBPQ+UtzsoMAdKZtUENoVzU/EMtZA==
htmx.org@^1.9.11:
version "1.9.11"
resolved "https://registry.yarnpkg.com/htmx.org/-/htmx.org-1.9.11.tgz#00192041ee682d6ca7146d0fbd901169ffe72d87"
integrity sha512-WlVuICn8dfNOOgYmdYzYG8zSnP3++AdHkMHooQAzGZObWpVXYathpz/I37ycF4zikR6YduzfCvEcxk20JkIUsw==
http-deceiver@^1.2.7:
version "1.2.7"
resolved "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz"