Controle de versoes para noticias e eventos
This commit is contained in:
@@ -30,6 +30,7 @@ class EventsController < ApplicationController
|
||||
end
|
||||
|
||||
def show
|
||||
@event.revert_to(params[:version]) if params[:version]
|
||||
respond_to do |format|
|
||||
format.html
|
||||
format.xml { render :xml => @event }
|
||||
@@ -46,7 +47,7 @@ class EventsController < ApplicationController
|
||||
@event.save!
|
||||
flash[:notice] = 'Event created'[]
|
||||
|
||||
EventCreateLogEntry.create!(:target_id => @event.id, :user => @current_user, :course => @course)
|
||||
EventCreateLogEntry.create!(:target_id => @event.id, :user => @current_user, :course => @course, :version => @event.version)
|
||||
|
||||
respond_to do |format|
|
||||
format.html { redirect_to course_event_path(@course, @event) }
|
||||
@@ -55,14 +56,16 @@ class EventsController < ApplicationController
|
||||
end
|
||||
|
||||
def edit
|
||||
@event.revert_to(params[:version]) if params[:version]
|
||||
end
|
||||
|
||||
def update
|
||||
@event.attributes = params[:event]
|
||||
dirty = @event.dirty?
|
||||
@event.save!
|
||||
flash[:notice] = 'Event updated'[]
|
||||
|
||||
EventEditLogEntry.create!(:target_id => @event.id, :user => @current_user, :course => @course)
|
||||
EventEditLogEntry.create!(:target_id => @event.id, :user => @current_user, :course => @course, :version => @event.version) if dirty
|
||||
|
||||
respond_to do |format|
|
||||
format.html { redirect_to course_event_path(@course, @event) }
|
||||
@@ -75,7 +78,7 @@ class EventsController < ApplicationController
|
||||
flash[:notice] = 'Event removed'[]
|
||||
flash[:undo] = undelete_course_event_url(@course, @event)
|
||||
|
||||
EventDeleteLogEntry.create!(:target_id => @event.id, :user => @current_user, :course => @course)
|
||||
EventDeleteLogEntry.create!(:target_id => @event.id, :user => @current_user, :course => @course, :version => @event.version)
|
||||
|
||||
respond_to do |format|
|
||||
format.html { redirect_to course_events_path(@course) }
|
||||
@@ -97,10 +100,10 @@ class EventsController < ApplicationController
|
||||
|
||||
def undelete
|
||||
@event = Event.find_with_deleted(params[:id])
|
||||
@event.update_attribute(:deleted_at, nil)
|
||||
flash[:notice] = "Event restored"[]
|
||||
@event.restore!
|
||||
|
||||
EventRestoreLogEntry.create!(:target_id => @event.id, :user => @current_user, :course => @event.course)
|
||||
flash[:notice] = "Event restored"[]
|
||||
EventRestoreLogEntry.create!(:target_id => @event.id, :user => @current_user, :course => @event.course, :version => @event.version)
|
||||
|
||||
respond_to do |format|
|
||||
format.html { redirect_to course_event_url(@event.course, @event) }
|
||||
|
||||
@@ -33,6 +33,7 @@ class NewsController < ApplicationController
|
||||
end
|
||||
|
||||
def show
|
||||
@news.revert_to(params[:version]) if params[:version]
|
||||
respond_to do |format|
|
||||
format.html
|
||||
format.xml { render :xml => @news }
|
||||
@@ -49,7 +50,7 @@ class NewsController < ApplicationController
|
||||
@news.save!
|
||||
flash[:notice] = 'News created'[]
|
||||
|
||||
NewsCreateLogEntry.create!(:target_id => @news.id, :user => @current_user, :course => @course)
|
||||
NewsCreateLogEntry.create!(:target_id => @news.id, :user => @current_user, :course => @course, :version => @news.version)
|
||||
|
||||
respond_to do |format|
|
||||
format.html { redirect_to course_news_path(@course, @news) }
|
||||
@@ -58,14 +59,17 @@ class NewsController < ApplicationController
|
||||
end
|
||||
|
||||
def edit
|
||||
@news.revert_to(params[:version]) if params[:version]
|
||||
end
|
||||
|
||||
def update
|
||||
@news.attributes = params[:news]
|
||||
@news.timestamp = Time.now.utc
|
||||
dirty = @news.dirty?
|
||||
@news.save!
|
||||
flash[:notice] = 'News updated'[]
|
||||
|
||||
NewsEditLogEntry.create!(:target_id => @news.id, :user => @current_user, :course => @course)
|
||||
NewsEditLogEntry.create!(:target_id => @news.id, :user => @current_user, :course => @course, :version => @news.version) if dirty
|
||||
|
||||
respond_to do |format|
|
||||
format.html { redirect_to course_news_path(@course, @news) }
|
||||
@@ -78,7 +82,7 @@ class NewsController < ApplicationController
|
||||
flash[:notice] = 'News removed'[]
|
||||
flash[:undo] = undelete_course_news_url(@course, @news)
|
||||
|
||||
NewsDeleteLogEntry.create!(:target_id => @news.id, :user => @current_user, :course => @course)
|
||||
NewsDeleteLogEntry.create!(:target_id => @news.id, :user => @current_user, :course => @course, :version => @news.version)
|
||||
|
||||
respond_to do |format|
|
||||
format.html { redirect_to course_news_index_path(@course) }
|
||||
@@ -88,10 +92,10 @@ class NewsController < ApplicationController
|
||||
|
||||
def undelete
|
||||
@news = News.find_with_deleted(params[:id])
|
||||
@news.update_attribute(:deleted_at, nil)
|
||||
flash[:notice] = "News restored"[]
|
||||
@news.restore!
|
||||
|
||||
NewsRestoreLogEntry.create!(:target_id => @news.id, :user => @current_user, :course => @news.course)
|
||||
flash[:notice] = "News restored"[]
|
||||
NewsRestoreLogEntry.create!(:target_id => @news.id, :user => @current_user, :course => @news.course, :version => @news.version)
|
||||
|
||||
respond_to do |format|
|
||||
format.html { redirect_to course_news_url(@news.course, @news) }
|
||||
|
||||
@@ -18,6 +18,8 @@ class Event < ActiveRecord::Base
|
||||
|
||||
# Plugins
|
||||
acts_as_paranoid
|
||||
acts_as_versioned :if_changed => [ :title, :description, :time ]
|
||||
self.non_versioned_fields << 'deleted_at'
|
||||
|
||||
# Associacoes
|
||||
belongs_to :course
|
||||
|
||||
@@ -25,8 +25,8 @@ class EventDeleteLogEntry < EventLogEntry
|
||||
event.deleted?
|
||||
end
|
||||
def undo!(current_user)
|
||||
event.update_attribute(:deleted_at, nil)
|
||||
EventRestoreLogEntry.create!(:target_id => event.id, :user_id => current_user.id, :course => event.course)
|
||||
event.restore!
|
||||
EventRestoreLogEntry.create!(:target_id => event.id, :user_id => current_user.id, :course => event.course, :version => event.version)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@@ -25,8 +25,8 @@ class NewsDeleteLogEntry < NewsLogEntry
|
||||
news.deleted?
|
||||
end
|
||||
def undo!(current_user)
|
||||
news.update_attribute(:deleted_at, nil)
|
||||
NewsRestoreLogEntry.create!(:target_id => news.id, :user_id => current_user.id, :course => news.course)
|
||||
news.restore!
|
||||
NewsRestoreLogEntry.create!(:target_id => news.id, :user_id => current_user.id, :course => news.course, :version => news.version)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@@ -18,6 +18,8 @@ class Message < ActiveRecord::Base
|
||||
|
||||
# Plugins
|
||||
acts_as_paranoid
|
||||
acts_as_versioned :if_changed => [ :title, :body ]
|
||||
self.non_versioned_fields << 'deleted_at'
|
||||
|
||||
# Associacoes
|
||||
belongs_to :user,
|
||||
|
||||
@@ -14,6 +14,9 @@
|
||||
- if !@events.empty?
|
||||
%table
|
||||
- @events.each do |event|
|
||||
|
||||
- event.revert_to(params[:version]) if (event.id == params[:id].to_i) and (params[:version])
|
||||
|
||||
%tr[event]
|
||||
%td.top.aright{:width => '1%'}
|
||||
= event.time.strftime("%d de %B") #unless event.time == last_date
|
||||
@@ -23,7 +26,7 @@
|
||||
.title=link_to h(event.title), course_event_url(@course, event)
|
||||
.description{:style => (event.id == params[:id].to_i ? '' : 'display: none')}
|
||||
%div.cmd
|
||||
= action_icon 'edit', 'Editar', edit_course_event_url(@course, event)
|
||||
= action_icon 'edit', 'Editar', edit_course_event_url(@course, event, :version => event.version)
|
||||
= action_icon 'trash', 'Excluir', course_event_url(@course, event), :confirm => 'Tem certeza que deseja excluir?', :method => :delete
|
||||
= formatted(event.description)
|
||||
= "Sem descrição" if event.description.empty?
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
= "Evento " + link_to(h(entry.event.title), course_event_url(entry.course, entry.event))
|
||||
= "Evento " + link_to(h(entry.event.title), course_event_url(entry.course, entry.event, :version => entry.version))
|
||||
|
||||
= "criado " if entry.kind_of?(EventCreateLogEntry)
|
||||
= "editado " if entry.kind_of?(EventEditLogEntry)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
= "Notícia " + link_to(h(entry.news.title), course_news_url(entry.course, entry.news))
|
||||
= "Notícia " + link_to(h(entry.news.title), course_news_url(entry.course, entry.news, :version => entry.version))
|
||||
|
||||
= "criada " if entry.kind_of?(NewsCreateLogEntry)
|
||||
= "editada " if entry.kind_of?(NewsEditLogEntry)
|
||||
|
||||
@@ -14,6 +14,9 @@
|
||||
- if !@course.news.empty?
|
||||
%table
|
||||
- @course.news.each do |n|
|
||||
|
||||
- n.revert_to(params[:version]) if (n.id == params[:id].to_i) and (params[:version])
|
||||
|
||||
%tr[n]
|
||||
%td.top.aright{:width => '1%'}
|
||||
= n.timestamp.strftime("%d de %B")
|
||||
@@ -21,7 +24,7 @@
|
||||
.title= link_to h(n.title), course_news_url(@course, n)
|
||||
.description{:style => (n.id == params[:id].to_i ? '' : 'display: none')}
|
||||
.cmd
|
||||
= action_icon 'edit', 'Editar', edit_course_news_url(@course, n)
|
||||
= action_icon 'edit', 'Editar', edit_course_news_url(@course, n, :version => n.version)
|
||||
= action_icon 'trash', 'Excluir', course_news_url(@course, n), :confirm => 'Tem certeza que deseja excluir?', :method => :delete
|
||||
= formatted(n.body)
|
||||
= "Sem descrição" if n.body.empty?
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
%h4.title= @course.full_name
|
||||
%h1.title Adicionar evento
|
||||
%h1.title Adicionar notícia
|
||||
|
||||
- form_tag course_news_url(@course, @news), :method => :post do
|
||||
= render :partial => 'form'
|
||||
|
||||
Reference in New Issue
Block a user