alchemy-custom-model 2.2.0 → 3.1.1

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: 1a2697b7c047652bd81eff2eea2f6ce536f17b636ee6e200fa0d79de57183544
4
- data.tar.gz: b6463926d7a0e7dec5a118fe74fc71a92293a46eba4bec350f3f5ca454c1ad6e
3
+ metadata.gz: caccdc8bd1c52308fba382b86a294ea2244c739f2088e5e508d82f81d4aadb20
4
+ data.tar.gz: 2856b5183c940815e58fcff9f0e691493e71efcc075659747194ad6ead20dfaf
5
5
  SHA512:
6
- metadata.gz: f5252ad81308db97abf919cc87dc6e7c70031f4f8a4ece43aa8776458bc39723d1dfafce7dcb92a0d15b8bbc7bd81ec553f691e5f052a2ab5bc33fbff30c1e8f
7
- data.tar.gz: f818915cbacb6cc271954c4aa5f57cae5bf67ff56cce88c2c997eb057e6cf8f13ce30ac7d6332f9f5b42da1b23810574b0bfa1e8c25d49362d02eefbbfbb34a4
6
+ metadata.gz: b888fdfaab020a5e904236cb66943f7b51810fb2ac869561f622f8d326e27b1a396029eb9fefe039aa0a9f8ac3190b927ff29fae5acedf8666a5c1e4d846c2d3
7
+ data.tar.gz: d04b7ef5d81468442913b7420bec3f86e6606c6033416fa6a21d1537a36577dd42c7f2a5605e9f43856a0327ffc49702d61149e06deeede1338d5ee030708a40
@@ -276,3 +276,98 @@
276
276
 
277
277
  }
278
278
 
279
+
280
+ .alchemy-dialog {
281
+ max-width: 1080px !important;
282
+ width: 100% !important;
283
+
284
+ .attribute_row {
285
+ margin: 10px 0px;
286
+ display: flex;
287
+
288
+ .labelfield {
289
+ font-size: 15px;
290
+ font-weight: bold;
291
+ text-transform: uppercase;
292
+ display: inline-block;
293
+ width: 200px;
294
+ overflow: hidden;
295
+ }
296
+
297
+ .valuefield {
298
+ font-size: 15px;
299
+ display: inline-block;
300
+ width: calc(100% - 200px);
301
+ overflow: hidden;
302
+ }
303
+
304
+ }
305
+ }
306
+
307
+
308
+ .search_panel {
309
+ background-color: #e9cfb7;
310
+ color:#000;
311
+ padding: 5px;
312
+ .row {
313
+ width: 100%;
314
+ height: auto;
315
+ display: flex;
316
+ }
317
+ .title {
318
+ color:#204166;
319
+ background-color: #eca96e;
320
+ font-weight: bolder;
321
+ width: 100;
322
+ display: block;
323
+ text-align: center;
324
+ height: 30px;
325
+ .title_label {
326
+ float:left;
327
+ margin-top:5px;
328
+ padding-left: 5px;
329
+ }
330
+ .button_toggle {
331
+ float:right;
332
+ margin-top:5px;
333
+ padding-right: 5px;
334
+ }
335
+ }
336
+ .search_fields_group div.input {
337
+ width: 30%;
338
+ float: left;
339
+ padding: 0 15px;
340
+ margin: 2px 0;
341
+ }
342
+ .action_buttons {
343
+ padding-top: 3px;
344
+ }
345
+ }
346
+
347
+
348
+ .show_page {
349
+ max-width: 1080px !important;
350
+ width: 100% !important;
351
+
352
+ .attribute_row {
353
+ margin: 10px 0px;
354
+ display: flex;
355
+
356
+ .labelfield {
357
+ font-size: 15px;
358
+ font-weight: bold;
359
+ text-transform: uppercase;
360
+ display: inline-block;
361
+ width: 200px;
362
+ overflow: hidden;
363
+ }
364
+
365
+ .valuefield {
366
+ font-size: 15px;
367
+ display: inline-block;
368
+ width: calc(100% - 200px);
369
+ overflow: hidden;
370
+ }
371
+
372
+ }
373
+ }
@@ -62,17 +62,19 @@ module Alchemy::Custom::Model
62
62
  end
