coprl 3.0.0.beta.6 → 3.0.0.beta.10

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 (30) hide show
  1. checksums.yaml +4 -4
  2. data/.circleci/config.yml +2 -1
  3. data/.ruby-version +1 -1
  4. data/CHANGELOG.md +35 -0
  5. data/Gemfile.lock +9 -13
  6. data/coprl.gemspec +0 -1
  7. data/lib/coprl/presenters/api/app.rb +7 -2
  8. data/lib/coprl/presenters/dsl/components/base.rb +0 -1
  9. data/lib/coprl/presenters/dsl/definition.rb +2 -2
  10. data/lib/coprl/presenters/dsl/user_interface.rb +2 -2
  11. data/lib/coprl/presenters/helpers/rails/routes.rb +14 -0
  12. data/lib/coprl/presenters/helpers/rails.rb +8 -6
  13. data/lib/coprl/presenters/rails/concerns/coprl_partial.rb +51 -0
  14. data/lib/coprl/presenters/rails/engine.rb +5 -0
  15. data/lib/coprl/presenters/rails/railtie.rb +6 -14
  16. data/lib/coprl/presenters/rails/reloader.rb +15 -0
  17. data/lib/coprl/presenters/version.rb +1 -1
  18. data/lib/coprl/presenters/web_client/plugin_views_path.rb +5 -5
  19. data/lib/generators/pom/controller/controller_generator.rb +15 -0
  20. data/lib/generators/pom/controller/templates/view.html.pom +2 -0
  21. data/lib/generators/pom/scaffold/scaffold_generator.rb +27 -0
  22. data/lib/generators/pom/scaffold/templates/_form.html.pom +10 -0
  23. data/lib/generators/pom/scaffold/templates/edit.html.pom +19 -0
  24. data/lib/generators/pom/scaffold/templates/index.html.pom +33 -0
  25. data/lib/generators/pom/scaffold/templates/new.html.pom +17 -0
  26. data/lib/generators/pom/scaffold/templates/show.html.pom +21 -0
  27. data/rails-engine/app/controllers/coprl_controller.rb +0 -17
  28. data/rails-engine/config/initializers/presenters.rb +4 -2
  29. data/rails-engine/config/initializers/routes.rb +5 -0
  30. metadata +15 -17
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7d5886d0ba61fa0e7a694b0463ef695007c3c64e3c601344b96e9d6cdcd74e14
4
- data.tar.gz: c6acd24734fb08dfa86e416cefecf8936e816ee390fe2eb150be085c6e0b7552
3
+ metadata.gz: 2e31bf11c84ed9cd6321131d9053436c610e5e193124c12503d8fead966b7347
4
+ data.tar.gz: 9e3f161bf2de8462f6a7234923f9ddb17e38ab31098ead2ea6bdbb59b3102796
5
5
  SHA512:
6
- metadata.gz: e5b77286cfd3b3ee1df288e8a9394dbc16d3bae8ccb148dec73b90af4021c653b4266ca5f8cdc404268d7d6e118b5dd1f9a13fe34b1db4bad8e3aa2b7ba9159a
7
- data.tar.gz: 0b8b5ce497af6367a3c48b1f82dae262441ef125e9908cd29c37d08e8f371cfe2e3c187b851fdc497cc7f7573d84a13d480569d0967d1e26a904157a1556516c
6
+ metadata.gz: 0deb84df0f2d9e38dd7e16ae62203c887154c2b6d86c0ee862de96b29aa8ab9018b8893e2e121152395d8bfeb1ae3239bc2b49832fde8008e72eef88e066763e
7
+ data.tar.gz: ff24bd5e388206523e917bb678276a780f0d17cbba4afb229fe7db6a345f31efb3bffb3d0593770d1f8187202737c789e7ac44d0306f42de8c926e691b15d8c6
data/.circleci/config.yml CHANGED
@@ -7,7 +7,7 @@ jobs:
7
7
  build:
