effective_memberships 0.10.1 → 0.12.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/app/controllers/admin/documents_controller.rb +15 -0
- data/app/datatables/admin/effective_documents_datatable.rb +28 -0
- data/app/datatables/effective_documents_datatable.rb +31 -0
- data/app/models/concerns/effective_memberships_category.rb +4 -0
- data/app/models/effective/document.rb +50 -0
- data/app/models/effective/fee.rb +7 -1
- data/app/views/admin/documents/_form.html.haml +19 -0
- data/app/views/effective/documents/_dashboard.html.haml +8 -0
- data/config/effective_memberships.rb +5 -0
- data/config/locales/effective_memberships.en.yml +39 -0
- data/config/routes.rb +1 -0
- data/db/migrate/01_create_effective_memberships.rb.erb +14 -0
- data/lib/effective_memberships/version.rb +1 -1
- data/lib/effective_memberships.rb +2 -2
- metadata +9 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fcda6f904900bdb868f397b966b91246eb5199ccb40e2fd0ff585fe1a40a5c2d
|
4
|
+
data.tar.gz: 496de8f40e138891794d41f6ce816941638ace3701dbfd40e111f39c4e5aaa4a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5bc4751c68972b32b0e851d42a837bfeacacf73291aa128871836fe339d339c56ef26f8cd78badb8b12bf2ad41ea0487b232d30b0fa71e0d2e955a7c2a2e8543
|
7
|
+
data.tar.gz: 8bdb806fe84d1c1034b6fa620a92268e6cf1c220f2679d58be9d705971501230a87af5a4a1d38e5bd7bd6f94f1a4638a464e15ce4937938f9269d10f404b189c
|
@@ -0,0 +1,15 @@
|
|
1
|
+
module Admin
|
2
|
+
class DocumentsController < ApplicationController
|
3
|
+
before_action(:authenticate_user!) if defined?(Devise)
|
4
|
+
before_action { EffectiveResources.authorize!(self, :admin, :effective_memberships) }
|
5
|
+
|
6
|
+
include Effective::CrudController
|
7
|
+
|
8
|
+
private
|
9
|
+
|
10
|
+
def permitted_params
|
11
|
+
params.require(:effective_document).permit!
|
12
|
+
end
|
13
|
+
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
module Admin
|
2
|
+
class EffectiveDocumentsDatatable < Effective::Datatable
|
3
|
+
datatable do
|
4
|
+
order :updated_at
|
5
|
+
|
6
|
+
col :updated_at, visible: false
|
7
|
+
col :created_at, visible: false
|
8
|
+
col :id, visible: false
|
9
|
+
|
10
|
+
col :file
|
11
|
+
col :owner, label: 'User'
|
12
|
+
col :display_to_owner, label: 'Display to user'
|
13
|
+
|
14
|
+
if (categories = Array(EffectiveMemberships.document_categories)).present?
|
15
|
+
col :category, search: categories
|
16
|
+
end
|
17
|
+
|
18
|
+
col :title, visible: false
|
19
|
+
col :notes
|
20
|
+
|
21
|
+
actions_col
|
22
|
+
end
|
23
|
+
|
24
|
+
collection do
|
25
|
+
Effective::Document.deep.all
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
# Dashboard Documents
|
2
|
+
class EffectiveDocumentsDatatable < Effective::Datatable
|
3
|
+
datatable do
|
4
|
+
order :updated_at
|
5
|
+
|
6
|
+
col :updated_at, visible: false
|
7
|
+
col :created_at, visible: false
|
8
|
+
col :id, visible: false
|
9
|
+
|
10
|
+
col :owner, label: 'User or Organization'
|
11
|
+
|
12
|
+
if (categories = Array(EffectiveMemberships.document_categories)).present?
|
13
|
+
col :category, search: categories
|
14
|
+
end
|
15
|
+
|
16
|
+
col :file
|
17
|
+
|
18
|
+
col :title, visible: false
|
19
|
+
col :notes
|
20
|
+
|
21
|
+
actions_col do |document|
|
22
|
+
dropdown_link_to('Download', url_for(document.file)) if document.file.attached?
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
26
|
+
|
27
|
+
collection(apply_belongs_to: false) do
|
28
|
+
Effective::Document.deep.for(current_user).display_to_owner
|
29
|
+
end
|
30
|
+
|
31
|
+
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
module Effective
|
2
|
+
class Document < ActiveRecord::Base
|
3
|
+
self.table_name = EffectiveMemberships.documents_table_name.to_s
|
4
|
+
|
5
|
+
log_changes(to: :owner) if respond_to?(:log_changes)
|
6
|
+
|
7
|
+
# This fee may belong to an user, organization or other parent model
|
8
|
+
belongs_to :owner, polymorphic: true, optional: true
|
9
|
+
|
10
|
+
has_one_attached :file
|
11
|
+
|
12
|
+
effective_resource do
|
13
|
+
title :string
|
14
|
+
category :string
|
15
|
+
display_to_owner :boolean # Display on dashbaord
|
16
|
+
|
17
|
+
notes :text
|
18
|
+
|
19
|
+
timestamps
|
20
|
+
end
|
21
|
+
|
22
|
+
scope :sorted, -> { order(:id) }
|
23
|
+
scope :deep, -> { with_attached_file }
|
24
|
+
scope :display_to_owner, -> { where(display_to_owner: true) }
|
25
|
+
|
26
|
+
scope :for, -> (user) {
|
27
|
+
raise('expected a effective memberships user') unless user.class.try(:effective_memberships_user?)
|
28
|
+
where(owner: user).or(where(owner: user.organizations))
|
29
|
+
}
|
30
|
+
|
31
|
+
before_validation(if: -> { file.attached? && title.blank? }) do
|
32
|
+
assign_attributes(title: file.filename.to_s)
|
33
|
+
end
|
34
|
+
|
35
|
+
validates :title, presence: true
|
36
|
+
validates :file, presence: true
|
37
|
+
|
38
|
+
validate do
|
39
|
+
if (categories = Array(EffectiveMemberships.document_categories)).present?
|
40
|
+
self.errors.add(:category, "can't be blank") if category.blank?
|
41
|
+
self.errors.add(:category, "is invalid") unless categories.include?(category)
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
def to_s
|
46
|
+
title.presence || model_name.human
|
47
|
+
end
|
48
|
+
|
49
|
+
end
|
50
|
+
end
|
data/app/models/effective/fee.rb
CHANGED
@@ -144,7 +144,13 @@ module Effective
|
|
144
144
|
end
|
145
145
|
|
146
146
|
def default_title
|
147
|
-
|
147
|
+
return nil unless period.present? && fee_type.present?
|
148
|
+
|
149
|
+
[
|
150
|
+
period.strftime('%Y'),
|
151
|
+
category,
|
152
|
+
EffectiveResources.et("effective_memberships.fees.#{fee_type.downcase}")
|
153
|
+
].join(' ')
|
148
154
|
end
|
149
155
|
|
150
156
|
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
= effective_form_with(model: [:admin, document], engine: true) do |f|
|
2
|
+
- if inline_datatable?
|
3
|
+
= f.hidden_field :owner_id
|
4
|
+
= f.hidden_field :owner_type
|
5
|
+
- else
|
6
|
+
= f.hidden_field :owner_type, value: current_user.class.name
|
7
|
+
|
8
|
+
- ajax_url = (@select2_ajax_path || effective_resources.users_admin_select2_ajax_index_path) unless Rails.env.test?
|
9
|
+
= f.select :owner_id, current_user.class.all, label: 'User', ajax_url: ajax_url
|
10
|
+
|
11
|
+
- if (categories = Array(EffectiveMemberships.document_categories)).present?
|
12
|
+
- f.object.category ||= categories.first
|
13
|
+
= f.select :category, categories, required: true
|
14
|
+
|
15
|
+
= f.file_field :file
|
16
|
+
= f.text_area :notes
|
17
|
+
= f.check_box :display_to_owner, label: "Yes, display this document on the user dashboard"
|
18
|
+
|
19
|
+
= effective_submit(f)
|
@@ -0,0 +1,8 @@
|
|
1
|
+
- datatable = EffectiveResources.best('EffectiveDocumentsDatatable').new(self, namespace: :effective)
|
2
|
+
|
3
|
+
%h2 Documents
|
4
|
+
|
5
|
+
- if datatable.present?
|
6
|
+
= render_simple_datatable(datatable)
|
7
|
+
- else
|
8
|
+
%p You have not been shared any documents. When you do, we'll show them here.
|
@@ -2,6 +2,7 @@ EffectiveMemberships.setup do |config|
|
|
2
2
|
config.categories_table_name = :categories
|
3
3
|
config.applicants_table_name = :applicants
|
4
4
|
config.applicant_reviews_table_name = :applicant_reviews
|
5
|
+
config.documents_table_name = :documents
|
5
6
|
config.fee_payments_table_name = :fee_payments
|
6
7
|
config.organizations_table_name = :organizations
|
7
8
|
config.representatives_table_name = :representatives
|
@@ -37,6 +38,10 @@ EffectiveMemberships.setup do |config|
|
|
37
38
|
# When false, hide the reviewed state entirely
|
38
39
|
# config.applicant_reviews = false
|
39
40
|
|
41
|
+
# Documents
|
42
|
+
# Documents will require a category when present
|
43
|
+
# config.document_categories = ['Documents']
|
44
|
+
|
40
45
|
# Mailer Settings
|
41
46
|
# Please see config/initializers/effective_resources.rb for default effective_* gem mailer settings
|
42
47
|
#
|
@@ -0,0 +1,39 @@
|
|
1
|
+
en:
|
2
|
+
effective_memberships:
|
3
|
+
name: 'Effective Memberships'
|
4
|
+
|
5
|
+
fees:
|
6
|
+
applicant: 'Applicant Fee'
|
7
|
+
prorated: 'Prorated Fee'
|
8
|
+
reinstatement: 'Reinstatement Fee'
|
9
|
+
renewal: 'Renewal Fee'
|
10
|
+
late: 'Late Fee'
|
11
|
+
discount: 'Discount Fee'
|
12
|
+
admin: 'Admin Fee'
|
13
|
+
|
14
|
+
activerecord:
|
15
|
+
models:
|
16
|
+
# These ones might be app level
|
17
|
+
app/applicant: 'Applicant'
|
18
|
+
app/applicant_review: 'Applicant Review'
|
19
|
+
app/membership_card: 'Membership Card'
|
20
|
+
app/category: 'Category'
|
21
|
+
app/directory: 'Directory'
|
22
|
+
app/fee_payment: 'Fee Payment'
|
23
|
+
app/organization: 'Organization'
|
24
|
+
app/status: 'Status'
|
25
|
+
|
26
|
+
# These ones should stay effective
|
27
|
+
effective/applicant_course_area: 'Course Area'
|
28
|
+
effective/applicant_course_name: 'Course Name'
|
29
|
+
effective/applicant_course: 'Course'
|
30
|
+
effective/applicant_education: 'Education'
|
31
|
+
effective/applicant_endorsement: 'Endorsement'
|
32
|
+
effective/applicant_equivalence: 'Equivalence'
|
33
|
+
effective/applicant_experience: 'Experience'
|
34
|
+
effective/applicant_reference: 'Reference'
|
35
|
+
effective/document: 'Document'
|
36
|
+
effective/fee: 'Fee'
|
37
|
+
effective/membership_history: 'Membership History'
|
38
|
+
effective/membership: 'Membership'
|
39
|
+
effective/representative: 'Representative'
|
data/config/routes.rb
CHANGED
@@ -529,5 +529,19 @@ class CreateEffectiveMemberships < ActiveRecord::Migration[6.0]
|
|
529
529
|
add_index :fee_payments, :status
|
530
530
|
add_index :fee_payments, :token
|
531
531
|
|
532
|
+
# Documents
|
533
|
+
create_table :documents do |t|
|
534
|
+
t.integer :owner_id
|
535
|
+
t.string :owner_type
|
536
|
+
|
537
|
+
t.string :title
|
538
|
+
t.string :category
|
539
|
+
t.boolean :display_to_owner
|
540
|
+
|
541
|
+
t.text :notes
|
542
|
+
|
543
|
+
t.timestamps
|
544
|
+
end
|
545
|
+
|
532
546
|
end
|
533
547
|
end
|
@@ -6,9 +6,9 @@ module EffectiveMemberships
|
|
6
6
|
|
7
7
|
def self.config_keys
|
8
8
|
[
|
9
|
-
:categories_table_name, :applicants_table_name, :applicant_reviews_table_name, :fee_payments_table_name, :organizations_table_name, :representatives_table_name, :statuses_table_name,
|
9
|
+
:documents_table_name, :categories_table_name, :applicants_table_name, :applicant_reviews_table_name, :fee_payments_table_name, :organizations_table_name, :representatives_table_name, :statuses_table_name,
|
10
10
|
:category_class_name, :organization_class_name, :applicant_class_name, :applicant_review_class_name, :fee_payment_class_name, :registrar_class_name, :membership_card_class_name, :membership_directory_class_name, :status_class_name,
|
11
|
-
:additional_fee_types, :applicant_reviews, :applicant_endorsements_endorser_collection,
|
11
|
+
:additional_fee_types, :applicant_reviews, :applicant_endorsements_endorser_collection, :document_categories,
|
12
12
|
:layout,
|
13
13
|
:mailer, :parent_mailer, :deliver_method, :mailer_layout, :mailer_sender, :mailer_admin, :mailer_subject, :use_effective_email_templates
|
14
14
|
]
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: effective_memberships
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.12.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: 2023-
|
11
|
+
date: 2023-03-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -261,6 +261,7 @@ files:
|
|
261
261
|
- app/controllers/admin/applicant_reviews_controller.rb
|
262
262
|
- app/controllers/admin/applicants_controller.rb
|
263
263
|
- app/controllers/admin/categories_controller.rb
|
264
|
+
- app/controllers/admin/documents_controller.rb
|
264
265
|
- app/controllers/admin/fee_payments_controller.rb
|
265
266
|
- app/controllers/admin/fees_controller.rb
|
266
267
|
- app/controllers/admin/membership_histories_controller.rb
|
@@ -285,6 +286,7 @@ files:
|
|
285
286
|
- app/datatables/admin/effective_applicant_reviews_datatable.rb
|
286
287
|
- app/datatables/admin/effective_applicants_datatable.rb
|
287
288
|
- app/datatables/admin/effective_categories_datatable.rb
|
289
|
+
- app/datatables/admin/effective_documents_datatable.rb
|
288
290
|
- app/datatables/admin/effective_fee_payments_datatable.rb
|
289
291
|
- app/datatables/admin/effective_fees_datatable.rb
|
290
292
|
- app/datatables/admin/effective_membership_histories_datatable.rb
|
@@ -302,6 +304,7 @@ files:
|
|
302
304
|
- app/datatables/effective_applicant_reviews_datatable.rb
|
303
305
|
- app/datatables/effective_applicants_datatable.rb
|
304
306
|
- app/datatables/effective_available_applicant_reviews_datatable.rb
|
307
|
+
- app/datatables/effective_documents_datatable.rb
|
305
308
|
- app/datatables/effective_fee_payments_datatable.rb
|
306
309
|
- app/datatables/effective_memberships_directory_datatable.rb
|
307
310
|
- app/datatables/effective_organizations_datatable.rb
|
@@ -330,6 +333,7 @@ files:
|
|
330
333
|
- app/models/effective/applicant_reference.rb
|
331
334
|
- app/models/effective/applicant_review.rb
|
332
335
|
- app/models/effective/category.rb
|
336
|
+
- app/models/effective/document.rb
|
333
337
|
- app/models/effective/fee.rb
|
334
338
|
- app/models/effective/fee_payment.rb
|
335
339
|
- app/models/effective/membership.rb
|
@@ -366,6 +370,7 @@ files:
|
|
366
370
|
- app/views/admin/categories/_form_fee_payment_content.html.haml
|
367
371
|
- app/views/admin/categories/_form_fee_payment_steps.html.haml
|
368
372
|
- app/views/admin/categories/_form_fees.html.haml
|
373
|
+
- app/views/admin/documents/_form.html.haml
|
369
374
|
- app/views/admin/fee_payments/_fee_payment.html.haml
|
370
375
|
- app/views/admin/fees/_fee.html.haml
|
371
376
|
- app/views/admin/fees/_form.html.haml
|
@@ -461,6 +466,7 @@ files:
|
|
461
466
|
- app/views/effective/applicants/submitted.html.haml
|
462
467
|
- app/views/effective/applicants/summary.html.haml
|
463
468
|
- app/views/effective/applicants/transcripts.html.haml
|
469
|
+
- app/views/effective/documents/_dashboard.html.haml
|
464
470
|
- app/views/effective/fee_payments/_content.html.haml
|
465
471
|
- app/views/effective/fee_payments/_dashboard.html.haml
|
466
472
|
- app/views/effective/fee_payments/_declarations.html.haml
|
@@ -507,6 +513,7 @@ files:
|
|
507
513
|
- app/views/users/_demographics.html.haml
|
508
514
|
- app/views/users/_fields_demographics.html.haml
|
509
515
|
- config/effective_memberships.rb
|
516
|
+
- config/locales/effective_memberships.en.yml
|
510
517
|
- config/routes.rb
|
511
518
|
- db/migrate/01_create_effective_memberships.rb.erb
|
512
519
|
- db/seeds.rb
|