63
63
 
64
64
  def show
65
- if @obj.respond_to? self.class.method_for_show
66
- @objects = @obj.send(self.class.method_for_show.to_sym)
67
- @objects = @objects.accessible_by(current_ability)
68
- @total_objects = @objects
69
- @objects = @objects.page(params[:page]).
70
- per(params[:per_page] ||
71
- (base_class::DEFAULT_PER_PAGE if base_class.const_defined? :DEFAULT_PER_PAGE) ||
72
- 25)
73
- instance_variable_set "@#{self.class.method_for_show.to_s.underscore.downcase.pluralize}", @objects
74
- else
75
- @objects = base_class.none
65
+ unless self.class.method_for_show.nil?
66
+ if @obj.respond_to? self.class.method_for_show
67
+ @objects = @obj.send(self.class.method_for_show.to_sym)
68
+ @objects = @objects.accessible_by(current_ability)
69
+ @total_objects = @objects
70
+ @objects = @objects.page(params[:page]).
71
+ per(params[:per_page] ||
72
+ (base_class::DEFAULT_PER_PAGE if base_class.const_defined? :DEFAULT_PER_PAGE) ||
73
+ 25)
74
+ instance_variable_set "@#{self.class.method_for_show.to_s.underscore.downcase.pluralize}", @objects
75
+ else
76
+ @objects = base_class.none
77
+ end
76
78
  end
77
79
  end
78
80
 
@@ -82,10 +84,7 @@ module Alchemy::Custom::Model
82
84
  @objects = @query.result(distinct: true)
83
85
  @objects = @objects.accessible_by(current_ability)
84
86
  @total_objects = @objects
85
- @objects = @objects.page(params[:page]).
86
- per(params[:per_page] ||
87
- (base_class::DEFAULT_PER_PAGE if base_class.const_defined? :DEFAULT_PER_PAGE) ||
88
- 25)
87
+
89
88
 
90
89
 
91
90
  send_data generate_csv, filename: "export_member.csv", disposition: :attachment, type: "text/csv"
@@ -44,7 +44,8 @@ module Alchemy
44
44
  :nofollow,
45
45
  :external,
46
46
  :custom_model_klass,
47
- :custom_model_method
47
+ :custom_model_method,
48
+ :menu_type
48
49
  )
49
50
  end
50
51
 
@@ -392,7 +392,7 @@ module Alchemy::Custom::Model::Admin::BaseHelper
392
392
 
393
393
  def order_path(obj = nil, options = {})
394
394
  if obj.nil?
395
- new_polymorphic_path([:admin, base_class.to_s.pluralize.underscore, :order])
395
+ new_polymorphic_path([:admin, base_class.to_s.pluralize.underscore.to_sym, :order])
396
396
  else
397
397
  new_polymorphic_path([:admin, obj, :order])
398
398
  end
@@ -437,4 +437,49 @@ module Alchemy::Custom::Model::Admin::BaseHelper
437
437
  end
438
438
 
439
439
 
