dhatu 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/MIT-LICENSE +20 -0
- data/README.md +114 -0
- data/Rakefile +36 -0
- data/app/assets/config/dhatu_manifest.js +2 -0
- data/app/assets/javascripts/dhatu/application.js +13 -0
- data/app/assets/stylesheets/dhatu/application.css +15 -0
- data/app/controllers/dhatu/application_controller.rb +25 -0
- data/app/controllers/dhatu/blog_posts_controller.rb +84 -0
- data/app/controllers/dhatu/contact_informations_controller.rb +84 -0
- data/app/controllers/dhatu/dashboard_controller.rb +24 -0
- data/app/controllers/dhatu/events_controller.rb +84 -0
- data/app/controllers/dhatu/offers_controller.rb +84 -0
- data/app/controllers/dhatu/resource_controller.rb +13 -0
- data/app/controllers/dhatu/sections_controller.rb +83 -0
- data/app/controllers/dhatu/team_members_controller.rb +84 -0
- data/app/controllers/dhatu/testimonials_controller.rb +84 -0
- data/app/helpers/dhatu/application_helper.rb +4 -0
- data/app/jobs/dhatu/application_job.rb +4 -0
- data/app/mailers/dhatu/application_mailer.rb +6 -0
- data/app/models/dhatu/application_record.rb +8 -0
- data/app/models/dhatu/blog_post.rb +62 -0
- data/app/models/dhatu/contact_information.rb +88 -0
- data/app/models/dhatu/event.rb +56 -0
- data/app/models/dhatu/offer.rb +55 -0
- data/app/models/dhatu/section.rb +82 -0
- data/app/models/dhatu/team_member.rb +59 -0
- data/app/models/dhatu/testimonial.rb +57 -0
- data/app/views/dhatu/blog_posts/_form.html.erb +42 -0
- data/app/views/dhatu/blog_posts/_index.html.erb +58 -0
- data/app/views/dhatu/blog_posts/_row.html.erb +28 -0
- data/app/views/dhatu/blog_posts/_show.html.erb +120 -0
- data/app/views/dhatu/blog_posts/index.html.erb +56 -0
- data/app/views/dhatu/contact_informations/_form.html.erb +104 -0
- data/app/views/dhatu/contact_informations/_index.html.erb +51 -0
- data/app/views/dhatu/contact_informations/_row.html.erb +26 -0
- data/app/views/dhatu/contact_informations/_show.html.erb +150 -0
- data/app/views/dhatu/contact_informations/index.html.erb +46 -0
- data/app/views/dhatu/dashboard/_index.html.erb +58 -0
- data/app/views/dhatu/dashboard/index.html.erb +18 -0
- data/app/views/dhatu/events/_form.html.erb +40 -0
- data/app/views/dhatu/events/_index.html.erb +58 -0
- data/app/views/dhatu/events/_row.html.erb +28 -0
- data/app/views/dhatu/events/_show.html.erb +120 -0
- data/app/views/dhatu/events/index.html.erb +45 -0
- data/app/views/dhatu/offers/_form.html.erb +39 -0
- data/app/views/dhatu/offers/_index.html.erb +57 -0
- data/app/views/dhatu/offers/_row.html.erb +28 -0
- data/app/views/dhatu/offers/_show.html.erb +118 -0
- data/app/views/dhatu/offers/index.html.erb +46 -0
- data/app/views/dhatu/sections/_form.html.erb +60 -0
- data/app/views/dhatu/sections/_index.html.erb +53 -0
- data/app/views/dhatu/sections/_row.html.erb +25 -0
- data/app/views/dhatu/sections/_show.html.erb +152 -0
- data/app/views/dhatu/sections/index.html.erb +53 -0
- data/app/views/dhatu/team_members/_form.html.erb +56 -0
- data/app/views/dhatu/team_members/_index.html.erb +62 -0
- data/app/views/dhatu/team_members/_row.html.erb +35 -0
- data/app/views/dhatu/team_members/_show.html.erb +93 -0
- data/app/views/dhatu/team_members/index.html.erb +46 -0
- data/app/views/dhatu/testimonials/_form.html.erb +36 -0
- data/app/views/dhatu/testimonials/_index.html.erb +64 -0
- data/app/views/dhatu/testimonials/_row.html.erb +36 -0
- data/app/views/dhatu/testimonials/_show.html.erb +133 -0
- data/app/views/dhatu/testimonials/index.html.erb +46 -0
- data/app/views/layouts/dhatu/application.html.erb +14 -0
- data/app/views/layouts/kuppayam/_footer.html.erb +25 -0
- data/app/views/layouts/kuppayam/_header.html.erb +43 -0
- data/app/views/layouts/kuppayam/_navbar.html.erb +55 -0
- data/app/views/layouts/kuppayam/_sidebar.html.erb +219 -0
- data/app/views/pattana/dashboard/_index.html.erb +35 -0
- data/config/routes.rb +63 -0
- data/db/master_data/features.csv +16 -0
- data/lib/dhatu.rb +5 -0
- data/lib/dhatu/engine.rb +31 -0
- data/lib/dhatu/factories.rb +7 -0
- data/lib/dhatu/version.rb +3 -0
- data/lib/tasks/dhatu/data.rake +91 -0
- data/lib/tasks/dhatu/master_data.rake +48 -0
- data/spec/dummy/spec/factories/blog_post.rb +48 -0
- data/spec/dummy/spec/factories/blog_post_cover_image.rb +13 -0
- data/spec/dummy/spec/factories/blog_post_gallery_image.rb +13 -0
- data/spec/dummy/spec/factories/contact_information.rb +63 -0
- data/spec/dummy/spec/factories/event.rb +46 -0
- data/spec/dummy/spec/factories/event_cover_image.rb +13 -0
- data/spec/dummy/spec/factories/event_gallery_image.rb +13 -0
- data/spec/dummy/spec/factories/offer.rb +43 -0
- data/spec/dummy/spec/factories/offer_cover_image.rb +13 -0
- data/spec/dummy/spec/factories/offer_gallery_image.rb +13 -0
- data/spec/dummy/spec/factories/section.rb +50 -0
- data/spec/dummy/spec/factories/section_cover_image.rb +13 -0
- data/spec/dummy/spec/factories/section_gallery_image.rb +13 -0
- data/spec/dummy/spec/factories/team_member.rb +47 -0
- data/spec/dummy/spec/factories/test.jpg +0 -0
- data/spec/dummy/spec/factories/testimonial.rb +44 -0
- metadata +520 -0
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
module Dhatu
|
|
2
|
+
class OffersController < ResourceController
|
|
3
|
+
|
|
4
|
+
private
|
|
5
|
+
|
|
6
|
+
def permitted_params
|
|
7
|
+
params.require("dhatu/offer").permit(:title, :offer_text, :description, :starts_at, :ends_at)
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def get_collections
|
|
11
|
+
@relation = Offer.includes(:cover_image).where("")
|
|
12
|
+
params[:st] = "published" if params[:st].nil?
|
|
13
|
+
parse_filters
|
|
14
|
+
apply_filters
|
|
15
|
+
@offers = @r_objects = @relation.page(@current_page).per(@per_page)
|
|
16
|
+
return true
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def apply_filters
|
|
20
|
+
@relation = @relation.search(@query) if @query
|
|
21
|
+
@relation = @relation.status(@status) if @status
|
|
22
|
+
|
|
23
|
+
@offer_by = "created_at desc" unless @offer_by
|
|
24
|
+
@relation = @relation.order(@offer_by)
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def configure_filter_settings
|
|
28
|
+
@filter_settings = {
|
|
29
|
+
string_filters: [
|
|
30
|
+
{ filter_name: :query },
|
|
31
|
+
{ filter_name: :status }
|
|
32
|
+
],
|
|
33
|
+
|
|
34
|
+
boolean_filters: [],
|
|
35
|
+
|
|
36
|
+
reference_filters: [],
|
|
37
|
+
variable_filters: [],
|
|
38
|
+
}
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def configure_filter_ui_settings
|
|
42
|
+
@filter_ui_settings = {
|
|
43
|
+
status: {
|
|
44
|
+
object_filter: false,
|
|
45
|
+
select_label: "Select Status",
|
|
46
|
+
display_hash: Offer::STATUS,
|
|
47
|
+
current_value: @status,
|
|
48
|
+
values: Offer::STATUS_REVERSE,
|
|
49
|
+
current_filters: @filters,
|
|
50
|
+
filters_to_remove: [],
|
|
51
|
+
filters_to_add: {},
|
|
52
|
+
url_method_name: 'offers_url',
|
|
53
|
+
show_all_filter_on_top: true
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
def resource_controller_configuration
|
|
59
|
+
{
|
|
60
|
+
page_title: "Offers",
|
|
61
|
+
js_view_path: "/kuppayam/workflows/peacock",
|
|
62
|
+
view_path: "dhatu/offers",
|
|
63
|
+
collection_name: :offers,
|
|
64
|
+
item_name: :offer,
|
|
65
|
+
class: Offer
|
|
66
|
+
}
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
def breadcrumbs_configuration
|
|
70
|
+
{
|
|
71
|
+
heading: "Manage Offers",
|
|
72
|
+
icon: "fa-gift",
|
|
73
|
+
description: "Listing all Offers",
|
|
74
|
+
links: [{name: "Dashboard", link: breadcrumb_home_path, icon: 'fa-dashboard'},
|
|
75
|
+
{name: "Manage Offers", link: dhatu.offers_path, icon: 'fa-gift', active: true}]
|
|
76
|
+
}
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
def set_navs
|
|
80
|
+
set_nav("dhatu/offers")
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
end
|
|
84
|
+
end
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
module Dhatu
|
|
2
|
+
class ResourceController < ApplicationController
|
|
3
|
+
|
|
4
|
+
include ResourceHelper
|
|
5
|
+
|
|
6
|
+
before_action :configure_resource_controller
|
|
7
|
+
before_action :require_read_permission, only: [:index, :show]
|
|
8
|
+
before_action :require_create_permission, only: [:create]
|
|
9
|
+
before_action :require_update_permission, only: [:update, :update_status, :mark_as_featured, :remove_from_featured]
|
|
10
|
+
before_action :require_delete_permission, only: [:destroy]
|
|
11
|
+
|
|
12
|
+
end
|
|
13
|
+
end
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
module Dhatu
|
|
2
|
+
class SectionsController < ResourceController
|
|
3
|
+
|
|
4
|
+
private
|
|
5
|
+
|
|
6
|
+
def permitted_params
|
|
7
|
+
params.require("dhatu/section").permit(:section_type, :title, :sub_title, :short_description, :long_description, :button_one_text, :button_two_text, :button_one_link, :button_two_link)
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def get_collections
|
|
11
|
+
@relation = Dhatu::Section.includes(:cover_image).where("")
|
|
12
|
+
params[:st] = "published" if params[:st].nil?
|
|
13
|
+
parse_filters
|
|
14
|
+
apply_filters
|
|
15
|
+
@sections = @r_objects = @relation.page(@current_page).per(@per_page)
|
|
16
|
+
return true
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def apply_filters
|
|
20
|
+
@relation = @relation.search(@query) if @query
|
|
21
|
+
@relation = @relation.status(@status) if @status
|
|
22
|
+
|
|
23
|
+
@order_by = "created_at desc" unless @order_by
|
|
24
|
+
@relation = @relation.order(@order_by)
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def configure_filter_settings
|
|
28
|
+
@filter_settings = {
|
|
29
|
+
string_filters: [
|
|
30
|
+
{ filter_name: :query },
|
|
31
|
+
{ filter_name: :status }
|
|
32
|
+
],
|
|
33
|
+
|
|
34
|
+
boolean_filters: [],
|
|
35
|
+
|
|
36
|
+
reference_filters: [],
|
|
37
|
+
variable_filters: [],
|
|
38
|
+
}
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def configure_filter_ui_settings
|
|
42
|
+
@filter_ui_settings = {
|
|
43
|
+
status: {
|
|
44
|
+
object_filter: false,
|
|
45
|
+
select_label: "Select Status",
|
|
46
|
+
display_hash: Dhatu::Section::STATUS,
|
|
47
|
+
current_value: @status,
|
|
48
|
+
values: Dhatu::Section::STATUS_REVERSE,
|
|
49
|
+
current_filters: @filters,
|
|
50
|
+
filters_to_remove: [],
|
|
51
|
+
filters_to_add: {},
|
|
52
|
+
url_method_name: 'sections_url',
|
|
53
|
+
show_all_filter_on_top: true
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
def resource_controller_configuration
|
|
59
|
+
{
|
|
60
|
+
page_title: "Sections",
|
|
61
|
+
js_view_path: "/kuppayam/workflows/peacock",
|
|
62
|
+
view_path: "dhatu/sections",
|
|
63
|
+
collection_name: :sections,
|
|
64
|
+
item_name: :section,
|
|
65
|
+
class: Dhatu::Section
|
|
66
|
+
}
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
def breadcrumbs_configuration
|
|
70
|
+
{
|
|
71
|
+
heading: "Manage sections",
|
|
72
|
+
icon: "fa-reorder",
|
|
73
|
+
description: "Listing all sections",
|
|
74
|
+
links: [{name: "Dashboard", link: dashboard_path, icon: 'fa-dashboard'},
|
|
75
|
+
{name: "Manage sections", link: dhatu.sections_path, icon: 'fa-calendar', active: true}]
|
|
76
|
+
}
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
def set_navs
|
|
80
|
+
set_nav("section")
|
|
81
|
+
end
|
|
82
|
+
end
|
|
83
|
+
end
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
module Dhatu
|
|
2
|
+
class TeamMembersController < ResourceController
|
|
3
|
+
|
|
4
|
+
private
|
|
5
|
+
|
|
6
|
+
def permitted_params
|
|
7
|
+
params.require("dhatu/team_member").permit(:name, :designation, :status, :featured, :description, :linked_in_url, :google_plus_url, :facebook_url, :twitter_url)
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def get_collections
|
|
11
|
+
@relation = Dhatu::TeamMember.includes(:profile_image).where("")
|
|
12
|
+
params[:st] = "published" if params[:st].nil?
|
|
13
|
+
parse_filters
|
|
14
|
+
apply_filters
|
|
15
|
+
@team_members = @r_objects = @relation.page(@current_page).per(@per_page)
|
|
16
|
+
return true
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def apply_filters
|
|
20
|
+
@relation = @relation.search(@query) if @query
|
|
21
|
+
@relation = @relation.status(@status) if @status
|
|
22
|
+
|
|
23
|
+
@order_by = "created_at desc" unless @order_by
|
|
24
|
+
@relation = @relation.order(@order_by)
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def configure_filter_settings
|
|
28
|
+
@filter_settings = {
|
|
29
|
+
string_filters: [
|
|
30
|
+
{ filter_name: :query },
|
|
31
|
+
{ filter_name: :status }
|
|
32
|
+
],
|
|
33
|
+
|
|
34
|
+
boolean_filters: [],
|
|
35
|
+
|
|
36
|
+
reference_filters: [],
|
|
37
|
+
variable_filters: [],
|
|
38
|
+
}
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def configure_filter_ui_settings
|
|
42
|
+
@filter_ui_settings = {
|
|
43
|
+
status: {
|
|
44
|
+
object_filter: false,
|
|
45
|
+
select_label: "Select Status",
|
|
46
|
+
display_hash: Dhatu::TeamMember::STATUS,
|
|
47
|
+
current_value: @status,
|
|
48
|
+
values: Dhatu::TeamMember::STATUS_REVERSE,
|
|
49
|
+
current_filters: @filters,
|
|
50
|
+
filters_to_remove: [],
|
|
51
|
+
filters_to_add: {},
|
|
52
|
+
url_method_name: 'team_members_url',
|
|
53
|
+
show_all_filter_on_top: true
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
def resource_controller_configuration
|
|
59
|
+
{
|
|
60
|
+
page_title: "Team",
|
|
61
|
+
js_view_path: "/kuppayam/workflows/peacock",
|
|
62
|
+
view_path: "dhatu/team_members",
|
|
63
|
+
collection_name: :team_members,
|
|
64
|
+
item_name: :team_member,
|
|
65
|
+
class: Dhatu::TeamMember
|
|
66
|
+
}
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
def breadcrumbs_configuration
|
|
70
|
+
{
|
|
71
|
+
heading: "Manage Team",
|
|
72
|
+
icon: "fa-group",
|
|
73
|
+
description: "Listing all team_members",
|
|
74
|
+
links: [{name: "Dashboard", link: dashboard_path, icon: 'fa-dashboard'},
|
|
75
|
+
{name: "Manage team_members", link: dhatu.team_members_path, icon: 'fa-group', active: true}]
|
|
76
|
+
}
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
def set_navs
|
|
80
|
+
set_nav("dhatu/team")
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
end
|
|
84
|
+
end
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
module Dhatu
|
|
2
|
+
class TestimonialsController < ResourceController
|
|
3
|
+
|
|
4
|
+
private
|
|
5
|
+
|
|
6
|
+
def permitted_params
|
|
7
|
+
params.require("dhatu/testimonial").permit(:name, :designation, :organisation, :status, :featured, :statement)
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def get_collections
|
|
11
|
+
@relation = Testimonial.includes(:profile_image, :logo_image).where("")
|
|
12
|
+
params[:st] = "published" if params[:st].nil?
|
|
13
|
+
parse_filters
|
|
14
|
+
apply_filters
|
|
15
|
+
@testimonials = @r_objects = @relation.page(@current_page).per(@per_page)
|
|
16
|
+
return true
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def apply_filters
|
|
20
|
+
@relation = @relation.search(@query) if @query
|
|
21
|
+
@relation = @relation.status(@status) if @status
|
|
22
|
+
|
|
23
|
+
@order_by = "created_at desc" unless @order_by
|
|
24
|
+
@relation = @relation.order(@order_by)
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def configure_filter_settings
|
|
28
|
+
@filter_settings = {
|
|
29
|
+
string_filters: [
|
|
30
|
+
{ filter_name: :query },
|
|
31
|
+
{ filter_name: :status }
|
|
32
|
+
],
|
|
33
|
+
|
|
34
|
+
boolean_filters: [],
|
|
35
|
+
|
|
36
|
+
reference_filters: [],
|
|
37
|
+
variable_filters: [],
|
|
38
|
+
}
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def configure_filter_ui_settings
|
|
42
|
+
@filter_ui_settings = {
|
|
43
|
+
status: {
|
|
44
|
+
object_filter: false,
|
|
45
|
+
select_label: "Select Status",
|
|
46
|
+
display_hash: Testimonial::STATUS,
|
|
47
|
+
current_value: @status,
|
|
48
|
+
values: Testimonial::STATUS_REVERSE,
|
|
49
|
+
current_filters: @filters,
|
|
50
|
+
filters_to_remove: [],
|
|
51
|
+
filters_to_add: {},
|
|
52
|
+
url_method_name: 'testimonials_url',
|
|
53
|
+
show_all_filter_on_top: true
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
def resource_controller_configuration
|
|
59
|
+
{
|
|
60
|
+
page_title: "Testimonials",
|
|
61
|
+
js_view_path: "/kuppayam/workflows/peacock",
|
|
62
|
+
view_path: "dhatu/testimonials",
|
|
63
|
+
collection_name: :testimonials,
|
|
64
|
+
item_name: :testimonial,
|
|
65
|
+
class: Testimonial
|
|
66
|
+
}
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
def breadcrumbs_configuration
|
|
70
|
+
{
|
|
71
|
+
heading: "Manage testimonials",
|
|
72
|
+
icon: "fa-comment",
|
|
73
|
+
description: "Listing all testimonials",
|
|
74
|
+
links: [{name: "Dashboard", link: dashboard_path, icon: 'fa-dashboard'},
|
|
75
|
+
{name: "Manage testimonials", link: dhatu.testimonials_path, icon: 'fa-comment', active: true}]
|
|
76
|
+
}
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
def set_navs
|
|
80
|
+
set_nav("dhatu/testimonials")
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
end
|
|
84
|
+
end
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
class Dhatu::BlogPost < Dhatu::ApplicationRecord
|
|
2
|
+
|
|
3
|
+
# Set Table Name
|
|
4
|
+
self.table_name = "blog_posts"
|
|
5
|
+
|
|
6
|
+
# Including the State Machine Methods
|
|
7
|
+
include Publishable
|
|
8
|
+
include Featureable
|
|
9
|
+
|
|
10
|
+
# Validations
|
|
11
|
+
validates :title, presence: true, length: {minimum: 5, maximum: 256}, allow_blank: false
|
|
12
|
+
validates :slug, uniqueness: true, presence: true, length: {minimum: 5, maximum: 64}, allow_blank: false
|
|
13
|
+
validates :author, length: {minimum: 3, maximum: 250}, allow_blank: true
|
|
14
|
+
validates :description, presence: true
|
|
15
|
+
validates :posted_at, presence: true
|
|
16
|
+
validates :meta_description, presence: true, length: {minimum: 10, maximum: 500}, allow_blank: false
|
|
17
|
+
|
|
18
|
+
# Associations
|
|
19
|
+
has_one :cover_image, :as => :imageable, :dependent => :destroy, :class_name => "Image::CoverImage"
|
|
20
|
+
has_many :gallery_images, :as => :imageable, :dependent => :destroy, :class_name => "Image::GalleryImage"
|
|
21
|
+
|
|
22
|
+
# Serializers
|
|
23
|
+
serialize :tags, Hash
|
|
24
|
+
|
|
25
|
+
# ------------------
|
|
26
|
+
# Class Methods
|
|
27
|
+
# ------------------
|
|
28
|
+
|
|
29
|
+
scope :search, lambda { |query| where("LOWER(title) LIKE LOWER('%#{query}%') OR\
|
|
30
|
+
LOWER(author) LIKE LOWER('%#{query}%') OR\
|
|
31
|
+
LOWER(description) LIKE LOWER('%#{query}%')") }
|
|
32
|
+
|
|
33
|
+
scope :upcoming, lambda { where("starts_at >= ?", Time.now) }
|
|
34
|
+
scope :past, lambda { where("starts_at < ?", Time.now) }
|
|
35
|
+
|
|
36
|
+
# ------------------
|
|
37
|
+
# Instance Methods
|
|
38
|
+
# ------------------
|
|
39
|
+
|
|
40
|
+
# Generic Methods
|
|
41
|
+
# ---------------
|
|
42
|
+
|
|
43
|
+
def to_param
|
|
44
|
+
"#{id}-#{slug}"
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def display_name
|
|
48
|
+
"#{title_was}"
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
# Permission Methods
|
|
52
|
+
# ------------------
|
|
53
|
+
|
|
54
|
+
def can_be_edited?
|
|
55
|
+
status?(:published) or status?(:unpublished)
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
def can_be_deleted?
|
|
59
|
+
status?(:removed)
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
end
|