Rename 'ConferenceController' to 'ConferencesController', and 'ProposalController' to 'ProposalsController'

This commit is contained in:
richiethomas 2016-09-14 22:42:04 -04:00
parent 0b6550d060
commit daf1f805bd
71 changed files with 225 additions and 191 deletions

View file

@ -0,0 +1,40 @@
- if campaigns && !campaigns.empty?
.row
.col-md-12
%p
Your target "#{campaigns.values[0]['target_name']}" from campaign "#{campaigns.values[0]['campaign_name']}" has generated
%strong
#{pluralize(campaigns.values[0]['value'], campaigns.values[0]['unit'])}
since #{campaigns.values[0]['created_at']}.
%p
That is
%strong{'style'=>"color: #{target_progress_color(campaigns.values[0]['progress'])};"}
#{campaigns.values[0]['progress']} %
of your target, there are
%strong{'style'=>"color: #{days_left_color(campaigns.values[0]['days_left'])};"}
#{pluralize(campaigns.values[0]['days_left'], 'day')} left.
.row
.col-md-12
%div{'style'=>'display: none;', 'id'=>"#{name}"}
- campaigns.drop(1).each do |(key, value)|
%div
%p
Your target "#{value['target_name']}" from campaign "#{value['campaign_name']}" has generated
%strong
#{pluralize(value['value'], value['unit'])}
since #{value['created_at']}.
%p
That is
%strong{'style'=>"color: #{target_progress_color(value['progress'])};"}
#{value['progress']} %
of your target, there are
%strong{'style'=>"color: #{days_left_color(value['days_left'])};"}
#{pluralize(value['days_left'], 'day')} left.
.row
.col-md-12
- if campaigns.length > 1
%a.show_targets{'href'=>'#', 'data-name'=>"#{name}"}
more
- else
%h5.text-warning.text-center
No Campaigns!

View file

@ -0,0 +1,6 @@
.text-center
%h4 #{title}
%canvas.doughnut_chart{"data-chart"=>data.to_json}
- if data
- data.each do |key, value|
%span{"style"=>"border-bottom: 3px solid #{value['color']}"} #{key}: #{value['value']}

View file

@ -0,0 +1,29 @@
.row
.col-md-12
.text-center
%h4
= title
.row
.col-md-12
.chart_data{ "data-chart"=>"#{y.to_json}", "data-conferences"=>"#{conferences.to_json}",
"data-deactive"=>"#{deactive_conferences.to_json}", "data-weeks"=>"#{x.to_json}",
"data-active"=>"#{active_conferences.to_json}"}
%canvas.line_chart{ :id => "line_chart_#{name}", "data-name"=>"#{name}" }
.row
.col-md-12
.text-center
= unit
.row
.col-md-12
.conferenceCheckboxes{ :id => "#{name}Checkboxes", "data-name"=>"#{name}" }
- if active_conferences && deactive_conferences && conferences && conferences.length > 1
- active_conferences.each do |conference|
%div
%span{ "style"=>"border-bottom: 3px solid #{conference[:color]};", "data-chart"=> "#{name}" }
%input{ "type"=>"checkbox", "name"=>"#{conference[:short_title]}", "checked"=>"checked"}
#{conference[:short_title]}
- deactive_conferences.each do |conference|
%div
%span{"style"=>"border-bottom: 3px solid #{conference[:color]};", "data-chart"=> "#{name}" }
%input{"type"=>"checkbox", "name"=>"#{conference[:short_title]}" }
#{conference[:short_title]}

View file

@ -0,0 +1,19 @@
- if recent_registrations && !recent_registrations.empty?
.table-responsive
%table.table
%thead
%tr
%th #
%th Public Name
%th Conference
%th Date
- recent_registrations.each_with_index do |registration, index|
%tbody
%tr
%td= index + 1
%td= link_to registration.name, admin_user_path(registration.user.id)
%td= link_to registration.conference.title, admin_conference_path(registration.conference.short_title)
%td= registration.created_at.strftime('%m/%d/%Y')
- else
%h5.text-warning.text-center
No registrations!

View file

