app/models/landable/template.rb in landable-1.7.0 vs app/models/landable/template.rb in landable-1.7.1.rc1

- old
+ new

@@ -4,16 +4,41 @@ validates_presence_of :name, :slug, :description validates_uniqueness_of :name, case_sensitive: false validates_uniqueness_of :slug, case_sensitive: false + + belongs_to :published_revision, class_name: 'Landable::TemplateRevision' + has_many :revisions, class_name: 'Landable::TemplateRevision' + + before_save -> template { + template.is_publishable = true unless template.published_revision_id_changed? + } + def name= val self[:name] = val self[:slug] ||= (val && val.underscore.gsub(/[^\w_]/, '_').gsub(/_{2,}/, '_')) end def partial? file.present? + end + + def publish!(options) + transaction do + published_revision.unpublish! if published_revision + revision = revisions.create! options + update_attributes!(published_revision: revision, is_publishable: false) + end + end + + def revert_to!(revision) + self.name = revision.name + self.body = revision.body + self.description = revision.description + self.slug = revision.slug + + save! end class << self def create_from_partials! Partial.all.map(&:to_template)