bullet_train-super_scaffolding 1.0.6 → 1.0.10

Sign up to get free protection for your applications and to get access to all the features.
Files changed (79) hide show
  1. checksums.yaml +4 -4
  2. data/app/controllers/account/scaffolding/absolutely_abstract/creative_concepts/collaborators_controller.rb +81 -0
  3. data/app/controllers/account/scaffolding/absolutely_abstract/creative_concepts_controller.rb +82 -0
  4. data/app/controllers/account/scaffolding/completely_concrete/tangible_things_controller.rb +107 -0
  5. data/app/controllers/api/v1/scaffolding/absolutely_abstract/creative_concepts_endpoint.rb +103 -0
  6. data/app/controllers/api/v1/scaffolding/absolutely_abstract.rb +2 -0
  7. data/app/controllers/api/v1/scaffolding/completely_concrete/tangible_things_endpoint.rb +136 -0
  8. data/app/controllers/api/v1/scaffolding/completely_concrete.rb +2 -0
  9. data/app/controllers/api/v1/scaffolding.rb +2 -0
  10. data/app/controllers/api/v1.rb +2 -0
  11. data/app/controllers/api.rb +2 -0
  12. data/app/controllers/concerns/scaffolding/absolutely_abstract/creative_concepts/controller_support.rb +11 -0
  13. data/app/models/scaffolding/absolutely_abstract/creative_concept.rb +42 -0
  14. data/app/models/scaffolding/absolutely_abstract/creative_concepts/collaborator.rb +39 -0
  15. data/app/models/scaffolding/absolutely_abstract/creative_concepts.rb +5 -0
  16. data/app/models/scaffolding/absolutely_abstract.rb +5 -0
  17. data/app/models/scaffolding/completely_concrete/tangible_thing.rb +42 -0
  18. data/app/models/scaffolding/completely_concrete/tangible_things/assignment.rb +22 -0
  19. data/app/models/scaffolding/completely_concrete/tangible_things.rb +5 -0
  20. data/app/models/scaffolding/completely_concrete.rb +5 -0
  21. data/app/models/scaffolding.rb +5 -0
  22. data/app/serializers/api/v1/scaffolding/absolutely_abstract/creative_concept_serializer.rb +14 -0
  23. data/app/serializers/api/v1/scaffolding/completely_concrete/tangible_thing_serializer.rb +30 -0
  24. data/app/views/account/scaffolding/absolutely_abstract/creative_concepts/_breadcrumbs.html.erb +8 -0
  25. data/app/views/account/scaffolding/absolutely_abstract/creative_concepts/_creative_concept.json.jbuilder +8 -0
  26. data/app/views/account/scaffolding/absolutely_abstract/creative_concepts/_form.html.erb +18 -0
  27. data/app/views/account/scaffolding/absolutely_abstract/creative_concepts/_index.html.erb +56 -0
  28. data/app/views/account/scaffolding/absolutely_abstract/creative_concepts/_menu_item.html.erb +10 -0
  29. data/app/views/account/scaffolding/absolutely_abstract/creative_concepts/collaborators/_breadcrumbs.html.erb +8 -0
  30. data/app/views/account/scaffolding/absolutely_abstract/creative_concepts/collaborators/_collaborator.json.jbuilder +9 -0
  31. data/app/views/account/scaffolding/absolutely_abstract/creative_concepts/collaborators/_form.html.erb +19 -0
  32. data/app/views/account/scaffolding/absolutely_abstract/creative_concepts/collaborators/_index.html.erb +69 -0
  33. data/app/views/account/scaffolding/absolutely_abstract/creative_concepts/collaborators/_menu_item.html.erb +10 -0
  34. data/app/views/account/scaffolding/absolutely_abstract/creative_concepts/collaborators/edit.html.erb +12 -0
  35. data/app/views/account/scaffolding/absolutely_abstract/creative_concepts/collaborators/index.html.erb +6 -0
  36. data/app/views/account/scaffolding/absolutely_abstract/creative_concepts/collaborators/index.json.jbuilder +1 -0
  37. data/app/views/account/scaffolding/absolutely_abstract/creative_concepts/collaborators/new.html.erb +12 -0
  38. data/app/views/account/scaffolding/absolutely_abstract/creative_concepts/collaborators/show.html.erb +31 -0
  39. data/app/views/account/scaffolding/absolutely_abstract/creative_concepts/collaborators/show.json.jbuilder +1 -0
  40. data/app/views/account/scaffolding/absolutely_abstract/creative_concepts/edit.html.erb +12 -0
  41. data/app/views/account/scaffolding/absolutely_abstract/creative_concepts/index.html.erb +6 -0
  42. data/app/views/account/scaffolding/absolutely_abstract/creative_concepts/index.json.jbuilder +1 -0
  43. data/app/views/account/scaffolding/absolutely_abstract/creative_concepts/new.html.erb +12 -0
  44. data/app/views/account/scaffolding/absolutely_abstract/creative_concepts/show.html.erb +65 -0
  45. data/app/views/account/scaffolding/absolutely_abstract/creative_concepts/show.json.jbuilder +1 -0
  46. data/app/views/account/scaffolding/completely_concrete/tangible_things/_breadcrumbs.html.erb +8 -0
  47. data/app/views/account/scaffolding/completely_concrete/tangible_things/_form.html.erb +66 -0
  48. data/app/views/account/scaffolding/completely_concrete/tangible_things/_index.html.erb +72 -0
  49. data/app/views/account/scaffolding/completely_concrete/tangible_things/_menu_item.html.erb +10 -0
  50. data/app/views/account/scaffolding/completely_concrete/tangible_things/_tangible_thing.json.jbuilder +23 -0
  51. data/app/views/account/scaffolding/completely_concrete/tangible_things/edit.html.erb +12 -0
  52. data/app/views/account/scaffolding/completely_concrete/tangible_things/index.html.erb +6 -0
  53. data/app/views/account/scaffolding/completely_concrete/tangible_things/index.json.jbuilder +1 -0
  54. data/app/views/account/scaffolding/completely_concrete/tangible_things/new.html.erb +12 -0
  55. data/app/views/account/scaffolding/completely_concrete/tangible_things/show.html.erb +45 -0
  56. data/app/views/account/scaffolding/completely_concrete/tangible_things/show.json.jbuilder +1 -0
  57. data/config/locales/en/scaffolding/absolutely_abstract/creative_concepts/collaborators.en.yml +98 -0
  58. data/config/locales/en/scaffolding/absolutely_abstract/creative_concepts.en.yml +111 -0
  59. data/config/locales/en/scaffolding/completely_concrete/tangible_things.en.yml +229 -0
  60. data/config/routes.rb +28 -0
  61. data/db/migrate/20190124040656_add_csv_import_to_scaffolding_things.rb +5 -0
  62. data/db/migrate/20191021215724_add_example_fields_to_scaffolding_things.rb +14 -0
  63. data/db/migrate/20191021233425_add_ckeditor_value_to_scaffolding_things.rb +5 -0
  64. data/db/migrate/20191204020251_create_scaffolding_absolutely_abstract_creative_concepts.rb +11 -0
  65. data/db/migrate/20191204020913_create_scaffolding_completely_concrete_tangible_things.rb +21 -0
  66. data/db/migrate/20191225224034_add_sort_order_to_scaffolding_completely_concrete_tangible_things.rb +5 -0
  67. data/db/migrate/20200101203645_drop_scaffolding_things.rb +9 -0
  68. data/db/migrate/20210101210524_create_scaffolding_absolutely_abstract_creative_concepts_collaborators.rb +10 -0
  69. data/db/migrate/20210101231429_add_roles_to_scaffolding_absolutely_abstract_creative_concepts_collaborators.rb +5 -0
  70. data/db/migrate/20210224234445_remove_select_value_from_scaffolding_completely_concrete_tangible_things.rb +5 -0
  71. data/db/migrate/20210513013030_add_color_value_to_scaffolding_completely_concrete_tangible_things.rb +5 -0
  72. data/db/migrate/20210602230736_add_option_fields_to_scaffolding_completely_concrete_tangible_things.rb +6 -0
  73. data/lib/bullet_train/super_scaffolding/engine.rb +15 -0
  74. data/lib/bullet_train/super_scaffolding/scaffolders/crud_field_scaffolder.rb +1 -1
  75. data/lib/bullet_train/super_scaffolding/scaffolders/crud_scaffolder.rb +1 -3
  76. data/lib/bullet_train/super_scaffolding/version.rb +1 -1
  77. data/lib/bullet_train/super_scaffolding.rb +1 -1
  78. data/lib/scaffolding/transformer.rb +13 -12
  79. metadata +72 -2
