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.
Files changed (180) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/images/para/admin/tangram-mosaic.png +0 -0
  3. data/app/assets/images/para/admin/template-section.svg +23 -0
  4. data/app/assets/javascripts/para/admin.coffee +20 -0
  5. data/app/assets/javascripts/para/admin/tabs.coffee +22 -5
  6. data/app/assets/javascripts/para/admin/theme_actions.coffee +3 -3
  7. data/app/assets/javascripts/para/inputs/material-input.coffee +4 -0
  8. data/app/assets/javascripts/para/inputs/multi-select-input.coffee +173 -0
  9. data/app/assets/javascripts/para/inputs/nested_many.coffee +9 -9
  10. data/app/assets/stylesheets/para/admin.sass +5 -5
  11. data/app/assets/stylesheets/para/admin/main.sass +32 -0
  12. data/app/assets/stylesheets/para/admin/src/_alert.sass +17 -0
  13. data/app/assets/stylesheets/para/admin/src/_base.sass +51 -0
  14. data/app/assets/stylesheets/para/admin/src/_bootstrap-variables.scss +874 -0
  15. data/app/assets/stylesheets/para/admin/src/_breadcrumb.sass +22 -0
  16. data/app/assets/stylesheets/para/admin/src/_buttons.sass +107 -0
  17. data/app/assets/stylesheets/para/admin/src/_checkable.sass +94 -0
  18. data/app/assets/stylesheets/para/admin/src/_common.sass +203 -0
  19. data/app/assets/stylesheets/para/admin/src/_dropdown.sass +40 -0
  20. data/app/assets/stylesheets/para/admin/src/_form.sass +271 -0
  21. data/app/assets/stylesheets/para/admin/src/_list.sass +61 -0
  22. data/app/assets/stylesheets/para/admin/src/_mixins.sass +113 -0
  23. data/app/assets/stylesheets/para/admin/src/_multi-select.sass +91 -0
  24. data/app/assets/stylesheets/para/admin/src/_navigation.sass +150 -0
  25. data/app/assets/stylesheets/para/admin/src/_navtabs.sass +41 -0
  26. data/app/assets/stylesheets/para/admin/src/_nested-many.sass +69 -0
  27. data/app/assets/stylesheets/para/admin/src/_nested_one.sass +13 -0
  28. data/app/assets/stylesheets/para/admin/src/_orderable.sass +44 -0
  29. data/app/assets/stylesheets/para/admin/src/_page-loading.sass +39 -0
  30. data/app/assets/stylesheets/para/admin/src/_pagination.sass +34 -0
  31. data/app/assets/stylesheets/para/admin/src/_panel.sass +55 -0
  32. data/app/assets/stylesheets/para/admin/src/_responsive.sass +100 -0
  33. data/app/assets/stylesheets/para/admin/{theme → src}/_sorting.sass +11 -3
  34. data/app/assets/stylesheets/para/admin/src/_statcard.sass +41 -0
  35. data/app/assets/stylesheets/para/admin/src/_table.sass +33 -0
  36. data/app/assets/stylesheets/para/admin/src/_tree.sass +52 -0
  37. data/app/assets/stylesheets/para/admin/src/_variables.sass +37 -0
  38. data/app/assets/stylesheets/para/admin/src/_well.sass +12 -0
  39. data/app/assets/stylesheets/para/{admin/src → lib}/datetimepicker.sass +1 -3
  40. data/app/assets/stylesheets/para/{admin/src → lib}/fuelux.sass +3 -5
  41. data/app/assets/stylesheets/para/lib/jasny-bootstrap.sass +97 -0
  42. data/app/assets/stylesheets/para/{admin/src → lib}/redactor.sass +2 -5
  43. data/app/assets/stylesheets/para/lib/selectize.sass +112 -0
  44. data/app/assets/stylesheets/para/lib/slider.sass +12 -0
  45. data/app/controllers/concerns/para/admin/resource_controller_concerns.rb +14 -2
  46. data/app/controllers/para/admin/base_controller.rb +7 -0
  47. data/app/controllers/para/admin/crud_resources_controller.rb +13 -6
  48. data/app/controllers/para/admin/form_resources_controller.rb +5 -3
  49. data/app/controllers/para/admin/resources_controller.rb +9 -3
  50. data/app/controllers/para/admin/search_controller.rb +15 -0
  51. data/app/controllers/para/application_controller.rb +10 -2
  52. data/app/helpers/para/admin/page_helper.rb +9 -9
  53. data/app/helpers/para/application_helper.rb +1 -10
  54. data/app/helpers/para/form_helper.rb +5 -6
  55. data/app/helpers/para/model_helper.rb +13 -3
  56. data/app/helpers/para/ordering_helper.rb +1 -1
  57. data/app/helpers/para/search_results_helper.rb +16 -0
  58. data/app/helpers/para/tree_helper.rb +10 -6
  59. data/app/models/para/page.rb +5 -0
  60. data/app/models/para/page/section.rb +42 -0
  61. data/app/models/para/page/section_resource.rb +12 -0
  62. data/app/views/layouts/para/admin.html.haml +5 -8
  63. data/app/views/para/admin/dashboard.html.haml +21 -8
  64. data/app/views/para/admin/form_resources/show.html.haml +1 -1
  65. data/app/views/para/admin/imports/new.html.haml +2 -2
  66. data/app/views/para/admin/resources/_actions.html.haml +3 -3
  67. data/app/views/para/admin/resources/_add_button.html.haml +1 -1
  68. data/app/views/para/admin/resources/_exports_menu.html.haml +6 -6
  69. data/app/views/para/admin/resources/_filters.html.haml +7 -8
  70. data/app/views/para/admin/resources/_imports_menu.html.haml +6 -6
  71. data/app/views/para/admin/resources/_list.html.haml +14 -15
  72. data/app/views/para/admin/resources/_per_page_select.html.haml +4 -3
  73. data/app/views/para/admin/resources/_subclassable_add_button.html.haml +3 -3
  74. data/app/views/para/admin/resources/_tree.html.haml +7 -9
  75. data/app/views/para/admin/resources/_tree_item.html.haml +5 -6
  76. data/app/views/para/admin/resources/edit.html.haml +1 -1
  77. data/app/views/para/admin/resources/new.html.haml +1 -1
  78. data/app/views/para/admin/search/_result.html.haml +7 -0
  79. data/app/views/para/admin/search/index.html.haml +1 -0
  80. data/app/views/para/admin/settings_component/show.html.haml +1 -1
  81. data/app/views/para/admin/shared/_breadcrumbs.html.haml +2 -3
  82. data/app/views/para/admin/shared/_header.html.haml +16 -27
  83. data/app/views/para/admin/shared/_navigation.html.haml +20 -19
  84. data/app/views/para/form/_tabs.html.haml +6 -7
  85. data/app/views/para/inputs/_multi_select.html.haml +40 -0
  86. data/app/views/para/inputs/_nested_many.html.haml +4 -4
  87. data/app/views/para/inputs/multi_select/_no_items.html.haml +6 -0
  88. data/app/views/para/inputs/nested_many/_add.html.haml +1 -2
  89. data/app/views/para/inputs/nested_many/_add_with_subclasses.html.haml +4 -5
  90. data/app/views/para/inputs/nested_many/_container.html.haml +7 -8
  91. data/app/views/shared/_breadcrumbs.html.haml +4 -0
  92. data/config/locales/fr.yml +29 -4
  93. data/db/migrate/20170324125547_create_para_page_section_resources.rb +15 -0
  94. data/lib/generators/para/filters/templates/_filters.html.haml +3 -5
  95. data/lib/generators/para/install/templates/initializer.rb +12 -0
  96. data/lib/generators/para/page/section/section_generator.rb +13 -2
  97. data/lib/generators/para/page/section/templates/section.html.haml.erb +3 -0
  98. data/lib/generators/para/resource/resource_generator.rb +1 -1
  99. data/lib/para.rb +25 -21
  100. data/lib/para/attribute_field.rb +2 -0
  101. data/lib/para/attribute_field/base.rb +1 -1
  102. data/lib/para/attribute_field/belongs_to.rb +1 -1
  103. data/lib/para/attribute_field/boolean.rb +1 -1
  104. data/lib/para/attribute_field/friendly_id.rb +19 -0
  105. data/lib/para/attribute_field/has_many.rb +43 -4
  106. data/lib/para/attribute_field/nested_field.rb +46 -0
  107. data/lib/para/attribute_field/nested_many.rb +30 -9
  108. data/lib/para/attribute_field/nested_one.rb +28 -9
  109. data/lib/para/attribute_field/password.rb +1 -1
  110. data/lib/para/attribute_field/relation.rb +19 -1
  111. data/lib/para/attribute_field_mappings.rb +9 -3
  112. data/lib/para/breadcrumbs/breadcrumb.rb +57 -10
  113. data/lib/para/breadcrumbs/controller.rb +19 -6
  114. data/lib/para/breadcrumbs/manager.rb +9 -1
  115. data/lib/para/config.rb +3 -0
  116. data/lib/para/controller_resource.rb +34 -0
  117. data/lib/para/engine.rb +33 -14
  118. data/lib/para/exporter/base.rb +1 -1
  119. data/lib/para/ext.rb +1 -1
  120. data/lib/para/ext/active_record_nested_attributes.rb +51 -0
  121. data/lib/para/ext/paperclip.rb +2 -6
  122. data/lib/para/form_builder.rb +3 -0
  123. data/lib/para/form_builder/attributes_mappings_tracker.rb +45 -0
  124. data/lib/para/form_builder/containers.rb +13 -17
  125. data/lib/para/form_builder/nested_form.rb +2 -3
  126. data/lib/para/helpers.rb +8 -0
  127. data/lib/para/helpers/attributes_mappings.rb +13 -0
  128. data/lib/para/helpers/resource_name.rb +14 -0
  129. data/lib/para/inputs.rb +1 -0
  130. data/lib/para/inputs/multi_select_input.rb +90 -0
  131. data/lib/para/inputs/nested_many_input.rb +6 -1
  132. data/lib/para/markup/resources_table.rb +15 -11
  133. data/lib/para/model_field_parsers.rb +3 -2
  134. data/lib/para/model_field_parsers/base.rb +7 -2
  135. data/lib/para/model_field_parsers/friendly_id.rb +19 -0
  136. data/lib/para/model_field_parsers/relations.rb +20 -1
  137. data/lib/para/page/model.rb +3 -1
  138. data/lib/para/routes.rb +1 -0
  139. data/lib/para/simple_form_config.rb +85 -0
  140. data/lib/para/version.rb +1 -1
  141. data/lib/rails/routing_mapper.rb +5 -8
  142. data/vendor/assets/javascripts/jasny-bootstrap.js +577 -0
  143. data/vendor/assets/stylesheets/animate.css +3340 -0
  144. data/vendor/assets/stylesheets/hint.css +649 -0
  145. data/vendor/assets/stylesheets/jasny-bootstrap.css +287 -0
  146. metadata +114 -67
  147. data/app/assets/images/para/admin/bg.png +0 -0
  148. data/app/assets/javascripts/para/admin.js +0 -20
  149. data/app/assets/stylesheets/admin/theme.sass +0 -0
  150. data/app/assets/stylesheets/para/admin/src/jasny.bootstrap.sass +0 -40
  151. data/app/assets/stylesheets/para/admin/src/nested_many.sass +0 -5
  152. data/app/assets/stylesheets/para/admin/src/page-loading.sass +0 -24
  153. data/app/assets/stylesheets/para/admin/src/page-top-bar.sass +0 -9
  154. data/app/assets/stylesheets/para/admin/src/selectize.sass +0 -46
  155. data/app/assets/stylesheets/para/admin/src/slider.sass +0 -12
  156. data/app/assets/stylesheets/para/admin/theme.sass +0 -22
  157. data/app/assets/stylesheets/para/admin/theme/_base.sass +0 -176
  158. data/app/assets/stylesheets/para/admin/theme/_breadcrumb.sass +0 -75
  159. data/app/assets/stylesheets/para/admin/theme/_buttons.sass +0 -27
  160. data/app/assets/stylesheets/para/admin/theme/_checkable.sass +0 -108
  161. data/app/assets/stylesheets/para/admin/theme/_commonds.sass +0 -210
  162. data/app/assets/stylesheets/para/admin/theme/_dropdown.sass +0 -52
  163. data/app/assets/stylesheets/para/admin/theme/_form.sass +0 -150
  164. data/app/assets/stylesheets/para/admin/theme/_list.sass +0 -139
  165. data/app/assets/stylesheets/para/admin/theme/_navigation.sass +0 -229
  166. data/app/assets/stylesheets/para/admin/theme/_navtabs.sass +0 -151
  167. data/app/assets/stylesheets/para/admin/theme/_orderable.sass +0 -45
  168. data/app/assets/stylesheets/para/admin/theme/_panel.sass +0 -264
  169. data/app/assets/stylesheets/para/admin/theme/_responsive.sass +0 -123
  170. data/app/assets/stylesheets/para/admin/theme/_table.sass +0 -28
  171. data/app/assets/stylesheets/para/admin/theme/_tree.sass +0 -74
  172. data/app/assets/stylesheets/para/admin/theme/_variables.sass +0 -31
  173. data/app/assets/stylesheets/para/application.css +0 -15
  174. data/app/assets/stylesheets/para/lib/_variables.scss +0 -646
  175. data/app/assets/stylesheets/para/overrides/responsive.sass +0 -62
  176. data/app/assets/stylesheets/para/overrides/theme.sass +0 -172
  177. data/lib/para/ext/cancan.rb +0 -26
  178. data/vendor/assets/javascripts/jasny.bootstrap.min.js +0 -7
  179. data/vendor/assets/stylesheets/animate.min.css +0 -6
  180. data/vendor/assets/stylesheets/jasny.bootstrap.min.css +0 -7