@ -0,0 +1,25 @@
- if recent_events && !recent_events.empty?
.table-responsive
%table.table
%thead
%tr
%th #
%th Submitter
%th Title
%th Conference
%th Status
- recent_events.each_with_index do |event, index|
%tbody
%tr
%td= index + 1
- if event.submitter
%td= link_to event.submitter.name, admin_user_path(event.submitter.id)
- else
%td Unknown Submitter
%td= link_to event.title, admin_conference_program_event_path(event.program.conference.short_title, event)
%td= link_to event.program.conference.title, admin_conference_path(event.program.conference.short_title)
%td
.span{'class'=>label_for(event.state)} #{event.state.humanize}
- else
%h5.text-warning.text-center
No submissions!

View file

@ -0,0 +1,25 @@
- if recent_users && !recent_users.empty?
.table-responsive
%table.table
%thead
%tr
%th #
%th E-Mail
%th Date registered
%th Confirmed?
- recent_users.each_with_index do |user, index|
%tbody
%tr
%td= index + 1
%td= link_to user.email, admin_user_path(user.id)
%td= user.created_at.strftime('%m/%d/%Y')
%td
= check_box_tag user.id, user.id, user.confirmed?,
method: :patch,
url: "/admin/users/#{user.id}/toggle_confirmation?user[to_confirm]=",
class: 'switch-checkbox',
readonly: true,
data: { size: 'small', on_color: 'success', off_color: 'warning', on_text: 'Yes', off_text: 'No' }
- else
%h5.text-warning.text-center
No sign ups!

View file

@ -0,0 +1,32 @@
- if targets && !targets.empty?
.row
.col-md-8.col-md-offset-2
.row
.col-md-10
%h6.text-muted.pull-left
Target 1
.row
.col-md-10
.progress{'title'=>"#{targets.keys[0]}"}
.progress-bar{ 'role'=>'progressbar', 'aria-valuenow'=>"#{targets.values[0]}", 'aria-valuemin'=>'0',
'aria-valuemax'=>'100', 'style'=>"width: #{targets.values[0]}%;"}
= "#{targets.values[0]} %"
.row
.col-md-8.col-md-offset-2
%div{'style'=>'display: none;', 'id'=>"#{name}"}
- targets.drop(1).each_with_index do |(key, value), index|
.row
.col-md-10
%h6.text-muted.pull-left
= "Target #{index + 2}"
.row
.col-md-10
.progress{'title'=>"#{key}"}
.progress-bar{ 'role'=>'progressbar', 'aria-valuenow'=>"#{value}", 'aria-valuemin'=>'0',
'aria-valuemax'=>'100', 'style'=>"width: #{value}%;" }
= "#{value} %"
.row
.col-md-2.col-md-offset-2
- if targets.length > 1
%a.show_targets{'href'=>'#', 'data-name'=>"#{name}"}
more

View file