440
+ def search_panel(options = {}, &block)
441
+ submit_button = options.fetch(:enable_submit, true)
442
+ klass = options.delete(:class) || []
443
+
444
+ content_tag(:div, class: "search_panel #{klass.join(" ")}", ** options) do
445
+ sb = ActiveSupport::SafeBuffer.new
446
+
447
+ if @query
448
+ sb << content_tag(:div, class:"title") do
449
+ spt = ActiveSupport::SafeBuffer.new
450
+ spt << content_tag(:span, t("search_panel_title"), class:"title_label")
451
+
452
+ #TODO: toggle pannello
453
+ #spt << content_tag(:span, class:"button_toggle") do
454
+ # content_tag(:a,class:"icon_button") do
455
+ # content_tag(:i, nil, class:"icon fa-fw fa-bars fas")
456
+ # end
457
+ #end
458
+ spt
459
+ end
460
+
461
+ sb << simple_form_for(@query, url: polymorphic_path([:admin, @query.klass]), method: :get) do |f|
462
+ sff = ActiveSupport::SafeBuffer.new
463
+
464
+ sff << content_tag(:div, class: "search_fields_group") do
465
+ search_fields = ActiveSupport::SafeBuffer.new
466
+
467
+ search_fields << capture do
468
+ block.call(f)
469
+ end
470
+
471
+ search_fields
472
+ end
473
+ if submit_button
474
+ sff << content_tag(:div, class: "action_buttons") do
475
+ f.submit(::I18n.t('alchemy_ajax_form.submit_search'))
476
+ end
477
+ end
478
+ sff
479
+ end
480
+ end
481
+ sb
482
+ end
483
+ end
484
+
440
485
  end
@@ -2,37 +2,46 @@ module Alchemy::Custom::Model
2
2
  module CustomModelHelper
3
3
 
4
4
  def self.included(mod)
5
- if ::Rails.application.config.action_controller.include_all_helpers!=false
5
+ if ::Rails.application.config.action_controller.include_all_helpers != false
6
6
  raise "Devi definire in config/application.rb config.action_controller.include_all_helpers=false
7
7
  in modo da far funzionare correttamente l'override degli helper come per i controller"
8
8
  end
9
9
  end
10
10
 
11
- def custom_model_page_urlname(obj)
12
- layout = Alchemy::PageLayout.get_all_by_attributes(custom_model: obj.class.to_s).select {|ly| ly["custom_model_action"] == "show"}.first
11
+ def custom_model_page_urlname(obj, language: nil)
12
+ if language.blank?
13
+ language = Alchemy::Language.current
14
+ end
15
+ layout = Alchemy::PageLayout.get_all_by_attributes(custom_model: obj.class.to_s).select { |ly| ly["custom_model_action"] == "show" }.first
13
16
  if not layout.blank?
14
- Alchemy::Language.current.pages.find_by(page_layout: layout["name"]).try(:parent).try(:urlname)
17
+ language.pages.find_by(page_layout: layout["name"]).try(:parent).try(:urlname)
15
18
  else
16
19
  nil
17
20
  end
18
21
  end
19
22
 
20
- def custom_model_path(obj)
21
- custom_model_url_builder(obj) do |url|
22
- alchemy.show_page_path(Alchemy::Language.current.code, url)
23
+ def custom_model_path(obj, options = {})
24
+ language = options.delete(:language)
25
+ custom_model_url_builder(obj, language: language) do |url|
26
+ alchemy.show_page_path(language || Alchemy::Language.current.code, url, options)
23
27
  end
24
28
  end
25
29
 
26
- def custom_model_url(obj)
27
- custom_model_url_builder(obj) do |url|
28
- alchemy.show_page_url(Alchemy::Language.current.code, url)
30
+ def custom_model_url(obj, options = {})
31
+ language = options.delete(:language)
32
+ if language.is_a? String
33
+ language = Alchemy::Language.find_by_code(language)
34
+ end
35
+ custom_model_url_builder(obj, language: language) do |url|
36
+ alchemy.show_page_url(language.code || Alchemy::Language.current.code, url, options)
29
37
  end
30
38
  end
31
39
 
40
+
32
41
  private
33
42
 
34
- def custom_model_url_builder(obj)
35
- to_url = custom_model_page_urlname obj
43
+ def custom_model_url_builder(obj, language: nil)
44
+ to_url = custom_model_page_urlname obj, language: language
36
45
  if not to_url.blank?
37
46
 
38
47
  # Url build with alchemy
@@ -49,11 +58,15 @@ module Alchemy::Custom::Model
49
58
  url += '/'
50
59
 
51
60
  if obj.class.respond_to?(:friendly_id_config)