@@ -0,0 +1,16 @@
1
+ module Para
2
+ module SearchResultsHelper
3
+ def selected_item_for(result)
4
+ content_tag(:tr, class: 'selected-item', data: { :'selected-item-id' => result.id }) do
5
+ content_tag(:td, reorder_anchor, class: 'reorder-anchor-cell') +
6
+ content_tag(:td, resource_name(result)) +
7
+
8
+ content_tag(:td, class: 'remove-button-cell') do
9
+ button_tag type: :button, class: 'btn btn-xs btn-danger', data: { :'remove-item' => true } do
10
+ fa_icon 'arrow-left'
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
@@ -9,9 +9,7 @@ module Para
9
9
  end
10
10
 
11
11
  def actions(resource)
12
- content_tag(:div, class: 'pull-right btn-group') do
13
- edit_button(resource) + delete_button(resource)
14
- end
12
+ edit_button(resource) + delete_button(resource)
15
13
  end
16
14
 
17
15
  def edit_button(resource)
@@ -19,7 +17,10 @@ module Para
19
17
  component.relation_path(
20
18
  resource, action: :edit, return_to: view.request.fullpath
21
19
  ),
22
- class: 'btn btn-primary'
20
+ class: 'btn btn-sm btn-icon-primary btn-shadow hint--left',
21
+ aria: {
22
+ label: ::I18n.t('para.shared.edit')
23
+ }
23
24
  ) do
24
25
  content_tag(:i, '', class: 'fa fa-pencil')
25
26
  end
@@ -32,9 +33,12 @@ module Para
32
33
  data: {
33
34
  confirm: ::I18n.t('para.list.delete_confirmation')
34
35
  },
35
- class: 'btn btn-danger'
36
+ class: 'btn btn-sm btn-icon-danger btn-shadow hint--left',
37
+ aria: {
38
+ label: ::I18n.t('para.shared.destroy')
39
+ }
36
40
  ) do
37
- content_tag(:i, '', class: 'fa fa-trash')
41
+ content_tag(:i, '', class: 'fa fa-times')
38
42
  end
39
43
  end
40
44
  end
@@ -0,0 +1,5 @@
1
+ module Para::Page
2
+ def self.table_name_prefix
3
+ 'para_page_'
4
+ end
5
+ end
@@ -10,6 +10,48 @@ module Para
10
10
  def css_class
11
11
  @css_class ||= self.class.name.demodulize.underscore.gsub(/_/, '-')
12
12
  end
13
+
14
+ class << self
15
+ # This method is a shortcut to create a has_many through relation
16
+ def section_resources(*args, &block)
17
+ _ensure_section_resources_relation
18
+ _create_section_resource_relation_for(*args, &block)
19
+ end
20
+
21
+ private
22
+
23
+ def _ensure_section_resources_relation
24
+ return if @section_resources_already_initialized
25
+
26
+ has_many :section_resources, -> { ordered },
27
+ foreign_key: 'section_id',
28
+ class_name: '::Para::Page::SectionResource',
29
+ dependent: :destroy
30
+ accepts_nested_attributes_for :section_resources, allow_destroy: true
31
+
32
+ @section_resources_already_initialized = true
33
+ end
34
+
35
+ def _create_section_resource_relation_for(*args, &block)
36
+ options = args.extract_options!
37
+
38
+ # Allow using :class_name option instead of :source_type to feel more
39
+ # like a direct has_many relation macro, and try to deduce the target
40
+ # class name from the relation name.
41
+ target_class_name = options.fetch(:class_name) do
42
+ args.first.to_s.singularize.camelize
43
+ end
44
+
45
+ # Fill the through relation options but let the user override them
46
+ options.reverse_merge!(
47
+ through: :section_resources,
48
+ source: :resource,
49
+ source_type: target_class_name
50
+ )
51
+
52
+ has_many(*args, options, &block)
53
+ end
54
+ end
13
55
  end
