Module: ComfortableMexicanSofa::IsMirrored::InstanceMethods
- Defined in:
- lib/comfortable_mexican_sofa/extensions/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
75 76 77 78 79 80 81 |
# File 'lib/comfortable_mexican_sofa/extensions/is_mirrored.rb', line 75 def destroy_mirror return if self.is_mirrored || !self.site.is_mirrored? mirrors.each do |mirror| mirror.is_mirrored = true mirror.destroy end end |
#mirrors ⇒ Object
Mirrors of the object found on other sites
21 22 23 24 25 26 27 28 29 30 |
# File 'lib/comfortable_mexican_sofa/extensions/is_mirrored.rb', line 21 def mirrors return [] unless self.site.is_mirrored? (Comfy::Cms::Site.mirrored - [self.site]).collect do |site| case self when Comfy::Cms::Layout then site.layouts.find_by_identifier(self.identifier) when Comfy::Cms::Page then site.pages.find_by_full_path(self.full_path) when Comfy::Cms::Snippet then site.snippets.find_by_identifier(self.identifier) 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.
35 36 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 70 71 72 |
# File 'lib/comfortable_mexican_sofa/extensions/is_mirrored.rb', line 35 def sync_mirror return if self.is_mirrored || !self.site.is_mirrored? (Comfy::Cms::Site.mirrored - [self.site]).each do |site| mirror = case self when Comfy::Cms::Layout m = site.layouts.find_by_identifier(self.identifier_was || self.identifier) || site.layouts.new m.attributes = { :identifier => self.identifier, :parent_id => site.layouts.find_by_identifier(self.parent.try(:identifier)).try(:id) } m when Comfy::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 => m.label.blank?? self.label : m.label, :parent_id => site.pages.find_by_full_path(self.parent.try(:full_path)).try(:id), :layout => site.layouts.find_by_identifier(self.layout.try(:identifier)) } m when Comfy::Cms::Snippet m = site.snippets.find_by_identifier(self.identifier_was || self.identifier) || site.snippets.new m.attributes = { :identifier => self.identifier } m end mirror.is_mirrored = true begin mirror.save! rescue ActiveRecord::RecordInvalid => e logger.error(e.) logger.error(e.backtrace.each{|line| error line }) end end end |