52
- url += "#{obj.send(obj.class.friendly_id_config.slug_column)}"
61
+ language = Alchemy::Language.current if language.blank?
62
+ Globalize.with_locale(language.language_code.to_sym) do
63
+ url += "#{obj.send(obj.class.friendly_id_config.slug_column)}"
64
+ end
53
65
  else
54
66
  url += "#{obj.id}"
55
67
  end
56
68
 
69
+
57
70
  if block_given?
58
71
  yield url
59
72
  else
@@ -0,0 +1,16 @@
1
+ <%= search_panel do |form| %>
2
+
3
+ <span>Ovverride with personalized ransack fields</span>
4
+ <div class="row">
5
+ form.input :field1_i_cont <br/>
6
+ form.input :field2_i_cont <br/>
7
+ form.input :field3_i_cont <br/>
8
+ </div>
9
+
10
+ <div class="row">
11
+ form.input :field4_i_cont <br/>
12
+ form.input :field5_i_cont <br/>
13
+ form.input :field6_i_cont <br/>
14
+ </div>
15
+
16
+ <% end %>
@@ -0,0 +1,30 @@
1
+ <%=toolbar(
2
+ buttons: [
3
+ {
4
+ icon: "angle-double-left ",
5
+ label: acm_t(:title_action, action: acm_t(:index, scope: :actions), model: base_class.model_name.human),
6
+ url: polymorphic_path(url_namespace),
7
+ title: acm_t(:title_action, action: acm_t(:index, scope: :actions), model: base_class.model_name.human),
8
+ hotkey: 'alt+b',
9
+ dialog: false,
10
+ if_permitted_to: [:index, @obj.class]
11
+ }
12
+
13
+ ],
14
+ search: false
15
+ ) %>
16
+
17
+
18
+ <div class="show_page">
19
+ <% @obj.attributes.each do |attribute| %>
20
+ <div class="attribute_row">
21
+ <div class="labelfield">
22
+ <%= @obj.class.human_attribute_name(attribute.first.to_sym) %>
23
+ </div>
24
+ <div class="valuefield">
25
+ <%= attribute[1] %>
26
+ </div>
27
+ </div>
28
+ <% end %>
29
+
30
+ </div>
@@ -0,0 +1,48 @@
1
+ <%
2
+ buttons = []
3
+
4
+ buttons << {
5
+ icon: "angle-double-left ",
6
+ label: acm_t(:title_action, action: acm_t(:index, scope: :actions), model: base_class.model_name.human),
7
+ url: polymorphic_path(url_namespace),
8
+ title: acm_t(:title_action, action: acm_t(:index, scope: :actions), model: base_class.model_name.human),
9
+ hotkey: 'alt+b',
10
+ dialog: false,
11
+ if_permitted_to: [:index, @obj.class]
12
+ }
13
+
14
+ if exist_order_path? @obj
15
+ buttons << {
16
+ icon: :random,
17
+ label: acm_t(:title_action, action: acm_t(:order, scope: :actions), model: base_class.model_name.human),
18
+ url: order_path(@obj),
19
+ title: acm_t(:title_action, action: acm_t(:order, scope: :actions), model: base_class.model_name.human),
20
+ hotkey: 'alt+n',
21
+ dialog: false,
22
+ if_permitted_to: [:order, base_class]
23
+ }
24
+ end
25
+
26
+ %>
27
+
28
+
29
+ <% toolbar(
30
+ buttons: buttons,
31
+ search: false
32
+ ) %>
33
+
34
+
35
+ <%= base_container do %>
36
+
37
+ <div id="archive_all" class="resources-table-wrapper">
38
+
39
+ <%= content_tag :h1, "#{@objects.count} #{base_class.model_name.human(count: @objects.count)}", class: 'resources-header' %>
40
+
41
+
42
+ <%= render partial: "table" %>
43
+
44
+ <%= paginate @objects, theme: 'alchemy', hide_per_page_select: true %>
45
+
46
+ </div>
47
+
48
+ <% end %>
@@ -31,22 +31,22 @@
31
31
  }
