para 0.6.9 → 0.7.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/assets/images/para/admin/tangram-mosaic.png +0 -0
- data/app/assets/images/para/admin/template-section.svg +23 -0
- data/app/assets/javascripts/para/admin.coffee +20 -0
- data/app/assets/javascripts/para/admin/tabs.coffee +22 -5
- data/app/assets/javascripts/para/admin/theme_actions.coffee +3 -3
- data/app/assets/javascripts/para/inputs/material-input.coffee +4 -0
- data/app/assets/javascripts/para/inputs/multi-select-input.coffee +173 -0
- data/app/assets/javascripts/para/inputs/nested_many.coffee +9 -9
- data/app/assets/stylesheets/para/admin.sass +5 -5
- data/app/assets/stylesheets/para/admin/main.sass +32 -0
- data/app/assets/stylesheets/para/admin/src/_alert.sass +17 -0
- data/app/assets/stylesheets/para/admin/src/_base.sass +51 -0
- data/app/assets/stylesheets/para/admin/src/_bootstrap-variables.scss +874 -0
- data/app/assets/stylesheets/para/admin/src/_breadcrumb.sass +22 -0
- data/app/assets/stylesheets/para/admin/src/_buttons.sass +107 -0
- data/app/assets/stylesheets/para/admin/src/_checkable.sass +94 -0
- data/app/assets/stylesheets/para/admin/src/_common.sass +203 -0
- data/app/assets/stylesheets/para/admin/src/_dropdown.sass +40 -0
- data/app/assets/stylesheets/para/admin/src/_form.sass +271 -0
- data/app/assets/stylesheets/para/admin/src/_list.sass +61 -0
- data/app/assets/stylesheets/para/admin/src/_mixins.sass +113 -0
- data/app/assets/stylesheets/para/admin/src/_multi-select.sass +91 -0
- data/app/assets/stylesheets/para/admin/src/_navigation.sass +150 -0
- data/app/assets/stylesheets/para/admin/src/_navtabs.sass +41 -0
- data/app/assets/stylesheets/para/admin/src/_nested-many.sass +69 -0
- data/app/assets/stylesheets/para/admin/src/_nested_one.sass +13 -0
- data/app/assets/stylesheets/para/admin/src/_orderable.sass +44 -0
- data/app/assets/stylesheets/para/admin/src/_page-loading.sass +39 -0
- data/app/assets/stylesheets/para/admin/src/_pagination.sass +34 -0
- data/app/assets/stylesheets/para/admin/src/_panel.sass +55 -0
- data/app/assets/stylesheets/para/admin/src/_responsive.sass +100 -0
- data/app/assets/stylesheets/para/admin/{theme → src}/_sorting.sass +11 -3
- data/app/assets/stylesheets/para/admin/src/_statcard.sass +41 -0
- data/app/assets/stylesheets/para/admin/src/_table.sass +33 -0
- data/app/assets/stylesheets/para/admin/src/_tree.sass +52 -0
- data/app/assets/stylesheets/para/admin/src/_variables.sass +37 -0
- data/app/assets/stylesheets/para/admin/src/_well.sass +12 -0
- data/app/assets/stylesheets/para/{admin/src → lib}/datetimepicker.sass +1 -3
- data/app/assets/stylesheets/para/{admin/src → lib}/fuelux.sass +3 -5
- data/app/assets/stylesheets/para/lib/jasny-bootstrap.sass +97 -0
- data/app/assets/stylesheets/para/{admin/src → lib}/redactor.sass +2 -5
- data/app/assets/stylesheets/para/lib/selectize.sass +112 -0
- data/app/assets/stylesheets/para/lib/slider.sass +12 -0
- data/app/controllers/concerns/para/admin/resource_controller_concerns.rb +14 -2
- data/app/controllers/para/admin/base_controller.rb +7 -0
- data/app/controllers/para/admin/crud_resources_controller.rb +13 -6
- data/app/controllers/para/admin/form_resources_controller.rb +5 -3
- data/app/controllers/para/admin/resources_controller.rb +9 -3
- data/app/controllers/para/admin/search_controller.rb +15 -0
- data/app/controllers/para/application_controller.rb +10 -2
- data/app/helpers/para/admin/page_helper.rb +9 -9
- data/app/helpers/para/application_helper.rb +1 -10
- data/app/helpers/para/form_helper.rb +5 -6
- data/app/helpers/para/model_helper.rb +13 -3
- data/app/helpers/para/ordering_helper.rb +1 -1
- data/app/helpers/para/search_results_helper.rb +16 -0
- data/app/helpers/para/tree_helper.rb +10 -6
- data/app/models/para/page.rb +5 -0
- data/app/models/para/page/section.rb +42 -0
- data/app/models/para/page/section_resource.rb +12 -0
- data/app/views/layouts/para/admin.html.haml +5 -8
- data/app/views/para/admin/dashboard.html.haml +21 -8
- data/app/views/para/admin/form_resources/show.html.haml +1 -1
- data/app/views/para/admin/imports/new.html.haml +2 -2
- data/app/views/para/admin/resources/_actions.html.haml +3 -3
- data/app/views/para/admin/resources/_add_button.html.haml +1 -1
- data/app/views/para/admin/resources/_exports_menu.html.haml +6 -6
- data/app/views/para/admin/resources/_filters.html.haml +7 -8
- data/app/views/para/admin/resources/_imports_menu.html.haml +6 -6
- data/app/views/para/admin/resources/_list.html.haml +14 -15
- data/app/views/para/admin/resources/_per_page_select.html.haml +4 -3
- data/app/views/para/admin/resources/_subclassable_add_button.html.haml +3 -3
- data/app/views/para/admin/resources/_tree.html.haml +7 -9
- data/app/views/para/admin/resources/_tree_item.html.haml +5 -6
- data/app/views/para/admin/resources/edit.html.haml +1 -1
- data/app/views/para/admin/resources/new.html.haml +1 -1
- data/app/views/para/admin/search/_result.html.haml +7 -0
- data/app/views/para/admin/search/index.html.haml +1 -0
- data/app/views/para/admin/settings_component/show.html.haml +1 -1
- data/app/views/para/admin/shared/_breadcrumbs.html.haml +2 -3
- data/app/views/para/admin/shared/_header.html.haml +16 -27
- data/app/views/para/admin/shared/_navigation.html.haml +20 -19
- data/app/views/para/form/_tabs.html.haml +6 -7
- data/app/views/para/inputs/_multi_select.html.haml +40 -0
- data/app/views/para/inputs/_nested_many.html.haml +4 -4
- data/app/views/para/inputs/multi_select/_no_items.html.haml +6 -0
- data/app/views/para/inputs/nested_many/_add.html.haml +1 -2
- data/app/views/para/inputs/nested_many/_add_with_subclasses.html.haml +4 -5
- data/app/views/para/inputs/nested_many/_container.html.haml +7 -8
- data/app/views/shared/_breadcrumbs.html.haml +4 -0
- data/config/locales/fr.yml +29 -4
- data/db/migrate/20170324125547_create_para_page_section_resources.rb +15 -0
- data/lib/generators/para/filters/templates/_filters.html.haml +3 -5
- data/lib/generators/para/install/templates/initializer.rb +12 -0
- data/lib/generators/para/page/section/section_generator.rb +13 -2
- data/lib/generators/para/page/section/templates/section.html.haml.erb +3 -0
- data/lib/generators/para/resource/resource_generator.rb +1 -1
- data/lib/para.rb +25 -21
- data/lib/para/attribute_field.rb +2 -0
- data/lib/para/attribute_field/base.rb +1 -1
- data/lib/para/attribute_field/belongs_to.rb +1 -1
- data/lib/para/attribute_field/boolean.rb +1 -1
- data/lib/para/attribute_field/friendly_id.rb +19 -0
- data/lib/para/attribute_field/has_many.rb +43 -4
- data/lib/para/attribute_field/nested_field.rb +46 -0
- data/lib/para/attribute_field/nested_many.rb +30 -9
- data/lib/para/attribute_field/nested_one.rb +28 -9
- data/lib/para/attribute_field/password.rb +1 -1
- data/lib/para/attribute_field/relation.rb +19 -1
- data/lib/para/attribute_field_mappings.rb +9 -3
- data/lib/para/breadcrumbs/breadcrumb.rb +57 -10
- data/lib/para/breadcrumbs/controller.rb +19 -6
- data/lib/para/breadcrumbs/manager.rb +9 -1
- data/lib/para/config.rb +3 -0
- data/lib/para/controller_resource.rb +34 -0
- data/lib/para/engine.rb +33 -14
- data/lib/para/exporter/base.rb +1 -1
- data/lib/para/ext.rb +1 -1
- data/lib/para/ext/active_record_nested_attributes.rb +51 -0
- data/lib/para/ext/paperclip.rb +2 -6
- data/lib/para/form_builder.rb +3 -0
- data/lib/para/form_builder/attributes_mappings_tracker.rb +45 -0
- data/lib/para/form_builder/containers.rb +13 -17
- data/lib/para/form_builder/nested_form.rb +2 -3
- data/lib/para/helpers.rb +8 -0
- data/lib/para/helpers/attributes_mappings.rb +13 -0
- data/lib/para/helpers/resource_name.rb +14 -0
- data/lib/para/inputs.rb +1 -0
- data/lib/para/inputs/multi_select_input.rb +90 -0
- data/lib/para/inputs/nested_many_input.rb +6 -1
- data/lib/para/markup/resources_table.rb +15 -11
- data/lib/para/model_field_parsers.rb +3 -2
- data/lib/para/model_field_parsers/base.rb +7 -2
- data/lib/para/model_field_parsers/friendly_id.rb +19 -0
- data/lib/para/model_field_parsers/relations.rb +20 -1
- data/lib/para/page/model.rb +3 -1
- data/lib/para/routes.rb +1 -0
- data/lib/para/simple_form_config.rb +85 -0
- data/lib/para/version.rb +1 -1
- data/lib/rails/routing_mapper.rb +5 -8
- data/vendor/assets/javascripts/jasny-bootstrap.js +577 -0
- data/vendor/assets/stylesheets/animate.css +3340 -0
- data/vendor/assets/stylesheets/hint.css +649 -0
- data/vendor/assets/stylesheets/jasny-bootstrap.css +287 -0
- metadata +114 -67
- data/app/assets/images/para/admin/bg.png +0 -0
- data/app/assets/javascripts/para/admin.js +0 -20
- data/app/assets/stylesheets/admin/theme.sass +0 -0
- data/app/assets/stylesheets/para/admin/src/jasny.bootstrap.sass +0 -40
- data/app/assets/stylesheets/para/admin/src/nested_many.sass +0 -5
- data/app/assets/stylesheets/para/admin/src/page-loading.sass +0 -24
- data/app/assets/stylesheets/para/admin/src/page-top-bar.sass +0 -9
- data/app/assets/stylesheets/para/admin/src/selectize.sass +0 -46
- data/app/assets/stylesheets/para/admin/src/slider.sass +0 -12
- data/app/assets/stylesheets/para/admin/theme.sass +0 -22
- data/app/assets/stylesheets/para/admin/theme/_base.sass +0 -176
- data/app/assets/stylesheets/para/admin/theme/_breadcrumb.sass +0 -75
- data/app/assets/stylesheets/para/admin/theme/_buttons.sass +0 -27
- data/app/assets/stylesheets/para/admin/theme/_checkable.sass +0 -108
- data/app/assets/stylesheets/para/admin/theme/_commonds.sass +0 -210
- data/app/assets/stylesheets/para/admin/theme/_dropdown.sass +0 -52
- data/app/assets/stylesheets/para/admin/theme/_form.sass +0 -150
- data/app/assets/stylesheets/para/admin/theme/_list.sass +0 -139
- data/app/assets/stylesheets/para/admin/theme/_navigation.sass +0 -229
- data/app/assets/stylesheets/para/admin/theme/_navtabs.sass +0 -151
- data/app/assets/stylesheets/para/admin/theme/_orderable.sass +0 -45
- data/app/assets/stylesheets/para/admin/theme/_panel.sass +0 -264
- data/app/assets/stylesheets/para/admin/theme/_responsive.sass +0 -123
- data/app/assets/stylesheets/para/admin/theme/_table.sass +0 -28
- data/app/assets/stylesheets/para/admin/theme/_tree.sass +0 -74
- data/app/assets/stylesheets/para/admin/theme/_variables.sass +0 -31
- data/app/assets/stylesheets/para/application.css +0 -15
- data/app/assets/stylesheets/para/lib/_variables.scss +0 -646
- data/app/assets/stylesheets/para/overrides/responsive.sass +0 -62
- data/app/assets/stylesheets/para/overrides/theme.sass +0 -172
- data/lib/para/ext/cancan.rb +0 -26
- data/vendor/assets/javascripts/jasny.bootstrap.min.js +0 -7
- data/vendor/assets/stylesheets/animate.min.css +0 -6
- data/vendor/assets/stylesheets/jasny.bootstrap.min.css +0 -7
|
@@ -1,23 +1,24 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
=
|
|
4
|
-
= t('para.admin.title')
|
|
1
|
+
.navmenu.navmenu-default.navmenu-fixed-left.offcanvas-sm
|
|
2
|
+
= link_to admin_path, class: 'navmenu-brand' do
|
|
3
|
+
= t('para.admin.brand').html_safe
|
|
5
4
|
|
|
6
|
-
-
|
|
7
|
-
- admin_component_sections.
|
|
8
|
-
-
|
|
5
|
+
%ul.nav.navmenu-nav
|
|
6
|
+
- if admin_component_sections.any?
|
|
7
|
+
- admin_component_sections.each_with_index do |component_section, index|
|
|
8
|
+
- next unless component_section.components.any? { |component| can?(:manage, component) }
|
|
9
9
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
10
|
+
%li.component-section-item
|
|
11
|
+
= link_to "#collapse-section-#{index}", class: 'component-section-title', data: { toggle: 'collapse' } do
|
|
12
|
+
= component_section.name
|
|
13
|
+
%i.fa.fa-angle-up.pull-right
|
|
13
14
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
15
|
+
%ul.component-section-list-items.collapse.in{ id: "collapse-section-#{index}" }
|
|
16
|
+
- component_section.components.each do |component|
|
|
17
|
+
- if can? :manage, component
|
|
18
|
+
%li.component-item{ class: (@component == component) && 'active' }
|
|
19
|
+
= link_to component.name, component.path
|
|
19
20
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
21
|
+
- else
|
|
22
|
+
%li.component-section-item
|
|
23
|
+
.component-section-title
|
|
24
|
+
= t('para.component.none_created')
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
.form-tabs{ data: { :'form-tabs' => true } }
|
|
2
|
-
%nav.
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
= tab.title
|
|
2
|
+
%ul.nav.nav-tabs{ role: 'tablist' }
|
|
3
|
+
- tabs.each_with_index do |tab, index|
|
|
4
|
+
%li{ class: ('active' if index == 0), role: 'presentation' }
|
|
5
|
+
= link_to "##{ tab.dom_id }", role: 'tab', aria: { controls: 'settings' }, data: { toggle: 'tab' } do
|
|
6
|
+
%i.fa{ class: "fa-#{ tab.icon }" }
|
|
7
|
+
= tab.title
|
|
9
8
|
|
|
10
9
|
.tab-content
|
|
11
10
|
- tabs.each_with_index do |tab, index|
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
.multi-select-field{ class: ('orderable' if orderable), data: { :'multi-select-input' => true, :'search-url' => admin_search_path(model_name: model.name), orderable: orderable } }
|
|
2
|
+
= form.hidden_field attribute_name, value: resources.map(&:id).join(', '), data: { :'multi-select-input-field' => true }
|
|
3
|
+
|
|
4
|
+
.row
|
|
5
|
+
.col-md-6
|
|
6
|
+
.input-group.filter-form
|
|
7
|
+
= text_field_tag :search, nil, class: 'string required form-control', autocomplete: 'off', data: { :'search-field' => true }
|
|
8
|
+
%span.input-group-btn
|
|
9
|
+
= button_tag type: 'button', class: 'btn' do
|
|
10
|
+
= fa_icon 'search'
|
|
11
|
+
|
|
12
|
+
.row
|
|
13
|
+
.col-md-6
|
|
14
|
+
.panel.panel-default.available-items
|
|
15
|
+
.panel-heading
|
|
16
|
+
%span.panel-title
|
|
17
|
+
= t('para.form.multi_select.available.title')
|
|
18
|
+
.panel-btns
|
|
19
|
+
= button_tag type: 'button', class: 'btn btn-success btn-xs', data: { :'add-all' => true } do
|
|
20
|
+
= t('para.form.multi_select.available.add_all')
|
|
21
|
+
|
|
22
|
+
.panel-body
|
|
23
|
+
%table.table{ data: { :'available-items' => true, :'no-available-items' => render(partial: 'para/inputs/multi_select/no_items', locals: { available: true }) } }
|
|
24
|
+
%tbody
|
|
25
|
+
= render partial: 'para/admin/search/result', collection: option_resources
|
|
26
|
+
|
|
27
|
+
.col-md-6
|
|
28
|
+
.panel.panel-default.selected-items
|
|
29
|
+
.panel-heading
|
|
30
|
+
%span.panel-title
|
|
31
|
+
= t('para.form.multi_select.selected.title')
|
|
32
|
+
.panel-btns
|
|
33
|
+
= button_tag type: 'button', class: 'btn btn-danger btn-xs', data: { :'remove-all' => true } do
|
|
34
|
+
= t('para.form.multi_select.selected.remove_all')
|
|
35
|
+
.panel-body
|
|
36
|
+
%table.table{ data: { :'selected-items' => true, :'no-selected-items' => render(partial: 'para/inputs/multi_select/no_items', locals: { available: false }) } }
|
|
37
|
+
%tbody
|
|
38
|
+
- if resources.length > 0
|
|
39
|
+
- resources.each do |resource|
|
|
40
|
+
= selected_item_for(resource)
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
.nested-many-field{ class: ('orderable' if orderable) }
|
|
1
|
+
.nested-many-field{ class: [('orderable' if orderable), ('nested-many-field-inset' if inset)] }
|
|
2
2
|
.fields-list{ id: dom_identifier }
|
|
3
3
|
= form.simple_fields_for attribute_name, resources, nested_attribute_name: attribute_name, orderable: orderable do |nested_form|
|
|
4
|
-
= render partial: find_partial_for(model, 'nested_many/container', partial_dir: 'inputs'), locals: { form: nested_form, model: nested_form.object.class, subclass: subclass, nested_locals: nested_locals }
|
|
4
|
+
= render partial: find_partial_for(model, 'nested_many/container', partial_dir: 'inputs'), locals: { form: nested_form, model: nested_form.object.class, subclass: subclass, nested_locals: nested_locals, inset: inset }
|
|
5
5
|
-# Add button
|
|
6
6
|
- if add_button
|
|
7
7
|
- if subclass
|
|
8
|
-
= render partial: 'para/inputs/nested_many/add_with_subclasses', locals: { form: form, model: model, dom_identifier: dom_identifier, nested_locals: nested_locals, attribute_name: attribute_name, orderable: orderable, subclasses: subclasses }
|
|
8
|
+
= render partial: 'para/inputs/nested_many/add_with_subclasses', locals: { form: form, model: model, dom_identifier: dom_identifier, nested_locals: nested_locals, attribute_name: attribute_name, orderable: orderable, subclasses: subclasses, inset: inset }
|
|
9
9
|
- else
|
|
10
|
-
= render partial: 'para/inputs/nested_many/add', locals: { form: form, model: model, dom_identifier: dom_identifier, nested_locals: nested_locals, attribute_name: attribute_name, orderable: orderable }
|
|
10
|
+
= render partial: 'para/inputs/nested_many/add', locals: { form: form, model: model, dom_identifier: dom_identifier, nested_locals: nested_locals, attribute_name: attribute_name, orderable: orderable, inset: inset }
|
|
@@ -1,3 +1,2 @@
|
|
|
1
|
-
= link_to_add_association form, attribute_name, partial: find_partial_for(model, 'nested_many/container', partial_dir: 'inputs'), form_name: 'form', class: 'btn btn-primary', data: { :'association-insertion-node' => "##{ dom_identifier }", :'association-insertion-method' => 'append' }, render_options: { nested_attribute_name: attribute_name, orderable: orderable, locals: { model: model, nested_locals: nested_locals } } do
|
|
2
|
-
%i.fa.fa-plus
|
|
1
|
+
= link_to_add_association form, attribute_name, partial: find_partial_for(model, 'nested_many/container', partial_dir: 'inputs'), form_name: 'form', class: 'btn btn-primary btn-shadow add-button nested-many-inset-add-button', data: { :'association-insertion-node' => "##{ dom_identifier }", :'association-insertion-method' => 'append' }, render_options: { nested_attribute_name: attribute_name, orderable: orderable, locals: { model: model, nested_locals: nested_locals, inset: inset } } do
|
|
3
2
|
= t('para.form.nested.add')
|
|
@@ -1,10 +1,9 @@
|
|
|
1
|
-
.add-button.dropdown
|
|
2
|
-
%button.btn.btn-
|
|
3
|
-
%i.fa.fa-plus
|
|
1
|
+
.add-button.nested-many-inset-add-button.dropdown
|
|
2
|
+
%button.btn.btn-shadow.dropdown-toggle{ type: 'button', data: { toggle: 'dropdown' } }
|
|
4
3
|
= t('para.form.nested.add')
|
|
5
|
-
%
|
|
4
|
+
%i.fa.fa-angle-down
|
|
6
5
|
%ul.dropdown-menu
|
|
7
6
|
- subclasses.each do |submodel|
|
|
8
7
|
%li
|
|
9
|
-
= link_to_add_association form, attribute_name, wrap_object: proc { submodel.new }, partial: find_partial_for(submodel, 'nested_many/container', partial_dir: 'inputs'), form_name: 'form', class: 'dropdown-link', data: { :'association-insertion-node' => "##{ dom_identifier }", :'association-insertion-method' => 'append' }, render_options: { nested_attribute_name: attribute_name, orderable: orderable, locals: { model: submodel, nested_locals: nested_locals } } do
|
|
8
|
+
= link_to_add_association form, attribute_name, wrap_object: proc { submodel.new }, partial: find_partial_for(submodel, 'nested_many/container', partial_dir: 'inputs'), form_name: 'form', class: 'dropdown-link', data: { :'association-insertion-node' => "##{ dom_identifier }", :'association-insertion-method' => 'append' }, render_options: { nested_attribute_name: attribute_name, orderable: orderable, locals: { model: submodel, nested_locals: nested_locals, inset: inset } } do
|
|
10
9
|
= submodel.model_name.human
|
|
@@ -1,22 +1,21 @@
|
|
|
1
1
|
- nested_locals ||= {}
|
|
2
2
|
|
|
3
|
-
.panel.panel-default.form-fields
|
|
3
|
+
.panel.panel-default.form-fields{ class: ('nested-many-inset-panel' if inset), data: { :'persisted' => form.object.persisted? } }
|
|
4
4
|
.panel-heading
|
|
5
5
|
= form.reorder_anchor
|
|
6
6
|
|
|
7
7
|
%h3.panel-title
|
|
8
8
|
= link_to "##{ form.nested_resource_dom_id }", class: 'collapsed', data: { toggle: 'collapse', :'open-on-insert' => true } do
|
|
9
9
|
= form.nested_resource_name
|
|
10
|
-
%
|
|
10
|
+
%i.fa.fa-angle-up
|
|
11
11
|
|
|
12
12
|
= form.remove_association_button
|
|
13
13
|
|
|
14
|
-
|
|
14
|
+
.panel-collapse.form-inputs.collapse{ id: form.nested_resource_dom_id, class: ('in' if inset) }
|
|
15
|
+
.panel-body
|
|
16
|
+
= render partial: find_partial_for(model, :fields), locals: { form: form }.merge(nested_locals)
|
|
15
17
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
-# Add inheritance column field if needed
|
|
20
|
-
= form.hidden_field form.object.class.inheritance_column if form.object.class.column_names.include?(form.object.class.inheritance_column)
|
|
18
|
+
-# Add inheritance column field if needed
|
|
19
|
+
= form.hidden_field form.object.class.inheritance_column if form.object.class.column_names.include?(form.object.class.inheritance_column)
|
|
21
20
|
|
|
22
21
|
.clearfix
|
data/config/locales/fr.yml
CHANGED
|
@@ -31,7 +31,8 @@ fr:
|
|
|
31
31
|
error: "Erreur lors de la génération du fichier d'export ..."
|
|
32
32
|
|
|
33
33
|
admin:
|
|
34
|
-
title:
|
|
34
|
+
title: Administration
|
|
35
|
+
brand: "<b>Admin</b>istration"
|
|
35
36
|
toggle_navigation: "Open navigation"
|
|
36
37
|
back_to_app: "Afficher le site"
|
|
37
38
|
sign_out: "Se déconnecter"
|
|
@@ -45,6 +46,9 @@ fr:
|
|
|
45
46
|
|
|
46
47
|
dashboard:
|
|
47
48
|
title: "Tableau de bord"
|
|
49
|
+
statcard:
|
|
50
|
+
ressources_count: "Nombre d'entrée(s) : %{count}"
|
|
51
|
+
component_form_ressource: "Voir la page"
|
|
48
52
|
|
|
49
53
|
form:
|
|
50
54
|
shared:
|
|
@@ -57,12 +61,31 @@ fr:
|
|
|
57
61
|
add: "Ajouter"
|
|
58
62
|
remove: "Supprimer"
|
|
59
63
|
new: "Nouveau"
|
|
64
|
+
multi_select:
|
|
65
|
+
available:
|
|
66
|
+
title: "Disponibles"
|
|
67
|
+
no_items: |
|
|
68
|
+
Recherchez des éléments avec la barre de recherche ci-dessus
|
|
69
|
+
add_all: "Tout rajouter"
|
|
70
|
+
already_selected: "Ajouté"
|
|
71
|
+
selected:
|
|
72
|
+
title: "Ajoutés"
|
|
73
|
+
no_items: |
|
|
74
|
+
Utilisez le formulaire de recherche sur la gauche afin d'ajouter
|
|
75
|
+
des éléments.
|
|
76
|
+
remove_all: "Tout retirer"
|
|
77
|
+
|
|
60
78
|
|
|
61
79
|
list:
|
|
62
80
|
search_title: "Recherche"
|
|
63
|
-
delete_confirmation:
|
|
64
|
-
|
|
65
|
-
|
|
81
|
+
delete_confirmation: |
|
|
82
|
+
Êtes vous sûr de bien vouloir supprimer cette entrée ?
|
|
83
|
+
no_results: |
|
|
84
|
+
Aucun résultat pour cette recherche, merci d'essayer avec d'autres
|
|
85
|
+
critères ou de créer une nouvelle entrée avec le bouton suivant :
|
|
86
|
+
empty: |
|
|
87
|
+
Aucune entrée créée pour le moment. Créez une nouvelle entrée avec le
|
|
88
|
+
bouton suivant :
|
|
66
89
|
|
|
67
90
|
export:
|
|
68
91
|
name: "Exporter"
|
|
@@ -86,6 +109,8 @@ fr:
|
|
|
86
109
|
save_and_edit: "Enregistrer et éditer"
|
|
87
110
|
save_and_add_another_button: "Enregistrer et créer un(e) autre"
|
|
88
111
|
destroy: "Supprimer"
|
|
112
|
+
edit: "éditer"
|
|
113
|
+
copy: "Dupliquer"
|
|
89
114
|
close: "Fermer"
|
|
90
115
|
|
|
91
116
|
types:
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
class CreateParaPageSectionResources < ActiveRecord::Migration
|
|
2
|
+
def change
|
|
3
|
+
create_table :para_page_section_resources do |t|
|
|
4
|
+
t.references :section
|
|
5
|
+
t.references :resource, polymorphic: true, index: false
|
|
6
|
+
t.integer :position, default: 0
|
|
7
|
+
t.jsonb :data
|
|
8
|
+
|
|
9
|
+
t.timestamps
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
add_index :para_page_section_resources, [:resource_type, :resource_id], name: :index_para_section_resources_on_resource_type_and_id
|
|
13
|
+
add_foreign_key :para_page_section_resources, :para_page_sections, column: 'section_id'
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
= search_form_for @q, builder: SimpleForm::FormBuilder, url: @component.path, html: { data: { :'filters-form' => true } } do |form|
|
|
2
|
-
.input-group
|
|
3
|
-
%span.input-group-addon
|
|
4
|
-
%i.fa.fa-search
|
|
5
|
-
|
|
2
|
+
.input-group.filter-form
|
|
6
3
|
= form.input_field :<%= fulltext_search_param_for(attributes) %>, as: :string, placeholder: t('para.shared.search'), class: 'form-control'
|
|
7
4
|
|
|
8
5
|
%span.input-group-btn
|
|
9
|
-
|
|
6
|
+
%button.btn{ type: 'submit'}
|
|
7
|
+
%i.fa.fa-search
|
|
@@ -1,17 +1,22 @@
|
|
|
1
1
|
Para.config do |config|
|
|
2
2
|
# Configure authentication method to be called when accessing the admin panel
|
|
3
|
+
#
|
|
3
4
|
# config.authenticate_admin_method = :authenticate_admin!
|
|
4
5
|
|
|
5
6
|
# Configure the method to retrieve current admin user from
|
|
7
|
+
#
|
|
6
8
|
# config.current_admin_method = :current_admin_user
|
|
7
9
|
|
|
8
10
|
# Configure the default Kaminari pagination theme to use
|
|
11
|
+
#
|
|
9
12
|
# config.pagination_theme = 'twitter-bootstrap-3'
|
|
10
13
|
|
|
11
14
|
# Configure the default admin HTML page <title>
|
|
15
|
+
#
|
|
12
16
|
# config.admin_title = ::I18n.t('para.admin.title')
|
|
13
17
|
|
|
14
18
|
# Configure the default max depth for trees
|
|
19
|
+
#
|
|
15
20
|
# config.default_tree_max_depth = 3
|
|
16
21
|
|
|
17
22
|
# Configure the methods which Para will try to call on resources to fetch
|
|
@@ -21,6 +26,13 @@ Para.config do |config|
|
|
|
21
26
|
#
|
|
22
27
|
# config.resource_name_methods += [:full_name]
|
|
23
28
|
|
|
29
|
+
# Set if the Para::Breadcrumb::Controller module should be included into the
|
|
30
|
+
# app, allowing easy breadcrumbs management in the app.
|
|
31
|
+
#
|
|
32
|
+
# Default is true
|
|
33
|
+
#
|
|
34
|
+
# config.enable_app_breadcrumbs = false
|
|
35
|
+
|
|
24
36
|
# Para plugins to load
|
|
25
37
|
#
|
|
26
38
|
# config.plugins = []
|
|
@@ -5,15 +5,26 @@ module Para
|
|
|
5
5
|
|
|
6
6
|
source_root File.expand_path("../templates", __FILE__)
|
|
7
7
|
|
|
8
|
-
argument :attributes, type: :array
|
|
8
|
+
argument :attributes, type: :array, required: false, default: []
|
|
9
9
|
|
|
10
|
-
def
|
|
10
|
+
def generate_model
|
|
11
11
|
template(
|
|
12
12
|
"section.rb.erb",
|
|
13
13
|
"app/models/page_section/#{ singular_namespaced_path }.rb"
|
|
14
14
|
)
|
|
15
15
|
end
|
|
16
16
|
|
|
17
|
+
def generate_fields
|
|
18
|
+
generate 'para:nested_fields', "page_section/#{ singular_namespaced_path }"
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def generate_template
|
|
22
|
+
template(
|
|
23
|
+
"section.html.haml.erb",
|
|
24
|
+
"app/views/page_section/#{ plural_namespaced_path }/_#{ singular_namespaced_path }.html.haml"
|
|
25
|
+
)
|
|
26
|
+
end
|
|
27
|
+
|
|
17
28
|
private
|
|
18
29
|
|
|
19
30
|
def attributes_separated_with_commas
|
|
@@ -21,7 +21,7 @@ module Para
|
|
|
21
21
|
def add_resource_to_component_controller
|
|
22
22
|
gsub_file "app/controllers/admin/#{ component_name.singularize }_component_controller.rb", /# You can access @component here/ do
|
|
23
23
|
<<-RUBY
|
|
24
|
-
@q = @component.#{ plural_file_name }.
|
|
24
|
+
@q = @component.#{ plural_file_name }.ransack(params[:q])
|
|
25
25
|
@resources = @q.result.page(params[:page])
|
|
26
26
|
RUBY
|
|
27
27
|
end
|
data/lib/para.rb
CHANGED
|
@@ -18,6 +18,7 @@ require 'ransack'
|
|
|
18
18
|
require 'friendly_id'
|
|
19
19
|
require 'deep_cloneable'
|
|
20
20
|
require 'closure_tree'
|
|
21
|
+
require 'friendly_id'
|
|
21
22
|
|
|
22
23
|
require 'jquery-rails'
|
|
23
24
|
require 'turbolinks'
|
|
@@ -34,34 +35,16 @@ require 'rails/relation_length_validator'
|
|
|
34
35
|
|
|
35
36
|
require 'para/postgres_extensions_checker'
|
|
36
37
|
|
|
37
|
-
require 'para/ext'
|
|
38
|
-
require 'para/errors'
|
|
39
|
-
require 'para/plugins'
|
|
40
|
-
require 'para/config'
|
|
41
|
-
require 'para/model_field_parsers'
|
|
42
|
-
require 'para/attribute_field'
|
|
43
|
-
require 'para/attribute_field_mappings'
|
|
44
|
-
require 'para/inputs'
|
|
45
|
-
require 'para/cloneable'
|
|
46
|
-
require 'para/orderable'
|
|
47
|
-
require 'para/form_builder'
|
|
48
|
-
require 'para/markup'
|
|
49
|
-
require 'para/engine'
|
|
50
|
-
require 'para/components_configuration'
|
|
51
|
-
require 'para/job'
|
|
52
|
-
require 'para/exporter'
|
|
53
|
-
require 'para/importer'
|
|
54
|
-
require 'para/sti'
|
|
55
|
-
require 'para/page'
|
|
56
|
-
require 'para/search'
|
|
57
|
-
|
|
58
38
|
module Para
|
|
59
39
|
extend ActiveSupport::Autoload
|
|
60
40
|
|
|
61
41
|
eager_autoload do
|
|
62
42
|
autoload :Config
|
|
63
43
|
autoload :Component
|
|
44
|
+
autoload :ControllerResource
|
|
64
45
|
autoload :Generators
|
|
46
|
+
autoload :Helpers
|
|
47
|
+
autoload :SimpleFormConfig
|
|
65
48
|
autoload :Routing
|
|
66
49
|
autoload :Routes
|
|
67
50
|
autoload :Breadcrumbs
|
|
@@ -89,3 +72,24 @@ module Para
|
|
|
89
72
|
'para_'
|
|
90
73
|
end
|
|
91
74
|
end
|
|
75
|
+
|
|
76
|
+
require 'para/ext'
|
|
77
|
+
require 'para/errors'
|
|
78
|
+
require 'para/plugins'
|
|
79
|
+
require 'para/config'
|
|
80
|
+
require 'para/model_field_parsers'
|
|
81
|
+
require 'para/attribute_field'
|
|
82
|
+
require 'para/attribute_field_mappings'
|
|
83
|
+
require 'para/inputs'
|
|
84
|
+
require 'para/cloneable'
|
|
85
|
+
require 'para/orderable'
|
|
86
|
+
require 'para/form_builder'
|
|
87
|
+
require 'para/markup'
|
|
88
|
+
require 'para/engine'
|
|
89
|
+
require 'para/components_configuration'
|
|
90
|
+
require 'para/job'
|
|
91
|
+
require 'para/exporter'
|
|
92
|
+
require 'para/importer'
|
|
93
|
+
require 'para/sti'
|
|
94
|
+
require 'para/page'
|
|
95
|
+
require 'para/search'
|
data/lib/para/attribute_field.rb
CHANGED
|
@@ -13,7 +13,9 @@ require 'para/attribute_field/enum'
|
|
|
13
13
|
require 'para/attribute_field/relation'
|
|
14
14
|
require 'para/attribute_field/belongs_to'
|
|
15
15
|
require 'para/attribute_field/has_many'
|
|
16
|
+
require 'para/attribute_field/nested_field'
|
|
16
17
|
require 'para/attribute_field/nested_one'
|
|
17
18
|
require 'para/attribute_field/nested_many'
|
|
18
19
|
require 'para/attribute_field/redactor'
|
|
19
20
|
require 'para/attribute_field/translation'
|
|
21
|
+
require 'para/attribute_field/friendly_id'
|
|
@@ -86,7 +86,7 @@ module Para
|
|
|
86
86
|
# it can be easy to edit them according to some field type specific
|
|
87
87
|
# behavior
|
|
88
88
|
#
|
|
89
|
-
def parse_input(params); end
|
|
89
|
+
def parse_input(params, resource); end
|
|
90
90
|
|
|
91
91
|
def field_options
|
|
92
92
|
self.class._field_options.each_with_object({}) do |params, hash|
|