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
|
||||
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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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"}
|
||||
|
|
|
|||
|
|
@ -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 = ""
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -28,8 +28,7 @@
|
|||
:javascript
|
||||
$(document).ready(function() {
|
||||
$('#people').dataTable( {
|
||||
"bScrollInfinite": true,
|
||||
"bScrollCollapse": true,
|
||||
"sScrollY": "200px"
|
||||
"bPaginate": false,
|
||||
"bLengthChange": false
|
||||
} );
|
||||
} );
|
||||
|
|
|
|||
|
|
@ -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"}
|
||||
|
|
|
|||
|
|
@ -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
|
|
@ -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,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue