headmin 0.3.4 → 0.4.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/.github/workflows/ci.yml +27 -0
- data/.gitignore +14 -0
- data/.nvmrc +1 -0
- data/CHANGELOG.md +24 -0
- data/Gemfile +7 -4
- data/Gemfile.lock +171 -3
- data/README.md +7 -0
- data/Rakefile +1 -7
- data/app/assets/javascripts/headmin/config/i18n.js +9 -9
- data/app/assets/javascripts/headmin/controllers/autocomplete_controller.js +255 -0
- data/app/assets/javascripts/headmin/controllers/blocks_controller.js +74 -79
- data/app/assets/javascripts/headmin/controllers/date_range_controller.js +24 -24
- data/app/assets/javascripts/headmin/controllers/dropzone_controller.js +23 -25
- data/app/assets/javascripts/headmin/controllers/file_preview_controller.js +237 -237
- data/app/assets/javascripts/headmin/controllers/filter_controller.js +44 -44
- data/app/assets/javascripts/headmin/controllers/filters_controller.js +57 -61
- data/app/assets/javascripts/headmin/controllers/flatpickr_controller.js +29 -29
- data/app/assets/javascripts/headmin/controllers/hello_controller.js +3 -3
- data/app/assets/javascripts/headmin/controllers/notification_controller.js +7 -6
- data/app/assets/javascripts/headmin/controllers/popup_controller.js +51 -52
- data/app/assets/javascripts/headmin/controllers/redactorx_controller.js +36 -9
- data/app/assets/javascripts/headmin/controllers/repeater_controller.js +122 -125
- data/app/assets/javascripts/headmin/controllers/select_controller.js +40 -39
- data/app/assets/javascripts/headmin/controllers/table_actions_controller.js +100 -101
- data/app/assets/javascripts/headmin/controllers/table_controller.js +115 -115
- data/app/assets/javascripts/headmin/index.js +38 -35
- data/app/assets/javascripts/headmin.js +243 -34
- data/app/assets/stylesheets/headmin/forms/autocomplete.scss +21 -0
- data/app/assets/stylesheets/headmin/forms/file.scss +46 -0
- data/app/assets/stylesheets/headmin/forms/repeater.scss +62 -0
- data/app/assets/stylesheets/headmin/forms/search.scss +12 -0
- data/app/assets/stylesheets/headmin/forms.scss +11 -0
- data/app/assets/stylesheets/headmin/general.scss +5 -0
- data/app/assets/stylesheets/headmin/overrides/bootstrap.scss +5 -3
- data/app/assets/stylesheets/headmin/overrides/redactorx.scss +74 -0
- data/app/assets/stylesheets/headmin/popup.scss +1 -0
- data/app/assets/stylesheets/headmin/syntax.scss +36 -349
- data/app/assets/stylesheets/headmin/table.scss +1 -1
- data/app/assets/stylesheets/headmin/utilities/buttons.scss +19 -0
- data/app/assets/stylesheets/headmin/utilities/dropzone.scss +72 -0
- data/app/assets/stylesheets/headmin/utilities.scss +2 -68
- data/app/assets/stylesheets/headmin.css +205 -205
- data/app/assets/stylesheets/headmin.scss +1 -1
- data/app/helpers/headmin/admin_helper.rb +0 -1
- data/app/helpers/headmin/form_helper.rb +2 -8
- data/app/models/concerns/headmin/blockable.rb +1 -1
- data/app/models/concerns/headmin/field.rb +1 -0
- data/app/models/concerns/headmin/form/autocompletable.rb +38 -0
- data/app/models/concerns/headmin/form/hintable.rb +19 -0
- data/app/models/concerns/headmin/form/input_groupable.rb +23 -0
- data/app/models/concerns/headmin/form/labelable.rb +33 -0
- data/app/models/concerns/headmin/form/listable.rb +28 -0
- data/app/models/concerns/headmin/form/placeholderable.rb +13 -0
- data/app/models/concerns/headmin/form/validatable.rb +40 -0
- data/app/models/concerns/headmin/form/wrappable.rb +21 -0
- data/app/models/headmin/.DS_Store +0 -0
- data/app/models/headmin/blocks_view.rb +15 -0
- data/app/models/headmin/form/blocks_view.rb +29 -0
- data/app/models/headmin/form/checkbox_view.rb +52 -0
- data/app/models/headmin/form/date_range_view.rb +25 -0
- data/app/models/headmin/form/date_view.rb +45 -0
- data/app/models/headmin/form/email_view.rb +48 -0
- data/app/models/headmin/form/file_view.rb +116 -0
- data/app/models/headmin/form/flatpickr_range_view.rb +102 -0
- data/app/models/headmin/form/flatpickr_view.rb +37 -0
- data/app/models/headmin/form/hidden_view.rb +10 -0
- data/app/models/headmin/form/hint_view.rb +6 -0
- data/app/models/headmin/form/input_group_view.rb +19 -0
- data/app/models/headmin/form/label_view.rb +24 -0
- data/app/models/headmin/form/number_view.rb +49 -0
- data/app/models/headmin/form/password_view.rb +44 -0
- data/app/models/headmin/form/redactorx_view.rb +59 -0
- data/app/models/headmin/form/search_view.rb +48 -0
- data/app/models/headmin/form/select_view.rb +62 -0
- data/app/models/headmin/form/switch_view.rb +23 -0
- data/app/models/headmin/form/text_view.rb +48 -0
- data/app/models/headmin/form/textarea_view.rb +44 -0
- data/app/models/headmin/form/url_view.rb +48 -0
- data/app/models/headmin/form/wrapper_view.rb +19 -0
- data/app/models/headmin/form/wysiwyg_view.rb +17 -0
- data/app/models/headmin/{thumbnail.rb → thumbnail_view.rb} +6 -1
- data/app/models/view_model.rb +58 -0
- data/app/views/headmin/_blocks.html.erb +13 -9
- data/app/views/headmin/_heading.html.erb +7 -1
- data/app/views/headmin/_thumbnail.html.erb +1 -37
- data/app/views/headmin/forms/_autocomplete.html.erb +11 -0
- data/app/views/headmin/forms/_blocks.html.erb +16 -17
- data/app/views/headmin/forms/_checkbox.html.erb +24 -29
- data/app/views/headmin/forms/_datalist.html.erb +3 -0
- data/app/views/headmin/forms/_date.html.erb +24 -24
- data/app/views/headmin/forms/_date_range.html.erb +19 -21
- data/app/views/headmin/forms/_email.html.erb +27 -32
- data/app/views/headmin/forms/_errors.html.erb +2 -3
- data/app/views/headmin/forms/_file.html.erb +84 -181
- data/app/views/headmin/forms/_flatpickr.html.erb +19 -20
- data/app/views/headmin/forms/_flatpickr_range.html.erb +28 -37
- data/app/views/headmin/forms/_hidden.html.erb +9 -10
- data/app/views/headmin/forms/_hint.html.erb +16 -0
- data/app/views/headmin/forms/_input_group.html.erb +21 -0
- data/app/views/headmin/forms/_label.html.erb +5 -13
- data/app/views/headmin/forms/_number.html.erb +23 -35
- data/app/views/headmin/forms/_password.html.erb +21 -30
- data/app/views/headmin/forms/_redactorx.html.erb +21 -40
- data/app/views/headmin/forms/_repeater.html.erb +55 -60
- data/app/views/headmin/forms/_search.html.erb +43 -0
- data/app/views/headmin/forms/_select.html.erb +24 -49
- data/app/views/headmin/forms/_switch.html.erb +29 -0
- data/app/views/headmin/forms/_text.html.erb +42 -96
- data/app/views/headmin/forms/_textarea.html.erb +21 -32
- data/app/views/headmin/forms/_url.html.erb +26 -31
- data/app/views/headmin/forms/_validation.html.erb +10 -13
- data/app/views/headmin/forms/_wrapper.html.erb +9 -0
- data/app/views/headmin/forms/_wysiwyg.html.erb +28 -0
- data/app/views/headmin/forms/autocomplete/_item.html.erb +3 -0
- data/app/views/headmin/forms/autocomplete/_list.html.erb +3 -0
- data/app/views/headmin/forms/fields/_group.html.erb +5 -3
- data/app/views/headmin/forms/repeater/_row.html.erb +4 -4
- data/bin/console +0 -1
- data/config/locales/headmin/forms/en.yml +0 -11
- data/config/locales/headmin/forms/nl.yml +0 -11
- data/esbuild-css.js +18 -18
- data/esbuild-js.js +8 -8
- data/headmin.gemspec +1 -3
- data/lib/generators/templates/controllers/auth/confirmations_controller.rb +0 -2
- data/lib/generators/templates/controllers/auth/omniauth_callbacks_controller.rb +0 -2
- data/lib/generators/templates/controllers/auth/passwords_controller.rb +0 -2
- data/lib/generators/templates/controllers/auth/registrations_controller.rb +0 -2
- data/lib/generators/templates/controllers/auth/sessions_controller.rb +0 -2
- data/lib/generators/templates/controllers/auth/unlocks_controller.rb +0 -2
- data/lib/headmin/version.rb +1 -3
- data/lib/headmin.rb +0 -2
- data/package-lock.json +5359 -0
- data/package.json +12 -4
- data/view_model_benchmark.rb +74 -0
- data/yarn-error.log +17 -12
- data/yarn.lock +1575 -31
- metadata +62 -24
- data/app/assets/stylesheets/headmin/form.scss +0 -132
- data/app/assets/stylesheets/headmin/overrides/redactorx.css +0 -3
- data/app/helpers/headmin/documentation_helper.rb +0 -35
- data/app/models/headmin/documentation_renderer.rb +0 -32
- data/app/models/headmin/form/base.rb +0 -78
- data/app/models/headmin/form/text.rb +0 -51
- data/app/services/block_service.rb +0 -72
- data/app/views/headmin/_card.html.erb +0 -52
- data/app/views/headmin/forms/_actions.html.erb +0 -28
- data/app/views/headmin/forms/_base.html.erb +0 -114
- data/app/views/headmin/forms/_image.html.erb +0 -21
- data/app/views/headmin/forms/_video.html.erb +0 -21
- data/app/views/headmin/forms/actions/_destroy.html.erb +0 -13
- data/app/views/headmin/forms/actions/_save.html.erb +0 -12
- data/app/views/headmin/forms/actions/_view.html.erb +0 -15
- data/docs/blocks-and-fields.md +0 -54
- data/docs/blocks.md +0 -48
- data/docs/devise.md +0 -41
- data/docs/fields.md +0 -79
@@ -1,114 +0,0 @@
|
|
1
|
-
<!--
|
2
|
-
<% documentation do %>
|
3
|
-
# Base
|
4
|
-
This serves as a wrapper around most form views. It allows defining everything that happens outside the input field.
|
5
|
-
The main purpose of this view is to coordinate labels and appendages.
|
6
|
-
|
7
|
-
```erbx
|
8
|
-
<%= form_with do |form| %>
|
9
|
-
<%= render "headmin/forms/base", form: form, attribute: "basic_example" do |form| %>
|
10
|
-
<%= form.text_field("attribute", class: 'form-control') %>
|
11
|
-
<% end %>
|
12
|
-
<% end %>
|
13
|
-
```
|
14
|
-
|
15
|
-
# Parameters
|
16
|
-
| Name | Required | Type | Description |
|
17
|
-
| ------------ | -------- | ---------------- | ----------- |
|
18
|
-
| form | yes | Object | Form object |
|
19
|
-
| attribute | yes | String, Symbol | Name of the attribute of the form model |
|
20
|
-
| append | no | Boolean | Text or icon to be shown on the left hand side of the input, Doesn't work with float |
|
21
|
-
| class | no | String | A space separated string of HTML class names |
|
22
|
-
| float | no | Boolean | Set to true if you want to show floating labels |
|
23
|
-
| id | no | String | Input identifier to be used as "for" in the label |
|
24
|
-
| label | no | Hash | Text to show as label. Label will be hidden if value is false |
|
25
|
-
| prepend | no | Boolean | Text or icon to be shown on the right hand side of the input, Doesn't work with float |
|
26
|
-
|
27
|
-
## Examples
|
28
|
-
|
29
|
-
### Sizing
|
30
|
-
```erbx
|
31
|
-
<%= form_with do |form| %>
|
32
|
-
<%= render "headmin/forms/base", form: form, attribute: "small", class: 'input-group-sm' do |form| %>
|
33
|
-
<%= form.text_field("attribute", class: 'form-control', placeholder: '.input-group-sm') %>
|
34
|
-
<% end %>
|
35
|
-
<%= render "headmin/forms/base", form: form, attribute: "medium" do |form| %>
|
36
|
-
<%= form.text_field("attribute", class: 'form-control', placeholder: 'Default size') %>
|
37
|
-
<% end %>
|
38
|
-
<%= render "headmin/forms/base", form: form, attribute: "large", class: 'input-group-lg' do |form| %>
|
39
|
-
<%= form.text_field("attribute", class: 'form-control', placeholder: '.input-group-lg') %>
|
40
|
-
<% end %>
|
41
|
-
<% end %>
|
42
|
-
```
|
43
|
-
|
44
|
-
### Labels
|
45
|
-
```erbx
|
46
|
-
<%= form_with do |form| %>
|
47
|
-
<%= render "headmin/forms/base", form: form, attribute: "no_label", label: false do |form| %>
|
48
|
-
<%= form.text_field("attribute", class: 'form-control', placeholder: 'Without label') %>
|
49
|
-
<% end %>
|
50
|
-
<%= render "headmin/forms/base", form: form, attribute: "floating_label", float: true do |form| %>
|
51
|
-
<%= form.text_field("attribute", class: 'form-control', placeholder: 'Default size') %>
|
52
|
-
<% end %>
|
53
|
-
<%= render "headmin/forms/base", form: form, attribute: "custom_label", label: 'Custom label' do |form| %>
|
54
|
-
<%= form.text_field("attribute", class: 'form-control') %>
|
55
|
-
<% end %>
|
56
|
-
<% end %>
|
57
|
-
```
|
58
|
-
|
59
|
-
### Appendages
|
60
|
-
```erbx
|
61
|
-
<%= form_with do |form| %>
|
62
|
-
<%= render "headmin/forms/base", form: form, attribute: "prepend", prepend: "€" do |form| %>
|
63
|
-
<%= form.text_field("attribute", class: 'form-control') %>
|
64
|
-
<% end %>
|
65
|
-
<%= render "headmin/forms/base", form: form, attribute: "append", append: "m²" do |form| %>
|
66
|
-
<%= form.text_field("attribute", class: 'form-control') %>
|
67
|
-
<% end %>
|
68
|
-
<%= render "headmin/forms/base", form: form, attribute: "prepend_and_append", prepend: "€", append: "m²" do |form| %>
|
69
|
-
<%= form.text_field("attribute", class: 'form-control') %>
|
70
|
-
<% end %>
|
71
|
-
<% end %>
|
72
|
-
```
|
73
|
-
<% end %>
|
74
|
-
-->
|
75
|
-
|
76
|
-
<% base = Headmin::Form::Base.new(local_assigns) %>
|
77
|
-
|
78
|
-
<%= tag.div(class: base.class_names, data: base.data) do %>
|
79
|
-
<% if base.label != false && !base.float %>
|
80
|
-
<%= render 'headmin/forms/label', base.label_options %>
|
81
|
-
<% end %>
|
82
|
-
|
83
|
-
<% if base.append || base.prepend %>
|
84
|
-
<div class="input-group w-100">
|
85
|
-
<% if base.prepend %>
|
86
|
-
<span class="input-group-text">
|
87
|
-
<%= base.prepend %>
|
88
|
-
</span>
|
89
|
-
<% end %>
|
90
|
-
|
91
|
-
<%= yield form %>
|
92
|
-
<%= render 'headmin/forms/validation', base.validation_options if form.object.respond_to?(:errors) %>
|
93
|
-
|
94
|
-
<% if base.append %>
|
95
|
-
<span class="input-group-text">
|
96
|
-
<%= base.append %>
|
97
|
-
</span>
|
98
|
-
<% end %>
|
99
|
-
</div>
|
100
|
-
<% else %>
|
101
|
-
<%= yield form %>
|
102
|
-
<%= render 'headmin/forms/validation', base.validation_options if form.object.respond_to?(:errors) %>
|
103
|
-
<% end %>
|
104
|
-
|
105
|
-
<% if base.label != false && base.float %>
|
106
|
-
<%= render 'headmin/forms/label', base.label_options %>
|
107
|
-
<% end %>
|
108
|
-
|
109
|
-
<% if base.list %>
|
110
|
-
<datalist id="<%= base.list_id %>">
|
111
|
-
<%= options_for_select(base.list) %>
|
112
|
-
</datalist>
|
113
|
-
<% end %>
|
114
|
-
<% end %>
|
@@ -1,21 +0,0 @@
|
|
1
|
-
<%
|
2
|
-
# name: headmin/forms/image
|
3
|
-
#
|
4
|
-
# ==== Required parameters
|
5
|
-
# * +form+ - Form object
|
6
|
-
# * +attribute+ - Name of the attribute of the form model
|
7
|
-
#
|
8
|
-
# ==== Extra parameters
|
9
|
-
# Listed in 'headmin/forms/file'
|
10
|
-
# Listed in 'headmin/forms/base'
|
11
|
-
#
|
12
|
-
# ==== Examples
|
13
|
-
# Basic version
|
14
|
-
# <%= render 'headmin/forms/image', form: form, attribute: :image %#>
|
15
|
-
|
16
|
-
options = local_assigns.merge(
|
17
|
-
accept: 'image/*'
|
18
|
-
)
|
19
|
-
%>
|
20
|
-
|
21
|
-
<%= render 'headmin/forms/file', options %>
|
@@ -1,21 +0,0 @@
|
|
1
|
-
<%
|
2
|
-
# name: headmin/forms/video
|
3
|
-
#
|
4
|
-
# ==== Required parameters
|
5
|
-
# * +form+ - Form object
|
6
|
-
# * +attribute+ - Name of the attribute of the form model
|
7
|
-
#
|
8
|
-
# ==== Extra parameters
|
9
|
-
# Listed in 'headmin/forms/file'
|
10
|
-
# Listed in 'headmin/forms/base'
|
11
|
-
#
|
12
|
-
# ==== Examples
|
13
|
-
# Basic version
|
14
|
-
# <%= render 'headmin/forms/video', form: form, attribute: :video %#>
|
15
|
-
|
16
|
-
options = local_assigns.merge(
|
17
|
-
accept: 'video/*'
|
18
|
-
)
|
19
|
-
%>
|
20
|
-
|
21
|
-
<%= render 'headmin/forms/file', options %>
|
@@ -1,13 +0,0 @@
|
|
1
|
-
<%#
|
2
|
-
name: headmin/forms/actions/views
|
3
|
-
accepts block: true
|
4
|
-
parameters:
|
5
|
-
form: (object) Form object
|
6
|
-
%>
|
7
|
-
|
8
|
-
<div class="d-grid">
|
9
|
-
<%= link_to([:admin, form.object], class: "btn btn-outline-danger", "data-turbo-method": "delete", "data-turbo-confirm": t(".confirm")) do %>
|
10
|
-
<%= bootstrap_icon("trash") %>
|
11
|
-
<%= t(".title") %>
|
12
|
-
<% end %>
|
13
|
-
</div>
|
@@ -1,15 +0,0 @@
|
|
1
|
-
<%#
|
2
|
-
name: headmin/forms/actions/views
|
3
|
-
accepts block: true
|
4
|
-
parameters:
|
5
|
-
url: (string) Url for preview
|
6
|
-
%>
|
7
|
-
|
8
|
-
<% url = local_assigns.has_key?(:url) ? url : nil %>
|
9
|
-
|
10
|
-
<div class="d-grid mb-2">
|
11
|
-
<a href="<%= url %>" target="_blank" class="btn h-btn-outline-light">
|
12
|
-
<%= bootstrap_icon('eye') %>
|
13
|
-
<%= t('.title') %>
|
14
|
-
</a>
|
15
|
-
</div>
|
data/docs/blocks-and-fields.md
DELETED
@@ -1,54 +0,0 @@
|
|
1
|
-
# Blocks + fields = Magic
|
2
|
-
|
3
|
-
## Installation
|
4
|
-
Run the following generators to generate the migration files.
|
5
|
-
```
|
6
|
-
rails generate headmin:blocks
|
7
|
-
rails generate headmin:fields
|
8
|
-
rails db:migrate
|
9
|
-
```
|
10
|
-
|
11
|
-
## Getting Started
|
12
|
-
### Setup model
|
13
|
-
|
14
|
-
Setup a block model by including `Headmin::Fieldable`
|
15
|
-
|
16
|
-
```ruby
|
17
|
-
class Block < ApplicationRecord
|
18
|
-
include Headmin::Block
|
19
|
-
include Headmin::Fieldable
|
20
|
-
end
|
21
|
-
```
|
22
|
-
|
23
|
-
### Setup forms
|
24
|
-
|
25
|
-
```erb
|
26
|
-
# app/views/admin/blocks/_contact.html.erb
|
27
|
-
<%= form.hidden_field :name, value: :contact %>
|
28
|
-
|
29
|
-
<!-- Title -->
|
30
|
-
<%= render 'headmin/forms/fields/text', form: form, name: :title do |field, attribute, label| %>
|
31
|
-
<%= render 'headmin/forms/text', form: field, attribute: attribute, label: label %>
|
32
|
-
<% end %>
|
33
|
-
|
34
|
-
<!-- People list -->
|
35
|
-
<%= render 'headmin/forms/fields/list', form: form, name: :people do |item| %>
|
36
|
-
<%= render 'headmin/forms/fields/text', form: item, name: :name do |field, attribute, label| %>
|
37
|
-
<%= render 'headmin/forms/text', form: field, attribute: attribute, label: label %>
|
38
|
-
<% end %>
|
39
|
-
<% end %>
|
40
|
-
```
|
41
|
-
|
42
|
-
### Usage in website
|
43
|
-
|
44
|
-
```erb
|
45
|
-
# app/views/website/blocks/_contact.html.erb
|
46
|
-
<% fields = block.fields_hash %>
|
47
|
-
|
48
|
-
<h1><%= fields["title"] %></h1>
|
49
|
-
<ul>
|
50
|
-
<% fields["people"].each do |person| %>
|
51
|
-
<li><%= person["name"] %></h2></li>
|
52
|
-
<% end %>
|
53
|
-
</ul>
|
54
|
-
```
|
data/docs/blocks.md
DELETED
@@ -1,48 +0,0 @@
|
|
1
|
-
# Blocks
|
2
|
-
|
3
|
-
## Installation
|
4
|
-
Run the following generators to generate the migration files.
|
5
|
-
```
|
6
|
-
rails generate headmin:blocks
|
7
|
-
rails db:migrate
|
8
|
-
```
|
9
|
-
|
10
|
-
## Getting Started
|
11
|
-
|
12
|
-
### Setup model
|
13
|
-
|
14
|
-
```ruby
|
15
|
-
class Page < ApplicationRecord
|
16
|
-
include Headmin::Blockable
|
17
|
-
end
|
18
|
-
```
|
19
|
-
|
20
|
-
### Setup forms
|
21
|
-
|
22
|
-
The view "headmin/forms/blocks" will render all the form views for the blocks in the database.
|
23
|
-
A hidden template form will be rendered for all types defined in `allow:`
|
24
|
-
|
25
|
-
```erb
|
26
|
-
# app/views/admin/pages/_form.html.erb
|
27
|
-
<%= render 'headmin/form', model: [:admin, @page] do |form| %>
|
28
|
-
<%= render "headmin/forms/blocks", form: form %>
|
29
|
-
<% end %>
|
30
|
-
```
|
31
|
-
|
32
|
-
For each type of block you want to include, create a template in `views/admin/blocks`.
|
33
|
-
|
34
|
-
### Usage in frontend
|
35
|
-
|
36
|
-
```erb
|
37
|
-
# app/views/website/pages/show.html.erb
|
38
|
-
<%= render 'headmin/blocks', blockable: @page %>
|
39
|
-
```
|
40
|
-
|
41
|
-
This will render all the blocks associated with the blockable model (e.g. Page).
|
42
|
-
|
43
|
-
For each block in the admin, you'll need to create a corresponding template in your frontend.
|
44
|
-
|
45
|
-
```erb
|
46
|
-
# app/views/website/blocks/_contact.html.erb
|
47
|
-
<%= block.name %>
|
48
|
-
```
|
data/docs/devise.md
DELETED
@@ -1,41 +0,0 @@
|
|
1
|
-
# Devise
|
2
|
-
Headmin comes with some default views for all devise related pages.
|
3
|
-
To make use of them, follow the guidelines below.
|
4
|
-
|
5
|
-
## Installation
|
6
|
-
Add this line to your application's Gemfile:
|
7
|
-
|
8
|
-
```ruby
|
9
|
-
gem 'devise'
|
10
|
-
```
|
11
|
-
|
12
|
-
Run the install generator
|
13
|
-
```sh
|
14
|
-
$ rails generate devise:install
|
15
|
-
```
|
16
|
-
|
17
|
-
Create a devise model
|
18
|
-
```sh
|
19
|
-
$ rails generate devise User
|
20
|
-
$ rails db:migrate
|
21
|
-
```
|
22
|
-
|
23
|
-
Generate the default auth views
|
24
|
-
```sh
|
25
|
-
$ rails generate headmin:devise
|
26
|
-
```
|
27
|
-
|
28
|
-
## Getting Started
|
29
|
-
|
30
|
-
### Change routes
|
31
|
-
Change the default `devise_for` routes with the code below
|
32
|
-
|
33
|
-
```ruby
|
34
|
-
devise_for :users, controllers: {
|
35
|
-
sessions: 'auth/sessions',
|
36
|
-
registrations: 'auth/registrations',
|
37
|
-
passwords: 'auth/passwords',
|
38
|
-
unlocks: 'auth/unlocks',
|
39
|
-
confirmations: 'auth/confirmations'
|
40
|
-
}
|
41
|
-
```
|
data/docs/fields.md
DELETED
@@ -1,79 +0,0 @@
|
|
1
|
-
# Fields
|
2
|
-
|
3
|
-
## Installation
|
4
|
-
|
5
|
-
Run the following generators to generate the migration files.
|
6
|
-
|
7
|
-
```sh
|
8
|
-
$ rails generate headmin:fields
|
9
|
-
$ rails db:migrate
|
10
|
-
```
|
11
|
-
|
12
|
-
## Getting Started
|
13
|
-
|
14
|
-
### Setup model
|
15
|
-
|
16
|
-
```ruby
|
17
|
-
|
18
|
-
class Settings < ApplicationRecord
|
19
|
-
include Headmin::Fieldable
|
20
|
-
end
|
21
|
-
```
|
22
|
-
|
23
|
-
### Setup forms
|
24
|
-
|
25
|
-
```html
|
26
|
-
# app/views/admin/settings/_form.html.erb
|
27
|
-
|
28
|
-
<!-- Company name -->
|
29
|
-
<%= render 'headmin/forms/fields/text', form: form, name: :company_name do |field, attribute, label| %>
|
30
|
-
<%= render 'headmin/forms/text', form: field, attribute: attribute, label: label %>
|
31
|
-
<% end %>
|
32
|
-
|
33
|
-
<!-- People list -->
|
34
|
-
<%= render 'headmin/forms/fields/list', form: form, name: :people do |item| %>
|
35
|
-
<%= render 'headmin/forms/fields/text', form: item, name: :name do |field, attribute, label| %>
|
36
|
-
<%= render 'headmin/forms/text', form: field, attribute: attribute, label: label %>
|
37
|
-
<% end %>
|
38
|
-
<% end %>
|
39
|
-
```
|
40
|
-
|
41
|
-
#### Type of fields
|
42
|
-
|
43
|
-
- Text: `headmin/forms/fields/text`
|
44
|
-
- File: `headmin/forms/fields/file`
|
45
|
-
- Image: `headmin/forms/fields/image`
|
46
|
-
- List: `headmin/forms/fields/list`
|
47
|
-
- Group: `headmin/forms/fields/group`
|
48
|
-
|
49
|
-
### Seed database
|
50
|
-
|
51
|
-
Use the `fields_hash` setter method to set the data, the way you want to retrieve it.
|
52
|
-
|
53
|
-
```ruby
|
54
|
-
# In db/seeds.rb
|
55
|
-
Setting.create!(
|
56
|
-
name: 'Website settings',
|
57
|
-
fields_hash: {
|
58
|
-
company_name: 'Insiting BV',
|
59
|
-
people: [
|
60
|
-
{ name: 'Jef Vlamings' },
|
61
|
-
{ name: 'Gert-Jan Peeters' }
|
62
|
-
]
|
63
|
-
}
|
64
|
-
)
|
65
|
-
```
|
66
|
-
|
67
|
-
### Usage in frontend
|
68
|
-
|
69
|
-
```html
|
70
|
-
# app/views/website/settings/show.html.erb
|
71
|
-
<% fields = @setting.fields_hash %>
|
72
|
-
|
73
|
-
<h1><%= fields["company_name"] %></h1>
|
74
|
-
<ul>
|
75
|
-
<% fields["people"].each do |person| %>
|
76
|
-
<li><%= person["name"] %></h2></li>
|
77
|
-
<% end %>
|
78
|
-
</ul>
|
79
|
-
```
|