8
8
  docker:
9
9
  # specify the version you desire here
10
- - image: circleci/ruby:2.7.2-node-browsers
10
+ - image: circleci/ruby:2.7.4-node-browsers
11
11
 
12
12
  # Specify service dependencies here if necessary
13
13
  # CircleCI maintains a library of pre-built images
@@ -24,6 +24,7 @@ jobs:
24
24
  - v1-gem-cache-{{ arch }}-{{ .Branch }}-{{ checksum "Gemfile.lock" }}
25
25
  - v1-gem-cache-{{ arch }}-{{ .Branch }}-
26
26
  - v1-gem-cache-{{ arch }}-
27
+ - run: gem install bundler:2.2.20
27
28
  - run: bundle install
28
29
  - run: bundle clean --force
29
30
  - save_cache:
data/.ruby-version CHANGED
@@ -1,2 +1,2 @@
1
- 2.7.2
1
+ 2.7.4
2
2
 
data/CHANGELOG.md CHANGED
@@ -1,3 +1,38 @@
1
+ # [3.0.0-beta.10](https://github.com/rx/presenters/compare/v3.0.0-beta.9...v3.0.0-beta.10) (2021-09-21)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * added POM scaffolding generators ([1323b32](https://github.com/rx/presenters/commit/1323b322f83fd9e9519740d9aa7ace4ef8d63b61))
7
+
8
+ # [3.0.0-beta.9](https://github.com/rx/presenters/compare/v3.0.0-beta.8...v3.0.0-beta.9) (2021-09-21)
9
+
10
+
11
+ ### Bug Fixes
12
+
13
+ * added support for api base base_url ([8f69979](https://github.com/rx/presenters/commit/8f699793de899a450df5cfb8b95015a832200178))
14
+ * fixed bug in context prep for api client ([d0558cf](https://github.com/rx/presenters/commit/d0558cf3966a9bdc91bd9d106dcb0a7ab6f56c34))
15
+
16
+ # [3.0.0-beta.8](https://github.com/rx/presenters/compare/v3.0.0-beta.7...v3.0.0-beta.8) (2021-09-17)
17
+
18
+
19
+ ### Bug Fixes
20
+
21
+ * added check for engine coprl_presenters_rails_engine_url ([d2ee7b5](https://github.com/rx/presenters/commit/d2ee7b5900a256c30e6715d1246639dec682ff08))
22
+
23
+ # [3.0.0-beta.7](https://github.com/rx/presenters/compare/v3.0.0-beta.6...v3.0.0-beta.7) (2021-07-09)
24
+
25
+
26
+ ### Bug Fixes
27
+
28
+ * Rails routes automatically made available as helpers ([#322](https://github.com/rx/presenters/issues/322)) ([abb0031](https://github.com/rx/presenters/commit/abb00311940fda8741459f8aafe29cd7bf074b88))
29
+ * view paths issue when using partials with Rails Engine ([#321](https://github.com/rx/presenters/issues/321)) ([2a917e7](https://github.com/rx/presenters/commit/2a917e7076895037e5a069e77525ef53d2ca45f1))
30
+
31
+
32
+ ### Features
33
+
34
+ * switch to use Rails built-in watchers and reloader ([#320](https://github.com/rx/presenters/issues/320)) ([53e0ee4](https://github.com/rx/presenters/commit/53e0ee49caa663ce93ff731c280bcd754da73fc1))
35
+
1
36
  # [3.0.0-beta.6](https://github.com/rx/presenters/compare/v3.0.0-beta.5...v3.0.0-beta.6) (2021-06-23)
2
37
 
3
38
 
data/Gemfile.lock CHANGED
@@ -80,11 +80,10 @@ GIT
80
80
  PATH
81
81
  remote: .
82
82
  specs:
83
- coprl (1.0.0)
83
+ coprl (3.0.0.beta.10)
84
84
  dry-configurable (> 0.1, <= 7.0)
85
85
  dry-container (~> 0.6)
86
86
  dry-inflector (~> 0.1)
87
- filewatcher (~> 1.1.1)
88
87
  ice_nine (~> 0.11)
89
88
  redcarpet (~> 3.4)
90
89
  sinatra (>= 1.4, < 3.0)
@@ -102,17 +101,15 @@ GEM
102
101
  diff-lcs (1.4.4)
103
102
  docile (1.3.1)
104
103
  dotenv (2.7.6)
105
- dry-configurable (0.12.1)
104
+ dry-configurable (0.13.0)
106
105
  concurrent-ruby (~> 1.0)
107
- dry-core (~> 0.5, >= 0.5.0)
108
- dry-container (0.8.0)
106
+ dry-core (~> 0.6)
107
+ dry-container (0.9.0)
109
108
  concurrent-ruby (~> 1.0)
110
- dry-configurable (~> 0.1, >= 0.1.3)
111
- dry-core (0.6.0)
109
+ dry-configurable (~> 0.13, >= 0.13.0)
110
+ dry-core (0.7.1)
112
111
  concurrent-ruby (~> 1.0)
113
- dry-inflector (0.2.0)
114
- filewatcher (1.1.1)
115
- optimist (~> 3.0)
112
+ dry-inflector (0.2.1)
116
113
  ice_nine (0.11.2)
117
114
  json (2.3.1)
118
115
  method_source (0.9.0)
@@ -125,7 +122,6 @@ GEM
125
122
  racc (~> 1.4)
126
123
  nokogiri (1.11.7-x86_64-darwin)
127
124
  racc (~> 1.4)
128
- optimist (3.0.1)
129
125
  pry (0.11.3)
130
126
  coderay (~> 1.1.0)
131
127
  method_source (~> 0.9.0)
@@ -163,7 +159,7 @@ GEM
163
159
  rspec-support (3.10.2)
164
160
  rspec_junit_formatter (0.4.1)
165
161
  rspec-core (>= 2, < 4, != 2.12.0)
166
- ruby2_keywords (0.0.4)
162
+ ruby2_keywords (0.0.5)
167
163
  rubyzip (2.3.0)
168
164
  selenium-webdriver (3.142.7)
169
165
  childprocess (>= 0.5, < 4.0)
@@ -239,7 +235,7 @@ DEPENDENCIES
239
235
  webdrivers (~> 4.1)
240
236
 
241
237
  RUBY VERSION
242
- ruby 2.7.2p137
238
+ ruby 2.7.4p191
243
239
 
244
240
  BUNDLED WITH
245
241
  2.2.20
data/coprl.gemspec CHANGED
@@ -28,7 +28,6 @@ Gem::Specification.new do |spec|
28
28
  spec.add_runtime_dependency 'tzinfo', '>=1.1', '< 3.0'
29
29
  spec.add_runtime_dependency 'tzinfo-data', '~>1.2018'
30
30
  spec.add_runtime_dependency 'redcarpet', '~>3.4'
31
- spec.add_runtime_dependency 'filewatcher', '~> 1.1.1'
32
31
  spec.add_runtime_dependency 'zeitwerk', '~> 2.1'
33
32
 
34
33
  spec.add_development_dependency 'thor', '~> 1.1.0'
@@ -66,9 +66,9 @@ module Coprl
66
66
 
67
67
  def prepare_context(base_params = params)
68
68
  prepare_context = Presenters::Settings.config.presenters.web_client.prepare_context.dup
69
- prepare_context.push(method(:scrub_context))
69
+ prepare_context.push(method(:scrub_context)).push(method(:base_url_context))
70
70
  context = base_params.dup
71
- prepare_context.reduce(context) do |params, context_proc|
71
+ context = prepare_context.reduce(context) do |params, context_proc|
72
72
  context_proc.call(params, session, env)
73
73
  end
74
74
  context
@@ -80,6 +80,11 @@ module Coprl
80
80
  end
81
81
  params
82
82
  end
83
+
84
+ def base_url_context(params, _session, env)
85
+ params[:base_url] = "#{request.base_url}#{env['SCRIPT_NAME']}"
86
+ params
87
+ end
83
88
  end
84
89
  end
85
90
  end
@@ -75,7 +75,6 @@ module Coprl
75
75
 
76
76
  alias params context
77
77
 
78
-
79
78
  def yield_block
80
79
  return @_yield_block_ if @_yield_block_
81
80
  @parent.send(:yield_block)
@@ -17,8 +17,8 @@ module Coprl
17
17
  self
18
18
  end
19
19
 
20
- def expand(router: , context:{}, &block)
21
- presenter = UserInterface.new(router: router, context: context, name: @name, namespace: @namespace, &@block)
20
+ def expand(router: , context:{}, plugins: [], &block)
21
+ presenter = UserInterface.new(router: router, context: context, plugins: plugins, name: @name, namespace: @namespace, &@block)
22
22
  yield(presenter) if block
23
23
  presenter.expand_instance
24
24
  end
@@ -25,7 +25,7 @@ module Coprl
25
25
  private :context, :router, :namespace
26
26
  alias params context
27
27
 
28
- def initialize(context:, parent: nil, router: nil, name: nil, namespace: [], &block)
28
+ def initialize(context:, parent: nil, router: nil, name: nil, plugins: [], namespace: [], &block)
29
29
  @parent = parent
30
30
  @router = router || @parent&.send(:router)
31
31
  @context = context || {}
@@ -36,7 +36,7 @@ module Coprl
36
36
  @footer = nil
37
37
  @name = name
38
38
  @namespace = namespace
39
- @plugins = []
39
+ @plugins = plugins || []
40
40
  @csrf_meta_tags = authenticity_token_meta_tags(@context.fetch(:session, nil))
41
41
  add_global_helpers
42
42
  initialize_plugins
@@ -0,0 +1,14 @@
1
+ module Coprl
2
+ module Presenters
3
+ module Helpers
4
+ module Rails
5
+ module Routes
6
+ include ::Rails.application.routes.url_helpers
7
+ def default_url_options
8
+ ::Rails.application.config.action_controller.default_url_options || { :host => context[:base_url] ? context[:base_url] : context[:request].host_with_port }
9
+ end
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
@@ -6,18 +6,20 @@ if defined?(Rails)
6
6
  include ActionView::Helpers::AssetUrlHelper
7
7
  include Coprl::Presenters::Helpers::Rails::Currency
8
8
  include Coprl::Presenters::Helpers::Rails::ModelTable
9
+ include Coprl::Presenters::Helpers::Rails::Routes
9
10
  include Namespace
10
11
 
11
- def default_url_options
12
- {}
13
- end
14
-
15
12
  def presenters_path(presenter, host: false, **params)
16
13
  presenter = _expand_namespace_(presenter, namespace)
17
14
  presenter = presenter.gsub(':', '/')
18
15
 
19
- path = host ? coprl_presenters_web_client_app_url(params, host: router.base_url) :
20
- coprl_presenters_web_client_app_path(params)
16
+ path = if defined?(coprl_presenters_rails_engine_url)
17
+ host ? coprl_presenters_rails_engine_url(params, host: router.base_url) :
18
+ coprl_presenters_rails_engine_path(params)
19
+ else
20
+ host ? coprl_presenters_web_client_app_url(params, host: router.base_url) :
21
+ coprl_presenters_web_client_app_path(params)
22
+ end
21
23
 
22
24
  if path.include?('?')
23
25
  path = path.sub('?', "#{presenter}?")
@@ -0,0 +1,51 @@
1
+ module Coprl
2
+ module Presenters
3
+ module Rails
4
+ module Concerns
5
+ module CoprlPartial
6
+ extend ActiveSupport::Concern
7
+
8
+ included do
9
+ before_action :set_view_path
10
+ end
11
+
12
+ module ClassMethods
13
+ @plugins = []
14
+ def presenter_plugin(*plugins)
15
+ @plugins += Array(plugins)
16
+ end
17
+
18
+ def plugins
19
+ @plugins
20
+ end
21
+ end
22
+
23
+ def set_view_path
24
+ paths = Coprl::Presenters::WebClient::PluginViewsPath.new(pom: nil, plugins: self.class.plugins).render
25
+ paths.each do |path|
26
+ prepend_view_path path
27
+ end
28
+ end
29
+
30
+ def prepare_context(base_params = params)
31
+ prepare_context = Coprl::Presenters::Settings.config.presenters.web_client.prepare_context.dup
32
+ prepare_context.push(method(:scrub_context))
33
+ context = base_params.dup.to_unsafe_hash
34
+ prepare_context.reduce(context) do |params, context_proc|
35
+ context = context_proc.call(params, session, request.env)
36
+ end
37
+ context
38
+ end
39
+
40
+ def scrub_context(params, _session, _env)
41
+ %i(grid_nesting input_tag).each do |key|
42
+ params.delete(key) {params.delete(key.to_s)}
43
+ end
44
+ params
45
+ end
46
+
47
+ end
48
+ end
49
+ end
50
+ end
51
+ end
@@ -12,6 +12,11 @@ module Coprl
12
12
  # TODO: should rename these since they are common names that are likely going to collide
13
13
  app.middleware.use ::ActionDispatch::Static, File.join(root, '..', 'public')
14
14
  end
15
+
16
+ ActiveSupport.on_load(:action_controller) do
17
+ include Concerns::CoprlPartial
18
+ end
19
+
15
20
  end
16
21
  end
17
22
  end
@@ -1,5 +1,3 @@
1
- require 'filewatcher'
2
-
3
1
  module Coprl
4
2
  module Presenters
5
3
  module Rails
@@ -15,20 +13,14 @@ module Coprl
15
13
 
16
14
  WATCH = -> {
17
15
  return unless ::Rails.env.development?
16
+
18
17
  path = ::Rails.root.join('app', '**', '*.pom')
19
- puts "Watching #{path} for changes..."
20
- filewatcher = Filewatcher.new(path)
21
- Thread.new(filewatcher) do |fw|
22
- fw.watch do |f|
23
- puts "Detected updated POM file: #{f}"
24
- begin
25
- BOOT.call
26
- rescue Exception => exc
27
- puts exc.backtrace
28
- puts exc.message
29
- end
30
- end
18
+ file_watcher = ActiveSupport::FileUpdateChecker.new(Dir[path]) do
19
+ BOOT.call
31
20
  end
21
+
22
+ ::Rails.application.reloaders << Reloader.new(file_watcher)
23
+
32
24
  } unless defined?(WATCH)
33
25
 
34
26
  config.after_initialize do
@@ -0,0 +1,15 @@
1
+ module Coprl
2
+ module Presenters
3
+ module Rails
4
+ class Reloader
5
+ def initialize(file_watcher)
6
+ @file_watcher = file_watcher
7
+ end
8
+
9
+ def updated?
10
+ @file_watcher.execute_if_updated
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
@@ -1,7 +1,7 @@
1
1
  module Coprl
2
2
  module Presenters
3
3
  module Version
4
- VERSION = '3.0.0.beta.6'
4
+ VERSION = '3.0.0.beta.10'
5
5
  end
6
6
  end
7
7
  end
@@ -8,17 +8,17 @@ module Coprl
8
8
  extend Pluggable
9
9
  include_plugins(:WebClientComponents)
10
10
 
11
- def initialize(pom:)
11
+ def initialize(pom: nil, plugins: nil)
12
12
  @pom = pom
13
+ @plugins = plugins || []
13
14
  initialize_plugins
14
15
  end
15
16
 
16
17
  def render
17
18
  results = []
18
- ((@plugins||[]) + Coprl::Presenters::Settings.config.presenters.plugins).each do |plugin|
19
+ (@plugins + Coprl::Presenters::Settings.config.presenters.plugins).each do |plugin|
19
20
  view_dir_method = :"view_dir_#{plugin}"
20
- results << send(view_dir_method,
21
- @pom) if respond_to?(view_dir_method)
21
+ results << send(view_dir_method, @pom) if respond_to?(view_dir_method)
22
22
  end
23
23
  results
24
24
  end
@@ -26,7 +26,7 @@ module Coprl
26
26
  private
27
27
 
28
28
  def initialize_plugins
29
- @plugins = @pom.send(:plugins)
29
+ @plugins += @pom.send(:plugins) if @pom
30
30
  self.class.include_plugins(:WebClientComponents, plugins: @plugins)
31
31
  end
32
32
  end
@@ -0,0 +1,15 @@
1
+ require 'rails/generators/erb/controller/controller_generator'
2
+
3
+ module Pom
4
+ module Generators
5
+ class ControllerGenerator < Erb::Generators::ControllerGenerator
6
+ source_root File.expand_path(File.join('..', 'templates'), __FILE__)
7
+
8
+ protected
9
+ def handler
10
+ :pom
11
+ end
12
+
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,2 @@
1
+ h1 <%= class_name %>#<%= @action %>
2
+ p Find me in <%= @path %>
@@ -0,0 +1,27 @@
1
+ require 'rails/generators/erb/scaffold/scaffold_generator'
2
+
3
+ module Pom
4
+ module Generators
5
+ class ScaffoldGenerator < Erb::Generators::ScaffoldGenerator
6
+ source_root File.expand_path(File.join('..', 'templates'), __FILE__)
7
+
8
+ def copy_view_files
9
+ available_views.each do |view|
10
+ filename = filename_with_extensions view
11
+ template "#{view}.html.pom", File.join('app', 'views', controller_file_path, filename)
12
+ end
13
+ end
14
+
15
+ hook_for :form_builder, as: :scaffold
16
+
17
+ protected
18
+ def available_views
19
+ ['index', 'edit', 'show', 'new', '_form']
20
+ end
21
+
22
+ def handler
23
+ :pom
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,10 @@
1
+ Coprl::Presenters.define("_form", namespace: :<%= plural_table_name %>) do
2
+ helpers <%= controller_class_name %>Helper
3
+
4
+ <% attributes.each do |attribute| -%>
5
+ text_field name: :<%= attribute.name %> do
6
+ label :<%= attribute.name %>
7
+ value <%= singular_table_name %>.<%= attribute.name %> if params[:<%= singular_table_name %>_id]
8
+ end
9
+ <% end -%>
10
+ end
@@ -0,0 +1,19 @@
1
+ Coprl::Presenters.define(:edit, namespace: :<%= plural_table_name %>) do
2
+ helpers <%= controller_class_name %>Helper
3
+ grid do
4
+ column 1
5
+ column 5 do
6
+ heading 'Editing <%= human_name %>'
7
+ content do
8
+ attach '_form'
9
+ button 'Update' do
10
+ event :click do
11
+ updates <%= url_helper_prefix %>_path(<%= singular_table_name %>)
12
+ end
13
+ end
14
+ end
15
+ link 'Show', presenter_path(:show, <%= singular_table_name %>_id: <%= singular_table_name %>.id)
16
+ link 'Back', presenter_path(:index)
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,33 @@
1
+ Coprl::Presenters.define(:index, namespace: :<%= plural_table_name %>) do
2
+ helpers <%= controller_class_name %>Helper
3
+ snackbar params[:notice] if params[:notice]
4
+ grid do
5
+ column 1
6
+ column 5 do
7
+ heading '<%= human_name %>'
8
+ list do
9
+ <%= plural_table_name %>.each do |<%= singular_table_name %>|
10
+ line <%= attributes.first ? "#{singular_table_name}.#{attributes.first.name}" : "\"#{human_name}\"" %> do
11
+ actions do
12
+ icon :edit do
13
+ event :click do
14
+ loads :edit, <%= singular_table_name %>_id: <%= singular_table_name %>.id
15
+ end
16
+ end
17
+ icon :delete do
18
+ event :click do
19
+ dialog "are_you_sure#{<%= singular_table_name %>.id}"
20
+ end
21
+ end
22
+ end
23
+ event :click do
24
+ loads :show, <%= singular_table_name %>_id: <%= singular_table_name %>.id
25
+ end
26
+ end
27
+ end
28
+ end
29
+ link 'New <%= human_name %>', presenter_path(:new)
30
+ end
31
+ end
32
+ confirm_delete_dialog
33
+ end
@@ -0,0 +1,17 @@
1
+ Coprl::Presenters.define(:new, namespace: :<%= plural_table_name %>) do
2
+ grid do
3
+ column 1
4
+ column 5 do
5
+ heading 'New <%= human_name %>'
6
+ content do
7
+ attach '_form'
8
+ button 'Create' do
9
+ event :click do
10
+ creates <%= index_helper %>_path
11
+ end
12
+ end
13
+ end
14
+ link 'Back', presenter_path(:index)
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,21 @@
1
+ Coprl::Presenters.define(:show, namespace: :<%= plural_table_name %>) do
2
+ helpers <%= controller_class_name %>Helper
3
+
4
+ snackbar params[:notice] if params[:notice]
5
+ grid do
6
+ column 1
7
+ column 5 do
8
+ card do
9
+ <% attributes.each_with_index do |attribute,index| -%>
10
+ <% if index == 0 -%>
11
+ heading <%= singular_table_name %>.<%= attribute.name %>
12
+ <% else -%>
13
+ body <%= singular_table_name %>.<%= attribute.name %>
14
+ <% end -%>
15
+ <% end -%>
16
+ end
17
+ link 'Edit', presenter_path(:edit,<%= singular_table_name %>_id: params[:<%= singular_table_name %>_id])
18
+ link 'Back', presenter_path(:index)
19
+ end
20
+ end
21
+ end
@@ -23,21 +23,4 @@ class CoprlController < ApplicationController
23
23
  prepend_view_path path
24
24
  end
25
25
  end
26
-
27
- def prepare_context(base_params = params)
28
- prepare_context = Coprl::Presenters::Settings.config.presenters.web_client.prepare_context.dup
29
- prepare_context.push(method(:scrub_context))
30
- context = base_params.dup.to_unsafe_hash
31
- prepare_context.reduce(context) do |params, context_proc|
32
- context = context_proc.call(params, session, request.env)
33
- end
34
- context
35
- end
36
-
37
- def scrub_context(params, _session, _env)
38
- %i(grid_nesting input_tag).each do |key|
39
- params.delete(key) {params.delete(key.to_s)}
40
- end
41
- params
42
- end
43
26
  end
@@ -28,9 +28,11 @@ class CoprlTemplateHandler
28
28
  # otherwise we need to get the presenter name built from params
29
29
  presenter_name = local_assigns[:presenter] ? presenter : namespaced_presenter(params)
30
30
  presenter = Coprl::Presenters::App[presenter_name].call
31
- context = params.dup.to_unsafe_hash
31
+ context = self.controller.prepare_context(params)
32
32
  router = Coprl::Presenters::WebClient::Router.new(base_url: request.base_url)
33
- @pom = presenter.expand(router: router, context: context)
33
+ plugins = self.controller.class.plugins
34
+
35
+ @pom = presenter.expand(router: router, context: context, plugins: plugins)
34
36
  end
35
37
  #{source}
36
38
  end
@@ -0,0 +1,5 @@
1
+ Rails.application.config.to_prepare do
2
+ Coprl::Presenters::Settings.configure do |config|
3
+ config.presenters.helpers << Coprl::Presenters::Helpers::Rails
4
+ end
5
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: coprl
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.0.beta.6
4
+ version: 3.0.0.beta.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Russell Edens
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-06-23 00:00:00.000000000 Z
11
+ date: 2021-09-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ice_nine
@@ -140,20 +140,6 @@ dependencies:
140
140
  - - "~>"
141
141
  - !ruby/object:Gem::Version
142
142
  version: '3.4'
143
- - !ruby/object:Gem::Dependency
144
- name: filewatcher
145
- requirement: !ruby/object:Gem::Requirement
146
- requirements:
147
- - - "~>"
148
- - !ruby/object:Gem::Version
149
- version: 1.1.1
150
- type: :runtime
151
- prerelease: false
152
- version_requirements: !ruby/object:Gem::Requirement
153
- requirements:
154
- - - "~>"
155
- - !ruby/object:Gem::Version
156
- version: 1.1.1
157
143
  - !ruby/object:Gem::Dependency
158
144
  name: zeitwerk
159
145
  requirement: !ruby/object:Gem::Requirement
@@ -597,14 +583,17 @@ files:
597
583
  - lib/coprl/presenters/helpers/rails.rb
598
584
  - lib/coprl/presenters/helpers/rails/currency.rb
599
585
  - lib/coprl/presenters/helpers/rails/model_table.rb
586
+ - lib/coprl/presenters/helpers/rails/routes.rb
600
587
  - lib/coprl/presenters/helpers/redact.rb
601
588
  - lib/coprl/presenters/helpers/route.rb
602
589
  - lib/coprl/presenters/helpers/time.rb
603
590
  - lib/coprl/presenters/namespace.rb
604
591
  - lib/coprl/presenters/pluggable.rb
605
592
  - lib/coprl/presenters/plugins.rb
593
+ - lib/coprl/presenters/rails/concerns/coprl_partial.rb
606
594
  - lib/coprl/presenters/rails/engine.rb
607
595
  - lib/coprl/presenters/rails/railtie.rb
596
+ - lib/coprl/presenters/rails/reloader.rb
608
597
  - lib/coprl/presenters/registry.rb
609
598
  - lib/coprl/presenters/router.rb
610
599
  - lib/coprl/presenters/settings.rb
@@ -653,6 +642,14 @@ files:
653
642
  - lib/coprl/serializer.rb
654
643
  - lib/coprl/symbol/to_str.rb
655
644
  - lib/coprl/trace.rb
645
+ - lib/generators/pom/controller/controller_generator.rb
646
+ - lib/generators/pom/controller/templates/view.html.pom
647
+ - lib/generators/pom/scaffold/scaffold_generator.rb
648
+ - lib/generators/pom/scaffold/templates/_form.html.pom
649
+ - lib/generators/pom/scaffold/templates/edit.html.pom
650
+ - lib/generators/pom/scaffold/templates/index.html.pom
651
+ - lib/generators/pom/scaffold/templates/new.html.pom
652
+ - lib/generators/pom/scaffold/templates/show.html.pom
656
653
  - lib/hash_ext/traverse.rb
657
654
  - public/bundle.css
658
655
  - public/bundle.js
@@ -685,6 +682,7 @@ files:
685
682
  - rails-engine/app/views/layouts/coprl.html.erb
686
683
  - rails-engine/config.ru
687
684
  - rails-engine/config/initializers/presenters.rb
685
+ - rails-engine/config/initializers/routes.rb
688
686
  - rails-engine/config/initializers/session.rb
689
687
  - rails-engine/config/routes.rb
690
688
  - scripts/build.sh
@@ -949,7 +947,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
949
947
  - !ruby/object:Gem::Version
950
948
  version: 1.3.1
951
949
  requirements: []
952
- rubygems_version: 3.1.4
950
+ rubygems_version: 3.1.6
953
951
  signing_key:
954
952
  specification_version: 4
955
953
  summary: COmmon PResenter Language - A Ruby gem for joyfully writing modern user interfaces