* Add ID and track to the event overview

* Get rid of the timezones in the schedule, need to deal with that on output
* Skip auth token verfiy on schedule updates
* Make it possible to withdraw confirmed submissions
* Show if people are not registerd
This commit is contained in:
Henne Vogelsang 2013-06-14 13:17:40 +02:00 committed by Henne Vogelsang
parent 2b5e40bc96
commit 73013bd3e6
14 changed files with 96 additions and 48 deletions

View file

@ -1,7 +1,9 @@
class Admin::EventsController < ApplicationController
before_filter :verify_organizer
layout "admin"
around_filter :set_timezone_for_this_request
# FIXME: The timezome should only be applied on output, otherwise
# you get lost in timezone conversions...
# around_filter :set_timezone_for_this_request
def set_timezone_for_this_request(&block)
Time.use_zone(@conference.timezone, &block)
@ -9,6 +11,7 @@ class Admin::EventsController < ApplicationController
def index
@events = @conference.events
@tracks = @conference.tracks
respond_to do |format|
format.html
format.json { render :json => Event.where(:state => :confirmed) }
@ -50,7 +53,7 @@ class Admin::EventsController < ApplicationController
if params.has_key? :track_id
@event.update_attribute(:track_id, params[:track_id])
end
redirect_to(admin_conference_event_path(@conference.short_title, @event), :notice => "Updated")
redirect_back_or_to(admin_conference_event_path(@conference.short_title, @event), :notice => "Updated")
end
def create

View file

@ -4,6 +4,16 @@ class Admin::PeopleController < ApplicationController
def index
@people = Person.all
mails = []
@people.each do |p|
if p.registrations.count < 1 and p.confirmed?
mails << p.email
end
end
respond_to do |format|
format.html
format.text { render :text => mails }
end
end
def create

View file

@ -1,5 +1,6 @@
class Admin::ScheduleController < ApplicationController
before_filter :verify_organizer
skip_before_filter :verify_authenticity_token, :only => [:update]
layout "schedule"
def show
@ -39,8 +40,11 @@ class Admin::ScheduleController < ApplicationController
time = "#{params[:date]} #{params[:time]}"
Rails.logger.debug("Loading #{time}")
zone = ActiveSupport::TimeZone::new(@conference.timezone)
startTime = DateTime.strptime(time + zone.formatted_offset, "%Y-%m-%d %k:%M %Z")
# FIXME: Same here as in events_controller.rb. Event timezone should be applied
# only on output
# zone = ActiveSupport::TimeZone::new(@conference.timezone)
# startTime = DateTime.strptime(time + zone.formatted_offset, "%Y-%m-%d %k:%M %Z")
startTime = DateTime.strptime(time, "%Y-%m-%d %k:%M")
event.start_time = startTime
event.save!
render :json => {"status" => "ok"}

View file

@ -20,6 +20,15 @@ module ApplicationHelper
return !!current_user.role?(role.to_s.camelize)
end
# Same as redirect_to(:back) if there is a valid HTTP referer, otherwise redirect_to()
def redirect_back_or_to(options = {}, response_status = {})
if request.env["HTTP_REFERER"]
redirect_to(:back)
else
redirect_to(options, response_status)
end
end
# TODO Output better html
def format_comments(comment, padding = 0)
result = ""

View file

@ -38,7 +38,7 @@ class Event < ActiveRecord::Base
transitions :to => :review, :from => [:new, :rejected, :canceled]
end
event :withdraw do
transitions :to => :withdrawn, :from => [:new, :review, :unconfirmed]
transitions :to => :withdrawn, :from => [:new, :review, :unconfirmed, :confirmed]
end
event :accept do
transitions :to => :unconfirmed, :from => [:new, :review], :on_transition => :process_acceptance

View file

@ -79,4 +79,17 @@ class Person < ActiveRecord::Base
self.guid = guid
end
def confirmed?
if User.exists?(self.user_id)
user = User.find(self.user_id)
if user.confirmed?
true
else
false
end
else
false
end
end
end

View file

