effective_classifieds 0.1.0 → 0.2.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 +4 -4
- data/README.md +5 -5
- data/app/controllers/admin/classified_wizards_controller.rb +19 -0
- data/app/controllers/effective/{classified_submissions_controller.rb → classified_wizards_controller.rb} +4 -4
- data/app/datatables/admin/{effective_classified_submissions_datatable.rb → effective_classified_wizards_datatable.rb} +2 -2
- data/app/datatables/admin/effective_classifieds_datatable.rb +1 -1
- data/app/datatables/effective_classified_wizards_datatable.rb +36 -0
- data/app/helpers/effective_classifieds_helper.rb +0 -5
- data/app/models/concerns/{effective_classifieds_classified_submission.rb → effective_classifieds_classified_wizard.rb} +7 -15
- data/app/models/effective/classified.rb +2 -2
- data/app/models/effective/classified_wizard.rb +7 -0
- data/app/views/effective/classified_wizards/_classified.html.haml +10 -0
- data/app/views/effective/classified_wizards/_classified_wizard.html.haml +3 -0
- data/app/views/effective/{classified_submissions → classified_wizards}/_content.html.haml +0 -0
- data/app/views/effective/{classified_submissions → classified_wizards}/_dashboard.html.haml +6 -6
- data/app/views/effective/{classified_submissions → classified_wizards}/_layout.html.haml +0 -0
- data/app/views/effective/{classified_submissions → classified_wizards}/_summary.html.haml +4 -4
- data/app/views/effective/classified_wizards/classified.html.haml +17 -0
- data/app/views/effective/{classified_submissions → classified_wizards}/start.html.haml +1 -1
- data/app/views/effective/classified_wizards/submitted.html.haml +14 -0
- data/app/views/effective/{classified_submissions → classified_wizards}/summary.html.haml +2 -2
- data/app/views/effective/classifieds/index.html.haml +2 -2
- data/config/effective_classifieds.rb +2 -2
- data/config/routes.rb +2 -2
- data/db/migrate/01_create_effective_classifieds.rb.erb +5 -5
- data/lib/effective_classifieds/engine.rb +1 -1
- data/lib/effective_classifieds/version.rb +1 -1
- data/lib/effective_classifieds.rb +4 -4
- data/lib/generators/effective_classifieds/install_generator.rb +1 -1
- metadata +18 -18
- data/app/controllers/admin/classified_submissions_controller.rb +0 -19
- data/app/datatables/effective_classified_submissions_datatable.rb +0 -36
- data/app/models/effective/classified_submission.rb +0 -7
- data/app/views/effective/classified_submissions/_classified.haml +0 -13
- data/app/views/effective/classified_submissions/_classified_submission.html.haml +0 -8
- data/app/views/effective/classified_submissions/classified.html.haml +0 -16
- data/app/views/effective/classified_submissions/submitted.html.haml +0 -13
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b922833fe51ff1291c85c0708b708120ab0d87c25ff96185c62b105b53fb1fe7
|
4
|
+
data.tar.gz: 7bbb631c54607a94616f8493234dbab069c1446b6d6256ed8758cba5b9c2dd2e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c0945747f72335c70181f4f63f89467b936974ad166a938a70e6b97ce23201b42c034997c4279d7f7372662b6afe15e1101759e3551e6d9a495612a9aa3fa148
|
7
|
+
data.tar.gz: c7dea63e19d5d077ba9c83f0cfaf7bace041f2aa82fdfa173fb5b8d75a5d8358a7380cc759769f75ce308d8b2c698ff88255791ea060e5fb705664d1ee3e209a
|
data/README.md
CHANGED
@@ -46,7 +46,7 @@ Please add the following to your user dashboard page:
|
|
46
46
|
.card-body= render 'effective/classifieds/dashboard'
|
47
47
|
|
48
48
|
.card.card-dashboard.mb-4
|
49
|
-
.card-body= render 'effective/
|
49
|
+
.card-body= render 'effective/classified_wizards/dashboard'
|
50
50
|
```
|
51
51
|
|
52
52
|
and
|
@@ -82,9 +82,9 @@ The permissions you actually want to define are as follows (using CanCan):
|
|
82
82
|
can([:index, :show], Effective::Classified) { |classified| classified.published? }
|
83
83
|
can([:show, :edit, :update], Effective::Classified) { |classified| classified.owner == user }
|
84
84
|
|
85
|
-
can(:new, EffectiveClassifieds.
|
86
|
-
can([:show, :index, :destroy], EffectiveClassifieds.
|
87
|
-
can([:update], EffectiveClassifieds.
|
85
|
+
can(:new, EffectiveClassifieds.ClassifiedWizard)
|
86
|
+
can([:show, :index, :destroy], EffectiveClassifieds.ClassifiedWizard) { |submission| submission.owner == user }
|
87
|
+
can([:update], EffectiveClassifieds.ClassifiedWizard) { |submission| submission.owner == user && !submission.was_submitted? }
|
88
88
|
|
89
89
|
if user.admin?
|
90
90
|
can :admin, :effective_classifieds
|
@@ -93,7 +93,7 @@ if user.admin?
|
|
93
93
|
can(:approve, Classified) { |classified| classified.was_submitted? && !classified.approved? }
|
94
94
|
can(:destroy, Classified) { |classified| !classified.draft? }
|
95
95
|
|
96
|
-
can([:index, :show], EffectiveClassifieds.
|
96
|
+
can([:index, :show], EffectiveClassifieds.ClassifiedWizard)
|
97
97
|
end
|
98
98
|
```
|
99
99
|
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module Admin
|
2
|
+
class ClassifiedWizardsController < ApplicationController
|
3
|
+
before_action(:authenticate_user!) if defined?(Devise)
|
4
|
+
before_action { EffectiveResources.authorize!(self, :admin, :effective_classifieds) }
|
5
|
+
|
6
|
+
include Effective::CrudController
|
7
|
+
|
8
|
+
resource_scope -> { EffectiveEvents.ClassifiedWizard.deep.all }
|
9
|
+
datatable -> { Admin::EffectiveClassifiedWizardsDatatable.new }
|
10
|
+
|
11
|
+
private
|
12
|
+
|
13
|
+
def permitted_params
|
14
|
+
model = (params.key?(:effective_classified_wizard) ? :effective_classified_wizard : :classified_wizard)
|
15
|
+
params.require(model).permit!
|
16
|
+
end
|
17
|
+
|
18
|
+
end
|
19
|
+
end
|
@@ -1,10 +1,10 @@
|
|
1
1
|
module Effective
|
2
|
-
class
|
2
|
+
class ClassifiedWizardsController < ApplicationController
|
3
3
|
before_action(:authenticate_user!) if defined?(Devise)
|
4
4
|
|
5
5
|
include Effective::WizardController
|
6
6
|
|
7
|
-
resource_scope -> { EffectiveClassifieds.
|
7
|
+
resource_scope -> { EffectiveClassifieds.ClassifiedWizard.deep.where(owner: current_user) }
|
8
8
|
|
9
9
|
# Allow only 1 in-progress application at a time
|
10
10
|
before_action(only: [:new, :show], unless: -> { resource&.done? }) do
|
@@ -12,7 +12,7 @@ module Effective
|
|
12
12
|
|
13
13
|
if existing.present?
|
14
14
|
flash[:success] = "You have been redirected to your in-progress classified ad submission"
|
15
|
-
redirect_to effective_classifieds.
|
15
|
+
redirect_to effective_classifieds.classified_wizard_build_path(existing, existing.next_step)
|
16
16
|
end
|
17
17
|
end
|
18
18
|
|
@@ -23,7 +23,7 @@ module Effective
|
|
23
23
|
private
|
24
24
|
|
25
25
|
def permitted_params
|
26
|
-
model = (params.key?(:
|
26
|
+
model = (params.key?(:effective_classified_wizard) ? :effective_classified_wizard : :classified_wizard)
|
27
27
|
params.require(model).permit!.except(:status, :status_steps, :wizard_steps, :submitted_at)
|
28
28
|
end
|
29
29
|
|
@@ -1,4 +1,4 @@
|
|
1
|
-
class Admin::
|
1
|
+
class Admin::EffectiveClassifiedWizardsDatatable < Effective::Datatable
|
2
2
|
datatable do
|
3
3
|
order :created_at
|
4
4
|
|
@@ -16,7 +16,7 @@ class Admin::EffectiveClassifiedSubmissionsDatatable < Effective::Datatable
|
|
16
16
|
end
|
17
17
|
|
18
18
|
collection do
|
19
|
-
EffectiveSubmissions.
|
19
|
+
EffectiveSubmissions.ClassifiedWizard.all.deep.done.joins(:classified)
|
20
20
|
end
|
21
21
|
|
22
22
|
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
# Dashboard Classified Submissions
|
2
|
+
class EffectiveClassifiedWizardsDatatable < Effective::Datatable
|
3
|
+
datatable do
|
4
|
+
order :created_at
|
5
|
+
|
6
|
+
col :token, visible: false
|
7
|
+
col :created_at, visible: false
|
8
|
+
|
9
|
+
col :submitted_at, label: 'Submitted' do |wizard|
|
10
|
+
wizard.submitted_at&.strftime('%F') || 'Incomplete'
|
11
|
+
end
|
12
|
+
|
13
|
+
col :classified, search: :string, label: 'Title'
|
14
|
+
|
15
|
+
col :owner, visible: false, search: :string
|
16
|
+
|
17
|
+
col :status, visible: false do |wizard|
|
18
|
+
wizard.classified&.status || wizard.status
|
19
|
+
end
|
20
|
+
|
21
|
+
actions_col(actions: []) do |wizard|
|
22
|
+
if wizard.draft?
|
23
|
+
dropdown_link_to('Continue', effective_classifieds.classified_wizard_build_path(wizard, wizard.next_step), 'data-turbolinks' => false)
|
24
|
+
else
|
25
|
+
dropdown_link_to('Edit', effective_classifieds.edit_classified_path(wizard.classified))
|
26
|
+
end
|
27
|
+
|
28
|
+
dropdown_link_to('Delete', effective_classifieds.classified_wizard_path(wizard), 'data-confirm': "Really delete #{wizard}?", 'data-method': :delete)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
collection do
|
33
|
+
EffectiveClassifieds.ClassifiedWizard.deep.where(owner: current_user).left_joins(:classified)
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|
@@ -1,28 +1,20 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
#
|
3
|
+
# EffectiveClassifiedsClassifiedWizard
|
4
4
|
#
|
5
|
-
# Mark your owner model with
|
5
|
+
# Mark your owner model with effective_classifieds_classified_wizard to get all the includes
|
6
6
|
|
7
|
-
module
|
7
|
+
module EffectiveClassifiedsClassifiedWizard
|
8
8
|
extend ActiveSupport::Concern
|
9
9
|
|
10
10
|
module Base
|
11
|
-
def
|
12
|
-
include ::
|
11
|
+
def effective_classifieds_classified_wizard
|
12
|
+
include ::EffectiveClassifiedsClassifiedWizard
|
13
13
|
end
|
14
14
|
end
|
15
15
|
|
16
16
|
module ClassMethods
|
17
|
-
def
|
18
|
-
|
19
|
-
def all_wizard_steps
|
20
|
-
const_get(:WIZARD_STEPS).keys
|
21
|
-
end
|
22
|
-
|
23
|
-
def required_wizard_steps
|
24
|
-
[:start, :summary, :submitted]
|
25
|
-
end
|
17
|
+
def effective_classifieds_classified_wizard?; true; end
|
26
18
|
end
|
27
19
|
|
28
20
|
included do
|
@@ -47,7 +39,7 @@ module EffectiveClassifiedsClassifiedSubmission
|
|
47
39
|
accepts_nested_attributes_for :owner
|
48
40
|
|
49
41
|
# Effective Namespace
|
50
|
-
has_one :classified, class_name: 'Effective::Classified', inverse_of: :
|
42
|
+
has_one :classified, class_name: 'Effective::Classified', inverse_of: :classified_wizard, dependent: :destroy
|
51
43
|
accepts_nested_attributes_for :classified, reject_if: :all_blank, allow_destroy: true
|
52
44
|
|
53
45
|
effective_resource do
|
@@ -15,7 +15,7 @@ module Effective
|
|
15
15
|
belongs_to :owner, polymorphic: true
|
16
16
|
|
17
17
|
# When submitted through the wizard
|
18
|
-
belongs_to :
|
18
|
+
belongs_to :classified_wizard, polymorphic: true, optional: true
|
19
19
|
|
20
20
|
has_rich_text :body
|
21
21
|
|
@@ -102,7 +102,7 @@ module Effective
|
|
102
102
|
end
|
103
103
|
|
104
104
|
# Automatically approve submissions created by admins outside the submissions wizard
|
105
|
-
before_validation(if: -> { new_record? &&
|
105
|
+
before_validation(if: -> { new_record? && classified_wizard.blank? }) do
|
106
106
|
assign_attributes(status: :approved)
|
107
107
|
end
|
108
108
|
|
@@ -0,0 +1,10 @@
|
|
1
|
+
.card
|
2
|
+
.card-body
|
3
|
+
.row
|
4
|
+
.col-sm
|
5
|
+
%h5.card-title= classified_wizard.wizard_step_title(:classified)
|
6
|
+
.col-sm-auto.text-right
|
7
|
+
= link_to('Edit', wizard_path(:classified)) if edit_effective_wizard?
|
8
|
+
|
9
|
+
- classified = classified_wizard.classified
|
10
|
+
= render 'effective/classifieds/classified', classified: classified
|
File without changes
|
@@ -1,8 +1,8 @@
|
|
1
|
-
- if can?(:new, EffectiveClassifieds.
|
1
|
+
- if can?(:new, EffectiveClassifieds.ClassifiedWizard)
|
2
2
|
|
3
3
|
-# In-progress submission
|
4
|
-
- submission = EffectiveClassifieds.
|
5
|
-
- datatable = EffectiveResources.best('
|
4
|
+
- submission = EffectiveClassifieds.ClassifiedWizard.in_progress.for(current_user).first
|
5
|
+
- datatable = EffectiveResources.best('EffectiveClassifiedWizardsDatatable').new(self, namespace: :effective)
|
6
6
|
|
7
7
|
- if submission.present?
|
8
8
|
%h2 In-progress Classified Ads
|
@@ -12,9 +12,9 @@
|
|
12
12
|
|
13
13
|
%p
|
14
14
|
Please
|
15
|
-
= link_to("Continue submission for #{submission.classified.presence || 'a classified'}", effective_classifieds.
|
15
|
+
= link_to("Continue submission for #{submission.classified.presence || 'a classified'}", effective_classifieds.classified_wizard_build_path(submission, submission.next_step), 'data-turbolinks' => false, class: 'btn btn-primary')
|
16
16
|
or you can
|
17
|
-
= link_to('Abandon submission', effective_classifieds.
|
17
|
+
= link_to('Abandon submission', effective_classifieds.classified_wizard_path(submission), 'data-confirm': "Really delete #{submission}?", 'data-method': :delete, class: 'btn btn-danger')
|
18
18
|
to submit another.
|
19
19
|
|
20
20
|
%hr
|
@@ -27,4 +27,4 @@
|
|
27
27
|
%p You don't have any classified ads. When you do, we'll show them here.
|
28
28
|
|
29
29
|
- if submission.blank?
|
30
|
-
%p= link_to 'Submit New Classified Ad', effective_classifieds.
|
30
|
+
%p= link_to 'Submit New Classified Ad', effective_classifieds.new_classified_wizard_path, class: 'btn btn-primary'
|
File without changes
|
@@ -1,5 +1,5 @@
|
|
1
1
|
= card('Classified Ad') do
|
2
|
-
- classified =
|
2
|
+
- classified = classified_wizard.classified
|
3
3
|
|
4
4
|
%table.table.table-sm
|
5
5
|
%tbody
|
@@ -16,12 +16,12 @@
|
|
16
16
|
%tr
|
17
17
|
%th Owner
|
18
18
|
%td
|
19
|
-
- url = (polymorphic_admin_path(
|
20
|
-
= link_to(
|
19
|
+
- url = (polymorphic_admin_path(classified_wizard.owner) rescue "/admin/users/#{classified_wizard.owner.to_param}/edit")
|
20
|
+
= link_to(classified_wizard.owner, url)
|
21
21
|
- else
|
22
22
|
%tr
|
23
23
|
%th Owner
|
24
|
-
%td=
|
24
|
+
%td= classified_wizard.owner
|
25
25
|
|
26
26
|
- if classified&.was_submitted?
|
27
27
|
%tr
|
@@ -0,0 +1,17 @@
|
|
1
|
+
= render 'layout' do
|
2
|
+
= render 'effective/classified_wizards/content', resource: resource
|
3
|
+
|
4
|
+
.card
|
5
|
+
.card-body
|
6
|
+
= effective_form_with(model: resource, url: wizard_path(step), method: :put) do |f|
|
7
|
+
= f.hidden_field :id
|
8
|
+
|
9
|
+
= f.fields_for :classified, (f.object.classified || f.object.build_classified) do |fc|
|
10
|
+
= fc.hidden_field :id
|
11
|
+
|
12
|
+
= fc.hidden_field :owner_id, value: f.object.owner_id
|
13
|
+
= fc.hidden_field :owner_type, value: f.object.owner_type
|
14
|
+
|
15
|
+
= render('effective/classifieds/fields', f: fc, classified: fc.object)
|
16
|
+
|
17
|
+
= f.save 'Save and Continue'
|
@@ -0,0 +1,14 @@
|
|
1
|
+
= render 'layout' do
|
2
|
+
= render 'effective/classified_wizards/content', resource: resource
|
3
|
+
|
4
|
+
- raise('expected a submitted classified_wizard') unless resource.was_submitted?
|
5
|
+
|
6
|
+
.alert.alert-warning.mb-4
|
7
|
+
Successfully submitted on #{resource.submitted_at.strftime('%F')}.
|
8
|
+
|
9
|
+
= link_to "Return to Dashboard", root_path, class: 'btn btn-lg btn-primary mb-4'
|
10
|
+
|
11
|
+
= render 'effective/classified_wizards/summary', classified_wizard: resource
|
12
|
+
= render 'effective/classified_wizards/classified_wizard', classified_wizard: resource
|
13
|
+
|
14
|
+
= link_to "Return to Dashboard", root_path, class: 'btn btn-lg btn-primary'
|
@@ -1,7 +1,7 @@
|
|
1
1
|
= render 'layout' do
|
2
|
-
= render 'effective/
|
2
|
+
= render 'effective/classified_wizards/content', resource: resource
|
3
3
|
|
4
|
-
= render('effective/
|
4
|
+
= render('effective/classified_wizards/classified_wizard', classified_wizard: resource)
|
5
5
|
|
6
6
|
= effective_form_with(model: resource, url: wizard_path(step), method: :put) do |f|
|
7
7
|
= f.hidden_field :id
|
@@ -1,8 +1,8 @@
|
|
1
1
|
.resource-buttons
|
2
|
-
= link_to 'Submit New Classified Ad', effective_classifieds.
|
2
|
+
= link_to 'Submit New Classified Ad', effective_classifieds.new_classified_wizard_path, class: 'btn btn-primary'
|
3
3
|
|
4
4
|
= card do
|
5
|
-
- if @datatable
|
5
|
+
- if @datatable.present?(self)
|
6
6
|
= render_datatable(@datatable, simple: true)
|
7
7
|
- else
|
8
8
|
%p There are no active classified ads. When there are, we'll show them here.
|
@@ -1,6 +1,6 @@
|
|
1
1
|
EffectiveClassifieds.setup do |config|
|
2
2
|
config.classifieds_table_name = :classifieds
|
3
|
-
config.
|
3
|
+
config.classified_wizards_table_name = :classified_wizards
|
4
4
|
|
5
5
|
# Every classified must have a category.
|
6
6
|
config.categories = ['Job', 'Equipment Sales', 'Other']
|
@@ -10,7 +10,7 @@ EffectiveClassifieds.setup do |config|
|
|
10
10
|
# config.layout = { application: 'application', admin: 'admin' }
|
11
11
|
|
12
12
|
# Classified Settings
|
13
|
-
# config.
|
13
|
+
# config.classified_wizard_class_name = 'Effective::ClassifiedWizard'
|
14
14
|
|
15
15
|
# Pagination length on the Classified#index page
|
16
16
|
config.per_page = :all
|
data/config/routes.rb
CHANGED
@@ -9,8 +9,8 @@ EffectiveClassifieds::Engine.routes.draw do
|
|
9
9
|
scope module: 'effective' do
|
10
10
|
resources :classifieds, only: [:index, :show, :edit, :update]
|
11
11
|
|
12
|
-
resources :
|
13
|
-
resources :build, controller: :
|
12
|
+
resources :classified_wizards, only: [:new, :show, :destroy] do
|
13
|
+
resources :build, controller: :classified_wizards, only: [:show, :update]
|
14
14
|
end
|
15
15
|
|
16
16
|
end
|
@@ -1,8 +1,8 @@
|
|
1
1
|
class CreateEffectiveClassifieds < ActiveRecord::Migration[6.1]
|
2
2
|
def change
|
3
3
|
create_table <%= @classifieds_table_name %> do |t|
|
4
|
-
t.integer :
|
5
|
-
t.string :
|
4
|
+
t.integer :classified_wizard_id
|
5
|
+
t.string :classified_wizard_type
|
6
6
|
|
7
7
|
t.integer :owner_id
|
8
8
|
t.string :owner_type
|
@@ -36,7 +36,7 @@ class CreateEffectiveClassifieds < ActiveRecord::Migration[6.1]
|
|
36
36
|
add_index :classifieds, [:owner_id, :owner_type]
|
37
37
|
add_index :classifieds, :slug
|
38
38
|
|
39
|
-
create_table <%= @
|
39
|
+
create_table <%= @classified_wizards_table_name %> do |t|
|
40
40
|
t.string :token
|
41
41
|
|
42
42
|
t.integer :owner_id
|
@@ -56,7 +56,7 @@ class CreateEffectiveClassifieds < ActiveRecord::Migration[6.1]
|
|
56
56
|
t.datetime :created_at
|
57
57
|
end
|
58
58
|
|
59
|
-
add_index :
|
60
|
-
add_index :
|
59
|
+
add_index :classified_wizards, [:owner_id, :owner_type]
|
60
|
+
add_index :classified_wizards, :token
|
61
61
|
end
|
62
62
|
end
|
@@ -10,7 +10,7 @@ module EffectiveClassifieds
|
|
10
10
|
# Include acts_as_addressable concern and allow any ActiveRecord object to call it
|
11
11
|
initializer 'effective_classifieds.active_record' do |app|
|
12
12
|
ActiveSupport.on_load :active_record do
|
13
|
-
ActiveRecord::Base.extend(
|
13
|
+
ActiveRecord::Base.extend(EffectiveClassifiedsClassifiedWizard::Base)
|
14
14
|
end
|
15
15
|
end
|
16
16
|
|
@@ -7,17 +7,17 @@ module EffectiveClassifieds
|
|
7
7
|
|
8
8
|
def self.config_keys
|
9
9
|
[
|
10
|
-
:classifieds_table_name, :
|
10
|
+
:classifieds_table_name, :classified_wizards_table_name,
|
11
11
|
:layout, :categories, :per_page, :use_effective_roles, :max_duration, :auto_approve,
|
12
|
-
:
|
12
|
+
:classified_wizard_class_name,
|
13
13
|
:mailer, :parent_mailer, :deliver_method, :mailer_layout, :mailer_sender, :mailer_admin
|
14
14
|
]
|
15
15
|
end
|
16
16
|
|
17
17
|
include EffectiveGem
|
18
18
|
|
19
|
-
def self.
|
20
|
-
|
19
|
+
def self.ClassifiedWizard
|
20
|
+
classified_wizard_class_name&.constantize || Effective::ClassifiedWizard
|
21
21
|
end
|
22
22
|
|
23
23
|
def self.mailer_class
|
@@ -21,7 +21,7 @@ module EffectiveMemberships
|
|
21
21
|
|
22
22
|
def create_migration_file
|
23
23
|
@classifieds_table_name = ':' + EffectiveClassifieds.classifieds_table_name.to_s
|
24
|
-
@
|
24
|
+
@classified_wizards_table_name = ':' + EffectiveClassifieds.classified_wizards_table_name.to_s
|
25
25
|
|
26
26
|
migration_template ('../' * 3) + 'db/migrate/01_create_effective_classifieds.rb.erb', 'db/migrate/create_effective_classifieds.rb'
|
27
27
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: effective_classifieds
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Code and Effect
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-01-
|
11
|
+
date: 2022-01-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -179,32 +179,32 @@ files:
|
|
179
179
|
- app/assets/javascripts/effective_classifieds/base.js
|
180
180
|
- app/assets/stylesheets/effective_classifieds.scss
|
181
181
|
- app/assets/stylesheets/effective_classifieds/base.scss
|
182
|
-
- app/controllers/admin/
|
182
|
+
- app/controllers/admin/classified_wizards_controller.rb
|
183
183
|
- app/controllers/admin/classifieds_controller.rb
|
184
|
-
- app/controllers/effective/
|
184
|
+
- app/controllers/effective/classified_wizards_controller.rb
|
185
185
|
- app/controllers/effective/classifieds_controller.rb
|
186
|
-
- app/datatables/admin/
|
186
|
+
- app/datatables/admin/effective_classified_wizards_datatable.rb
|
187
187
|
- app/datatables/admin/effective_classifieds_datatable.rb
|
188
|
-
- app/datatables/
|
188
|
+
- app/datatables/effective_classified_wizards_datatable.rb
|
189
189
|
- app/datatables/effective_classifieds_datatable.rb
|
190
190
|
- app/helpers/effective_classifieds_helper.rb
|
191
191
|
- app/mailers/effective/classifieds_mailer.rb
|
192
|
-
- app/models/concerns/
|
192
|
+
- app/models/concerns/effective_classifieds_classified_wizard.rb
|
193
193
|
- app/models/effective/classified.rb
|
194
|
-
- app/models/effective/
|
194
|
+
- app/models/effective/classified_wizard.rb
|
195
195
|
- app/views/admin/classifieds/_form.html.haml
|
196
196
|
- app/views/admin/classifieds/_form_access.html.haml
|
197
197
|
- app/views/admin/classifieds/_form_classified.html.haml
|
198
|
-
- app/views/effective/
|
199
|
-
- app/views/effective/
|
200
|
-
- app/views/effective/
|
201
|
-
- app/views/effective/
|
202
|
-
- app/views/effective/
|
203
|
-
- app/views/effective/
|
204
|
-
- app/views/effective/
|
205
|
-
- app/views/effective/
|
206
|
-
- app/views/effective/
|
207
|
-
- app/views/effective/
|
198
|
+
- app/views/effective/classified_wizards/_classified.html.haml
|
199
|
+
- app/views/effective/classified_wizards/_classified_wizard.html.haml
|
200
|
+
- app/views/effective/classified_wizards/_content.html.haml
|
201
|
+
- app/views/effective/classified_wizards/_dashboard.html.haml
|
202
|
+
- app/views/effective/classified_wizards/_layout.html.haml
|
203
|
+
- app/views/effective/classified_wizards/_summary.html.haml
|
204
|
+
- app/views/effective/classified_wizards/classified.html.haml
|
205
|
+
- app/views/effective/classified_wizards/start.html.haml
|
206
|
+
- app/views/effective/classified_wizards/submitted.html.haml
|
207
|
+
- app/views/effective/classified_wizards/summary.html.haml
|
208
208
|
- app/views/effective/classifieds/_classified.html.haml
|
209
209
|
- app/views/effective/classifieds/_dashboard.html.haml
|
210
210
|
- app/views/effective/classifieds/_fields.html.haml
|
@@ -1,19 +0,0 @@
|
|
1
|
-
module Admin
|
2
|
-
class ClassifiedSubmissionsController < ApplicationController
|
3
|
-
before_action(:authenticate_user!) if defined?(Devise)
|
4
|
-
before_action { EffectiveResources.authorize!(self, :admin, :effective_classifieds) }
|
5
|
-
|
6
|
-
include Effective::CrudController
|
7
|
-
|
8
|
-
resource_scope -> { EffectiveEvents.ClassifiedSubmission.deep.all }
|
9
|
-
datatable -> { Admin::EffectiveClassifiedSubmissionsDatatable.new }
|
10
|
-
|
11
|
-
private
|
12
|
-
|
13
|
-
def permitted_params
|
14
|
-
model = (params.key?(:effective_classified_submission) ? :effective_classified_submission : :classified_submission)
|
15
|
-
params.require(model).permit!
|
16
|
-
end
|
17
|
-
|
18
|
-
end
|
19
|
-
end
|
@@ -1,36 +0,0 @@
|
|
1
|
-
# Dashboard Classified Submissions
|
2
|
-
class EffectiveClassifiedSubmissionsDatatable < Effective::Datatable
|
3
|
-
datatable do
|
4
|
-
order :created_at
|
5
|
-
|
6
|
-
col :token, visible: false
|
7
|
-
col :created_at, visible: false
|
8
|
-
|
9
|
-
col :submitted_at, label: 'Submitted' do |submission|
|
10
|
-
submission.submitted_at&.strftime('%F') || 'Incomplete'
|
11
|
-
end
|
12
|
-
|
13
|
-
col :classified, search: :string, label: 'Title'
|
14
|
-
|
15
|
-
col :owner, visible: false, search: :string
|
16
|
-
|
17
|
-
col :status, visible: false do |submission|
|
18
|
-
submission.classified&.status || submission.status
|
19
|
-
end
|
20
|
-
|
21
|
-
actions_col(actions: []) do |submission|
|
22
|
-
if submission.draft?
|
23
|
-
dropdown_link_to('Continue', effective_classifieds.classified_submission_build_path(submission, submission.next_step), 'data-turbolinks' => false)
|
24
|
-
else
|
25
|
-
dropdown_link_to('Edit', effective_classifieds.edit_classified_path(submission.classified))
|
26
|
-
end
|
27
|
-
|
28
|
-
dropdown_link_to('Delete', effective_classifieds.classified_submission_path(submission), 'data-confirm': "Really delete #{submission}?", 'data-method': :delete)
|
29
|
-
end
|
30
|
-
end
|
31
|
-
|
32
|
-
collection do
|
33
|
-
EffectiveClassifieds.ClassifiedSubmission.deep.where(owner: current_user).left_joins(:classified)
|
34
|
-
end
|
35
|
-
|
36
|
-
end
|
@@ -1,13 +0,0 @@
|
|
1
|
-
.card
|
2
|
-
.card-body
|
3
|
-
.row
|
4
|
-
.col-sm
|
5
|
-
%h5.card-title= classified_submission.wizard_step_title(:classified)
|
6
|
-
.col-sm-auto.text-right
|
7
|
-
= link_to('Edit', wizard_path(:classified)) if edit_effective_classified_submissions_wizard?
|
8
|
-
|
9
|
-
- classified = classified_submission.classified
|
10
|
-
|
11
|
-
- if classified.present?
|
12
|
-
= render('effective/classifieds/classified', classified: classified) do
|
13
|
-
= classified.body
|
@@ -1,8 +0,0 @@
|
|
1
|
-
.effective-classified-submission
|
2
|
-
- blacklist = EffectiveClassifieds.ClassifiedSubmission.required_wizard_steps
|
3
|
-
- steps = classified_submission.required_steps - blacklist
|
4
|
-
|
5
|
-
= render "effective/classified_submissions/summary", classified_submission: classified_submission
|
6
|
-
|
7
|
-
- steps.select { |step| classified_submission.has_completed_step?(step) }.each do |partial|
|
8
|
-
= render "effective/classified_submissions/#{partial}", classified_submission: classified_submission, step: partial
|
@@ -1,16 +0,0 @@
|
|
1
|
-
= render 'effective/classified_submissions/content', resource: resource
|
2
|
-
|
3
|
-
.card
|
4
|
-
.card-body
|
5
|
-
= effective_form_with(model: resource, url: wizard_path(step), method: :put) do |f|
|
6
|
-
= f.hidden_field :id
|
7
|
-
|
8
|
-
= f.fields_for :classified, (f.object.classified || f.object.build_classified) do |fc|
|
9
|
-
= fc.hidden_field :id
|
10
|
-
|
11
|
-
= fc.hidden_field :owner_id, value: f.object.owner_id
|
12
|
-
= fc.hidden_field :owner_type, value: f.object.owner_type
|
13
|
-
|
14
|
-
= render('effective/classifieds/fields', f: fc, classified: fc.object)
|
15
|
-
|
16
|
-
= f.save 'Save and Continue'
|
@@ -1,13 +0,0 @@
|
|
1
|
-
= render 'layout' do
|
2
|
-
= render 'effective/classified_submissions/content', resource: resource
|
3
|
-
|
4
|
-
- raise('expected a submitted classified_submission') unless resource.was_submitted?
|
5
|
-
|
6
|
-
.alert.alert-warning.mb-4
|
7
|
-
Successfully submitted on #{resource.submitted_at.strftime('%F')}.
|
8
|
-
|
9
|
-
= link_to "Return to Dashboard", root_path, class: 'btn btn-lg btn-primary mb-4'
|
10
|
-
|
11
|
-
= render 'effective/classified_submissions/classified_submission', classified_submission: resource
|
12
|
-
|
13
|
-
= link_to "Return to Dashboard", root_path, class: 'btn btn-lg btn-primary'
|