@ -0,0 +1,62 @@
.list-group
%li.list-group-item
%h4
Conference progress
.progress
.progress-bar{ 'role'=>'progressbar', 'aria-valuenow'=>"#{conference_progress['process']}", 'aria-valuemin'=>'0',
'aria-valuemax'=>'100', 'style'=>"width: #{conference_progress['process']}%;" }
= conference_progress['process'] + '%'
%li{'class'=>"list-group-item #{class_for_todo(conference_progress['registration'])}"}
%span{'class'=>icon_for_todo(conference_progress['registration'])}
- if can? :update, @conference
- if conference.registration_period
= link_to 'Set up registration period', edit_admin_conference_registration_period_path(conference_progress['short_title'])
- else
= link_to 'Set up registration period', new_admin_conference_registration_period_path(conference_progress['short_title'])
- else
Set up registration period
%li{'class'=>"list-group-item #{class_for_todo(conference_progress['cfp'])}"}
%span{'class'=>icon_for_todo(conference_progress['cfp'])}
- if can? :update, Cfp.new(program_id: @program.id)
= link_to 'Set up call for papers', admin_conference_program_cfp_path(conference_progress['short_title'])
- else
Set up call for papers
%li{'class'=>"list-group-item #{class_for_todo(conference_progress['venue'])}"}
%span{'class'=>icon_for_todo(conference_progress['venue'])}
- if can? :update, @conference.venue
- if conference.venue
= link_to 'Add venue', edit_admin_conference_venue_path(conference_progress['short_title'])
- else
= link_to 'Add venue', new_admin_conference_venue_path(conference_progress['short_title'])
- else
Add venue
%li{'class'=>"list-group-item #{class_for_todo(conference_progress['rooms'])}"}
%span{'class'=>icon_for_todo(conference_progress['rooms'])}
- if @conference.venue && (can? :update, @conference.venue.rooms.build)
= link_to 'Add rooms', admin_conference_venue_rooms_path(conference_progress['short_title'])
- else
Add rooms
%li{'class'=>"list-group-item #{class_for_todo(conference_progress['tracks'])}"}
%span{'class'=>icon_for_todo(conference_progress['tracks'])}
- if can? :update, @conference.program.tracks.build
= link_to 'Add tracks', admin_conference_program_tracks_path(conference_progress['short_title'])
- else
Add tracks
%li{'class'=>"list-group-item #{class_for_todo(conference_progress['event_types'])}"}
%span{'class'=>icon_for_todo(conference_progress['event_types'])}
- if can? :update, @conference.program.event_types.build
= link_to 'Add event types', admin_conference_program_event_types_path(conference_progress['short_title'])
- else
Add event types
%li{'class'=>"list-group-item #{class_for_todo(conference_progress['difficulty_levels'])}"}
%span{'class'=>icon_for_todo(conference_progress['difficulty_levels'])}
- if can? :update, @conference.program.difficulty_levels.build
= link_to 'Add difficulty levels', admin_conference_program_difficulty_levels_path(conference_progress['short_title'])
- else
Add difficulty levels
%li{class: "list-group-item #{class_for_todo(conference_progress['splashpage'])}"}
%span{'class'=>icon_for_todo(conference_progress['splashpage'])}
- if can? :update, @conference
= link_to 'Set up a Splashpage', admin_conference_splashpage_path(conference_progress['short_title'])
- else
Set up a Splashpage

View file

@ -0,0 +1,18 @@
.row
.col-md-12
%h3
Top Submitter
- if @top_submitter && !@top_submitter.empty?
- @top_submitter.each do |key, value|
.row.top-submitter
.col-md-2
= image_tag(key.gravatar_url(size: '25'), title: "Yo #{key.name}!", :alt => '', 'class'=>'img-circle img-responsive text-center')
.col-md-10
%h4
= link_to key.name, admin_user_path(key)
%div
%small
= link_to pluralize(value, 'submission'), admin_user_path(key, tab: 'submissions-content')
- else
%h4.text-warning
No submissions!

View file

@ -0,0 +1,26 @@
.row
.col-md-12
.page-header
%h1 Basics
%p.text-muted
The most basic settings of your conference
.row
.col-md-8
= semantic_form_for(@conference, :url => admin_conference_path(@conference.short_title),:html => {:multipart => true}) do |f|
= f.input :title, :hint => "The full title of the conference, e.g. 'openSUSE Conference 2014'"
= f.input :short_title, :hint => "A short title, e.g. 'oSC14', to be used in URLs"
= f.input :description, hint: markdown_hint('A description of the conference.'), input_html: { rows: 5, data: { provide: 'markdown-editable' } }
= f.input :color, :hint => "The color will be used eg for the dashboard.", :input_html => {:size => 6, :type => "color"}
= f.label 'Conference Logo'
%br
- if @conference.picture?
= image_tag @conference.picture.thumb.url
= f.input :picture, :label => false, :hint => "This will be displayed on the front page."
= f.hidden_field :picture_cache
= f.inputs :name => "Scheduling" do
= f.input :timezone, :as => :time_zone, :hint => "The conference time zone"
= f.input :start_date, :as => :string, :input_html => { :id => "conference-start-datepicker", :readonly => "readonly" }
= f.input :end_date, :as => :string, :input_html => { :id => "conference-end-datepicker", :readonly => "readonly" }
= f.inputs name: "Registrations" do
= f.input :registration_limit, as: :number, in: 0..9999, hint: "Limit the number of registrations to the conference (0 no limit)"
= f.action :submit, :as => :button, :button_html => {:class => "btn btn-primary"}