@ -7,25 +7,49 @@
.well
%table.table.table-striped.table-bordered.table-hover#events
%thead
%th
%b ID
%th
%b Title
%th
%b Submitter
%th
%b Type
%th
%b Track
%th
%b State
- @events.each do |event|
%tr
%td
=link_to event.title, admin_conference_event_path(@conference.short_title, event)
= event.id
%td
=link_to event.title, admin_conference_event_path(@conference.short_title, event)
- if event.submitter.registrations.count < 1
- bgcolor="#F7819F"
- else
- bgcolor=""
%td{:style=>"background-color: #{bgcolor}"}
- if !event.submitter.nil?
=link_to event.submitter.public_name, admin_person_path(event.submitter)
- if event.submitter.registrations.count < 1
(Unregistered!)
- else
Unknown submitter
%td
= event.event_type.title
%td
.dropdown
= link_to "#", :class => "dropdown-toggle", :id => "track-dropdown" do
- if event.track.nil?
Track
- else
= event.track.name
<b class="caret"></b>
%ul.dropdown-menu
- @tracks.each do |track|
%li= link_to track.name, admin_conference_event_path(@conference.short_title, event, :track_id => track.id) ,
:method => :put, :track_id => track.id
%td
- if event.state == "withdrawn"
Withdrawn

View file

@ -28,8 +28,7 @@
:javascript
$(document).ready(function() {
$('#people').dataTable( {
"bScrollInfinite": true,
"bScrollCollapse": true,
"sScrollY": "200px"
"bPaginate": false,
"bLengthChange": false
} );
} );

View file

@ -1,7 +1,7 @@
.schedule-time-column
.schedule-time-column-header
= Time
- (7..23).each do |hour|
- (9..18).each do |hour|
.schedule-time-slot
= "#{hour}:00"
.schedule-time-slot
@ -15,7 +15,8 @@
.schedule-room-column{:id => "schedule-room-#{room.guid}", "room-guid" => room.guid}
.schedule-room-column-header
= room.name
- (7..23).each do |hour|
= "(#{room.size} people)"
- (9..18).each do |hour|
.schedule-room-slot{:id => "schedule-room-#{room.guid}-#{hour}-0", "room-guid" => room.guid, "hour" => "#{hour}:00"}
.schedule-room-slot{:id => "schedule-room-#{room.guid}-#{hour}-15", "room-guid" => room.guid, "hour" => "#{hour}:15"}
.schedule-room-slot{:id => "schedule-room-#{room.guid}-#{hour}-30", "room-guid" => room.guid, "hour" => "#{hour}:30"}

View file

@ -8,6 +8,10 @@
.well
%table.table.table-striped.table-bordered.table-hover#users
%thead
%th
%b ID
%th
%b State
%th
%b Email
%th
@ -21,7 +25,15 @@
%th
%th
- @users.each do |user|
- person = Person.find_person_by_user_id(user.id)
%tr
%td
= user.id
%td
- if user.confirmed?
confirmed
- else
unconfirmed
%td
= user.email
%td
@ -63,8 +75,7 @@
:javascript
$(document).ready(function() {
$('#users').dataTable( {
"bScrollInfinite": true,
"bScrollCollapse": true,
"sScrollY": "200px"
"bPaginate": false,
"bLengthChange": false
} );
} );

File diff suppressed because one or more lines are too long

View file

@ -30,7 +30,7 @@ var scheduleDayEvents = {};
var Schedule = {
loadEvents: function(conference_id, start_date) {
var eventDates = {};
var url = '/admin/conference/' + conference_id + '/events';
var url = '/osem/admin/conference/' + conference_id + '/events';
var params = { start: $('#start').text(), end: $('#end').text()};
var callback = function(data) {
$.each(data, function(key, val) {
@ -45,7 +45,7 @@ var Schedule = {
+ '<div onclick="Schedule.remove(\'event-' + vars["guid"] + '\', \'' + conference_id +'\');" class="schedule-event-delete-button">X</div>'
+ '<div>' + vars["title"] + '</div></div>');
var date = "none";
var hour = "14";
var hour = "12";
var minute = "0";
console.log(vars);
if (vars["start_time"] != null) {
@ -55,7 +55,7 @@ var Schedule = {
+ ('0' + d.getUTCDate()).slice(-2);
hour = d.getUTCHours();
minute = d.getUTCMinutes();
console.log(d);
console.log("date: " + d);
}
newEvent.addClass("schedule-event");
newEvent.css('background-color',vars["track_color"]);
@ -104,7 +104,7 @@ var Schedule = {
var e = $("#" + element);
var unscheduled = $("#unscheduled");
var url = '/admin/conference/' + conference_id + '/schedule';
var url = '/osem/admin/conference/' + conference_id + '/schedule';
var params = {
event: e.attr("guid"),
room: "none",
@ -156,7 +156,7 @@ var Schedule = {
}
},
save: function (conference_id, event_id, room_id, date, time) {
var url = '/admin/conference/' + conference_id + '/schedule';
var url = '/osem/admin/conference/' + conference_id + '/schedule';
var params = {
event: event_id,
room: room_id,