itsf_backend 2.2.1 → 3.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (24) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/itsf/backend/application.js +1 -0
  3. data/app/assets/javascripts/itsf/backend/application/ui_autocomplete.js.coffee +15 -15
  4. data/app/concerns/routing/itsf_backend_resource_concern.rb +34 -0
  5. data/app/controllers/concerns/controller/collection_links_concern.rb +15 -0
  6. data/app/controllers/concerns/controller/resource_links_concern.rb +26 -0
  7. data/app/controllers/itsf/backend/resource/base_controller.rb +6 -0
  8. data/app/controllers/itsf/backend/service/base_controller.rb +1 -0
  9. data/app/policies/itsf/backend/engine_policy.rb +2 -2
  10. data/app/views/itsf/backend/resource/base/_additional_collection_tabs.html.haml +0 -0
  11. data/app/views/itsf/backend/resource/base/_additional_resource_tabs.html.haml +0 -0
  12. data/app/views/itsf/backend/resource/base/_collection_pages_navigation.html.haml +10 -0
  13. data/app/views/itsf/backend/resource/base/_form.html.haml +1 -1
  14. data/app/views/itsf/backend/resource/base/_resource_pages_navigation.haml +10 -0
  15. data/app/views/itsf/backend/resource/base/_show_extra_actions.html.haml +25 -0
  16. data/app/views/itsf/backend/resource/base/index.html.haml +10 -4
  17. data/app/views/itsf/backend/resource/base/show.html.haml +5 -0
  18. data/app/views/layouts/itsf/backend/_vertical_navigation.haml +1 -1
  19. data/config/initializers/extend_action_dispatch_routing_mapper.rb +1 -0
  20. data/config/locales/de.yml +2 -0
  21. data/lib/itsf/backend/configuration.rb +3 -0
  22. data/lib/itsf/backend/features.rb +2 -1
  23. data/lib/itsf/backend/version.rb +1 -1
  24. metadata +11 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 2018c783ed7049debdea9e3a99cba8625d44b217
4
- data.tar.gz: 2f9e9480e0f37242ef5df7f7aec3915857ebf0e9
3
+ metadata.gz: b47d47f7ec14b4bb2f5fe787602a69a0c9286949
4
+ data.tar.gz: e04584cf360c901603f0168fb839c12ba5ac3a73
5
5
  SHA512:
6
- metadata.gz: 03a30ab60bf9dbc5d76aca544e7099558aac41761fffaa1107891109ff92284436648ec81537e00c144299ebf0a5077bc904ffc5ab5a340606029fd42df1106e
7
- data.tar.gz: 5c9ef7e87174a159c20b0a8871efa32ee2be677244b4325fe8b713fe34224bd07cabf444a01989e115de3e1faeb8a92b802fd6546b52fff10977ce5ad4e12b1f
6
+ metadata.gz: c00692d6a894a14e54a64753b3b79278b75fff021f41ab3768097348f405b51194a629daae2add53dca337d6d21b960cfcf5852ce3fe201ad494822e8a594a1b
7
+ data.tar.gz: 2e57fdf91245162efda51d802d72153f8cf7502c33f0e97f6c3f8fa43f2d31716468b0485842eed938589e52e495a241048e5a426c9961e2cd7a88dae89925f2
@@ -13,6 +13,7 @@
13
13
  //= require jquery
14
14
  //= require jquery_ujs
15
15
  //= require jquery-ui
16
+ //= require turbolinks
16
17
  //= require twitter/bootstrap
17
18
  //= require ace-rails-ap
18
19
  //= require cocoon
@@ -1,16 +1,16 @@
1
- $ ->
2
- $('.ui-autocomplete-input').each ->
3
- element = $(this)
4
- target = $(this).attr('data-source-url')
1
+ $(document).on 'turbolinks:load', ->
2
+ $('.ui-autocomplete-input').each ->
3
+ element = $(this)
4
+ target = $(this).attr('data-source-url')
5
5
 
6
- element.autocomplete
7
- source: target
8
- minLength: 2
9
- html: true
10
- open: (event, ui) ->
11
- $('.ui-autocomplete').css 'z-index', 1000
12
- return
13
- create: ->
14
- $(this).data('ui-autocomplete')._renderItem = (ul, item) ->
15
- $("<li>").append("<span>" + item.title + "<br><small>" + item.subtitle + "</small></span>").appendTo ul
16
- return
6
+ element.autocomplete
7
+ source: target
8
+ minLength: 2
9
+ html: true
10
+ open: (event, ui) ->
11
+ $('.ui-autocomplete').css 'z-index', 1000
12
+ return
13
+ create: ->
14
+ $(this).data('ui-autocomplete')._renderItem = (ul, item) ->
15
+ $("<li>").append("<span>" + item.title + "<br><small>" + item.subtitle + "</small></span>").appendTo ul
16
+ return
@@ -0,0 +1,34 @@
1
+ module Routing
2
+ module ItsfBackendResourceConcern
3
+ extend ActiveSupport::Concern
4
+ # Using this method instead of resources, adds member routes for pages added in the
5
+ # itsf_backend configuration.
6
+ #
7
+ def backend_resources(*args, &block)
8
+ resources(*args, &block)
9
+
10
+ # additional_member_actions = (Itsf::Backend::Configuration.default_resource_pages - [:show])
11
+
12
+ # if additional_member_actions.any?
13
+ # resources_name = args.first
14
+ # resources resources_name, only: [] do
15
+ # member do
16
+ # additional_member_actions.each do |action|
17
+ # get action
18
+ # end
19
+ # end
20
+ # end
21
+ # end
22
+
23
+ additional_resource_route_blocks = Itsf::Backend::Configuration.additional_resource_route_blocks
24
+ if additional_resource_route_blocks.any?
25
+ resources_name = args.first
26
+ additional_resource_route_blocks.each do |route_block|
27
+ resources resources_name, only: [] do
28
+ route_block.call(self)
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,15 @@
1
+ module Controller
2
+ module CollectionLinksConcern
3
+ extend ActiveSupport::Concern
4
+
5
+ included do
6
+ helper_method :collection_links
7
+ end
8
+
9
+ private
10
+
11
+ def collection_links
12
+ Itsf::Backend.collection_links
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,26 @@
1
+ module Controller
2
+ module ResourceLinksConcern
3
+ extend ActiveSupport::Concern
4
+
5
+ # included do
6
+ # helper_method :resource_pages
7
+ # end
8
+
9
+ # private
10
+
11
+ # def resource_pages
12
+ # # Itsf::Backend::Configuration.default_resource_pages +
13
+ # Itsf::Backend::Configuration.resource_pages.map { |arp| arp.respond_to?(:call) ? arp.call(self) : arp.to_sym }.compact
14
+ # end
15
+
16
+ included do
17
+ helper_method :resource_links
18
+ end
19
+
20
+ private
21
+
22
+ def resource_links
23
+ Itsf::Backend.resource_links
24
+ end
25
+ end
26
+ end
@@ -18,6 +18,8 @@ module Itsf::Backend
18
18
  include Controller::PaginationConcern if Itsf::Backend.features?(:kaminari)
19
19
  include Controller::JsonApiConcern
20
20
  include Controller::FeatureFlagsConcern
21
+ include Controller::ResourceLinksConcern
22
+ include Controller::CollectionLinksConcern
21
23
  helper Itsf::Backend::ApplicationHelper
22
24
  helper MultiClientHelper if Itsf::Backend.features?(:multi_client)
23
25
 
@@ -31,6 +33,10 @@ module Itsf::Backend
31
33
  name.gsub('Controller', '').singularize.constantize
32
34
  end
33
35
 
36
+ def self.resource_count
37
+ resource_class.count
38
+ end
39
+
34
40
  def resource_class
35
41
  self.class.resource_class
36
42
  end
@@ -13,6 +13,7 @@ module Itsf::Backend
13
13
  include Controller::ServiceUrlsConcern
14
14
  include Controller::ServiceActionsConcern
15
15
  include Controller::JsonApiConcern
16
+ include Controller::FeatureFlagsConcern
16
17
  helper Itsf::Backend::ApplicationHelper
17
18
 
18
19
  layout 'itsf/backend/base'
@@ -5,9 +5,9 @@ module Itsf::Backend
5
5
  allowed = user.respond_to?(:allowed_to?) ? user.allowed_to?(permission_identifier) : false
6
6
 
7
7
  if allowed
8
- Rails.logger.debug "User #{user} is allowed to access #{permission_identifier}"
8
+ Rails.logger.debug "User #{user.try_all(*Itsf::Backend.resource_title_methods)} is allowed to access #{permission_identifier}"
9
9
  else
10
- Rails.logger.debug "User #{user} is not allowed to access #{permission_identifier}"
10
+ Rails.logger.debug "User #{user.try_all(*Itsf::Backend.resource_title_methods)} is not allowed to access #{permission_identifier}"
11
11
  end
12
12
  allowed
13
13
  end
@@ -0,0 +1,10 @@
1
+ %ul.nav.nav-tabs
2
+ - collection_links.each do |collection_link|
3
+ - if collection_link[:condition].call(self)
4
+ - if current_page? collection_link[:target].call(self)
5
+ %li.active{ role: :presentation }
6
+ = collection_link[:link_to].call(self)
7
+ - else
8
+ %li{ role: :presentation }
9
+ = collection_link[:link_to].call(self)
10
+ = render 'additional_collection_tabs', collection: collection
@@ -1,5 +1,5 @@
1
1
  - resource_class.attribute_names.delete_if { |name| Itsf::Backend.hidden_attributes_for[:edit].include?(name.to_sym) }.each do |name|
2
- - if form.object.class.columns_hash[name].type == :hstore
2
+ - if form.object.class.columns_hash[name].try(:type) == :hstore
3
3
  = simple_fields_for name do |hstore_form|
4
4
  - if form.object.send(name).respond_to?(:each)
5
5
  - form.object.send(name).each do |key, value|
@@ -0,0 +1,10 @@
1
+ %ul.nav.nav-tabs
2
+ - resource_links.each do |resource_link|
3
+ - if resource_link[:condition].call(self)
4
+ - if current_page? resource_link[:target].call(self)
5
+ %li.active{ role: :presentation }
6
+ = resource_link[:link_to].call(self)
7
+ - else
8
+ %li{ role: :presentation }
9
+ = resource_link[:link_to].call(self)
10
+ = render 'additional_resource_tabs', resource: resource
@@ -0,0 +1,25 @@
1
+ - if features?(:audited)
2
+ .well.well-sm
3
+ - if @resource.version.nil?
4
+ - previous_version = @resource.audits.last.try(:version)
5
+ - next_version = nil
6
+ - else
7
+ - previous_version = @resource.version > 0 ? @resource.version - 1 : nil
8
+ - next_version = @resource.version < @resource.audits.count ? @resource.version + 1 : nil
9
+
10
+
11
+ - if previous_version
12
+ = link_to(url_for(action: 'version', version: previous_version), class: 'btn btn-primary btn-responsive') do
13
+ %span.glyphicon.glyphicon-chevron-left
14
+ %span.btn-text= t('.previous')
15
+
16
+ .pull-right
17
+ - if next_version
18
+ = link_to(url_for(action: 'version', version: next_version), class: 'btn btn-primary btn-responsive') do
19
+ %span.glyphicon.glyphicon-chevron-right
20
+ %span.btn-text= t('.next')
21
+
22
+ - if @resource.version == @resource.audits.count
23
+ = link_to(url_for(action: :show), class: 'btn btn-primary btn-responsive') do
24
+ %span.btn-text= t('.actual')
25
+ %span.glyphicon.glyphicon-chevron-right
@@ -14,11 +14,15 @@
14
14
  %span.btn-text= t('.new', inflections)
15
15
  - rescue ActionController::UrlGenerationError
16
16
 
17
+ #collection-pages-naviation.bottom-margin-1
18
+ = render 'collection_pages_navigation', collection: @collection
19
+
17
20
  .panel.panel-default.panel-with-actions
18
- - if features?(:kaminari)
19
- .panel-heading
20
- .pull-right.form-inline
21
+ .panel-heading
22
+ .pull-right.form-inline
23
+ - if features?(:kaminari)
21
24
  = select_tag(:per_page, options_for_select({ '1': 1, '5': 5, '10': 10, '15': 15, '20': 20, '50': 50, '100': 100, t('.all') => 'all' }, (params[:per_page] || Itsf::Backend::Configuration.default_pagination_size)), 'data-select-pagination-size': true, id: 'pagination-size', class: 'form-control input-xs')
25
+ - if features?(:dragtable)
22
26
  = button_tag(t('.reset_column_order'), class: 'btn btn-default btn-xs', data: { 'reset-column-order': true})
23
27
  - if features?(:ransack)
24
28
  .panel-body
@@ -36,7 +40,9 @@
36
40
  = f.submit
37
41
 
38
42
  .table-responsive
39
- = render_collection(@collection, resource_class, as: :bootstrap_table, table_html_options: { class: 'table table-responsive table-condensed table-striped table-hover dragtable' }) do |table|
43
+ - table_classes = %w(table table-responsive table-condensed table-striped table-hover)
44
+ - table_classes << 'dragtable' if features?(:dragtable)
45
+ = render_collection(@collection, resource_class, as: :bootstrap_table, table_html_options: { class: table_classes.join(" ") }) do |table|
40
46
  = render 'table', table: table
41
47
  = render 'table_actions', table: table
42
48
 
@@ -1,5 +1,8 @@
1
1
  %p#notice= notice
2
2
 
3
+ #resource-pages-naviation.bottom-margin-1
4
+ = render 'resource_pages_navigation', resource: @resource
5
+
3
6
  #page-title.bottom-margin-1
4
7
  .row
5
8
  .col-xs-8
@@ -11,6 +14,8 @@
11
14
  %span.glyphicon.glyphicon-fire
12
15
  %span.btn-text= t('.destroy')
13
16
 
17
+ = render 'show_extra_actions', resource: @resource
18
+
14
19
  .panel.panel-default.panel-with-actions
15
20
  %table.table.table-striped.table-condensed.table-hover
16
21
  = render_resource(@resource, as: :bootstrap_attribute_table) do |table|
@@ -17,5 +17,5 @@
17
17
  - if !Itsf::Backend.features?(:pundit) || policy(resource_klass).index?
18
18
  = link_to(send(engine.engine_name).url_for(controller: "/#{kontroller.controller_path}"), class: 'list-group-item') do
19
19
  = resource_klass.model_name.human(count: :other)
20
- %span.badge.badge-default= resource_klass.count
20
+ %span.badge.badge-default= kontroller.resource_count.respond_to?(:call) ? instance_exec(&kontroller.resource_count) : kontroller.resource_count
21
21
 
@@ -0,0 +1 @@
1
+ ActionDispatch::Routing::Mapper.send(:include, Routing::ItsfBackendResourceConcern)
@@ -81,6 +81,8 @@ de:
81
81
  new:
82
82
  back: "Zurück"
83
83
  title: "%{resource_name} erstellen"
84
+ resource_pages_navigation:
85
+ show: 'Details'
84
86
  show:
85
87
  back: "Zurück"
86
88
  destroy: "Löschen"
@@ -21,6 +21,9 @@ module Itsf
21
21
  { index: [], show: [], edit: [] }
22
22
  end
23
23
  mattr_accessor(:default_pagination_size) { 15 }
24
+ mattr_accessor(:resource_links) { [] }
25
+ mattr_accessor(:collection_links) { [] }
26
+ mattr_accessor(:additional_resource_route_blocks) { [] }
24
27
 
25
28
  def registered_controllers
26
29
  backend_engines.call.collect do |engine|
@@ -6,7 +6,8 @@ module Itsf
6
6
  end
7
7
 
8
8
  def features?(name)
9
- Gem::Specification.find_all_by_name(name.to_s).any? && Itsf::Backend::Configuration.enabled_features.include?(name)
9
+ # Gem::Specification.find_all_by_name(name.to_s).any? && Itsf::Backend::Configuration.enabled_features.include?(name)
10
+ Itsf::Backend::Configuration.enabled_features.include?(name)
10
11
  end
11
12
  end
12
13
  end
@@ -1,5 +1,5 @@
1
1
  module Itsf
2
2
  module Backend
3
- VERSION = '2.2.1'
3
+ VERSION = '3.0.0'
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: itsf_backend
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.1
4
+ version: 3.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Roberto Vasquez Angel
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-10-08 00:00:00.000000000 Z
11
+ date: 2017-01-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -500,15 +500,18 @@ files:
500
500
  - app/assets/stylesheets/itsf_backend.css
501
501
  - app/concerns/enumerable/acts_as_paginatable_resource_concern.rb
502
502
  - app/concerns/enumerable/acts_as_resource_concern.rb
503
+ - app/concerns/routing/itsf_backend_resource_concern.rb
503
504
  - app/concerns/routing/service_concern.rb
504
505
  - app/controllers/concerns/controller/acts_as_list_concern.rb
505
506
  - app/controllers/concerns/controller/acts_as_published_concern.rb
506
507
  - app/controllers/concerns/controller/awesome_nested_set_concern.rb
508
+ - app/controllers/concerns/controller/collection_links_concern.rb
507
509
  - app/controllers/concerns/controller/feature_flags_concern.rb
508
510
  - app/controllers/concerns/controller/pagination_concern.rb
509
511
  - app/controllers/concerns/controller/pundit_authorization_failure_handling_concern.rb
510
512
  - app/controllers/concerns/controller/pundit_namespaced_authorize_concern.rb
511
513
  - app/controllers/concerns/controller/ransack_concern.rb
514
+ - app/controllers/concerns/controller/resource_links_concern.rb
512
515
  - app/controllers/concerns/controller/rest_actions_concern_with_pundit.rb
513
516
  - app/controllers/itsf/backend/application_controller.rb
514
517
  - app/controllers/itsf/backend/dashboard_controller.rb
@@ -547,14 +550,19 @@ files:
547
550
  - app/views/itsf/backend/home/_index_extras.html.haml
548
551
  - app/views/itsf/backend/home/index.html.haml
549
552
  - app/views/itsf/backend/i18n/_navigation.html.haml
553
+ - app/views/itsf/backend/resource/base/_additional_collection_tabs.html.haml
554
+ - app/views/itsf/backend/resource/base/_additional_resource_tabs.html.haml
555
+ - app/views/itsf/backend/resource/base/_collection_pages_navigation.html.haml
550
556
  - app/views/itsf/backend/resource/base/_form.html.haml
551
557
  - app/views/itsf/backend/resource/base/_form_buttons.haml
552
558
  - app/views/itsf/backend/resource/base/_form_errors.html.haml
553
559
  - app/views/itsf/backend/resource/base/_head_extras.html.haml
554
560
  - app/views/itsf/backend/resource/base/_index_extras.html.haml
561
+ - app/views/itsf/backend/resource/base/_resource_pages_navigation.haml
555
562
  - app/views/itsf/backend/resource/base/_scopes.html.haml
556
563
  - app/views/itsf/backend/resource/base/_search.html.haml
557
564
  - app/views/itsf/backend/resource/base/_show.html.haml
565
+ - app/views/itsf/backend/resource/base/_show_extra_actions.html.haml
558
566
  - app/views/itsf/backend/resource/base/_show_extras.html.haml
559
567
  - app/views/itsf/backend/resource/base/_table.html.haml
560
568
  - app/views/itsf/backend/resource/base/_table_actions.html.haml
@@ -580,6 +588,7 @@ files:
580
588
  - app/views/layouts/itsf/backend/_vertical_navigation.haml
581
589
  - app/views/layouts/itsf/backend/base.html.haml
582
590
  - config/initializers/assets.rb
591
+ - config/initializers/extend_action_dispatch_routing_mapper.rb
583
592
  - config/initializers/extend_object.rb
584
593
  - config/initializers/extend_ransack_form_builder.rb
585
594
  - config/initializers/extend_simple_form_form_builder.rb