14
56
  end
15
57
  end
@@ -0,0 +1,12 @@
1
+ module Para
2
+ module Page
3
+ class SectionResource < ActiveRecord::Base
4
+ self.table_name = 'para_page_section_resources'
5
+
6
+ acts_as_orderable
7
+
8
+ belongs_to :section
9
+ belongs_to :resource, polymorphic: true
10
+ end
11
+ end
12
+ end
@@ -18,15 +18,12 @@
18
18
  = csrf_meta_tags
19
19
 
20
20
  %body
21
- .page-container.page-navigation-top-fixed
21
+ = render partial: 'para/admin/shared/navigation'
22
+ = render partial: 'para/admin/shared/header'
22
23
 
23
- .page-sidebar.collapse.navbar-collapse#menu-sidebar
24
- = render partial: 'para/admin/shared/navigation'
24
+ .container-fluid.page-content
25
+ = display_admin_flash
25
26
 
26
- .page-content
27
- = render partial: 'para/admin/shared/header'
28
- = display_admin_flash
29
-
30
- = yield
27
+ = yield
31
28
 
32
29
  = javascript_include_tag 'para/admin', :'data-turbolinks-eval' => false
@@ -1,11 +1,24 @@
1
1
  = page_top_bar(title: t('para.dashboard.title'), type: 'dashboard/show')
