Module: ComfortableMexicanSofa::IsMirrored::InstanceMethods
- Defined in:
- lib/comfortable_mexican_sofa/is_mirrored.rb
Instance Method Summary collapse
-
#destroy_mirror ⇒ Object
Mirrors should be destroyed.
-
#mirrors ⇒ Object
Mirrors of the object found on other sites.
-
#sync_mirror ⇒ Object
Creating or updating a mirror object.
Instance Method Details
#destroy_mirror ⇒ Object
Mirrors should be destroyed
72 73 74 75 76 77 78 |
# File 'lib/comfortable_mexican_sofa/is_mirrored.rb', line 72 def destroy_mirror return if self.is_mirrored mirrors.each do |mirror| mirror.is_mirrored = true mirror.destroy end end |
#mirrors ⇒ Object
Mirrors of the object found on other sites
24 25 26 27 28 29 30 31 32 |
# File 'lib/comfortable_mexican_sofa/is_mirrored.rb', line 24 def mirrors (Cms::Site.all - [self.site]).collect do |site| case self when Cms::Layout then site.layouts.find_by_slug(self.slug) when Cms::Page then site.pages.find_by_full_path(self.full_path) when Cms::Snippet then site.snippets.find_by_slug(self.slug) end end.compact end |
#sync_mirror ⇒ Object
Creating or updating a mirror object. Relationships are mirrored but content is unique. When updating need to grab mirrors based on self.slug_was, new objects will use self.slug.
37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
# File 'lib/comfortable_mexican_sofa/is_mirrored.rb', line 37 def sync_mirror return if self.is_mirrored (Cms::Site.all - [self.site]).each do |site| mirror = case self when Cms::Layout m = site.layouts.find_by_slug(self.slug_was || self.slug) || site.layouts.new m.attributes = { :slug => self.slug, :parent => site.layouts.find_by_slug(self.parent.try(:slug)) } m when Cms::Page m = site.pages.find_by_full_path(self.full_path_was || self.full_path) || site.pages.new m.attributes = { :slug => self.slug, :label => self.slug.blank?? self.label : m.label, :parent => site.pages.find_by_full_path(self.parent.try(:full_path)), :layout => site.layouts.find_by_slug(self.layout.slug) } m when Cms::Snippet m = site.snippets.find_by_slug(self.slug_was || self.slug) || site.snippets.new m.attributes = { :slug => self.slug } m end mirror.is_mirrored = true mirror.save! end end |