Sha256: c07e8e9496836abea08428f7aae68bf363968c54aa4abb3b86f6e9b869105a00
Contents?: true
Size: 1.47 KB
Versions: 13
Compression:
Stored size: 1.47 KB
Contents
# frozen_string_literal: true module Decidim module Blogs module Admin # This class holds a Form to update pages from Decidim's admin panel. class PostForm < Decidim::Form include TranslatableAttributes translatable_attribute :title, String translatable_attribute :body, String attribute :decidim_author_id, Integer attribute :published_at, Decidim::Attributes::TimeWithZone validates :title, translatable_presence: true validates :body, translatable_presence: true validate :can_set_author def map_model(model) self.decidim_author_id = nil if model.author.is_a? Decidim::Organization end def user_or_group @user_or_group ||= Decidim::UserBaseEntity.find_by( organization: current_organization, id: decidim_author_id ) end def author user_or_group || current_organization end private def can_set_author return if author == current_user.organization return if author == current_user return if user_groups.include? author return if author == post&.author errors.add(:decidim_author_id, :invalid) end def post @post ||= Post.find_by(id:) end def user_groups @user_groups ||= Decidim::UserGroups::ManageableUserGroups.for(current_user).verified end end end end end
Version data entries
13 entries across 13 versions & 1 rubygems