Class: PublishedWebsite
- Inherits:
-
ActiveRecord::Base
- Object
- ActiveRecord::Base
- PublishedWebsite
- Defined in:
- app/models/published_website.rb
Class Method Summary collapse
Instance Method Summary collapse
- #publish(comment, current_user) ⇒ Object
- #publish_element(comment, element, version, current_user) ⇒ Object
- #published_by_username ⇒ Object
Class Method Details
.activate(website, version, current_user) ⇒ Object
12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
# File 'app/models/published_website.rb', line 12 def self.activate(website, version, current_user) #deactivate published_websites = self.where(:website_id => website.id).where(:active => true).all published_websites.each do |published_website| published_website.active = false published_website.save end #activate published_website = self.where(:website_id => website.id).where(:version => version).first published_website.active = true published_website.published_by = current_user published_website.save end |
Instance Method Details
#publish(comment, current_user) ⇒ Object
27 28 29 30 31 32 33 34 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 73 74 75 76 |
# File 'app/models/published_website.rb', line 27 def publish(comment, current_user) new_publication = clone_publication(1, comment, current_user) elements = [] #get a publish sections website_sections = new_publication.website.website_sections website_sections = website_sections | website_sections.collect { |section| section.descendants }.flatten website_sections.each do |website_section| #get nested elements too website_section.self_and_descendants.each do |website_section| if new_publication.published_elements.where('published_element_record_id = ? and (published_element_record_type = ? or published_element_record_type = ?)', website_section.id, website_section.class.to_s, website_section.class.superclass.to_s).first.nil? published_element = PublishedElement.new published_element.published_website = new_publication published_element.published_element_record = website_section published_element.version = website_section.version published_element.published_by = current_user published_element.save end end if website_section.is_a?(OnlineDocumentSection) elements = elements | [website_section.documented_item.content] else elements = elements | website_section.contents end end #make sure all elements have published_element objects elements.each do |element| if new_publication.published_elements.where('published_element_record_id = ? and (published_element_record_type = ? or published_element_record_type = ?)', element.id, element.class.to_s, element.class.superclass.to_s).first.nil? published_element = PublishedElement.new published_element.published_website = new_publication published_element.published_element_record = element published_element.version = element.version published_element.published_by = current_user published_element.save end end #get latest version for all elements new_publication.published_elements.each do |published_element| published_element.version = published_element.published_element_record.version published_element.save end #check if we want to auto active this publication if new_publication.website.auto_activate_publication? PublishedWebsite.activate(new_publication.website, new_publication.version, current_user) end end |
#publish_element(comment, element, version, current_user) ⇒ Object
78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 |
# File 'app/models/published_website.rb', line 78 def publish_element(comment, element, version, current_user) new_publication = clone_publication(0.1, comment, current_user) published_element = new_publication.published_elements.where('published_element_record_id = ? and (published_element_record_type = ? or published_element_record_type = ?)', element.id, element.class.to_s, element.class.superclass.to_s).first unless published_element.nil? published_element.version = version published_element.published_by = current_user published_element.save else new_published_element = PublishedElement.new new_published_element.published_website = new_publication new_published_element.published_element_record = element new_published_element.version = version new_published_element.published_by = current_user new_published_element.save end #check if we want to auto active this publication if new_publication.website.auto_activate_publication? PublishedWebsite.activate(new_publication.website, new_publication.version, current_user) end end |
#published_by_username ⇒ Object
8 9 10 |
# File 'app/models/published_website.rb', line 8 def published_by_username self.published_by.username rescue '' end |