refinerycms-registrations 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/app/assets/images/refinery/race_registrations/admin/chosen-sprite.png +0 -0
- data/app/assets/images/refinery/race_registrations/down_arrow.png +0 -0
- data/app/assets/images/refinery/race_registrations/up_arrow.png +0 -0
- data/app/assets/javascripts/refinery/race_registrations/admin/jquery.chosen.min.js +10 -0
- data/app/assets/javascripts/refinery/race_registrations/admin/race_registrations.js +53 -0
- data/app/assets/javascripts/refinery/race_registrations/race_registrations.js +41 -0
- data/app/assets/stylesheets/refinery/race_registrations/admin/chosen.css.scss +396 -0
- data/app/assets/stylesheets/refinery/race_registrations/admin/race_registrations.css.scss +13 -0
- data/app/assets/stylesheets/refinery/race_registrations/admin/sortable_table.css.scss +40 -0
- data/app/assets/stylesheets/refinery/race_registrations/race_registrations.css.scss +74 -0
- data/app/controllers/refinery/race_registrations/admin/categories_controller.rb +33 -0
- data/app/controllers/refinery/race_registrations/admin/groups_controller.rb +13 -0
- data/app/controllers/refinery/race_registrations/admin/people_controller.rb +89 -0
- data/app/controllers/refinery/race_registrations/admin/registrations_controller.rb +13 -0
- data/app/controllers/refinery/race_registrations/categories_controller.rb +17 -0
- data/app/controllers/refinery/race_registrations/people_controller.rb +36 -0
- data/app/controllers/refinery/race_registrations/registrations_controller.rb +40 -0
- data/app/helpers/refinery/race_registrations/admin/people_helper.rb +23 -0
- data/app/helpers/refinery/race_registrations/registrations_helper.rb +23 -0
- data/app/models/refinery/race_registrations/category.rb +17 -0
- data/app/models/refinery/race_registrations/group.rb +20 -0
- data/app/models/refinery/race_registrations/group_category.rb +8 -0
- data/app/models/refinery/race_registrations/person.rb +53 -0
- data/app/models/refinery/race_registrations/registration.rb +37 -0
- data/app/views/layouts/print.html.erb +14 -0
- data/app/views/refinery/pages/registration_list.html.erb +15 -0
- data/app/views/refinery/race_registrations/admin/_submenu.html.erb +77 -0
- data/app/views/refinery/race_registrations/admin/categories/_categories.html.erb +2 -0
- data/app/views/refinery/race_registrations/admin/categories/_category.html.erb +20 -0
- data/app/views/refinery/race_registrations/admin/categories/_form.html.erb +17 -0
- data/app/views/refinery/race_registrations/admin/categories/_records.html.erb +18 -0
- data/app/views/refinery/race_registrations/admin/categories/_sortable_list.html.erb +5 -0
- data/app/views/refinery/race_registrations/admin/categories/edit.html.erb +1 -0
- data/app/views/refinery/race_registrations/admin/categories/index.html.erb +5 -0
- data/app/views/refinery/race_registrations/admin/categories/new.html.erb +1 -0
- data/app/views/refinery/race_registrations/admin/groups/_form.html.erb +23 -0
- data/app/views/refinery/race_registrations/admin/groups/_group.html.erb +20 -0
- data/app/views/refinery/race_registrations/admin/groups/_groups.html.erb +2 -0
- data/app/views/refinery/race_registrations/admin/groups/_records.html.erb +18 -0
- data/app/views/refinery/race_registrations/admin/groups/_sortable_list.html.erb +5 -0
- data/app/views/refinery/race_registrations/admin/groups/edit.html.erb +1 -0
- data/app/views/refinery/race_registrations/admin/groups/index.html.erb +5 -0
- data/app/views/refinery/race_registrations/admin/groups/new.html.erb +1 -0
- data/app/views/refinery/race_registrations/admin/people/_form.html.erb +82 -0
- data/app/views/refinery/race_registrations/admin/people/_people.html.erb +14 -0
- data/app/views/refinery/race_registrations/admin/people/_person.html.erb +21 -0
- data/app/views/refinery/race_registrations/admin/people/_records.html.erb +11 -0
- data/app/views/refinery/race_registrations/admin/people/edit.html.erb +1 -0
- data/app/views/refinery/race_registrations/admin/people/index.html.erb +27 -0
- data/app/views/refinery/race_registrations/admin/people/index.js.erb +3 -0
- data/app/views/refinery/race_registrations/admin/people/new.html.erb +1 -0
- data/app/views/refinery/race_registrations/admin/registrations/_form.html.erb +54 -0
- data/app/views/refinery/race_registrations/admin/registrations/_records.html.erb +18 -0
- data/app/views/refinery/race_registrations/admin/registrations/_registration.html.erb +20 -0
- data/app/views/refinery/race_registrations/admin/registrations/_registrations.html.erb +2 -0
- data/app/views/refinery/race_registrations/admin/registrations/_sortable_list.html.erb +5 -0
- data/app/views/refinery/race_registrations/admin/registrations/edit.html.erb +1 -0
- data/app/views/refinery/race_registrations/admin/registrations/index.html.erb +5 -0
- data/app/views/refinery/race_registrations/admin/registrations/new.html.erb +1 -0
- data/app/views/refinery/race_registrations/categories/index.html.erb +11 -0
- data/app/views/refinery/race_registrations/categories/show.html.erb +27 -0
- data/app/views/refinery/race_registrations/groups/index.html.erb +11 -0
- data/app/views/refinery/race_registrations/groups/show.html.erb +27 -0
- data/app/views/refinery/race_registrations/people/_form.html.erb +81 -0
- data/app/views/refinery/race_registrations/people/_form_header.html.erb +8 -0
- data/app/views/refinery/race_registrations/people/new.html.erb +28 -0
- data/app/views/refinery/race_registrations/registrations/_registration.html.erb +47 -0
- data/app/views/refinery/race_registrations/registrations/_registration_chooser.html.erb +7 -0
- data/app/views/refinery/race_registrations/registrations/show.html.erb +21 -0
- data/config/initializers/refinery/core.rb +8 -0
- data/config/locales/en.yml +136 -0
- data/config/locales/es.yml +141 -0
- data/config/locales/fr.yml +139 -0
- data/config/locales/humanizer.de.yml +43 -0
- data/config/locales/humanizer.en.yml +43 -0
- data/config/locales/humanizer.es.yml +43 -0
- data/config/locales/humanizer.fi.yml +43 -0
- data/config/locales/humanizer.fr.yml +43 -0
- data/config/locales/humanizer.it.yml +43 -0
- data/config/locales/humanizer.nl.yml +43 -0
- data/config/locales/humanizer.pl.yml +43 -0
- data/config/locales/humanizer.pt-BR.yml +43 -0
- data/config/locales/humanizer.pt-PT.yml +43 -0
- data/config/locales/humanizer.ru.yml +43 -0
- data/config/locales/humanizer.sk.yml +9 -0
- data/config/locales/humanizer.zh-CN.yml +43 -0
- data/config/locales/nb.yml +141 -0
- data/config/locales/nl.yml +141 -0
- data/config/locales/sk.yml +138 -0
- data/config/routes.rb +44 -0
- data/db/migrate/1_create_race_registrations_registrations.rb +31 -0
- data/db/migrate/2_create_race_registrations_people.rb +33 -0
- data/db/migrate/3_create_race_registrations_categories.rb +26 -0
- data/db/migrate/4_create_race_registrations_groups.rb +26 -0
- data/db/migrate/5_create_race_registrations_group_categories.rb +18 -0
- data/db/migrate/6_add_registration_id_to_people.rb +20 -0
- data/db/migrate/7_add_group_id_to_registrations.rb +13 -0
- data/db/seeds.rb +51 -0
- data/lib/generators/refinery/registrations_generator.rb +18 -0
- data/lib/refinery/registrations.rb +22 -0
- data/lib/refinery/registrations/configuration.rb +11 -0
- data/lib/refinery/registrations/engine.rb +31 -0
- data/lib/refinery/registrations/extensions/pages_controller_extension.rb +18 -0
- data/lib/refinerycms-registrations.rb +1 -0
- data/lib/tasks/refinery/registrations.rake +13 -0
- data/readme.md +95 -0
- metadata +182 -0
@@ -0,0 +1,40 @@
|
|
1
|
+
.sortable {
|
2
|
+
width: 100%;
|
3
|
+
|
4
|
+
td,th {
|
5
|
+
padding: 4px;
|
6
|
+
}
|
7
|
+
|
8
|
+
td {
|
9
|
+
&.action img {
|
10
|
+
padding: 2px 4px 4px;
|
11
|
+
vertical-align: middle;
|
12
|
+
}
|
13
|
+
|
14
|
+
}
|
15
|
+
th {
|
16
|
+
background-color: #e2e2e2;
|
17
|
+
|
18
|
+
.current_th {
|
19
|
+
padding-right: 12px;
|
20
|
+
background-repeat: no-repeat;
|
21
|
+
background-position: right center;
|
22
|
+
}
|
23
|
+
.asc {
|
24
|
+
background-image: image-url('refinery/race_registrations/up_arrow.png');
|
25
|
+
}
|
26
|
+
.desc {
|
27
|
+
background-image: image-url('refinery/race_registrations/down_arrow.png');
|
28
|
+
}
|
29
|
+
|
30
|
+
}
|
31
|
+
tr {
|
32
|
+
&.on {
|
33
|
+
background-color: #f9e3b8;
|
34
|
+
}
|
35
|
+
&.on-hover {
|
36
|
+
}
|
37
|
+
|
38
|
+
|
39
|
+
}
|
40
|
+
}
|
@@ -0,0 +1,74 @@
|
|
1
|
+
.use_diacritics {
|
2
|
+
color: red;
|
3
|
+
font-weight: bold;
|
4
|
+
}
|
5
|
+
|
6
|
+
form#new_person {
|
7
|
+
.field label {
|
8
|
+
font-weight: bold;
|
9
|
+
display: block;
|
10
|
+
float: left;
|
11
|
+
width: 160px;
|
12
|
+
}
|
13
|
+
#label_person_club {
|
14
|
+
font-weight: normal;
|
15
|
+
}
|
16
|
+
}
|
17
|
+
|
18
|
+
|
19
|
+
// From refinerycms-core
|
20
|
+
#message, .flash {
|
21
|
+
padding: 8px 8px 8px 30px;
|
22
|
+
margin-bottom: 15px;
|
23
|
+
position: relative;
|
24
|
+
}
|
25
|
+
.flash_notice, .flash_message {
|
26
|
+
border: 1px solid #00A017;
|
27
|
+
color: #00A017;
|
28
|
+
background: 7px 7px no-repeat image_url('refinery/icons/accept.png') #E0F5E0;
|
29
|
+
}
|
30
|
+
.flash_notice, .flash_notice * {
|
31
|
+
color: #00A017;
|
32
|
+
}
|
33
|
+
.flash_error, .flash_alert {
|
34
|
+
border: 1px solid #A00027;
|
35
|
+
color: #A00027;
|
36
|
+
background: 7px 7px no-repeat image_url('refinery/icons/cancel.png') #FFB1B1;
|
37
|
+
}
|
38
|
+
.flash.flash_notice #flash_close, .flash.flash_error #flash_close, .flash.flash_alert #flash_close {
|
39
|
+
text-transform: lowercase;
|
40
|
+
}
|
41
|
+
.flash.flash_message {
|
42
|
+
background: #E0F5E0;
|
43
|
+
padding: 9px;
|
44
|
+
position: relative;
|
45
|
+
margin-bottom: 32px;
|
46
|
+
h2 {
|
47
|
+
margin-top: 12px;
|
48
|
+
}
|
49
|
+
}
|
50
|
+
.flash.flash_message.flash_message, .flash_message * {
|
51
|
+
color: #262719;
|
52
|
+
font-size: 14px;
|
53
|
+
}
|
54
|
+
.flash a, .flash a:hover {
|
55
|
+
color: #e20003;
|
56
|
+
border-bottom-color: #e20003;
|
57
|
+
}
|
58
|
+
.flash.flash_error a, .flash.flash_error a:hover,
|
59
|
+
.flash.flash_alert a, .flash.flash_alert a:hover {
|
60
|
+
display: none;
|
61
|
+
}
|
62
|
+
noscript .flash.flash_error a, noscript .flash.flash_error a:hover,
|
63
|
+
noscript .flash.flash_alert a, noscript .flash.flash_alert a:hover {
|
64
|
+
display: inline;
|
65
|
+
font-weight: bold;
|
66
|
+
}
|
67
|
+
.flash a#flash_close {
|
68
|
+
position: absolute;
|
69
|
+
right: 9px;
|
70
|
+
top: 7px;
|
71
|
+
}
|
72
|
+
.flash.flash_message a#flash_close {
|
73
|
+
top: 21px;
|
74
|
+
}
|
@@ -0,0 +1,33 @@
|
|
1
|
+
module Refinery
|
2
|
+
module RaceRegistrations
|
3
|
+
module Admin
|
4
|
+
class CategoriesController < ::Refinery::AdminController
|
5
|
+
|
6
|
+
crudify :'refinery/race_registrations/category',
|
7
|
+
:order => "position DESC",
|
8
|
+
:xhr_paging => true
|
9
|
+
|
10
|
+
def index
|
11
|
+
if params[:registration_id]
|
12
|
+
registration = Refinery::RaceRegistrations::Registration.find(params[:registration_id])
|
13
|
+
@categories = registration.categories
|
14
|
+
|
15
|
+
respond_to do |format|
|
16
|
+
format.json { render :json=> @categories }
|
17
|
+
end
|
18
|
+
|
19
|
+
else
|
20
|
+
# default crudify action
|
21
|
+
search_all_categories if searching?
|
22
|
+
paginate_all_categories
|
23
|
+
|
24
|
+
render_partial_response?
|
25
|
+
end
|
26
|
+
|
27
|
+
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,89 @@
|
|
1
|
+
module Refinery
|
2
|
+
module RaceRegistrations
|
3
|
+
module Admin
|
4
|
+
class PeopleController < ::Refinery::AdminController
|
5
|
+
include PeopleHelper
|
6
|
+
helper :"refinery/race_registrations/admin/people"
|
7
|
+
|
8
|
+
crudify :'refinery/race_registrations/person',
|
9
|
+
:title_attribute => "surname",
|
10
|
+
:xhr_paging => false
|
11
|
+
|
12
|
+
before_filter :initialize_update, :only => :update
|
13
|
+
|
14
|
+
|
15
|
+
def new
|
16
|
+
@person = Person.new
|
17
|
+
@categories = Category.all
|
18
|
+
end
|
19
|
+
|
20
|
+
def create
|
21
|
+
@categories = Category.all
|
22
|
+
|
23
|
+
@person = Person.new(params[:person])
|
24
|
+
@person.bypass_humanizer = true
|
25
|
+
|
26
|
+
|
27
|
+
if @person.save
|
28
|
+
flash.notice = t(
|
29
|
+
'refinery.crudify.created',
|
30
|
+
:what => @person.surname
|
31
|
+
)
|
32
|
+
|
33
|
+
find_all_people
|
34
|
+
render :index
|
35
|
+
else
|
36
|
+
render :action => 'new'
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|
40
|
+
|
41
|
+
|
42
|
+
def edit
|
43
|
+
# @person comes from crud before_filter
|
44
|
+
@categories = Registration.find(@person.registration_id).categories
|
45
|
+
end
|
46
|
+
|
47
|
+
|
48
|
+
protected
|
49
|
+
|
50
|
+
|
51
|
+
def initialize_update
|
52
|
+
# we need to create instance variables for collection_select. Without this method, crudify will call crudify's edit, no edit method in this file
|
53
|
+
edit
|
54
|
+
end
|
55
|
+
|
56
|
+
# overriding crudify method
|
57
|
+
def find_person
|
58
|
+
@person = Person.find(params[:id])
|
59
|
+
@person.bypass_humanizer = true
|
60
|
+
end
|
61
|
+
|
62
|
+
# overriding crudify method
|
63
|
+
def find_all_people
|
64
|
+
@people = Person.search(params[:search], params[:sort], params[:person]).order(sort_column + " " + sort_direction).paginate(:per_page => 20, :page => params[:page])
|
65
|
+
end
|
66
|
+
|
67
|
+
# overriding crudify method
|
68
|
+
def search_all_people
|
69
|
+
find_all_people
|
70
|
+
end
|
71
|
+
|
72
|
+
|
73
|
+
def render_partial_response?
|
74
|
+
# this is initialization only for form - form filtering
|
75
|
+
@person = Person.new
|
76
|
+
if params[:person]
|
77
|
+
@person.registration_ids = params[:person][:registration_ids]
|
78
|
+
end
|
79
|
+
|
80
|
+
respond_to do |format|
|
81
|
+
format.js { render "index"}
|
82
|
+
format.html { render "index"}
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
end
|
87
|
+
end
|
88
|
+
end
|
89
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
module Refinery
|
2
|
+
module RaceRegistrations
|
3
|
+
module Admin
|
4
|
+
class RegistrationsController < ::Refinery::AdminController
|
5
|
+
|
6
|
+
crudify :'refinery/race_registrations/registration',
|
7
|
+
:order => "position DESC",
|
8
|
+
:xhr_paging => true
|
9
|
+
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Refinery
|
2
|
+
module RaceRegistrations
|
3
|
+
class CategoriesController < ::ApplicationController
|
4
|
+
|
5
|
+
def index
|
6
|
+
if params[:registration_id]
|
7
|
+
registration = Refinery::RaceRegistrations::Registration.find(params[:registration_id])
|
8
|
+
@categories = registration.categories
|
9
|
+
|
10
|
+
respond_to do |format|
|
11
|
+
format.json { render :json=> @categories }
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
module Refinery
|
2
|
+
module RaceRegistrations
|
3
|
+
class PeopleController < ::ApplicationController
|
4
|
+
before_filter :find_page
|
5
|
+
|
6
|
+
def new
|
7
|
+
@person = Person.new
|
8
|
+
@registrations = Registration.published
|
9
|
+
@categories = @registrations.first.try(:categories)
|
10
|
+
|
11
|
+
present(@page)
|
12
|
+
end
|
13
|
+
|
14
|
+
def create
|
15
|
+
@person = Person.new(params[:person])
|
16
|
+
|
17
|
+
if @person.save
|
18
|
+
redirect_to refinery.race_registrations_registration_path(:id=> @person.registration_id) , :notice => t('refinery.crudify.created', :what => @person.name + " " + @person.surname )
|
19
|
+
else
|
20
|
+
@registrations = Registration.published
|
21
|
+
@categories = @registrations.first.try(:categories)
|
22
|
+
|
23
|
+
render :action=> "new"
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
|
28
|
+
protected
|
29
|
+
|
30
|
+
def find_page
|
31
|
+
@page = Refinery::Page.where(:link_url => "/race_registrations/people/new").first
|
32
|
+
end
|
33
|
+
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
module Refinery
|
2
|
+
module RaceRegistrations
|
3
|
+
class RegistrationsController < ::ApplicationController
|
4
|
+
before_filter :find_all_registrations
|
5
|
+
before_filter :find_page
|
6
|
+
|
7
|
+
|
8
|
+
def redirect
|
9
|
+
if params[:registration][:id].present?
|
10
|
+
redirect_to refinery.race_registrations_registration_path(params[:registration][:id])
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
def index
|
15
|
+
@registration = Registration.first
|
16
|
+
redirect_to refinery.race_registrations_registration_path(:id=> @registration)
|
17
|
+
end
|
18
|
+
|
19
|
+
def show
|
20
|
+
@registration = Registration.find(params[:id])
|
21
|
+
|
22
|
+
# you can use meta fields from your model instead (e.g. browser_title)
|
23
|
+
# by swapping @page for @registration in the line below:
|
24
|
+
present(@page)
|
25
|
+
end
|
26
|
+
|
27
|
+
protected
|
28
|
+
|
29
|
+
def find_all_registrations
|
30
|
+
@registrations = Registration.order('position ASC')
|
31
|
+
end
|
32
|
+
|
33
|
+
def find_page
|
34
|
+
@page = Refinery::Page.where(:link_url => "/race_registrations/registrations").first
|
35
|
+
end
|
36
|
+
|
37
|
+
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
module Refinery
|
2
|
+
module RaceRegistrations
|
3
|
+
module Admin
|
4
|
+
module PeopleHelper
|
5
|
+
def sortable(column, title = nil)
|
6
|
+
title ||= column.titleize
|
7
|
+
css_class = column == sort_column ? "current_th #{sort_direction}" : nil
|
8
|
+
direction = column == sort_column && sort_direction == "asc" ? "desc" : "asc"
|
9
|
+
|
10
|
+
link_to title, refinery.race_registrations_admin_people_path(:sort => column, :direction => direction, :page => nil ), {:class => css_class}
|
11
|
+
end
|
12
|
+
|
13
|
+
def sort_column
|
14
|
+
%w[name surname country birth_date email club city registration_id category_id created_at].include?(params[:sort]) ? params[:sort] : "id"
|
15
|
+
end
|
16
|
+
|
17
|
+
def sort_direction
|
18
|
+
%w[asc desc].include?(params[:direction]) ? params[:direction] : "desc"
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
module Refinery
|
2
|
+
module RaceRegistrations
|
3
|
+
module RegistrationsHelper
|
4
|
+
|
5
|
+
def sortable(column, title = nil)
|
6
|
+
title ||= column.titleize
|
7
|
+
css_class = column == sort_column ? "current_th #{sort_direction}" : nil
|
8
|
+
direction = column == sort_column && sort_direction == "asc" ? "desc" : "asc"
|
9
|
+
|
10
|
+
link_to title, refinery.race_registrations_registration_path(:sort => column, :direction => direction, :page => nil ), {:class => css_class}
|
11
|
+
end
|
12
|
+
|
13
|
+
def sort_column
|
14
|
+
%w[name surname country birth_date email club city registration_id category_id created_at].include?(params[:sort]) ? params[:sort] : "surname"
|
15
|
+
end
|
16
|
+
|
17
|
+
def sort_direction
|
18
|
+
%w[asc desc].include?(params[:direction]) ? params[:direction] : "asc"
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Refinery
|
2
|
+
module RaceRegistrations
|
3
|
+
class Category < Refinery::Core::BaseModel
|
4
|
+
has_many :group_categories
|
5
|
+
has_many :groups, :through => :group_categories
|
6
|
+
has_many :people , :order => "surname ASC"
|
7
|
+
|
8
|
+
default_scope order("position DESC")
|
9
|
+
|
10
|
+
attr_accessible :title, :position
|
11
|
+
|
12
|
+
acts_as_indexed :fields => [:title]
|
13
|
+
|
14
|
+
validates :title, :presence => true, :uniqueness => true
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|