2
2
 
3
- .page-content-wrap
4
- - ordered_components.each_slice(3) do |components|
5
- .row
6
- - components.each do |component|
7
- .col-md-4
8
- = link_to component.path, class: 'panel panel-default' do
9
- .panel-body
10
- = component.name
3
+ - ordered_components.each_slice(3) do |components|
4
+ - components.each do |component|
5
+ .col-sm-6.col-md-6.col-lg-4.m-t-lg
6
+ = link_to component.path, class: 'statcard statcard-icon' do
7
+ %i.icon-rounded.bg-primary
8
+ = component.name[0,1]
9
+ .startcard-body
10
+ %h2.statcard-title
11
+ = component.name
11
12
 
13
+ %span.text-muted
14
+ - if component.type == "Para::Component::Crud"
15
+ = t('para.dashboard.statcard.ressources_count', count: component.resources.count)
16
+ - else
17
+ = t('para.dashboard.statcard.component_form_ressource')
18
+
19
+ -# Comment because is not dev at all for now
20
+ = link_to '#', class: 'thumbtack-link' do
21
+ %i.fa.fa-thumb-tack
22
+
23
+ -# Create spacing at the end off all statcards
24
+ .col-xs-12.m-t-lg
@@ -1,4 +1,4 @@
1
1
  = page_top_bar(title: @component.name, type: 'form/show')
2
2
 
3
- .page-content-wrap
3
+ .page-content-wrap.form-fixed-actions
4
4
  = render find_partial_for(resource, :form)
@@ -9,6 +9,6 @@
9
9
  = form.input :attachment, label: false, placeholder: t('para.import.placeholder')
10
10
 
11
11
  = modal.footer do
12
- %button.btn.btn-primary{ type: 'submit' }
13
- = fa_icon 'upload'
12
+ %button.btn.btn-primary.btn-shadow{ type: 'submit' }
13
+ %i.fa.fa-upload.fa-fw
14
14
  = t('para.import.name')
@@ -1,6 +1,6 @@
1
- %ul.panel-controls
2
- %li
3
- = add_button_for(component, relation, model) if allow_adding_resource
1
+ = add_button_for(component, relation, model) if allow_adding_resource
2
+
3
+ %ul.actions-control.pull-right
4
4
  %li
5
5
  = render partial: find_partial_for(relation, :exports_menu), locals: { component: component, model: model }
6
6
  %li
@@ -1 +1 @@
1
- = icon_link_to t('para.shared.add'), component.relation_path(model.model_name.singular_route_key, action: :new), icon: 'plus', class: 'btn btn-primary add-button'
1
+ = icon_link_to t('para.shared.add'), component.relation_path(model.model_name.singular_route_key, action: :new), class: 'btn btn-primary btn-shadow add-button'
@@ -2,16 +2,16 @@
2
2
  - if component.exporters.length == 1
3
3
  - exporter = component.exporters.first
4
4
 
