Dashboard agora com rss e ical
This commit is contained in:
@@ -41,7 +41,7 @@ class EventsController < ApplicationController
|
||||
@event.created_by = session[:user_id]
|
||||
@event.save!
|
||||
flash[:notice] = 'Event created'[]
|
||||
|
||||
|
||||
EventCreateLogEntry.create!(:target_id => @event.id, :user => @current_user, :course => @course)
|
||||
|
||||
respond_to do |format|
|
||||
|
||||
@@ -19,6 +19,8 @@ class LogController < ApplicationController
|
||||
@log_entries = @course.log_entries.find(:all, :limit => 50) #.paginate(:page => params[:page], :per_page => 30)
|
||||
respond_to do |format|
|
||||
format.html
|
||||
format.rss { response.content_type = Mime::RSS }
|
||||
format.xml { render :xml => @log_entries }
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@@ -68,7 +68,7 @@ class UsersController < ApplicationController
|
||||
@user.save!
|
||||
setup_session(@user)
|
||||
flash[:message] = 'User account created'[]
|
||||
redirect_to user_path(@user)
|
||||
redirect_to dashboard_url
|
||||
rescue ActiveRecord::RecordInvalid
|
||||
flash[:warning] = 'Não foi possível cadastrar a conta.'
|
||||
end
|
||||
@@ -82,7 +82,7 @@ class UsersController < ApplicationController
|
||||
@user.save!
|
||||
@color = @user.pref_color
|
||||
flash[:message] = 'Settings updated'[]
|
||||
redirect_to index_path
|
||||
redirect_to dashboard_url
|
||||
end
|
||||
end
|
||||
|
||||
@@ -109,12 +109,25 @@ class UsersController < ApplicationController
|
||||
def dashboard
|
||||
@news = []
|
||||
@events = []
|
||||
|
||||
if params[:format] == 'html'
|
||||
return unless require_login
|
||||
@user = @current_user
|
||||
else
|
||||
@user = User.find_by_secret(params[:secret])
|
||||
end
|
||||
|
||||
unless @current_user.courses.empty?
|
||||
@news = News.find(:all, :conditions => [ 'receiver_id in (?)', @current_user.courses ],
|
||||
unless @user.courses.empty?
|
||||
@news = News.find(:all, :conditions => [ 'receiver_id in (?)', @user.courses ],
|
||||
:order => 'timestamp desc', :limit => 5)
|
||||
@events = Event.find(:all, :conditions => [ 'course_id in (?) and (time > ?) and (time < ?)',
|
||||
@current_user.courses, 1.day.ago, 21.days.from_now ], :order => 'time')
|
||||
@user.courses, 1.day.ago, 21.days.from_now ], :order => 'time')
|
||||
end
|
||||
|
||||
respond_to do |format|
|
||||
format.html
|
||||
format.rss { response.content_type = Mime::RSS }
|
||||
format.ics { response.content_type = Mime::ICS; render :text => Event.to_ical(@user.courses) }
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@@ -16,6 +16,21 @@ class LogEntry < ActiveRecord::Base
|
||||
belongs_to :course
|
||||
|
||||
def reversible?() false end
|
||||
|
||||
def to_xml(options = {})
|
||||
options[:indent] ||= 2
|
||||
xml = options[:builder] ||= Builder::XmlMarkup.new(:indent => options[:indent])
|
||||
xml.instruct! unless options[:skip_instruct]
|
||||
xml.log_entry do
|
||||
xml.id self.id
|
||||
xml.course_id self.course_id
|
||||
xml.created_at self.created_at
|
||||
xml.target_id self.target_id
|
||||
xml.user_id self.user_id
|
||||
xml.type self.type
|
||||
xml.version self.version unless self.version.nil?
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
require 'log_entry/attachment_log_entry.rb'
|
||||
|
||||
@@ -48,6 +48,8 @@ class User < ActiveRecord::Base
|
||||
xml.user do
|
||||
xml.id self.id
|
||||
xml.name self.name
|
||||
xml.display_name self.display_name
|
||||
xml.login self.login
|
||||
xml.created_at self.created_at
|
||||
xml.last_seen self.last_seen
|
||||
xml.description self.description
|
||||
@@ -91,6 +93,7 @@ class User < ActiveRecord::Base
|
||||
|
||||
def before_save
|
||||
self.salt = User.random_string(10) if !self.salt?
|
||||
self.secret = User.random_string(32) if !self.secret?
|
||||
self.hashed_password = User.encrypt(@password, self.salt) if !@password.blank?
|
||||
end
|
||||
|
||||
|
||||
@@ -47,5 +47,5 @@
|
||||
.content= @content
|
||||
%br{'style' => 'clear:both'}
|
||||
|
||||
#footer
|
||||
#footer
|
||||
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
%h4.title= h(@course.full_name)
|
||||
%h1.title Mudanças recentes
|
||||
|
||||
= auto_discovery_link_tag :rss, formatted_course_log_url(@course, :rss)
|
||||
|
||||
.box
|
||||
%table
|
||||
%tr
|
||||
@@ -11,9 +13,4 @@
|
||||
%tr
|
||||
%td= entry.created_at.strftime("%d/%m/%y %H:%M:%S")
|
||||
%td= link_to truncate(h(entry.user.display_name), 20), user_path(entry.user)
|
||||
%td
|
||||
= render(:partial => 'log/attachment_log_entry', :locals => { :entry => entry }) if entry.kind_of?(AttachmentLogEntry)
|
||||
= render(:partial => 'log/event_log_entry', :locals => { :entry => entry }) if entry.kind_of?(EventLogEntry)
|
||||
= render(:partial => 'log/news_log_entry', :locals => { :entry => entry }) if entry.kind_of?(NewsLogEntry)
|
||||
= render(:partial => 'log/wiki_log_entry', :locals => { :entry => entry }) if entry.kind_of?(WikiLogEntry)
|
||||
= "(" + link_to("undo", undo_course_log_url(@course, entry)) + ")" if entry.reversible?
|
||||
%td= render(:partial => 'log/log_entry', :locals => { :entry => entry })
|
||||
|
||||
@@ -28,11 +28,6 @@ h1, h2, h3, h4, h5, th {
|
||||
background-color: <%= color[0] %>;
|
||||
}
|
||||
|
||||
#footer {
|
||||
background-color: <%= color[3] %>;
|
||||
border-top: 5px solid <%= color[3] %>;
|
||||
}
|
||||
|
||||
.icon img:hover {
|
||||
background-color: <%= color[1] %>;
|
||||
}
|
||||
|
||||
@@ -120,13 +120,15 @@ body {
|
||||
font-weight: normal;
|
||||
min-width: 780px;
|
||||
|
||||
background-image: url(<%= App.base_path %>/images/bg_body.png);
|
||||
background-repeat: repeat-x;
|
||||
background-color: #f4f4f4;
|
||||
background-color: #fff;
|
||||
}
|
||||
|
||||
#wrapper {
|
||||
margin: 0em auto;
|
||||
margin: 0em -9px;
|
||||
padding: 0px 9px;
|
||||
background-image: url(<%= App.base_path %>/images/bg_body.png);
|
||||
background-repeat: repeat-x;
|
||||
background-color: #f4f4f4;
|
||||
}
|
||||
|
||||
#header {
|
||||
@@ -194,16 +196,14 @@ body {
|
||||
#site {
|
||||
padding: 0px;
|
||||
margin-top: 18px;
|
||||
border-bottom: 30px solid #eee;
|
||||
}
|
||||
|
||||
#footer {
|
||||
display: none;
|
||||
background-image: url(<%= App.base_path %>/images/footer_bg.png);
|
||||
background-position: top;
|
||||
background-repeat: repeat-x;
|
||||
margin: 0em;
|
||||
height: 10em;
|
||||
border-top: 3px solid #f0f0f0;
|
||||
margin: 0px -9px;
|
||||
padding: 18px 0px;
|
||||
text-align: center;
|
||||
color: #aaa;
|
||||
}
|
||||
|
||||
.float_panel_left {
|
||||
|
||||
@@ -1,15 +1,18 @@
|
||||
%h4.title Dashboard
|
||||
%h1.title= "Bem vindo, #{h(@current_user.display_name)}"
|
||||
|
||||
= auto_discovery_link_tag :rss, formatted_dashboard_url(:secret => @current_user.secret, :format => 'rss')
|
||||
|
||||
.dashboard
|
||||
.box
|
||||
.cmd
|
||||
=link_to "rss", formatted_dashboard_url(:secret => @current_user.secret, :format => 'rss')
|
||||
- last_time = nil
|
||||
%h3 Notícias Recentes
|
||||
|
||||
%h3 Notícias Recentes
|
||||
- if @news.empty?
|
||||
%ul
|
||||
%li.no_itens Nenhum notícia recente
|
||||
|
||||
%table
|
||||
- @news.each do |n|
|
||||
%tr
|
||||
@@ -22,13 +25,14 @@
|
||||
%p= h(n.body)
|
||||
|
||||
.box
|
||||
.cmd
|
||||
=link_to "ical", formatted_dashboard_url(:secret => @current_user.secret, :format => 'ics')
|
||||
- last_time = nil
|
||||
%h3 Próximos Eventos
|
||||
|
||||
%h3 Próximos Eventos
|
||||
- if @events.empty?
|
||||
%ul
|
||||
%li.no_itens Nenhum evento próximo
|
||||
|
||||
%table
|
||||
- @events.each do |n|
|
||||
%tr
|
||||
@@ -49,3 +53,4 @@
|
||||
|
||||
- @current_user.courses.each do |course|
|
||||
%li= link_to(h(course.full_name), course_url(course))
|
||||
|
||||
|
||||
18
app/views/users/dashboard.rss.builder
Normal file
18
app/views/users/dashboard.rss.builder
Normal file
@@ -0,0 +1,18 @@
|
||||
xml.instruct! :xml, :version=>"1.0"
|
||||
xml.rss(:version=>"2.0") do
|
||||
xml.channel do
|
||||
xml.title("#{App.title} - " + "News"[].titleize)
|
||||
xml.link(dashboard_url)
|
||||
xml.language(App.language)
|
||||
xml.description("{app} news"[:news_about, App.title])
|
||||
for news_item in @news
|
||||
xml.item do
|
||||
xml.title(news_item.course.short_name + ": " + news_item.title)
|
||||
xml.description(news_item.body)
|
||||
xml.pubDate(news_item.timestamp.rfc2822)
|
||||
xml.link(course_news_url(news_item.course, news_item))
|
||||
xml.guid(course_news_url(news_item.course, news_item))
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user