32
32
  end
33
33
 
34
- if can?(:export_csv, base_class) and check_presence_polymorphic_path([:export_csv, :admin, base_class.to_s.demodulize.downcase.pluralize ], :get, format: :csv)
34
+ if can?(:export_csv, base_class) and check_presence_polymorphic_path([:export_csv, :admin, base_class.to_s.demodulize.pluralize.underscore.to_sym ], :get, format: :csv)
35
35
  buttons << {
36
36
  icon: "download",
37
37
  label: t(:export_selected_data),
38
- url: polymorphic_path([:export_csv, :admin, base_class.to_s.demodulize.downcase.pluralize],format: :csv),
38
+ url: polymorphic_path([:export_csv, :admin, base_class.to_s.demodulize.pluralize.underscore.to_sym], {format: :csv}.merge(request.query_parameters) ),
39
39
  title: t(:export_selected_data),
40
40
  dialog: false,
41
41
  if_permitted_to: [:export_csv, base_class]
42
42
  }
43
43
  end
44
44
 
45
- if can?(:export_csv_full, base_class) and check_presence_polymorphic_path([:export_csv_full, :admin, base_class.to_s.demodulize.downcase.pluralize ], :get, format: :csv)
45
+ if can?(:export_csv_full, base_class) and check_presence_polymorphic_path([:export_csv_full, :admin, base_class.to_s.demodulize.pluralize.underscore.to_sym ], :get, format: :csv)
46
46
  buttons << {
47
47
  icon: "file-archive",
48
48
  label: t(:export_all_data),
49
- url: polymorphic_path([:export_csv_full, :admin, base_class.to_s.demodulize.downcase.pluralize],format: :csv),
49
+ url: polymorphic_path([:export_csv_full, :admin, base_class.to_s.demodulize.pluralize.underscore.to_sym],format: :csv),
50
50
  title: t(:export_all_data),
51
51
  dialog: false,
52
52
  if_permitted_to: [:export_csv_full, base_class]
@@ -67,6 +67,7 @@
67
67
 
68
68
  <%= content_tag :h1, "#{@total_objects.count} #{base_class.model_name.human(count: @objects.count)}", class: 'resources-header' %>
69
69
 
70
+ <%= render partial: "search_panel" %>
70
71
 
71
72
  <%= render partial: "table" %>
72
73
 
@@ -1,48 +1,5 @@
1
- <%
2
- buttons = []
3
-
4
- buttons << {
5
- icon: "angle-double-left ",
6
- label: acm_t(:title_action, action: acm_t(:index, scope: :actions), model: base_class.model_name.human),
7
- url: polymorphic_path(url_namespace),
8
- title: acm_t(:title_action, action: acm_t(:index, scope: :actions), model: base_class.model_name.human),
9
- hotkey: 'alt+b',
10
- dialog: false,
11
- if_permitted_to: [:index, @obj.class]
12
- }
13
-
14
- if exist_order_path? @obj
15
- buttons << {
16
- icon: :random,
17
- label: acm_t(:title_action, action: acm_t(:order, scope: :actions), model: base_class.model_name.human),
18
- url: order_path(@obj),
19
- title: acm_t(:title_action, action: acm_t(:order, scope: :actions), model: base_class.model_name.human),
20
- hotkey: 'alt+n',
21
- dialog: false,
22
- if_permitted_to: [:order, base_class]
23
- }
24
- end
25
-
26
- %>
27
-
28
-
29
- <% toolbar(
30
- buttons: buttons,
31
- search: false
32
- ) %>
33
-
34
-
35
- <%= base_container do %>
36
-
37
- <div id="archive_all" class="resources-table-wrapper">
38
-
39
- <%= content_tag :h1, "#{@objects.count} #{base_class.model_name.human(count: @objects.count)}", class: 'resources-header' %>
40
-
41
-
42
- <%= render partial: "table" %>
43
-
44
- <%= paginate @objects, theme: 'alchemy', hide_per_page_select: true %>
45
-
46
- </div>
47
-
48
- <% end %>
1
+ <% if @objects.nil? %>
2
+ <%= render partial: "show_object" %>
3
+ <% else %>
4
+ <%= render partial: "show_objects" %>
5
+ <% end %>
@@ -0,0 +1,16 @@
1
+ <%- @pages.each do |page| -%>
2
+ <url>
3
+ <loc><%= show_alchemy_page_url(page) %></loc>
4
+ <lastmod><%= page.updated_at.utc.iso8601 %></lastmod>
5
+ <changefreq><%= Alchemy::Custom::Model.sitemap_change_freq %></changefreq>
6
+ </url>
7
+ <%- end -%>
8
+ <% Alchemy::Language.published.each do |language| %>
9
+ <% @custom_elements.each do |ce| %>
10
+ <url>
11
+ <loc><%= custom_model_url(ce, language: language) %></loc>
12
+ <lastmod><%= ce.updated_at.utc.iso8601 %></lastmod>
13
+ <changefreq><%= Alchemy::Custom::Model.sitemap_change_freq %></changefreq>
14
+ </url>
15
+ <% end %>
16
+ <% end%>
@@ -31,9 +31,16 @@ module Alchemy
31
31
  autoload :PagesControllerDec
32
32
  autoload :PictureUsedBy
33
33
  autoload :ModelUtilsMethod
34
+ autoload :SitemapMethods
34
35
  autoload :GlobalizeModelDecoration
35
36
 
36
37
 
38
+ mattr_accessor :sitemap_change_freq
39
+ @@sitemap_change_freq = "weekly"
40
+
41
+ mattr_accessor :sitemaps_models
42
+ @@sitemaps_models = []
43
+
37
44
 
38
45
  mattr_accessor :base_admin_controller_class
39
46
 
@@ -35,6 +35,15 @@ module Alchemy::Custom::Model::ElFinder
35
35
  "#{p.id}#{URI_SPACER}"
36
36
  end
37
37
 
38
+ ##
39
+ # Identifichiamo la data di modifica del file con la data di modifica del record, in questo modo la cache
40
+ # che viene generata attraverso l'inserimento di un parametro nella query con il valore t=orario non andrà ad essere
41
+ # aggiornato ad ogni refresh, anche solo a livello di browser
42
+ # nel caso abbiamo problemi usiamo lo standard
43
+ def mtime
44
+ active_record_instance.updated_at rescue super
45
+ end
46
+
38
47
  def file
39
48
  active_record_instance.file
40
49
  end
@@ -7,6 +7,7 @@ module Alchemy::Custom::Model
7
7
  include GlobalIdSetter
8
8
  include MenuMethods
9
9
  include ModelUtilsMethods
10
+ include SitemapMethods
10
11
 
11
12
 
12
13
 
@@ -7,6 +7,7 @@ module Alchemy::Custom::Model
7
7
  include GlobalIdSetter
8
8
  include MenuMethods
9
9
  include SlugOptimizer
10
+ include SitemapMethods
10
11
 
11
12
  belongs_to :language, class_name: "Alchemy::Language"
12
13
 
@@ -7,12 +7,28 @@ module Alchemy::Custom::Model
7
7
 
8
8
  skip_before_action :page_not_found!, only: [:index, :show]
9
9
  before_action :load_custom_model_page, only: [:show]
10
- before_action :page_not_found_after_custom_model!, if: -> {@page.blank?}, only: [:index, :show]
10
+ before_action :page_not_found_after_custom_model!, if: -> { @page.blank? }, only: [:index, :show]
11
11
  before_action :perform_search, only: :show
12
- after_action :set_404_after
12
+ after_action :set_404_after, except: :sitemap
13
13
 
14
14
  helper CustomModelHelper
15
15
 
16
+ def sitemap
17
+ @pages = Alchemy::Page.sitemap.reject do |page|
18
+ page.definition["custom_model_action"].to_s == "show"
19
+ end
20
+ @custom_elements = []
21
+ Alchemy::Custom::Model.sitemaps_models.each do |model|
22
+ if model.respond_to? :to_sitemap
23
+ @custom_elements << model.to_sitemap
24
+ end
25
+ end
26
+ @custom_elements = @custom_elements.flatten
27
+ respond_to do |format|
28
+ format.xml { render layout: 'alchemy/sitemap' }
29
+ end
30
+ end
31
+
16
32
  private
17
33
 
18
34
  def load_custom_model_page
@@ -30,6 +46,8 @@ module Alchemy::Custom::Model
30
46
  instance_variable_set("@#{custom_model_string.demodulize.downcase.pluralize}", @custom_elements)
31
47
  end
32
48
 
49
+ elsif action_name == "sitemap"
50
+ super
33
51
  else
34
52
 
35
53
  url = params[:urlname]
@@ -38,37 +56,35 @@ module Alchemy::Custom::Model
38
56
 
39
57
  unless url_params.nil?
40
58
 
41
-
42
59
  parent_page = Alchemy::Language.current.pages.contentpages.find_by(
43
60
  urlname: url_params[:page_name],
44
61
  language_code: params[:locale] || Alchemy::Language.current.code
45
62
  )
46
63
 
47
64
  if parent_page.nil?
48
- raise ActionController::RoutingError, "Parent Page not Found [#{url_params[:page_name]}]"
49
- end
50
-
51
- #TODO magari implementare ricerca children in base a una action es. edit new chow ecc
52
-
53
- @page = parent_page.children.first
54
-
55
- if @page.nil?
56
- raise ActionController::RoutingError, "You have to define a subpage for custom model"
57
- end
58
-
59
- custom_model_string = get_custom_model_string
60
-
61
- if custom_model_string.blank?
62
- raise ActionController::RoutingError, "You have to specify custom_model in page_layouts config file"
65
+ Rails.logger.warn "Parent Page not Found [#{url_params[:page_name]}]"
66
+ #TODO magari implementare ricerca children in base a una action es. edit new chow ecc
63
67
  else
64
- custom_model = custom_model_string.classify.constantize
65
- @custom_element = custom_model.only_current_language.friendly.find(url_params[:custom_model_id])
66
- instance_variable_set("@#{custom_model_string.demodulize.underscore}", @custom_element)
68
+ @page = parent_page.children.first
69
+ if @page.nil?
70
+ Rails.logger.warn "You have to define a subpage for custom model"
71
+ else
72
+ custom_model_string = get_custom_model_string
73
+
74
+ if custom_model_string.blank?
75
+ Rails.logger.warn "You have to specify custom_model in page_layouts config file"
76
+ else
77
+ custom_model = custom_model_string.classify.constantize
78
+ @custom_element = custom_model.only_current_language.friendly.find(url_params[:custom_model_id])
79
+ instance_variable_set("@#{custom_model_string.demodulize.underscore}", @custom_element)
80
+ end
81
+
82
+ end
83
+
67
84
  end
68
85
 
69
86
  end
70
87
 
71
-
72
88
  end
73
89
  end
74
90
 
@@ -95,7 +111,6 @@ module Alchemy::Custom::Model
95
111
  end
96
112
  end
97
113
 
98
-
99
114
  def get_custom_model_string
100
115
 
101
116
  children_page_layout = Alchemy::PageLayout.get(@page.page_layout)
@@ -104,7 +119,6 @@ module Alchemy::Custom::Model
104
119
 
105
120
  end
106
121
 
107
-
108
122
  def page_not_found_after_custom_model!
109
123
  not_found_error!("Alchemy::Page not found \"#{request.fullpath}\"")
110
124
  end
@@ -113,7 +127,6 @@ module Alchemy::Custom::Model
113
127
  ArchimediaPgsearch::SEARCH_RESULTS_PAGINATION_NUMBER
114
128
  end
115
129
 
116
-
117
130
  def not_found_error!(msg = "Not found \"#{request.fullpath}\"")
118
131
  not_found_page = Alchemy::Language.current.pages.published.find_by(page_layout: "not_found")
119
132
  if !not_found_page.nil?
@@ -0,0 +1,18 @@
1
+ module Alchemy
2
+ module Custom
3
+ module Model
4
+ module SitemapMethods
5
+
6
+ extend ActiveSupport::Concern
7
+
8
+ included do
9
+
10
+ def self.to_sitemap
11
+ all
12
+ end
13
+
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
@@ -1,7 +1,7 @@
1
1
  module Alchemy
2
2
  module Custom
3
3
  module Model
4
- VERSION = '2.2.0'
4
+ VERSION = '3.1.1'
5
5
  end
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: alchemy-custom-model
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.0
4
+ version: 3.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alessandro Baccanelli
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2020-10-16 00:00:00.000000000 Z
12
+ date: 2021-07-12 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: alchemy_cms
@@ -17,14 +17,20 @@ dependencies:
17
17
  requirements:
18
18
  - - "~>"
19
19
  - !ruby/object:Gem::Version
20
- version: '4.0'
20
+ version: '5.1'
21
+ - - ">="
22
+ - !ruby/object:Gem::Version
23
+ version: 5.1.2
21
24
  type: :runtime
22
25
  prerelease: false
23
26
  version_requirements: !ruby/object:Gem::Requirement
24
27
  requirements:
25
28
  - - "~>"
26
29
  - !ruby/object:Gem::Version
27
- version: '4.0'
30
+ version: '5.1'
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: 5.1.2
28
34
  - !ruby/object:Gem::Dependency
29
35
  name: jquery-ui-rails
30
36
  requirement: !ruby/object:Gem::Requirement
@@ -179,7 +185,10 @@ files:
179
185
  - app/views/alchemy/custom/model/admin/base/_gallery_item.html.erb
180
186
  - app/views/alchemy/custom/model/admin/base/_language_tree_select.html.erb
181
187
  - app/views/alchemy/custom/model/admin/base/_search_box.html.erb
188
+ - app/views/alchemy/custom/model/admin/base/_search_panel.html.erb
182
189
  - app/views/alchemy/custom/model/admin/base/_seo.html.erb
190
+ - app/views/alchemy/custom/model/admin/base/_show_object.html.erb
191
+ - app/views/alchemy/custom/model/admin/base/_show_objects.html.erb
183
192
  - app/views/alchemy/custom/model/admin/base/_table.html.erb
184
193
  - app/views/alchemy/custom/model/admin/base/_title.html.erb
185
194
  - app/views/alchemy/custom/model/admin/base/edit.html.erb
@@ -190,6 +199,7 @@ files:
190
199
  - app/views/alchemy/custom/model/admin/files/error_notice.json.jbuilder
191
200
  - app/views/alchemy/custom/model/admin/files/ui.html.erb
192
201
  - app/views/alchemy/custom/model/admin/orders/new.html.erb
202
+ - app/views/alchemy/pages/sitemap.xml.erb
193
203
  - config/initializers/elfinder_abilities.rb
194
204
  - config/locales/en.yml
195
205
  - config/locales/it.yml
@@ -228,6 +238,7 @@ files:
228
238
  - lib/alchemy/custom/model/order.rb
229
239
  - lib/alchemy/custom/model/pages_controller_dec.rb
230
240
  - lib/alchemy/custom/model/picture_used_by.rb
241
+ - lib/alchemy/custom/model/sitemap_methods.rb
231
242
  - lib/alchemy/custom/model/slug_optimizer.rb
232
243
  - lib/alchemy/custom/model/translation_scope.rb
233
244
  - lib/alchemy/custom/model/version.rb
@@ -313,7 +324,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
313
324
  - !ruby/object:Gem::Version
314
325
  version: '0'
315
326
  requirements: []
316
- rubygems_version: 3.0.3
327
+ rubygems_version: 3.0.8
317
328
  signing_key:
318
329
  specification_version: 4
319
330
  summary: A gem for semplify model implementation with Alchemy CMS