View file

@ -0,0 +1,86 @@
.row
.col-sm-4.col-xs-4
.dashbox.text-center
%span.fa.fa-user.fa-lg
%span.fa.fa-lg
= @total_user
%p
%small
#{'User'.pluralize(@total_user)}
- if @new_user
%span.label.label-success{title: "+ #{@new_user} since you last logged in!"}
+
= @new_user
.col-sm-4.col-xs-4
.dashbox.text-center
%span.fa.fa-check-square.fa-lg
%span.fa.fa-lg
= @total_reg
%p
%small
#{'Registration'.pluralize(@total_reg)}
- if @new_reg
%span.label.label-success{title: "+#{@new_reg} since you last logged in!"}
+
= @new_reg
.col-sm-4.col-xs-4
.dashbox.text-center
%span.fa.fa-file-text.fa-lg
%span.fa.fa-lg
= @total_submissions
%p
%small
#{'Submission'.pluralize(@total_submissions)}
- if @new_submissions
%span.label.label-success{title: "+#{@new_submissions} since you last logged in!"}
+
= @new_submissions
.row#registrations
.col-md-8
= render partial: 'line_chart', locals: { title: 'Registrations over time',
name: 'registrations',
conferences: @conferences,
active_conferences: @active_conferences,
deactive_conferences: @deactive_conferences,
y: @registrations,
x: @registration_weeks,
unit: 'weeks' }
.col-md-4
= render partial: 'doughnut_chart', locals: { title: 'Events',data: @event_distribution }
.row#submissions
.col-md-8
= render partial: 'line_chart', locals: { title: 'Submissions over time',
name: 'submissions',
conferences: @conferences,
active_conferences: @active_conferences,
deactive_conferences: @deactive_conferences,
y: @submissions,
x: @cfp_weeks,
unit: 'weeks' }
.col-md-4
= render partial: 'doughnut_chart', locals: { title: 'User',data: @user_distribution }
.row
.col-md-8
%ul.nav.nav-tabs#recentTable
%li.active
%a{:href=>"#recent_user", "data-toggle"=>"tab"}
%span.fa.fa-user
Recent Users
%li
%a{:href=>"#recent_reg", "data-toggle"=>"tab"}
%span.fa.fa-check-square
Recent Registrations
%li
%a{:href=>"#recent_submissions", "data-toggle"=>"tab"}
%span.fa.fa-file-text
Recent Submissions
.tab-content
.tab-pane.active#recent_user
= render partial: 'recent_users', locals: {recent_users: @recent_users}
.tab-pane#recent_reg
= render partial: 'recent_registrations', locals: {recent_registrations: @recent_registrations}
.tab-pane#recent_submissions
= render partial: 'recent_submissions', locals: {recent_events: @recent_events}
.col-md-4
= render partial: 'top_submitter', locals: {top_submitter: @top_submitter}

View file

@ -0,0 +1,14 @@
.row
.col-md-8
= semantic_form_for(@conference, :url => admin_conferences_path) do |f|
= f.inputs 'Basic Information' do
= f.input :title, hint: "The name of your conference as it shall appear throughout the site. Example: 'OpenSUSE Conference 2013'",
input_html: { required: 'required' }
= f.input :short_title, hint: "A short and unique handle for your conference, using only lower-case letters, numbers and underscores. This will be used to identify your conference in URLs etc. Example: 'froscon2011'",
input_html: { required: 'required' }
= f.inputs 'Scheduling' do
= f.input :timezone, as: :time_zone, default: Time.zone.name, hint: 'Please select in what time zone your conference will take place.'
= f.input :start_date, as: :string, input_html: { id: 'conference-start-datepicker', required: 'required' }
= f.input :end_date, as: :string, input_html: { id: 'conference-end-datepicker', required: 'required' }
= f.actions do
= f.action :submit, button_html: {class: 'btn btn-success pull-right'}

View file

