mirror of
https://0xacab.org/sutty/sutty
synced 2025-03-14 20:18:18 +00:00
Merge branch 'issue-15068' into production.panel.sutty.nl
This commit is contained in:
commit
e2d9774229
8 changed files with 75 additions and 12 deletions
|
@ -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'
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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",
|
||||
|
|
10
yarn.lock
10
yarn.lock
|
@ -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"
|
||||
|
|
Loading…
Reference in a new issue