Feature #1077 » ICS_Support__3.patch
| redmine/app/controllers/application.rb 2009-09-04 14:55:52.000000000 +0200 | ||
|---|---|---|
| 17 | 17 | |
| 18 | 18 |
require 'uri' |
| 19 | 19 |
require 'cgi' |
| 20 |
require 'icalendar' |
|
| 20 | 21 | |
| 21 | 22 |
class ApplicationController < ActionController::Base |
| 22 | 23 |
layout 'base' |
| ... | ... | |
| 163 | 164 |
render :template => "common/feed.atom.rxml", :layout => false, :content_type => 'application/atom+xml' |
| 164 | 165 |
end |
| 165 | 166 |
|
| 167 |
#EDIT |
|
| 168 |
def render_ics(items, options={})
|
|
| 169 |
cal = Icalendar::Calendar.new |
|
| 170 |
items.each { |i|
|
|
| 171 |
event = Icalendar::Event.new |
|
| 172 |
event.dtstart = i.start_date |
|
| 173 |
event.dtend = i.due_date |
|
| 174 |
if i.is_a? Issue |
|
| 175 |
event.summary = i.subject |
|
| 176 |
else |
|
| 177 |
event.summary = "V. " + i.name |
|
| 178 |
end |
|
| 179 |
|
|
| 180 |
if !i.description.nil? |
|
| 181 |
event.description = i.description |
|
| 182 |
end |
|
| 183 |
cal.add_event(event) |
|
| 184 |
} |
|
| 185 |
@cal_string = cal.to_ical |
|
| 186 |
render :template => "common/calendar.ics.erb", :layout => false , :content_type => Mime::ICS |
|
| 187 |
end |
|
| 188 |
|
|
| 189 |
|
|
| 166 | 190 |
def self.accept_key_auth(*actions) |
| 167 | 191 |
actions = actions.flatten.map(&:to_s) |
| 168 | 192 |
write_inheritable_attribute('accept_key_auth_actions', actions)
|
| redmine/app/controllers/issues_controller.rb 2009-09-04 14:50:42.000000000 +0200 | ||
|---|---|---|
| 366 | 366 |
retrieve_query |
| 367 | 367 |
if @query.valid? |
| 368 | 368 |
events = [] |
| 369 |
#EDIT |
|
| 370 |
if (request.format == Mime::ICS) |
|
| 371 |
@calendar.startdt = @project.created_on.to_s(:db) |
|
| 372 |
end |
|
| 369 | 373 |
events += Issue.find(:all, |
| 370 | 374 |
:include => [:tracker, :status, :assigned_to, :priority, :project], |
| 371 | 375 |
:conditions => ["(#{@query.statement}) AND ((start_date BETWEEN ? AND ?) OR (due_date BETWEEN ? AND ?))", @calendar.startdt, @calendar.enddt, @calendar.startdt, @calendar.enddt]
|
| ... | ... | |
| 376 | 380 |
@calendar.events = events |
| 377 | 381 |
end |
| 378 | 382 |
|
| 379 |
render :layout => false if request.xhr? |
|
| 383 |
#render :layout => false if request.xhr? |
|
| 384 |
#EDIT |
|
| 385 |
respond_to do |format| |
|
| 386 |
format.html { render :layout => false if request.xhr? }
|
|
| 387 |
format.ics { render_ics(events) }
|
|
| 388 |
end |
|
| 380 | 389 |
end |
| 381 | 390 |
|
| 382 | 391 |
def context_menu |
| redmine/app/views/common/calendar.ics.erb 2009-09-04 14:59:00.000000000 +0200 | ||
|---|---|---|
| 1 |
<%= @cal_string %> |
|
| redmine/lib/redmine/helpers/calendar.rb 2009-09-04 14:39:59.000000000 +0200 | ||
|---|---|---|
| 45 | 45 |
end |
| 46 | 46 |
end |
| 47 | 47 |
|
| 48 |
def startdt=(dt) |
|
| 49 |
@startdt = dt |
|
| 50 |
end |
|
| 51 |
|
|
| 48 | 52 |
# Sets calendar events |
| 49 | 53 |
def events=(events) |
| 50 | 54 |
@events = events |