@ -0,0 +1,131 @@
%h1
%span.fa.fa-tachometer
Dashboard for #{@conference.title}
%hr
.row
.col-sm-4.col-xs-4
.dashbox.text-center
%span.fa.fa-user.fa-lg
%span.fa.fa-lg
= @total_reg
%p
%small
#{'Registration'.pluralize(@total_reg)}
- if @new_reg
%span.label.label-success{title: "+#{@new_reg} since you last logged in!"}
+
= @new_reg
.col-sm-4.col-xs-4
.dashbox.text-center
%span.fa.fa-check-square.fa-lg
%span.fa.fa-lg
= @total_submissions
%p
%small
#{'Submission'.pluralize(@total_submissions)}
- if @new_submissions
%span.label.label-success{title: "+#{@new_submissions} since you last logged in!"}
+
= @new_submissions
.col-sm-4.col-xs-4
.dashbox.text-center
%span.fa.fa-file-text.fa-lg
%span.fa.fa-lg
= @program_length
%p
%small
#{'Hour'.pluralize(@program_length)}
- if @new_reg
%span.label.label-success{title: "+#{@new_program_length} since you last logged in!"}
+
= @new_program_length
.row
.col-md-12
.row
.col-md-8
.row#registrations
.col-md-12
= render partial: 'line_chart', locals: { title: 'Registrations over time',
name: 'registrations',
conferences: [@conference],
active_conferences: [@conference],
deactive_conferences: [],
y: @registrations,
x: @registration_weeks,
unit: 'weeks' }
.row#submissions
.col-md-12
= render partial: 'line_chart', locals: { title: 'Submissions over time',
name: 'submissions',
conferences: @submissions,
active_conferences: @submissions,
deactive_conferences: [],
y: @submissions_data,
x: @cfp_weeks,
unit: 'weeks' }
.col-md-4
= render partial: 'todo_list', locals: { conference_progress: @conference_progress,
conference: @conference }
.row
.col-md-12#doughnut
%ul.nav.nav-tabs#doughnut_tabs
%li.active
%a{:href=>"#distribution_all", "data-toggle"=>"tab"}
%span.fa.fa-star
All
%li
%a{:href=>"#distribution_confirmed", "data-toggle"=>"tab"}
%span.fa.fa-comment
Confirmed
.tab-content
.tab-pane.active#distribution_all
.row
.col-md-4
= render partial: 'doughnut_chart', locals: {title: 'Event types', data: @event_type_distribution}
.col-md-4
= render partial: 'doughnut_chart', locals: {title: 'Difficulty levels', data: @difficulty_levels_distribution}
.col-md-4
= render partial: 'doughnut_chart', locals: {title: 'Tracks', data: @tracks_distribution}
.tab-pane#distribution_confirmed
.row
.col-md-4
= render partial: 'doughnut_chart', locals: {title: 'Event types', data: @event_type_distribution_confirmed}
.col-md-4
= render partial: 'doughnut_chart', locals: {title: 'Difficulty levels', data: @difficulty_levels_distribution_confirmed}
.col-md-4
= render partial: 'doughnut_chart', locals: {title: 'Tracks', data: @tracks_distribution_confirmed}
.row
.col-md-8
%ul.nav.nav-tabs#recentTable
%li.active
%a{:href=>"#recent_reg", "data-toggle"=>"tab"}
%span.fa.fa-user
Recent Registrations
%li
%a{:href=>"#recent_submissions", "data-toggle"=>"tab"}
%span.fa.fa-file-text
Recent Submissions
.tab-content
.tab-pane.active#recent_reg
= render partial: 'recent_registrations', locals: {recent_registrations: @recent_registrations}
.tab-pane#recent_submissions
= render partial: 'recent_submissions', locals: {recent_events: @recent_events}
.col-md-4
= render partial: 'top_submitter', locals: {top_submitter: @top_submitter}
.row
.col-md-12
%h3
%span
%i.fa.fa-flag
Campaigns
= render partial: 'campaigns', locals: {campaigns: @campaigns, name: 'campaigns'}
:javascript
$('#recentTable a').click(function (e) {
e.preventDefault();
$(this).tab('show');
})