@@ -0,0 +1,42 @@
1
+ class Scaffolding::CompletelyConcrete::TangibleThing < ApplicationRecord
2
+ # 🚅 add concerns above.
3
+
4
+ belongs_to :absolutely_abstract_creative_concept, class_name: "Scaffolding::AbsolutelyAbstract::CreativeConcept"
5
+ # 🚅 add belongs_to associations above.
6
+
7
+ has_many :assignments, class_name: "Scaffolding::CompletelyConcrete::TangibleThings::Assignment", dependent: :destroy
8
+ has_many :memberships, through: :assignments
9
+ # 🚅 add has_many associations above.
10
+
11
+ # 🚅 add oauth providers above.
12
+
13
+ has_one_attached :file_field_value
14
+ has_one :team, through: :absolutely_abstract_creative_concept
15
+ # 🚅 add has_one associations above.
16
+
17
+ # 🚅 add scopes above.
18
+
19
+ validates :text_field_value, presence: true
20
+ # 🚅 add validations above.
21
+
22
+ after_validation :remove_file_field_value, if: :file_field_value_removal?
23
+ # 🚅 add callbacks above.
24
+
25
+ # 🚅 add delegations above.
26
+
27
+ has_rich_text :action_text_value
28
+ attr_accessor :file_field_value_removal
29
+
30
+ def collection
31
+ absolutely_abstract_creative_concept.completely_concrete_tangible_things
32
+ end
33
+
34
+ def file_field_value_removal?
35
+ file_field_value_removal.present?
36
+ end
37
+
38
+ def remove_file_field_value
39
+ file_field_value.purge
40
+ end
41
+ # 🚅 add methods above.
42
+ end
@@ -0,0 +1,22 @@
1
+ class Scaffolding::CompletelyConcrete::TangibleThings::Assignment < ApplicationRecord
2
+ # 🚅 add concerns above.
3
+
4
+ belongs_to :tangible_thing, class_name: "Scaffolding::CompletelyConcrete::TangibleThing"
5
+ belongs_to :membership, class_name: "Membership"
6
+ # 🚅 add belongs_to associations above.
7
+
8
+ # 🚅 add has_many associations above.
9
+
10
+ has_one :team, through: :tangible_thing
11
+ # 🚅 add has_one associations above.
12
+
13
+ # 🚅 add scopes above.
14
+
15
+ # 🚅 add validations above.
16
+
17
+ # 🚅 add callbacks above.
18
+
19
+ # 🚅 add delegations above.
20
+
21
+ # 🚅 add methods above.
22
+ end
@@ -0,0 +1,5 @@
1
+ module Scaffolding::CompletelyConcrete::TangibleThings
2
+ def self.table_name_prefix
3
+ "scaffolding_completely_concrete_tangible_things_"
4
+ end
5
+ end
@@ -0,0 +1,5 @@
1
+ module Scaffolding::CompletelyConcrete
2
+ def self.table_name_prefix
3
+ "scaffolding_completely_concrete_"
4
+ end
5
+ end
@@ -0,0 +1,5 @@
1
+ module Scaffolding
2
+ def self.table_name_prefix
3
+ "scaffolding_"
4
+ end
5
+ end
@@ -0,0 +1,14 @@
1
+ class Api::V1::Scaffolding::AbsolutelyAbstract::CreativeConceptSerializer < Api::V1::ApplicationSerializer
2
+ set_type "scaffolding/absolutely_abstract/creative_concept"
3
+
4
+ attributes :id,
5
+ :team_id,
6
+ :name,
7
+ :description,
8
+ # 🚅 super scaffolding will insert new fields above this line.
9
+ :created_at,
10
+ :updated_at
11
+
12
+ belongs_to :team, serializer: Api::V1::TeamSerializer
13
+ has_many :completely_concrete_tangible_things, serializer: Api::V1::Scaffolding::CompletelyConcrete::TangibleThingSerializer
14
+ end
@@ -0,0 +1,30 @@
1
+ class Api::V1::Scaffolding::CompletelyConcrete::TangibleThingSerializer < Api::V1::ApplicationSerializer
2
+ set_type "scaffolding/completely_concrete/tangible_thing"
3
+
4
+ attributes :id,
5
+ :absolutely_abstract_creative_concept_id,
6
+ # 🚅 skip this section when scaffolding.
7
+ :text_field_value,
8
+ :button_value,
9
+ :multiple_button_values,
10
+ :color_picker_value,
11
+ :cloudinary_image_value,
12
+ :date_field_value,
13
+ :date_and_time_field_value,
14
+ :email_field_value,
15
+ :password_field_value,
16
+ :phone_field_value,
17
+ :option_value,
18
+ # :multiple_option_values,
19
+ :super_select_value,
20
+ # :multiple_super_select_values,
21
+ # :text_area_value,
22
+ # :action_text_value,
23
+ # :ckeditor_value,
24
+ # 🚅 stop any skipping we're doing now.
25
+ # 🚅 super scaffolding will insert new fields above this line.
26
+ :created_at,
27
+ :updated_at
28
+
29
+ belongs_to :absolutely_abstract_creative_concept, serializer: Api::V1::Scaffolding::AbsolutelyAbstract::CreativeConceptSerializer
30
+ end
@@ -0,0 +1,8 @@
1
+ <% creative_concept ||= @creative_concept %>
2
+ <% team ||= @team || creative_concept&.team %>
3
+ <%= render 'account/teams/breadcrumbs', team: team %>
4
+ <%= render 'account/shared/breadcrumb', label: t('.label'), url: [:account, team, :scaffolding_absolutely_abstract_creative_concepts] %>
5
+ <% if creative_concept&.persisted? %>
6
+ <%= render 'account/shared/breadcrumb', label: creative_concept.label_string, url: [:account, creative_concept] %>
7
+ <% end %>
8
+ <%= render 'account/shared/breadcrumbs/actions', only_for: 'scaffolding/absolutely_abstract/creative_concepts' %>
@@ -0,0 +1,8 @@
1
+ json.extract! creative_concept,
2
+ :id,
3
+ :name,
4
+ :description,
5
+ # 🚅 super scaffolding will insert new fields above this line.
6
+ :created_at,
7
+ :updated_at
8
+ json.url account_scaffolding_absolutely_abstract_creative_concept_url(creative_concept, format: :json)
@@ -0,0 +1,18 @@
1
+ <%= form_with model: [:account, (@team unless creative_concept.persisted?), creative_concept], local: true, class: 'form' do |form| %>
2
+ <%= render 'account/shared/forms/errors', form: form %>
3
+
4
+ <% with_field_settings form: form do %>
5
+ <%= render 'shared/fields/text_field', method: :name, options: {autofocus: true} %>
6
+ <%= render 'shared/fields/text_area', method: :description %>
7
+ <%# 🚅 super scaffolding will insert new fields above this line. %>
8
+ <% end %>
9
+
10
+ <div class="buttons">
11
+ <%= form.submit (form.object.persisted? ? t('.buttons.update') : t('.buttons.create')), class: "button" %>
12
+ <% if form.object.persisted? %>
13
+ <%= link_to t('global.buttons.cancel'), [:account, creative_concept], class: "button-secondary" %>
14
+ <% else %>
15
+ <%= link_to t('global.buttons.cancel'), [:account, @team, :scaffolding, :absolutely_abstract, :creative_concepts], class: "button-secondary" %>
16
+ <% end %>
17
+ </div>
18
+ <% end %>
@@ -0,0 +1,56 @@
1
+ <% context ||= @team %>
2
+ <% hide_actions ||= false %>
3
+ <% hide_back ||= false %>
4
+
5
+ <%= updates_for context, :scaffolding_absolutely_abstract_creative_concepts do %>
6
+ <%= render 'account/shared/box' do |p| %>
7
+ <% p.content_for :title, t(".contexts.#{context.class.name.underscore}.header") %>
8
+ <% p.content_for :description do %>
9
+ <%= raw t(".contexts.#{context.class.name.underscore}.#{creative_concepts.any? ? 'description' : 'description_empty'}") %>
10
+ <% end %>
11
+
12
+ <% if creative_concepts.any? %>
13
+ <% p.content_for :table do %>
14
+ <table class="table">
15
+ <thead>
16
+ <tr>
17
+ <th><%= t('.fields.name.heading') %></th>
18
+ <th class="text-center"><%= t('.fields.all_collaborators.heading') %></th>
19
+ <%# 🚅 super scaffolding will insert new field headers above this line. %>
20
+ <th><%= t('.fields.created_at.heading') %></th>
21
+ <th></th>
22
+ </tr>
23
+ </thead>
24
+ <tbody>
25
+ <% creative_concepts.each do |creative_concept| %>
26
+ <% with_attribute_settings object: creative_concept do %>
27
+ <tr data-id="<%= creative_concept.id %>">
28
+ <td><%= render 'shared/attributes/text', attribute: :name, url: [:account, creative_concept] %></td>
29
+ <td><%= render 'account/shared/memberships/photos', memberships: creative_concept.all_collaborators, size: 9, align: :center %></td>
30
+ <%# 🚅 super scaffolding will insert new fields above this line. %>
31
+ <td><%= display_date_and_time(creative_concept.created_at) %></td>
32
+ <td class="buttons">
33
+ <% unless hide_actions %>
34
+ <%= link_to t('.buttons.shorthand.edit'), [:edit, :account, creative_concept], class: 'button-secondary button-smaller' if can? :edit, creative_concept %>
35
+ <%= button_to t('.buttons.shorthand.destroy'), [:account, creative_concept], method: :delete, data: { confirm: t('.buttons.confirmations.destroy', model_locales(creative_concept)) }, class: 'button-secondary button-smaller' if can? :destroy, creative_concept %>
36
+ <% end %>
37
+ </td>
38
+ </tr>
39
+ <% end %>
40
+ <% end %>
41
+ </tbody>
42
+ </table>
43
+ <% end %>
44
+ <% end %>
45
+
46
+ <% p.content_for :actions do %>
47
+ <% unless hide_actions %>
48
+ <% if can? :create, Scaffolding::AbsolutelyAbstract::CreativeConcept.new(team: @team) %>
49
+ <%= link_to t('.buttons.new'), [:new, :account, @team, :scaffolding_absolutely_abstract_creative_concept], class: "#{first_button_primary(:absolutely_abstract_creative_concept)} new" %>
50
+ <% end %>
51
+
52
+ <%= link_to t('global.buttons.back'), [:account, context], class: "#{first_button_primary(:absolutely_abstract_creative_concept)} back" unless hide_back %>
53
+ <% end %>
54
+ <% end %>
55
+ <% end %>
56
+ <% end %>
@@ -0,0 +1,10 @@
1
+ <% if can? :read, Scaffolding::AbsolutelyAbstract::CreativeConcept.new(team: current_team) %>
2
+ <%= render 'account/shared/menu/item', {
3
+ url: main_app.polymorphic_path([:account, current_team, :scaffolding_absolutely_abstract_creative_concepts]),
4
+ label: t('scaffolding/absolutely_abstract/creative_concepts.navigation.label'),
5
+ } do |p| %>
6
+ <% p.content_for :icon do %>
7
+ <i class="<%= t('scaffolding/absolutely_abstract/creative_concepts.navigation.icon') %>"></i>
8
+ <% end %>
9
+ <% end %>
10
+ <% end %>
@@ -0,0 +1,8 @@
1
+ <% collaborator ||= @collaborator %>
2
+ <% creative_concept ||= @creative_concept || collaborator&.creative_concept %>
3
+ <%= render 'account/scaffolding/absolutely_abstract/creative_concepts/breadcrumbs', creative_concept: creative_concept %>
4
+ <%= render 'account/shared/breadcrumb', label: t('.label'), url: [:account, creative_concept, :collaborators] %>
5
+ <% if collaborator&.persisted? %>
6
+ <%= render 'account/shared/breadcrumb', label: collaborator.label_string, url: [:account, collaborator] %>
7
+ <% end %>
8
+ <%= render 'account/shared/breadcrumbs/actions', only_for: 'scaffolding/absolutely_abstract/creative_concepts/collaborators' %>
@@ -0,0 +1,9 @@
1
+ json.extract! collaborator,
2
+ :id,
3
+ :creative_concept_id,
4
+ :membership_id,
5
+ :roles,
6
+ # 🚅 super scaffolding will insert new fields above this line.
7
+ :created_at,
8
+ :updated_at
9
+ json.url account_scaffolding_absolutely_abstract_creative_concepts_collaborator_url(collaborator, format: :json)
@@ -0,0 +1,19 @@
1
+ <%= form_with model: collaborator, url: (collaborator.persisted? ? [:account, collaborator] : [:account, @creative_concept, :collaborators]), local: true, class: 'form' do |form| %>
2
+ <%= render 'account/shared/forms/errors', form: form %>
3
+
4
+ <%= render 'shared/fields/super_select', form: form, method: :membership_id, options: {autofocus: true, include_blank: t('.fields.membership_id.placeholder')},
5
+ choices_url: url_for([:search, :account, @team, :memberships]), other_options: {search: true} %>
6
+
7
+ <%= render 'shared/fields/buttons', form: form, method: :role_ids, multiple: false, options: role_options_for(collaborator) %>
8
+ <%# 🚅 super scaffolding will insert new fields above this line. %>
9
+
10
+ <div class="buttons">
11
+ <%= form.submit (form.object.persisted? ? t('.buttons.update') : t('.buttons.create')), class: "button" %>
12
+ <% if form.object.persisted? %>
13
+ <%= link_to t('global.buttons.cancel'), [:account, collaborator], class: "button-secondary" %>
14
+ <% else %>
15
+ <%= link_to t('global.buttons.cancel'), [:account, @creative_concept, :collaborators], class: "button-secondary" %>
16
+ <% end %>
17
+ </div>
18
+
19
+ <% end %>
@@ -0,0 +1,69 @@
1
+ <% creative_concept = @creative_concept %>
2
+ <% context ||= creative_concept %>
3
+ <% collection ||= :collaborators %>
4
+ <% hide_actions ||= false %>
5
+ <% hide_back ||= false %>
6
+
7
+ <%= render 'account/shared/box' do |p| %>
8
+ <% p.content_for :title do %>
9
+ <%= t(".contexts.#{context.class.name.underscore}.header") %>
10
+ <% end %>
11
+
12
+ <% p.content_for :description do %>
13
+ <%= t(".contexts.#{context.class.name.underscore}.description") %>
14
+ <% end %>
15
+
16
+ <% p.content_for :table do %>
17
+ <% if collaborators.any? %>
18
+ <table class="table">
19
+ <thead>
20
+ <tr>
21
+ <th><%= t('.fields.membership_id.heading') %></th>
22
+ <th><%= t('.fields.role_ids.heading') %></th>
23
+ <%# 🚅 super scaffolding will insert new field headers above this line. %>
24
+ <th class="text-right"></th>
25
+ </tr>
26
+ </thead>
27
+ <tbody>
28
+ <% collaborators.each do |collaborator| %>
29
+ <tr data-id="<%= collaborator.id %>">
30
+ <td><%= link_to collaborator.membership.label_string, [:account, collaborator] %></td>
31
+ <td>
32
+ <% if collaborator.roles_without_defaults.present? %>
33
+ <%= collaborator.roles_without_defaults.map { |role| t("#{collaborator.class.to_s.pluralize.underscore}.fields.role_ids.options.#{role.key}.label") }.to_sentence %>
34
+ <% else %>
35
+ <%= t(".fields.role_ids.none") %>
36
+ <% end %>
37
+ </td>
38
+ <%# 🚅 super scaffolding will insert new fields above this line. %>
39
+ <td class="buttons">
40
+ <% unless hide_actions %>
41
+ <% if can? :edit, collaborator %>
42
+ <%= link_to t('.buttons.shorthand.edit'), [:edit, :account, collaborator], class: 'button-secondary button-smaller' %>
43
+ <% end %>
44
+ <% if can? :destroy, collaborator %>
45
+ <%= button_to t('.buttons.shorthand.destroy'), [:account, collaborator], method: :delete, data: { confirm: t('.buttons.confirmations.destroy', model_locales(collaborator)) }, class: 'button-secondary button-smaller' %>
46
+ <% end %>
47
+ <% end %>
48
+ </td>
49
+ </tr>
50
+ <% end %>
51
+ </tbody>
52
+ </table>
53
+ <% end %>
54
+ <% end %>
55
+
56
+ <% p.content_for :actions do %>
57
+ <% unless hide_actions %>
58
+ <% if context == creative_concept %>
59
+ <% if can? :create, Scaffolding::AbsolutelyAbstract::CreativeConcepts::Collaborator.new(creative_concept: creative_concept) %>
60
+ <%= link_to t('.buttons.new'), [:new, :account, creative_concept, :collaborator], class: 'button' %>
61
+ <% end %>
62
+ <% end %>
63
+
64
+ <% unless hide_back %>
65
+ <%= link_to t('global.buttons.back'), [:account, context], class: 'button-secondary' %>
66
+ <% end %>
67
+ <% end %>
68
+ <% end %>
69
+ <% end %>
@@ -0,0 +1,10 @@
1
+ <% if can? :read, Scaffolding::AbsolutelyAbstract::CreativeConcepts::Collaborator.new(team: current_team) %>
2
+ <%= render 'account/shared/menu/item', {
3
+ url: main_app.polymorphic_path([:account, current_team, :scaffolding_absolutely_abstract_creative_concepts_collaborators]),
4
+ label: t('scaffolding/absolutely_abstract/creative_concepts/collaborators.navigation.label'),
5
+ } do |p| %>
6
+ <% p.content_for :icon do %>
7
+ <i class="<%= t('scaffolding/absolutely_abstract/creative_concepts/collaborators.navigation.icon') %>"></i>
8
+ <% end %>
9
+ <% end %>
10
+ <% end %>
@@ -0,0 +1,12 @@
1
+ <%= render 'account/shared/page' do |p| %>
2
+ <% p.content_for :title, t('.section') %>
3
+ <% p.content_for :body do %>
4
+ <%= render 'account/shared/box', divider: true do |p| %>
5
+ <% p.content_for :title, t('.header') %>
6
+ <% p.content_for :description, t('.description') %>
7
+ <% p.content_for :body do %>
8
+ <%= render 'form', collaborator: @collaborator %>
9
+ <% end %>
10
+ <% end %>
11
+ <% end %>
12
+ <% end %>
@@ -0,0 +1,6 @@
1
+ <%= render 'account/shared/page' do |p| %>
2
+ <% p.content_for :title, t('.section') %>
3
+ <% p.content_for :body do %>
4
+ <%= render 'index', collaborators: @collaborators %>
5
+ <% end %>
6
+ <% end %>
@@ -0,0 +1 @@
1
+ json.array! @collaborators, partial: "scaffolding/absolutely_abstract/creative_concepts/collaborators/collaborator", as: :collaborator
@@ -0,0 +1,12 @@
1
+ <%= render 'account/shared/page' do |p| %>
2
+ <% p.content_for :title, t('.section') %>
3
+ <% p.content_for :body do %>
4
+ <%= render 'account/shared/box', divider: true do |p| %>
5
+ <% p.content_for :title, t('.header') %>
6
+ <% p.content_for :description, t('.description') %>
7
+ <% p.content_for :body do %>
8
+ <%= render 'form', collaborator: @collaborator %>
9
+ <% end %>
10
+ <% end %>
11
+ <% end %>
12
+ <% end %>
@@ -0,0 +1,31 @@
1
+ <%= render 'account/shared/page' do |p| %>
2
+ <% p.content_for :title, t('.section') %>
3
+ <% p.content_for :body do %>
4
+ <%= render 'account/shared/box', divider: true do |p| %>
5
+ <% p.content_for :title, t('.header') %>
6
+ <% p.content_for :description, t('.description') %>
7
+
8
+ <% p.content_for :body do %>
9
+ <%= render 'shared/attributes/belongs_to', object: @collaborator, attribute: :membership %>
10
+ <%= render 'shared/attributes/attribute', object: @collaborator, attribute: :roles do %>
11
+ <% if @collaborator.roles.present? %>
12
+ <%= @collaborator.roles.map { |role| t(".fields.roles.options.#{role}") }.to_sentence %>
13
+ <% else %>
14
+ <%= t(".fields.roles.none") %>
15
+ <% end %>
16
+ <% end %>
17
+ <%# 🚅 super scaffolding will insert new fields above this line. %>
18
+ <% end %>
19
+
20
+ <% p.content_for :actions do %>
21
+ <%= link_to t('.buttons.edit'), [:edit, :account, @collaborator], class: first_button_primary if can? :edit, @collaborator %>
22
+ <%= button_to t('.buttons.destroy'), [:account, @collaborator], method: :delete, class: first_button_primary, data: { confirm: t('.buttons.confirmations.destroy', model_locales(@collaborator)) } if can? :destroy, @collaborator %>
23
+ <%= link_to t('global.buttons.back'), [:account, @creative_concept, :collaborators], class: first_button_primary %>
24
+ <% end %>
25
+
26
+ <% end %>
27
+
28
+ <%# 🚅 super scaffolding will insert new children above this line. %>
29
+
30
+ <% end %>
31
+ <% end %>
@@ -0,0 +1 @@
1
+ json.partial! "scaffolding/absolutely_abstract/creative_concepts/collaborators/collaborator", collaborator: @collaborator
@@ -0,0 +1,12 @@
1
+ <%= render 'account/shared/page' do |p| %>
2
+ <% p.content_for :title, t('.section') %>
3
+ <% p.content_for :body do %>
4
+ <%= render 'account/shared/box', divider: true do |p| %>
5
+ <% p.content_for :title, t('.header') %>
6
+ <% p.content_for :description, t('.description') %>
7
+ <% p.content_for :body do %>
8
+ <%= render 'form', creative_concept: @creative_concept %>
9
+ <% end %>
10
+ <% end %>
11
+ <% end %>
12
+ <% end %>
@@ -0,0 +1,6 @@
1
+ <%= render 'account/shared/page' do |p| %>
2
+ <% p.content_for :title, t('.section') %>
3
+ <% p.content_for :body do %>
4
+ <%= render 'index', creative_concepts: @creative_concepts %>
5
+ <% end %>
6
+ <% end %>
@@ -0,0 +1 @@
1
+ json.array! @creative_concepts, partial: "scaffolding/absolutely_abstract/creative_concepts/creative_concept", as: :creative_concept
@@ -0,0 +1,12 @@
1
+ <%= render 'account/shared/page' do |p| %>
2
+ <% p.content_for :title, t('.section') %>
3
+ <% p.content_for :body do %>
4
+ <%= render 'account/shared/box', divider: true do |p| %>
5
+ <% p.content_for :title, t('.header') %>
6
+ <% p.content_for :description, t('.description') %>
7
+ <% p.content_for :body do %>
8
+ <%= render 'form', creative_concept: @creative_concept %>
9
+ <% end %>
10
+ <% end %>
11
+ <% end %>
12
+ <% end %>
@@ -0,0 +1,65 @@
1
+ <%= render 'account/shared/page' do |p| %>
2
+ <% p.content_for :title, t('.section') %>
3
+ <% p.content_for :body do %>
4
+ <%= updates_for @creative_concept do %>
5
+ <%= render 'account/shared/box', divider: true do |p| %>
6
+ <% p.content_for :title, t('.header') %>
7
+ <% p.content_for :description, t('.description') %>
8
+ <% p.content_for :body do %>
9
+ <% with_attribute_settings object: @creative_concept, strategy: :label do %>
10
+ <%= render 'shared/attributes/text', attribute: :name %>
11
+ <%= render 'shared/attributes/html', attribute: :description %>
12
+ <%# 🚅 super scaffolding will insert new fields above this line. %>
13
+
14
+ <div class="grid grid-cols-1 gap-y gap-x sm:grid-cols-3">
15
+ <div class="sm:col-span-1">
16
+ <%= render 'shared/attributes/base' do |p| %>
17
+ <% p.content_for :heading, t(".fields.admins.heading") %>
18
+ <% p.content_for :body do %>
19
+ <%= render 'account/shared/memberships/photos', memberships: (@team.admins + @creative_concept.admins).uniq %>
20
+ <% end %>
21
+ <% end %>
22
+ </div>
23
+
24
+ <% if @creative_concept.editors.any? %>
25
+ <div class="sm:col-span-1">
26
+ <%= render 'shared/attributes/base' do |p| %>
27
+ <% p.content_for :heading, t(".fields.editors.heading") %>
28
+ <% p.content_for :body do %>
29
+ <%= render 'account/shared/memberships/photos', memberships: @creative_concept.editors %>
30
+ <% end %>
31
+ <% end %>
32
+ </div>
33
+ <% end %>
34
+
35
+ <% if @creative_concept.viewers.any? %>
36
+ <div class="sm:col-span-1">
37
+ <%= render 'shared/attributes/base' do |p| %>
38
+ <% p.content_for :heading, t(".fields.viewers.heading") %>
39
+ <% p.content_for :body do %>
40
+ <%= render 'account/shared/memberships/photos', memberships: @creative_concept.viewers %>
41
+ <% end %>
42
+ <% end %>
43
+ </div>
44
+ <% end %>
45
+ </div>
46
+ <% end %>
47
+ <% end %>
48
+
49
+ <% p.content_for :actions do %>
50
+ <%= link_to t('.buttons.edit'), [:edit, :account, @creative_concept], class: first_button_primary if can? :edit, @creative_concept %>
51
+ <%= button_to t('.buttons.destroy'), [:account, @creative_concept], method: :delete, class: first_button_primary, data: { confirm: t('.buttons.confirmations.destroy', model_locales(@creative_concept)) } if can? :destroy, @creative_concept %>
52
+ <%= link_to t('global.buttons.back'), [:account, @team, :scaffolding_absolutely_abstract_creative_concepts], class: first_button_primary %>
53
+ <% end %>
54
+ <% end %>
55
+ <% end %>
56
+
57
+ <%= render 'account/scaffolding/completely_concrete/tangible_things/index', tangible_things: @creative_concept.completely_concrete_tangible_things.accessible_by(current_ability), hide_back: true %>
58
+
59
+ <% if can? :read, Scaffolding::AbsolutelyAbstract::CreativeConcepts::Collaborator.new(creative_concept: @creative_concept) %>
60
+ <%= render 'account/scaffolding/absolutely_abstract/creative_concepts/collaborators/index', collaborators: @creative_concept.collaborators, hide_back: true %>
61
+ <% end %>
62
+
63
+ <%# 🚅 super scaffolding will insert new children above this line. %>
64
+ <% end %>
65
+ <% end %>
@@ -0,0 +1 @@
1
+ json.partial! "scaffolding/absolutely_abstract/creative_concepts/creative_concept", creative_concept: @creative_concept
@@ -0,0 +1,8 @@
1
+ <% tangible_thing ||= @tangible_thing %>
2
+ <% absolutely_abstract_creative_concept ||= @absolutely_abstract_creative_concept || tangible_thing&.absolutely_abstract_creative_concept %>
3
+ <%= render 'account/scaffolding/absolutely_abstract/creative_concepts/breadcrumbs', creative_concept: absolutely_abstract_creative_concept %>
4
+ <%= render 'account/shared/breadcrumb', label: t('.label'), url: [:account, absolutely_abstract_creative_concept, :completely_concrete_tangible_things] %>
5
+ <% if tangible_thing&.persisted? %>
6
+ <%= render 'account/shared/breadcrumb', label: tangible_thing.label_string, url: [:account, tangible_thing] %>
7
+ <% end %>
8
+ <%= render 'account/shared/breadcrumbs/actions', only_for: 'scaffolding/completely_concrete/tangible_things' %>
@@ -0,0 +1,66 @@
1
+ <%= form_with model: tangible_thing, url: (tangible_thing.persisted? ? [:account, tangible_thing] : [:account, @absolutely_abstract_creative_concept, :completely_concrete_tangible_things]), local: true, class: 'form' do |form| %>
2
+ <%= render 'account/shared/forms/errors', form: form %>
3
+
4
+ <% with_field_settings form: form do %>
5
+ <%# 🚅 skip this section when scaffolding. %>
6
+ <%= render 'shared/fields/text_field', method: :text_field_value, options: {autofocus: true} %>
7
+
8
+ <%= render 'shared/fields/buttons', method: :boolean_button_value %>
9
+
10
+ <div class="grid grid-cols-1 gap-y gap-x sm:grid-cols-2">
11
+ <div class="sm:col-span-1">
12
+ <%= render 'shared/fields/buttons', method: :button_value %>
13
+ </div>
14
+
15
+ <div class="sm:col-span-1">
16
+ <%= render 'shared/fields/buttons', method: :multiple_button_values, multiple: true %>
17
+ </div>
18
+ </div>
19
+
20
+ <%= render 'shared/fields/color_picker', method: :color_picker_value, options: t('scaffolding/completely_concrete/tangible_things.fields.color_picker_value.options') %>
21
+ <%= render 'shared/fields/cloudinary_image', method: :cloudinary_image_value %>
22
+ <%= render 'shared/fields/date_field', method: :date_field_value %>
23
+ <%= render 'shared/fields/date_and_time_field', method: :date_and_time_field_value %>
24
+ <%= render 'shared/fields/email_field', method: :email_field_value %>
25
+ <%= render 'shared/fields/file_field', method: :file_field_value %>
26
+
27
+ <div class="grid grid-cols-1 gap-y gap-x sm:grid-cols-2">
28
+ <div class="sm:col-span-1 pr-0 sm:pr-10">
29
+ <%= render 'shared/fields/options', method: :option_value %>
30
+ </div>
31
+
32
+ <div class="sm:col-span-1 pr-0 sm:pr-10">
33
+ <%= render 'shared/fields/options', method: :multiple_option_values, multiple: true %>
34
+ </div>
35
+ </div>
36
+
37
+ <%= render 'shared/fields/password_field', method: :password_field_value %>
38
+ <%= render 'shared/fields/phone_field', method: :phone_field_value %>
39
+
40
+ <div class="grid grid-cols-1 gap-y gap-x sm:grid-cols-2">
41
+ <div class="sm:col-span-1">
42
+ <%= render 'shared/fields/super_select', method: :super_select_value, other_options: {search: true} %>
43
+ </div>
44
+
45
+ <div class="sm:col-span-1">
46
+ <%= render 'shared/fields/super_select', method: :multiple_super_select_values, other_options: {search: true}, html_options: {multiple: true} %>
47
+ </div>
48
+ </div>
49
+
50
+ <%= render 'shared/fields/text_area', method: :text_area_value %>
51
+ <%= render 'shared/fields/trix_editor', method: :action_text_value %>
52
+ <%= render 'shared/fields/ckeditor', method: :ckeditor_value %>
53
+ <%# 🚅 stop any skipping we're doing now. %>
54
+ <%# 🚅 super scaffolding will insert new fields above this line. %>
55
+ <% end %>
56
+
57
+ <div class="buttons">
58
+ <%= form.submit (form.object.persisted? ? t('.buttons.update') : t('.buttons.create')), class: "button" %>
59
+ <% if form.object.persisted? %>
60
+ <%= link_to t('global.buttons.cancel'), [:account, tangible_thing], class: "button-secondary" %>
61
+ <% else %>
62
+ <%= link_to t('global.buttons.cancel'), [:account, @absolutely_abstract_creative_concept, :completely_concrete_tangible_things], class: "button-secondary" %>
63
+ <% end %>
64
+ </div>
65
+
66
+ <% end %>