5
- = link_to component.path(namespace: :exports, exporter: exporter.name, q: params[:q]), class: 'btn btn-default', method: :post, remote: true, data: { :'job-tracker-button' => true, :'refresh-on-close' => false } do
6
- = fa_icon 'download'
5
+ = link_to component.path(namespace: :exports, exporter: exporter.name, q: params[:q]), class: 'btn btn-default btn-shadow', method: :post, remote: true, data: { :'job-tracker-button' => true, :'refresh-on-close' => false } do
6
+ %i.fa.fa-download.fa-fw
7
7
  = exporter.model_name.human
8
8
 
9
9
  - else
10
- .btn-group
11
- %button.btn.btn-default{ type: 'button', data: { toggle: 'dropdown' } }
12
- = fa_icon 'download'
10
+ .btn-group.dropdown
11
+ %button.btn.btn-default.btn-shadow{ type: 'button', data: { toggle: 'dropdown' } }
12
+ %i.fa.fa-download.fa-fw
13
13
  = t('para.export.name')
14
- %span.caret
14
+ %i.fa.fa-angle-down
15
15
  %ul.dropdown-menu
16
16
  - component.exporters.each do |exporter|
17
17
  %li
@@ -1,9 +1,8 @@
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
1
+ .flextable-item.flextable-primary
2
+ = search_form_for @q, builder: SimpleForm::FormBuilder, url: @component.path, html: { data: { :'filters-form' => true } } do |form|
3
+ .input-group.filter-form
4
+ = form.input_field fulltext_search_param_for(attributes), as: :string, placeholder: t('para.shared.search'), class: 'form-control'
5
5
 
6
- = form.input_field fulltext_search_param_for(attributes), as: :string, placeholder: t('para.shared.search'), class: 'form-control'
7
-
8
- %span.input-group-btn
9
- = form.submit t('para.shared.search'), class: 'btn btn-default'
6
+ %span.input-group-btn
7
+ %button.btn{ type: 'submit' }
8
+ %i.fa.fa-search
@@ -2,16 +2,16 @@
2
2
  - if component.importers.length == 1
3
3
  - importer = component.importers.first
4
4
 
5
- = link_to component.path(namespace: :import, action: :new, importer: importer.model_name.singular_route_key), class: 'btn btn-default', remote: true, data: { :'job-tracker-button' => true } do
6
- = fa_icon 'upload'
5
+ = link_to component.path(namespace: :import, action: :new, importer: importer.model_name.singular_route_key), class: 'btn btn-default btn-shadow', remote: true, data: { :'job-tracker-button' => true } do
6
+ %i.fa.fa-upload.fa-fw
7
7
  = importer.model_name.human
8
8
 
9
9
  - else
10
- .btn-group
11
- %button.btn.btn-default{ type: 'button', data: { toggle: 'dropdown' } }
12
- = fa_icon 'upload'
10
+ .btn-group.dropdown
11
+ %button.btn.btn-default.btn-shadow{ type: 'button', data: { toggle: 'dropdown' } }
12
+ %i.fa.fa-upload.fa-fw
13
13
  = t('para.import.name')
14
- %span.caret
14
+ %i.fa.fa-angle-down
15
15
  %ul.dropdown-menu
16
16
  - component.importers.each do |importer|
17
17
  %li
@@ -1,28 +1,27 @@
1
1
  .page-content-wrap
2
- = panel do |panel|
3
- = panel.header do
2
+ .page-list
3
+ .page-list-heading
4
4
  = render partial: find_partial_for(relation, :actions), locals: { relation: relation, component: component, model: model, allow_adding_resource: allow_adding_resource }
5
5
 
6
- = panel.body do
7
- = render partial: find_partial_for(relation, :filters), locals: { attributes: attributes }
6
+ .page-list-heading
7
+ .flextable
8
+ = render partial: find_partial_for(relation, :filters), locals: { attributes: attributes }
8
9
 
9
10
  - if resources.length > 0
10
- = panel.body class: 'page-entries-info' do
11
+ .page-entries-info
11
12
  = page_entries(resources)
12
-
13
- = panel.body class: '' do
13
+ .page-list-body
14
14
  = table_for(resources: resources, model: model, component: component, attributes: attributes)
15
15
 
16
16
  - else
17
- = panel.body do
18
- = alert class: 'no-results no-margin-bottom', dismissable: false do
19
- - if filtered?(attributes)
20
- = t('para.list.no_results')
21
- - else
22
- = t('para.list.empty')
17
+ = alert class: 'no-results', dismissable: false do
18
+ - if filtered?(attributes)
19
+ = t('para.list.no_results')
20
+ - else
21
+ = t('para.list.empty')
23
22
 
24
- = add_button_for(component, relation, model) if allow_adding_resource
23
+ = add_button_for(component, relation, model) if allow_adding_resource
25
24
 
26
25
  - if resources.total_count > resources.length
27
- = panel.footer do
26
+ .page-list-footer
28
27
  = paginate resources, theme: Para.config.pagination_theme
@@ -1,10 +1,11 @@
1
1
  \.
2
+ %br.visible-xs
2
3
  = t('helpers.page_entries_info.number_per_page')
3
4
  \:
4
5
  %span.dropdown
5
- %button.btn.btn-default.btn-xs{ data: { toggle: 'dropdown' } }
6
+ %button.btn.btn-default.btn-shadow.btn-xs.dropdown-toggle{ data: { toggle: 'dropdown' } }
6
7
  = current_per_page
7
- %span.caret
8
+ %span.fa.fa-angle-down
8
9
  %ul.dropdown-menu
9
10
  - count_with_url.each do |count, url|
10
- %li= link_to count, url
11
+ %li= link_to count, url
@@ -1,7 +1,7 @@
1
- .btn-group.add-button
2
- %button.btn.btn-primary.dropdown-toggle{ type: 'button', data: { toggle: 'dropdown' }, aria: { haspopup: true, expanded: false }}
1
+ .btn-group.add-button.dropdown
2
+ %button.btn.btn-primary.btn-shadow.dropdown-toggle{ type: 'button', data: { toggle: 'dropdown' }, aria: { haspopup: true, expanded: false }}
3
3
  = t('para.shared.add')
4
- %span.caret
4
+ %i.fa.fa-angle-down
5
5
 
6
6
  %ul.dropdown-menu
7
7
  - component.subclass_names.each do |subclass|
@@ -1,15 +1,13 @@
1
- .page-content-wrap
2
- = panel do |panel|
3
- = panel.header do
1
+ .page-content-wrap
2
+ .page-list
3
+ .page-list-heading
4
4
  = render partial: find_partial_for(relation, :actions), locals: { relation: relation, component: component, model: model, allow_adding_resource: allow_adding_resource }
5
5
 
6
6
  - if resources.length > 0
7
- = panel.body do
8
- %ul.tree.root-tree{ data: { url: component.relation_path(model.model_name.route_key, action: :tree), :"max-depth" => max_depth_for(model) } }
9
- = render partial: find_partial_for(model, 'tree_item'), collection: resources.roots, as: :root, locals: { model: model}
7
+ %ul.tree.root-tree{ data: { url: component.relation_path(model.model_name.route_key, action: :tree), :"max-depth" => max_depth_for(model) } }
8
+ = render partial: find_partial_for(model, 'tree_item'), collection: resources.roots, as: :root, locals: { model: model}
10
9
 
11
10
  - else
12
- = panel.body do
13
- = alert class: 'no-margin-bottom', dismissable: false do
14
- = filtered?(attributes) ? t('para.list.no_results') : t('para.list.empty')
11
+ = alert class: '', dismissable: false do
12
+ = filtered?(attributes) ? t('para.list.no_results') : t('para.list.empty')
15
13
 
@@ -1,19 +1,18 @@
1
1
  %li.node{ data: { id: root.id } }
2
2
  .node-row
3
3
  %span.handle
4
- %i.fa.fa-bars.fa-fw
4
+ %i.sort-dots
5
5
  %span.node-name
6
6
  = root.name
7
7
 
8
- .pull-right.btn-group
9
- = link_to @component.relation_path(root, action: :edit, return_to: request.fullpath), class: "btn btn-primary" do
8
+ .pull-right
9
+ = link_to @component.relation_path(root, action: :edit, return_to: request.fullpath), class: "btn btn-icon-primary btn-shadow btn-sm hint--left", :'aria-label' => ::I18n.t('para.shared.edit') do
10
10
  %i.fa.fa-pencil
11
11
 
12
- = link_to @component.relation_path(root), method: :delete, data: { confirm: ::I18n.t('para.list.delete_confirmation') }, class: 'btn btn-danger' do
13
- %i.fa.fa-trash
12
+ = link_to @component.relation_path(root), method: :delete, data: { confirm: ::I18n.t('para.list.delete_confirmation') }, class: 'btn btn-icon-danger btn-shadow btn-sm hint--left', :'aria-label' => ::I18n.t('para.shared.destroy') do
13
+ %i.fa.fa-times
14
14
 
15
15
  .clearfix
16
16
  %ul.tree
17
17
  %li.placeholder{ class: "#{ 'hidden' unless needs_placeholder?(root) }"}
18
18
  = render partial: find_partial_for(model, 'tree_item'), collection: root.children.ordered, as: :root, locals: { model: model }
19
-
@@ -1,4 +1,4 @@
1
1
  = page_top_bar(title: resource_title_for(resource), type: 'crud/edit')
2
2
 
3
- .page-content-wrap
3
+ .page-content-wrap.form-fixed-actions
4
4
  = render find_partial_for(resource, :form)
@@ -1,4 +1,4 @@
1
1
  = page_top_bar(title: resource_title_for(resource), type: 'crud/new')
2
2
 
3
- .page-content-wrap
3
+ .page-content-wrap.form-fixed-actions
4
4
  = render find_partial_for(resource, :form)
@@ -0,0 +1,7 @@
1
+ %tr.available-item{ data: { :'available-item-id' => result.id, :available => true, :'selected-item-template' => selected_item_for(result) } }
2
+ %td= resource_name(result)
3
+
4
+ %td.add-button-cell
5
+ = button_tag type: :button, class: 'btn btn-xs btn-success', data: { :'add-item' => true } do
6
+ = fa_icon 'arrow-right'
7
+ %span.badge= t('para.form.multi_select.available.already_selected')
@@ -0,0 +1 @@
1
+ = render partial: 'para/admin/search/result', collection: @results
@@ -1,6 +1,6 @@
1
1
  = page_top_bar(title: @component.name, type: 'settings/show')
2
2
 
3
- .page-content-wrap
3
+ .page-content-wrap.form-fixed-actions
4
4
  = para_form_for @settings, url: admin_settings_path(@component) do |form|
5
5
  = form.fieldset do
6
6
  - @component.settings.each do |setting, type|
@@ -1,5 +1,4 @@
1
- %ul.breadcrumb
1
+ %ul.breadcrumb.pull-left
2
2
  - breadcrumbs.each do |breadcrumb|
3
- - active = breadcrumb.active?(request)
4
- %li{ class: ('active' if active) }
3
+ %li{ class: ('active' if breadcrumb.active?(request)) }
5
4
  = link_to breadcrumb.title, breadcrumb.path
@@ -1,29 +1,18 @@
1
- .navigation-horizontal{ data: { header: true } }
2
- = render_breadcrumbs
3
- %ul.list-unstyled.list-inline.ul-navbar
4
- %li.brand-logo
5
- = link_to admin_path do
6
- .hidden-sm.hidden-xs
7
- = t('para.admin.title')
8
- .visible-sm.visible-xs
9
- %i.fa.fa-home
1
+ .navbar.navbar-default.navbar-fixed-top{ data: { header: true } }
2
+ %button.navbar-toggle{ type: 'button', data: { toggle: 'offcanvas', target: '.navmenu' } }
3
+ %span.sr-only
4
+ = t('para.admin.toggle_navigation')
5
+ %span.icon-bar
6
+ %span.icon-bar
7
+ %span.icon-bar
10
8
 
11
- %li.pull-right
12
- %button.navbar-toggle.collapsed{ type: 'button', data: { toggle: 'collapse', target: '#menu-sidebar' } }
13
- %span.sr-only
14
- = t('para.admin.toggle_navigation')
15
- %span.icon-bar
16
- %span.icon-bar
17
- %span.icon-bar
18
-
19
- %li.pull-right
20
- = link_to destroy_admin_user_session_path, method: :delete do
21
- %i.fa.fa-power-off
22
- %span.text-hidden
23
- = t('para.admin.sign_out')
24
-
25
- %li.pull-right
26
- = link_to root_path, target: "_blank" do
9
+ %ul.nav.navbar-nav.pull-right
10
+ %li
11
+ = link_to root_path, target: "_blank", class: 'hint--bottom-left btn-home btn-shadow', aria: { label: t('para.admin.back_to_app') } do
27
12
  %i.fa.fa-home
28
- %span.text-hidden
29
- = t('para.admin.back_to_app')
13
+
14
+ %li
15
+ = link_to destroy_admin_user_session_path, method: :delete, class: 'hint--bottom-left btn-power-off btn-shadow', aria: { label: t('para.admin.sign_out') } do
16
+ %i.fa.fa-sign-out
17
+
18
+ = render_breadcrumbs