Class: Page
- Inherits:
-
ActiveRecord::Base
- Object
- ActiveRecord::Base
- Page
- Defined in:
- app/models/page.rb
Class Method Summary collapse
-
.reposition(ids) ⇒ Object
Re-position: change the sequence of pages for a given course.
Instance Method Summary collapse
- #course_name ⇒ Object
- #course_name=(course_name) ⇒ Object
- #current_semester_course ⇒ Object
- #delete_from_search ⇒ Object
- #editable?(current_user) ⇒ Boolean
- #is_someone_else_currently_editing_page(current_user) ⇒ Object
- #task_number ⇒ Object
- #timeout_has_not_passed ⇒ Object
- #to_param ⇒ Object
- #update_search_index ⇒ Object
- #update_search_index_for_index(index_name) ⇒ Object
- #viewable?(current_user) ⇒ Boolean
Class Method Details
.reposition(ids) ⇒ Object
Re-position: change the sequence of pages for a given course
48 49 50 51 52 53 54 55 |
# File 'app/models/page.rb', line 48 def self.reposition(ids) #if database is mysql # update_all( # ['position = FIND_IN_SET(id, ?)', ids.join(',')], # { :id => ids } # ) update_all(["position = STRPOS(?, ','||id||',')", ",#{ids.join(',')},"], {:id => ids}) end |
Instance Method Details
#course_name ⇒ Object
57 58 59 |
# File 'app/models/page.rb', line 57 def course_name self.course.nil? ? nil : self.course.name end |
#course_name=(course_name) ⇒ Object
61 62 63 64 |
# File 'app/models/page.rb', line 61 def course_name=(course_name) course = Course.first_offering_for_course_name(course_name) self.course = course end |
#current_semester_course ⇒ Object
105 106 107 108 109 110 111 112 113 |
# File 'app/models/page.rb', line 105 def current_semester_course #This little bit of magic finds the current offering of a course. This is handy for deliverable submission #and team lists where the static curriculum website points to the latest offering of the course. unless self.course.blank? || self.course.number.blank? Course.in_current_semester_with_course_number(self.course.number).first else nil end end |
#delete_from_search ⇒ Object
99 100 101 102 103 |
# File 'app/models/page.rb', line 99 def delete_from_search api = IndexTank::Client.new(ENV['WHITEBOARD_SEARCHIFY_API_URL'] || '<API_URL>') index = api.indexes(ENV['WHITEBOARD_SEARCHIFY_INDEX'] || 'cmux') index.document(self.id.to_s).delete end |
#editable?(current_user) ⇒ Boolean
25 26 27 28 29 30 |
# File 'app/models/page.rb', line 25 def editable?(current_user) return false if self.is_duplicated_page? return false if current_user.blank? return true if self.is_editable_by_all? return (current_user.is_staff? || current_user.is_admin?) end |
#is_someone_else_currently_editing_page(current_user) ⇒ Object
116 117 118 |
# File 'app/models/page.rb', line 116 def is_someone_else_currently_editing_page(current_user) self.current_edit_by != current_user end |
#task_number ⇒ Object
67 68 69 70 |
# File 'app/models/page.rb', line 67 def task_number match = self.title.match /\d+/ match.nil? ? nil : match[0] end |
#timeout_has_not_passed ⇒ Object
120 121 122 123 124 125 126 |
# File 'app/models/page.rb', line 120 def timeout_has_not_passed if self.current_edit_started_at.nil? false else Time.now - self.current_edit_started_at < 5.minute end end |
#to_param ⇒ Object
42 43 44 |
# File 'app/models/page.rb', line 42 def to_param url end |
#update_search_index ⇒ Object
72 73 74 75 76 77 78 |
# File 'app/models/page.rb', line 72 def update_search_index if self.viewable_by == "staff" update_search_index_for_index(ENV['WHITEBOARD_SEARCHIFY_STAFF_INDEX'] || 'cmu_staffx') else update_search_index_for_index(ENV['WHITEBOARD_SEARCHIFY_INDEX'] || 'cmux') end end |
#update_search_index_for_index(index_name) ⇒ Object
80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 |
# File 'app/models/page.rb', line 80 def update_search_index_for_index(index_name) api = IndexTank::Client.new(ENV['WHITEBOARD_SEARCHIFY_API_URL'] || '<API_URL>') index = api.indexes(index_name) = {:title => self.title, :type => "page"} if self.course .merge!({:title => self.title + " (" + self.course.name + ")"}) end begin index.document(self.id.to_s).add(.merge!({:text => self.tab_one_contents.gsub(/<\/?[^>]*>/, ""), :url => "pages/" + self.url})) if self.is_task? index.document(self.id.to_s + "-tabs-1").add(.merge!({:text => self.tab_two_contents.gsub(/<\/?[^>]*>/, ""), :url => "pages/" + self.url + "?tab=tabs-2"})) index.document(self.id.to_s + "-tabs-2").add(.merge!({:text => self.tab_three_contents.gsub(/<\/?[^>]*>/, ""), :url => "pages/" + self.url + "?tab=tabs-3"})) end rescue Exception => e logger.error("Searchify issue: " + e.) end end |
#viewable?(current_user) ⇒ Boolean
32 33 34 35 36 37 38 39 40 |
# File 'app/models/page.rb', line 32 def viewable?(current_user) return true if self.viewable_by == "world" return false if current_user.blank? if self.viewable_by == "users" return current_user.present? else return (current_user.is_staff? || current_user.is_admin?) end end |