Refactoring: Agora o sistema se comporta bem com objetos excluidos
This commit is contained in:
@@ -15,21 +15,18 @@
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
class AttachmentLogEntry < LogEntry
|
||||
def attachment
|
||||
Attachment.find_with_deleted(target_id)
|
||||
end
|
||||
belongs_to :attachment,
|
||||
:foreign_key => "target_id",
|
||||
:with_deleted => true
|
||||
end
|
||||
|
||||
class AttachmentDeleteLogEntry < AttachmentLogEntry
|
||||
def reversible?()
|
||||
a = Attachment.find_with_deleted(target_id)
|
||||
a.deleted_at != nil
|
||||
attachment.deleted?
|
||||
end
|
||||
def undo!(current_user)
|
||||
a = Attachment.find_with_deleted(target_id)
|
||||
a.update_attribute(:deleted_at, nil)
|
||||
AttachmentRestoreLogEntry.create!(:target_id => a.id, :user_id => current_user.id,
|
||||
:course => a.course)
|
||||
attachment.update_attribute(:deleted_at, nil)
|
||||
AttachmentRestoreLogEntry.create!(:target_id => attachment.id, :user_id => current_user.id, :course => attachment.course)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@@ -15,21 +15,18 @@
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
class EventLogEntry < LogEntry
|
||||
def event
|
||||
Event.find_with_deleted(target_id)
|
||||
end
|
||||
belongs_to :event,
|
||||
:foreign_key => "target_id",
|
||||
:with_deleted => true
|
||||
end
|
||||
|
||||
class EventDeleteLogEntry < EventLogEntry
|
||||
def reversible?()
|
||||
e = Event.find_with_deleted(target_id)
|
||||
e.deleted_at != nil
|
||||
event.deleted?
|
||||
end
|
||||
def undo!(current_user)
|
||||
e = Event.find_with_deleted(target_id)
|
||||
e.update_attribute(:deleted_at, nil)
|
||||
EventRestoreLogEntry.create!(:target_id => e.id, :user_id => current_user.id,
|
||||
:course_id => e.course_id)
|
||||
event.update_attribute(:deleted_at, nil)
|
||||
EventRestoreLogEntry.create!(:target_id => event.id, :user_id => current_user.id, :course => event.course)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@@ -15,21 +15,18 @@
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
class NewsLogEntry < LogEntry
|
||||
def news
|
||||
News.find_with_deleted(target_id)
|
||||
end
|
||||
belongs_to :news,
|
||||
:foreign_key => "target_id",
|
||||
:with_deleted => true
|
||||
end
|
||||
|
||||
class NewsDeleteLogEntry < NewsLogEntry
|
||||
def reversible?()
|
||||
n = News.find_with_deleted(target_id)
|
||||
n.deleted_at != nil
|
||||
news.deleted?
|
||||
end
|
||||
def undo!(current_user)
|
||||
n = News.find_with_deleted(target_id)
|
||||
n.update_attribute(:deleted_at, nil)
|
||||
NewsRestoreLogEntry.create!(:target_id => n.id, :user_id => current_user.id,
|
||||
:course => n.course)
|
||||
news.update_attribute(:deleted_at, nil)
|
||||
NewsRestoreLogEntry.create!(:target_id => news.id, :user_id => current_user.id, :course => news.course)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@@ -15,11 +15,9 @@
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
class WikiLogEntry < LogEntry
|
||||
def wiki_page
|
||||
w = WikiPage.find_with_deleted(target_id)
|
||||
w.revert_to(version)
|
||||
return w
|
||||
end
|
||||
belongs_to :wiki_page,
|
||||
:foreign_key => "target_id",
|
||||
:with_deleted => true
|
||||
end
|
||||
|
||||
class WikiEditLogEntry < WikiLogEntry
|
||||
@@ -28,16 +26,12 @@ end
|
||||
|
||||
class WikiDeleteLogEntry < WikiLogEntry
|
||||
def reversible?()
|
||||
w = WikiPage.find_with_deleted(target_id)
|
||||
w.deleted_at != nil
|
||||
wiki_page.deleted?
|
||||
end
|
||||
def undo!(current_user)
|
||||
w = WikiPage.find_with_deleted(target_id)
|
||||
w.update_attribute(:deleted_at, nil)
|
||||
w.position = w.course.wiki_pages.maximum(:position) + 1
|
||||
w.save!
|
||||
WikiRestoreLogEntry.create!(:target_id => w.id, :user_id => current_user.id,
|
||||
:course => w.course)
|
||||
wiki_page.update_attribute(:deleted_at, nil)
|
||||
wiki_page.update_attribute(:position, wiki_page.course.wiki_pages.maximum(:position) + 1)
|
||||
WikiRestoreLogEntry.create!(:target_id => wiki_page.id, :user_id => current_user.id, :course => wiki_page.course)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
Reference in New Issue
Block a user