Implement track requests and add the track organizer role

About track requests:
Create migration that adds the fields submitter_id, state, and
cfp_active to Tracks
Add validations and the self_organized? method to the Track model
Create a new TracksController outide of the admin namespace
Create the relevant views for index, show, new and edit
Modify the admin views for tracks to include extra info for
self-organized tracks

About track organizers:
Create the role when a self-organized track is created
Define track organizer abilities
Modify the roles views and controller to handle the new role

The route for Roles#edit needs to have higher priority than the nested
routes for track roles, otherwise, the word edit in the url is matched
as a track with short_name edit
This commit is contained in:
AEtherC0r3 2017-06-08 12:25:33 +03:00 committed by Stella Rouzi
parent 98fc1137e1
commit 68fc750e9f
26 changed files with 766 additions and 27 deletions

View file

@ -0,0 +1,17 @@
.container
.row
.col-md-12
.page-header
%h1
- if @track.new_record?
New
= @track.name
Track
.row
.col-md-12
= semantic_form_for(@track, url: (@track.new_record? ? conference_program_tracks_path : conference_program_track_path(@conference.short_title, @track.short_name))) do |f|
= f.input :name
= f.input :short_name, hint: "A short and unique handle for the track, using only letters, numbers, underscores, and dashes. This will be used to identify the track in URLs etc. Example: 'my_awesome_track'", input_html: { required: 'required', pattern: '[a-zA-Z0-9_-]+', title: 'Only letters, numbers, underscores, and dashes.' }
= f.input :color, input_html: {size: 6, type: 'color'}, required: true
= f.input :description, input_html: {rows: 2, data: { provide: 'markdown-editable' } }, required: true, hint: markdown_hint
= f.action :submit, as: :button, button_html: { class: 'btn btn-primary' }

View file

@ -0,0 +1,43 @@
.container
.row
.col-md-12.page-header
%h1
Track requests for
%span.notranslate
= @conference.title
- if @tracks.any?
.row
.col-md-12
%table.table.table-hover#tracks
%thead
%th Name
%th Short name
%th Description
%th Color
%th State
%th Actions
%tbody
- @tracks.each do |track|
%tr
%td
= link_to(conference_program_track_path(@conference.short_title, track.short_name)) do
= track.name
%td
= track.short_name
%td
%p
= truncate(track.description)
%td
%span.label{style: "background-color: #{track.color}; color: #{ contrast_color(track.color) }"}
= track.color
%td
= track.state
%td
= link_to 'Edit', edit_conference_program_track_path(@conference.short_title, track.short_name),
method: :get, class: 'btn btn-primary'
.row
.col-md-12
- if can? :create, @track
= link_to "New Track request", new_conference_program_track_path(@conference.short_title), class: 'btn btn-success pull-right'

View file

@ -0,0 +1,26 @@
.container
.row
.col-md-12
.page-header
%h1
= @track.name
Track
.row
.col-md-8
%dl.dl-horizontal
%dt
Color:
%dd
%span.label{style: "background-color: #{@track.color}; color: #{ contrast_color(@track.color) }"}
= @track.color
%dt
State:
%dd
= @track.state
%dt
Description
%dd
= @track.description
.row
.col-md-12.text-right
= link_to 'Edit Track request', edit_conference_program_track_path(@conference.short_title, @track.short_name), class: 'btn btn-primary'