mirror of
https://0xacab.org/sutty/sutty
synced 2024-11-23 02:16:22 +00:00
Merge branch 'issue-12985' into panel.sutty.nl
This commit is contained in:
commit
0ee11c3276
4 changed files with 58 additions and 3 deletions
|
@ -40,13 +40,21 @@ class MetadataBelongsTo < MetadataRelatedPosts
|
||||||
# Si estamos cambiando la relación, tenemos que eliminar la relación
|
# Si estamos cambiando la relación, tenemos que eliminar la relación
|
||||||
# anterior
|
# anterior
|
||||||
if belonged_to.present?
|
if belonged_to.present?
|
||||||
belonged_to[inverse].value = belonged_to[inverse].value.reject do |rej|
|
if belonged_to[inverse].respond_to? :has_one
|
||||||
rej == post.uuid.value
|
belonged_to[inverse].value = nil
|
||||||
|
else
|
||||||
|
belonged_to[inverse].value = belonged_to[inverse].value.reject do |rej|
|
||||||
|
rej == post.uuid.value
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
# No duplicar las relaciones
|
# No duplicar las relaciones
|
||||||
belongs_to[inverse].value = (belongs_to[inverse].value.dup << post.uuid.value) unless belongs_to.blank? || included?
|
if belongs_to[inverse].respond_to? :has_one
|
||||||
|
belongs_to[inverse].value = post.uuid.value
|
||||||
|
else
|
||||||
|
belongs_to[inverse].value = (belongs_to[inverse].value.dup << post.uuid.value) unless belongs_to.blank? || included?
|
||||||
|
end
|
||||||
|
|
||||||
true
|
true
|
||||||
end
|
end
|
||||||
|
|
34
app/models/metadata_has_one.rb
Normal file
34
app/models/metadata_has_one.rb
Normal file
|
@ -0,0 +1,34 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
class MetadataHasOne < MetadataHasMany
|
||||||
|
def had_one
|
||||||
|
return default_value if value_was.blank?
|
||||||
|
|
||||||
|
posts.find(uuid: value)
|
||||||
|
end
|
||||||
|
|
||||||
|
def has_one
|
||||||
|
return default_value if value.blank?
|
||||||
|
|
||||||
|
posts.find(uuid: value)
|
||||||
|
end
|
||||||
|
|
||||||
|
def had_many; end
|
||||||
|
def has_many; end
|
||||||
|
|
||||||
|
def save
|
||||||
|
super
|
||||||
|
|
||||||
|
return true unless changed?
|
||||||
|
return true unless inverse?
|
||||||
|
|
||||||
|
had_one&.value = nil
|
||||||
|
has_one&.value = post.uuid.value
|
||||||
|
|
||||||
|
true
|
||||||
|
end
|
||||||
|
|
||||||
|
def related_methods
|
||||||
|
@related_methods ||= %i[has_one had_one].freeze
|
||||||
|
end
|
||||||
|
end
|
6
app/views/posts/attribute_ro/_has_one.haml
Normal file
6
app/views/posts/attribute_ro/_has_one.haml
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
%tr{ id: attribute }
|
||||||
|
%th= post_label_t(attribute, post: post)
|
||||||
|
%td{ dir: dir, lang: locale }
|
||||||
|
- p = metadata.belongs_to
|
||||||
|
- if p
|
||||||
|
= link_to p.title.value, site_post_path(site, p.id)
|
7
app/views/posts/attributes/_has_one.haml
Normal file
7
app/views/posts/attributes/_has_one.haml
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
.form-group
|
||||||
|
= label_tag "#{base}_#{attribute}", post_label_t(attribute, post: post)
|
||||||
|
= select_tag(plain_field_name_for(base, attribute),
|
||||||
|
options_for_select(metadata.values, metadata.value),
|
||||||
|
**field_options(attribute, metadata), include_blank: t('.empty'))
|
||||||
|
= render 'posts/attribute_feedback',
|
||||||
|
post: post, attribute: attribute, metadata: metadata
|
Loading…
Reference in a new issue