mirror of
https://github.com/openSUSE/osem.git
synced 2026-08-13 19:54:02 +00:00
* 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:
parent
2b5e40bc96
commit
73013bd3e6
14 changed files with 96 additions and 48 deletions
|
|
@ -1,7 +1,9 @@
|
||||||
class Admin::EventsController < ApplicationController
|
class Admin::EventsController < ApplicationController
|
||||||
before_filter :verify_organizer
|
before_filter :verify_organizer
|
||||||
layout "admin"
|
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)
|
def set_timezone_for_this_request(&block)
|
||||||
Time.use_zone(@conference.timezone, &block)
|
Time.use_zone(@conference.timezone, &block)
|
||||||
|
|
@ -9,6 +11,7 @@ class Admin::EventsController < ApplicationController
|
||||||
|
|
||||||
def index
|
def index
|
||||||
@events = @conference.events
|
@events = @conference.events
|
||||||
|
@tracks = @conference.tracks
|
||||||
respond_to do |format|
|
respond_to do |format|
|
||||||
format.html
|
format.html
|
||||||
format.json { render :json => Event.where(:state => :confirmed) }
|
format.json { render :json => Event.where(:state => :confirmed) }
|
||||||
|
|
@ -50,7 +53,7 @@ class Admin::EventsController < ApplicationController
|
||||||
if params.has_key? :track_id
|
if params.has_key? :track_id
|
||||||
@event.update_attribute(:track_id, params[:track_id])
|
@event.update_attribute(:track_id, params[:track_id])
|
||||||
end
|
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
|
end
|
||||||
|
|
||||||
def create
|
def create
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,16 @@ class Admin::PeopleController < ApplicationController
|
||||||
|
|
||||||
def index
|
def index
|
||||||
@people = Person.all
|
@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
|
end
|
||||||
|
|
||||||
def create
|
def create
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
class Admin::ScheduleController < ApplicationController
|
class Admin::ScheduleController < ApplicationController
|
||||||
before_filter :verify_organizer
|
before_filter :verify_organizer
|
||||||
|
skip_before_filter :verify_authenticity_token, :only => [:update]
|
||||||
layout "schedule"
|
layout "schedule"
|
||||||
|
|
||||||
def show
|
def show
|
||||||
|
|
@ -39,8 +40,11 @@ class Admin::ScheduleController < ApplicationController
|
||||||
time = "#{params[:date]} #{params[:time]}"
|
time = "#{params[:date]} #{params[:time]}"
|
||||||
|
|
||||||
Rails.logger.debug("Loading #{time}")
|
Rails.logger.debug("Loading #{time}")
|
||||||
zone = ActiveSupport::TimeZone::new(@conference.timezone)
|
# FIXME: Same here as in events_controller.rb. Event timezone should be applied
|
||||||
startTime = DateTime.strptime(time + zone.formatted_offset, "%Y-%m-%d %k:%M %Z")
|
# 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.start_time = startTime
|
||||||
event.save!
|
event.save!
|
||||||
render :json => {"status" => "ok"}
|
render :json => {"status" => "ok"}
|
||||||
|
|
|
||||||
|
|
@ -20,6 +20,15 @@ module ApplicationHelper
|
||||||
return !!current_user.role?(role.to_s.camelize)
|
return !!current_user.role?(role.to_s.camelize)
|
||||||
end
|
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
|
# TODO Output better html
|
||||||
def format_comments(comment, padding = 0)
|
def format_comments(comment, padding = 0)
|
||||||
result = ""
|
result = ""
|
||||||
|
|
|
||||||
|
|
@ -38,7 +38,7 @@ class Event < ActiveRecord::Base
|
||||||
transitions :to => :review, :from => [:new, :rejected, :canceled]
|
transitions :to => :review, :from => [:new, :rejected, :canceled]
|
||||||
end
|
end
|
||||||
event :withdraw do
|
event :withdraw do
|
||||||
transitions :to => :withdrawn, :from => [:new, :review, :unconfirmed]
|
transitions :to => :withdrawn, :from => [:new, :review, :unconfirmed, :confirmed]
|
||||||
end
|
end
|
||||||
event :accept do
|
event :accept do
|
||||||
transitions :to => :unconfirmed, :from => [:new, :review], :on_transition => :process_acceptance
|
transitions :to => :unconfirmed, :from => [:new, :review], :on_transition => :process_acceptance
|
||||||
|
|
|
||||||
|
|
@ -79,4 +79,17 @@ class Person < ActiveRecord::Base
|
||||||
self.guid = guid
|
self.guid = guid
|
||||||
end
|
end
|
||||||
|
|
||||||
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
|
||||||
|
|
|
||||||
|
|
@ -7,25 +7,49 @@
|
||||||
.well
|
.well
|
||||||
%table.table.table-striped.table-bordered.table-hover#events
|
%table.table.table-striped.table-bordered.table-hover#events
|
||||||
%thead
|
%thead
|
||||||
|
%th
|
||||||
|
%b ID
|
||||||
%th
|
%th
|
||||||
%b Title
|
%b Title
|
||||||
%th
|
%th
|
||||||
%b Submitter
|
%b Submitter
|
||||||
%th
|
%th
|
||||||
%b Type
|
%b Type
|
||||||
|
%th
|
||||||
|
%b Track
|
||||||
%th
|
%th
|
||||||
%b State
|
%b State
|
||||||
- @events.each do |event|
|
- @events.each do |event|
|
||||||
%tr
|
%tr
|
||||||
%td
|
%td
|
||||||
=link_to event.title, admin_conference_event_path(@conference.short_title, event)
|
= event.id
|
||||||
%td
|
%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?
|
- if !event.submitter.nil?
|
||||||
=link_to event.submitter.public_name, admin_person_path(event.submitter)
|
=link_to event.submitter.public_name, admin_person_path(event.submitter)
|
||||||
|
- if event.submitter.registrations.count < 1
|
||||||
|
(Unregistered!)
|
||||||
- else
|
- else
|
||||||
Unknown submitter
|
Unknown submitter
|
||||||
%td
|
%td
|
||||||
= event.event_type.title
|
= 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
|
%td
|
||||||
- if event.state == "withdrawn"
|
- if event.state == "withdrawn"
|
||||||
Withdrawn
|
Withdrawn
|
||||||
|
|
|
||||||
|
|
@ -28,8 +28,7 @@
|
||||||
:javascript
|
:javascript
|
||||||
$(document).ready(function() {
|
$(document).ready(function() {
|
||||||
$('#people').dataTable( {
|
$('#people').dataTable( {
|
||||||
"bScrollInfinite": true,
|
"bPaginate": false,
|
||||||
"bScrollCollapse": true,
|
"bLengthChange": false
|
||||||
"sScrollY": "200px"
|
|
||||||
} );
|
} );
|
||||||
} );
|
} );
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
.schedule-time-column
|
.schedule-time-column
|
||||||
.schedule-time-column-header
|
.schedule-time-column-header
|
||||||
= Time
|
= Time
|
||||||
- (7..23).each do |hour|
|
- (9..18).each do |hour|
|
||||||
.schedule-time-slot
|
.schedule-time-slot
|
||||||
= "#{hour}:00"
|
= "#{hour}:00"
|
||||||
.schedule-time-slot
|
.schedule-time-slot
|
||||||
|
|
@ -15,8 +15,9 @@
|
||||||
.schedule-room-column{:id => "schedule-room-#{room.guid}", "room-guid" => room.guid}
|
.schedule-room-column{:id => "schedule-room-#{room.guid}", "room-guid" => room.guid}
|
||||||
.schedule-room-column-header
|
.schedule-room-column-header
|
||||||
= room.name
|
= 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}-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}-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"}
|
.schedule-room-slot{:id => "schedule-room-#{room.guid}-#{hour}-30", "room-guid" => room.guid, "hour" => "#{hour}:30"}
|
||||||
.schedule-room-slot{:id => "schedule-room-#{room.guid}-#{hour}-45", "room-guid" => room.guid, "hour" => "#{hour}:45"}
|
.schedule-room-slot{:id => "schedule-room-#{room.guid}-#{hour}-45", "room-guid" => room.guid, "hour" => "#{hour}:45"}
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,10 @@
|
||||||
.well
|
.well
|
||||||
%table.table.table-striped.table-bordered.table-hover#users
|
%table.table.table-striped.table-bordered.table-hover#users
|
||||||
%thead
|
%thead
|
||||||
|
%th
|
||||||
|
%b ID
|
||||||
|
%th
|
||||||
|
%b State
|
||||||
%th
|
%th
|
||||||
%b Email
|
%b Email
|
||||||
%th
|
%th
|
||||||
|
|
@ -21,7 +25,15 @@
|
||||||
%th
|
%th
|
||||||
%th
|
%th
|
||||||
- @users.each do |user|
|
- @users.each do |user|
|
||||||
|
- person = Person.find_person_by_user_id(user.id)
|
||||||
%tr
|
%tr
|
||||||
|
%td
|
||||||
|
= user.id
|
||||||
|
%td
|
||||||
|
- if user.confirmed?
|
||||||
|
confirmed
|
||||||
|
- else
|
||||||
|
unconfirmed
|
||||||
%td
|
%td
|
||||||
= user.email
|
= user.email
|
||||||
%td
|
%td
|
||||||
|
|
@ -63,8 +75,7 @@
|
||||||
:javascript
|
:javascript
|
||||||
$(document).ready(function() {
|
$(document).ready(function() {
|
||||||
$('#users').dataTable( {
|
$('#users').dataTable( {
|
||||||
"bScrollInfinite": true,
|
"bPaginate": false,
|
||||||
"bScrollCollapse": true,
|
"bLengthChange": false
|
||||||
"sScrollY": "200px"
|
|
||||||
} );
|
} );
|
||||||
} );
|
} );
|
||||||
|
|
|
||||||
File diff suppressed because one or more lines are too long
|
|
@ -30,7 +30,7 @@ var scheduleDayEvents = {};
|
||||||
var Schedule = {
|
var Schedule = {
|
||||||
loadEvents: function(conference_id, start_date) {
|
loadEvents: function(conference_id, start_date) {
|
||||||
var eventDates = {};
|
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 params = { start: $('#start').text(), end: $('#end').text()};
|
||||||
var callback = function(data) {
|
var callback = function(data) {
|
||||||
$.each(data, function(key, val) {
|
$.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 onclick="Schedule.remove(\'event-' + vars["guid"] + '\', \'' + conference_id +'\');" class="schedule-event-delete-button">X</div>'
|
||||||
+ '<div>' + vars["title"] + '</div></div>');
|
+ '<div>' + vars["title"] + '</div></div>');
|
||||||
var date = "none";
|
var date = "none";
|
||||||
var hour = "14";
|
var hour = "12";
|
||||||
var minute = "0";
|
var minute = "0";
|
||||||
console.log(vars);
|
console.log(vars);
|
||||||
if (vars["start_time"] != null) {
|
if (vars["start_time"] != null) {
|
||||||
|
|
@ -55,7 +55,7 @@ var Schedule = {
|
||||||
+ ('0' + d.getUTCDate()).slice(-2);
|
+ ('0' + d.getUTCDate()).slice(-2);
|
||||||
hour = d.getUTCHours();
|
hour = d.getUTCHours();
|
||||||
minute = d.getUTCMinutes();
|
minute = d.getUTCMinutes();
|
||||||
console.log(d);
|
console.log("date: " + d);
|
||||||
}
|
}
|
||||||
newEvent.addClass("schedule-event");
|
newEvent.addClass("schedule-event");
|
||||||
newEvent.css('background-color',vars["track_color"]);
|
newEvent.css('background-color',vars["track_color"]);
|
||||||
|
|
@ -104,7 +104,7 @@ var Schedule = {
|
||||||
var e = $("#" + element);
|
var e = $("#" + element);
|
||||||
var unscheduled = $("#unscheduled");
|
var unscheduled = $("#unscheduled");
|
||||||
|
|
||||||
var url = '/admin/conference/' + conference_id + '/schedule';
|
var url = '/osem/admin/conference/' + conference_id + '/schedule';
|
||||||
var params = {
|
var params = {
|
||||||
event: e.attr("guid"),
|
event: e.attr("guid"),
|
||||||
room: "none",
|
room: "none",
|
||||||
|
|
@ -156,7 +156,7 @@ var Schedule = {
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
save: function (conference_id, event_id, room_id, date, time) {
|
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 = {
|
var params = {
|
||||||
event: event_id,
|
event: event_id,
|
||||||
room: room_id,
|
room: room_id,
|
||||||
|
|
@ -175,4 +175,4 @@ var Schedule = {
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue