rows_controller 2.2.1 → 2.2.2

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 21096738d0ca4096f5740974f764bb27f40f8c37f3ed21144e62918baafc8584
4
- data.tar.gz: 602c9204a275821c93c46c4bac941bb06110fe1849d0fbed23a35cbcd5f6dac9
3
+ metadata.gz: 9ddc0bace86fc0866651fa9a9a7db8e2680954dfca498d1e166ced15c1ad97a7
4
+ data.tar.gz: 6c1302388c207f4b558754bbccb0fbfd437623cd807d98008ff6a8f8d51e5bcb
5
5
  SHA512:
6
- metadata.gz: 1527109202ce0a2ec0ff24ef3cd9489a6448fd1b307512bffcb0c98982a12107b4f0357d8f346b40ba78fd0ec66c10e1b62fcd09718341c4a38da1b919c640e6
7
- data.tar.gz: 83f3fafe8f046aacff8bc4b809e9f032f231b27e5db90229371c578fcd7d5c310e53eaad35c851e381ecca0e838fb4f1cb1770f8f5a68d1f3d14269537694372
6
+ metadata.gz: 629d50095b51ab86a72dad57ff842c26c98b08dc58b5237431c5df736d7bc19765adb5cc31eae662b2a15296e9beeb143ec6c94cfe7fb5e6c07e8ed07634ef1e
7
+ data.tar.gz: 65dd1a78bb87ded0a88abe36524d199aff6db89fe00fea93bebf28188614b85f380b89022f248454b2d86b42f26a5d1b609c47e0cd196041b51d48c1c95890cf
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'rows/resources'
2
4
  require 'rows/model'
3
5
  require 'rows/utils'
@@ -56,7 +58,8 @@ class RowsController < ApplicationController
56
58
  def destroy
57
59
  set_resource
58
60
  resource_destroy
59
- flash[:notice] = t('ui.destroyed', model: model_name).html_safe unless request.xhr?
61
+ msg = t('ui.destroyed', model: model_name).html_safe
62
+ flash[:notice] = msg unless request.xhr?
60
63
  respond_to do |format|
61
64
  format.html { redirect_to action: :index }
62
65
  format.js { render template: 'rows/destroy', layout: false }
@@ -67,7 +70,7 @@ class RowsController < ApplicationController
67
70
  private
68
71
  def create_update(which, msg)
69
72
  respond_to do |format|
70
- if self.send(which)
73
+ if send(which)
71
74
  format.html {
72
75
  flash[:notice] = t(msg, scope: :ui, model: model_name,
73
76
  default: "%{model} was successfully #{msg}.").html_safe
@@ -0,0 +1,91 @@
1
+ require 'rows/resources'
2
+ require 'rows/model'
3
+ require 'rows/utils'
4
+
5
+ class RowsController < ApplicationController
6
+ helper_method :set_resource, :set_resources, :resource, :resources
7
+ helper_method :resource_columns, :resource_format
8
+ helper_method :model_class, :model_name
9
+ helper_method :model_symbol, :model_symbol_plural
10
+
11
+ include Rows::Model
12
+ include Rows::Resources
13
+ include Rows::Utils
14
+
15
+ def self.model_class(model_class = nil)
16
+ @_model_class ||= nil
17
+ unless model_class.nil?
18
+ @_model_class = model_class
19
+ @_model_class = model_class.constantize if model_class.is_a?(String)
20
+ end
21
+ @_model_class
22
+ end
23
+
24
+ # GET /:resources[.json]
25
+ def index
26
+ set_resources
27
+ end
28
+
29
+ # GET /:resource/:id[.json]
30
+ def show
31
+ set_resource
32
+ end
33
+
34
+ # GET /:resource/new
35
+ def new
36
+ resource_new
37
+ end
38
+
39
+ # GET /:resource/:id/edit
40
+ def edit
41
+ set_resource
42
+ end
43
+
44
+ # POST /:resources[.json]
45
+ def create
46
+ create_update(:resource_create, 'created')
47
+ end
48
+
49
+ # PATCH/PUT /:resources/:id[.json]
50
+ def update
51
+ set_resource
52
+ create_update(:resource_update, 'updated')
53
+ end
54
+
55
+ # DELETE /:resources/:id[.json]
56
+ def destroy
57
+ set_resource
58
+ resource_destroy
59
+ flash[:notice] = t('ui.destroyed', model: model_name).html_safe unless request.xhr?
60
+ respond_to do |format|
61
+ format.html { redirect_to action: :index }
62
+ format.js { render template: 'rows/destroy', layout: false }
63
+ format.json { head :no_content }
64
+ end
65
+ end
66
+
67
+ private
68
+ def create_update(which, msg)
69
+ respond_to do |format|
70
+ if self.send(which)
71
+ format.html {
72
+ flash[:notice] = t(msg, scope: :ui, model: model_name,
73
+ default: "%{model} was successfully #{msg}.").html_safe
74
+ if params[:commit] == 'OK'
75
+ redirect_to action: :index
76
+ else
77
+ redirect_to action: 'edit', id: resource.id
78
+ end
79
+ }
80
+ format.json { render action: 'show',
81
+ status: msg == 'created' ? :created : :ok,
82
+ location: resource }
83
+ else ## failed
84
+ format.html { render action: msg == 'created' ? :new : :edit }
85
+ format.json { render json: resource.errors,
86
+ status: :unprocessable_entity }
87
+ end
88
+ end
89
+ end
90
+
91
+ end
@@ -1,10 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Extensions
1
4
  class RowsExtController < RowsController
2
5
 
3
6
  def copy
4
7
  set_resource resource.dup
5
8
  resource.id = nil
6
9
  respond_to do |format|
7
- format.html { render :action => :new }
10
+ format.html { render action: :new }
8
11
  end
9
12
  end
10
13
 
@@ -0,0 +1,18 @@
1
+ class RowsExtController < RowsController
2
+
3
+ def copy
4
+ set_resource resource.dup
5
+ resource.id = nil
6
+ respond_to do |format|
7
+ format.html { render :action => :new }
8
+ end
9
+ end
10
+
11
+ def multi_deletion
12
+ items = params[:multi_tick] || []
13
+ items -= ['']
14
+ items.map { |id| model_class.find_by_id(id.to_i).destroy }
15
+ redirect_to action: :index
16
+ end
17
+
18
+ end
data/lib/rows/engine.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Rows
2
4
  class Engine < ::Rails::Engine
3
5
  end
@@ -0,0 +1,4 @@
1
+ module Rows
2
+ class Engine < ::Rails::Engine
3
+ end
4
+ end
data/lib/rows/model.rb CHANGED
@@ -1,13 +1,15 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Rows::Model
2
4
 
3
5
  def model_class
4
- @_model_class ||= self.class.model_class ||
5
- params[:controller].singularize.camelize.constantize
6
+ @_model_class ||= self.class.model_class ||
7
+ params[:controller].singularize.camelize.constantize
6
8
  end
7
9
 
8
10
  if Rails::VERSION::MAJOR > 3
9
11
  def model_name
10
- @_model_name ||= model_class.model_name.name
12
+ @_model_name ||= model_class.model_name.name
11
13
  end
12
14
 
13
15
  def model_symbol
@@ -19,7 +21,7 @@ module Rows::Model
19
21
  end
20
22
 
21
23
  def model_symbol
22
- @_model_symbol ||= model_name.underscore.gsub( %r{/}, '_' )
24
+ @_model_symbol ||= model_name.underscore.gsub(%r{/}, '_')
23
25
  end
24
26
  end
25
27
 
@@ -0,0 +1,32 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Rows::Model
4
+
5
+ def model_class
6
+ @_model_class ||= self.class.model_class ||
7
+ params[:controller].singularize.camelize.constantize
8
+ end
9
+
10
+ if Rails::VERSION::MAJOR > 3
11
+ def model_name
12
+ @_model_name ||= model_class.model_name.name
13
+ end
14
+
15
+ def model_symbol
16
+ @_model_symbol ||= model_class.model_name.singular
17
+ end
18
+ else
19
+ def model_name
20
+ @_model_name ||= model_class.name
21
+ end
22
+
23
+ def model_symbol
24
+ @_model_symbol ||= model_name.underscore.gsub( %r{/}, '_' )
25
+ end
26
+ end
27
+
28
+ def model_symbol_plural
29
+ @_model_symbol_plural ||= model_symbol.pluralize
30
+ end
31
+
32
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Rows::Resources
2
4
 
3
5
  def set_resources(rows = nil)
@@ -52,14 +54,17 @@ module Rows::Resources
52
54
  def resource_columns
53
55
  return model_class.column_headers if model_class.respond_to?(:column_headers)
54
56
  return ['to_s'] unless model_class.respond_to?(:content_columns)
55
- ['id'] + model_class.content_columns.collect{|c| c.name }
57
+
58
+ # ['id'] + model_class.content_columns.collect { |c| c.name }
59
+ ['id'] + model_class.content_columns.collect(&:name)
56
60
  end
57
61
 
58
62
  def resource_whitelist
59
63
  raise "RowsController requires private method 'resource_whitelist' in controller <#{params[:controller]}>"
60
64
  end
61
65
 
62
- # Never trust parameters from the scary internet, only allow the white list through.
66
+ # Never trust parameters from the scary internet, only allow the
67
+ # white list through.
63
68
  def resource_params
64
69
  permits = resource_whitelist
65
70
  if params.respond_to?(:require)
@@ -68,7 +73,7 @@ module Rows::Resources
68
73
  pars = params[model_symbol] || {}
69
74
  pars.keys.each { |x|
70
75
  x = x.to_sym
71
- unless permits.include?(x) || permits.include?({x => []})
76
+ unless permits.include?(x) || permits.include?({ x => [] })
72
77
  pars.delete(x)
73
78
  p "** WARNING: model <#{model_name}> dropping params <#{x}>"
74
79
  end
@@ -0,0 +1,80 @@
1
+ module Rows::Resources
2
+
3
+ def set_resources(rows = nil)
4
+ rows ||= model_class.all
5
+ instance_variable_set("@#{model_symbol_plural}", rows)
6
+ @rows = rows
7
+ end
8
+
9
+ def set_resource(row = nil)
10
+ row ||= model_class.find_by_id(params[:id].to_i)
11
+ instance_variable_set("@#{model_symbol}", row)
12
+ @row = row
13
+ end
14
+
15
+ def resources
16
+ @rows ||= set_resources
17
+ end
18
+
19
+ def resource
20
+ @row ||= set_resource
21
+ end
22
+
23
+ private
24
+ # low level resource methods
25
+ # can be monkey patched
26
+ def resource_new
27
+ if params[model_symbol]
28
+ set_resource model_class.new(resource_params)
29
+ else
30
+ set_resource model_class.new
31
+ end
32
+ end
33
+
34
+ def resource_create
35
+ resource_new
36
+ resource.save
37
+ end
38
+
39
+ def resource_update
40
+ if Rails::VERSION::MAJOR >= 4
41
+ # return true unless params[model_symbol]
42
+ resource.update(resource_params)
43
+ else
44
+ resource.update_attributes(resource_params)
45
+ end
46
+ end
47
+
48
+ def resource_destroy
49
+ resource.destroy
50
+ end
51
+
52
+ def resource_columns
53
+ return model_class.column_headers if model_class.respond_to?(:column_headers)
54
+ return ['to_s'] unless model_class.respond_to?(:content_columns)
55
+ ['id'] + model_class.content_columns.collect{|c| c.name }
56
+ end
57
+
58
+ def resource_whitelist
59
+ raise "RowsController requires private method 'resource_whitelist' in controller <#{params[:controller]}>"
60
+ end
61
+
62
+ # Never trust parameters from the scary internet, only allow the white list through.
63
+ def resource_params
64
+ permits = resource_whitelist
65
+ if params.respond_to?(:require)
66
+ params.require(model_symbol).permit(permits)
67
+ else
68
+ pars = params[model_symbol] || {}
69
+ pars.keys.each { |x|
70
+ x = x.to_sym
71
+ unless permits.include?(x) || permits.include?({x => []})
72
+ pars.delete(x)
73
+ p "** WARNING: model <#{model_name}> dropping params <#{x}>"
74
+ end
75
+ }
76
+ pars
77
+ end
78
+ end
79
+
80
+ end
data/lib/rows/utils.rb CHANGED
@@ -1,20 +1,22 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Rows::Utils
2
4
 
3
5
  # formatting
4
6
  def resource_format(x)
5
7
  return '--'.html_safe if x.nil?
6
8
  bool = x.class == Time || x.class == Date || x.class == DateTime ||
7
- x.class == ActiveSupport::TimeWithZone
9
+ x.class == ActiveSupport::TimeWithZone
8
10
  return x.strftime('%d.%m.%Y').html_safe if bool
9
11
  # return I18n.l(x) if bool
10
12
  # return x.to_s.html_safe if x.class == Fixnum
11
- return x.to_s.html_safe if x.kind_of?(Integer)
13
+ return x.to_s.html_safe if x.is_a?(Integer)
12
14
  return 'X'.html_safe if x.class == TrueClass
13
15
  return '&ensp;'.html_safe if x.class == FalseClass
14
16
  return x.call if x.class == Proc
15
17
  return '---'.html_safe if x.empty?
16
- str = x.to_s
17
- return str.gsub(/\r*\n/, '<br/>')
18
+
19
+ x.to_s.gsub(/\r*\n/, '<br/>')
18
20
  end
19
21
 
20
22
  end
@@ -0,0 +1,20 @@
1
+ module Rows::Utils
2
+
3
+ # formatting
4
+ def resource_format(x)
5
+ return '--'.html_safe if x.nil?
6
+ bool = x.class == Time || x.class == Date || x.class == DateTime ||
7
+ x.class == ActiveSupport::TimeWithZone
8
+ return x.strftime('%d.%m.%Y').html_safe if bool
9
+ # return I18n.l(x) if bool
10
+ # return x.to_s.html_safe if x.class == Fixnum
11
+ return x.to_s.html_safe if x.kind_of?(Integer)
12
+ return 'X'.html_safe if x.class == TrueClass
13
+ return '&ensp;'.html_safe if x.class == FalseClass
14
+ return x.call if x.class == Proc
15
+ return '---'.html_safe if x.empty?
16
+ str = x.to_s
17
+ return str.gsub(/\r*\n/, '<br/>')
18
+ end
19
+
20
+ end
data/lib/rows/version.rb CHANGED
@@ -1,4 +1,7 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Rows
2
- VERSION = '2.2.1' # 2019-02-18
4
+ VERSION = '2.2.2' # 2019-05-06
5
+ # VERSION = '2.2.1' # 2019-02-18
3
6
  # VERSION = '2.2.0'
4
7
  end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Rows
4
+ # VERSION = '2.2.2' # 2019-05-06
5
+ VERSION = '2.2.1' # 2019-02-18
6
+ # VERSION = '2.2.0'
7
+ end
@@ -1,8 +1,10 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'rows/engine'
2
4
 
3
5
  module Rows
4
6
  end
5
7
 
6
- I18n.load_path << File.expand_path('../rows/locales/en.yml', __FILE__)
7
- I18n.load_path << File.expand_path('../rows/locales/de.yml', __FILE__)
8
+ I18n.load_path << File.expand_path('rows/locales/en.yml', __dir__)
9
+ I18n.load_path << File.expand_path('rows/locales/de.yml', __dir__)
8
10
  I18n.reload!
@@ -0,0 +1,8 @@
1
+ require 'rows/engine'
2
+
3
+ module Rows
4
+ end
5
+
6
+ I18n.load_path << File.expand_path('../rows/locales/en.yml', __FILE__)
7
+ I18n.load_path << File.expand_path('../rows/locales/de.yml', __FILE__)
8
+ I18n.reload!
metadata CHANGED
@@ -1,57 +1,57 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rows_controller
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.1
4
+ version: 2.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dittmar Krall
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-02-18 00:00:00.000000000 Z
11
+ date: 2019-03-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: bundler
14
+ name: appraisal
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '1'
19
+ version: '2'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '1'
26
+ version: '2'
27
27
  - !ruby/object:Gem::Dependency
28
- name: rake
28
+ name: bundler
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - "~>"
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: '12'
33
+ version: '0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - "~>"
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
- version: '12'
40
+ version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
- name: appraisal
42
+ name: rake
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '2'
47
+ version: '12'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '2'
54
+ version: '12'
55
55
  description: YourController < RowsController ( < ApplicationController).
56
56
  email:
57
57
  - dittmar.krall@matique.de
@@ -62,7 +62,9 @@ files:
62
62
  - MIT-LICENSE
63
63
  - README.md
64
64
  - app/controllers/rows_controller.rb
65
+ - app/controllers/rows_controller.rb.bak
65
66
  - app/controllers/rows_ext_controller.rb
67
+ - app/controllers/rows_ext_controller.rb.bak
66
68
  - app/views/rows/_form.slim
67
69
  - app/views/rows/_list.slim
68
70
  - app/views/rows/_list_footer.slim
@@ -79,13 +81,19 @@ files:
79
81
  - app/views/shared/_error_explanation.slim
80
82
  - app/views/shared/_show_flash.slim
81
83
  - lib/rows/engine.rb
84
+ - lib/rows/engine.rb.bak
82
85
  - lib/rows/locales/de.yml
83
86
  - lib/rows/locales/en.yml
84
87
  - lib/rows/model.rb
88
+ - lib/rows/model.rb.bak
85
89
  - lib/rows/resources.rb
90
+ - lib/rows/resources.rb.bak
86
91
  - lib/rows/utils.rb
92
+ - lib/rows/utils.rb.bak
87
93
  - lib/rows/version.rb
94
+ - lib/rows/version.rb.bak
88
95
  - lib/rows_controller.rb
96
+ - lib/rows_controller.rb.bak
89
97
  homepage: http://matique.de
90
98
  licenses:
91
99
  - MIT