alchemy_cms 5.0.3 → 5.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.
Files changed (115) hide show
  1. checksums.yaml +4 -4
  2. data/.github/PULL_REQUEST_TEMPLATE.md +1 -1
  3. data/.github/workflows/stale.yml +1 -1
  4. data/.gitignore +1 -0
  5. data/CHANGELOG.md +66 -2
  6. data/CONTRIBUTING.md +2 -2
  7. data/Gemfile +1 -1
  8. data/README.md +1 -1
  9. data/alchemy_cms.gemspec +3 -3
  10. data/app/assets/images/alchemy/missing-image.svg +1 -0
  11. data/app/assets/javascripts/alchemy/admin.js +0 -1
  12. data/app/assets/javascripts/alchemy/alchemy.element_editors.js.coffee +1 -4
  13. data/app/assets/javascripts/alchemy/alchemy.preview.js.coffee +0 -3
  14. data/app/assets/javascripts/alchemy/alchemy.preview_window.js.coffee +29 -4
  15. data/app/assets/stylesheets/alchemy/_variables.scss +8 -0
  16. data/app/assets/stylesheets/alchemy/admin.scss +0 -1
  17. data/app/assets/stylesheets/alchemy/archive.scss +23 -17
  18. data/app/assets/stylesheets/alchemy/buttons.scss +26 -15
  19. data/app/assets/stylesheets/alchemy/elements.scss +58 -19
  20. data/app/assets/stylesheets/alchemy/errors.scss +1 -1
  21. data/app/assets/stylesheets/alchemy/frame.scss +0 -1
  22. data/app/assets/stylesheets/alchemy/hints.scss +2 -1
  23. data/app/assets/stylesheets/alchemy/navigation.scss +7 -10
  24. data/app/assets/stylesheets/alchemy/pagination.scss +1 -1
  25. data/app/assets/stylesheets/alchemy/search.scss +13 -3
  26. data/app/assets/stylesheets/alchemy/selects.scss +26 -20
  27. data/app/assets/stylesheets/alchemy/tables.scss +38 -9
  28. data/app/assets/stylesheets/alchemy/tags.scss +19 -31
  29. data/app/controllers/alchemy/admin/pages_controller.rb +58 -8
  30. data/app/controllers/alchemy/admin/pictures_controller.rb +13 -6
  31. data/app/controllers/alchemy/admin/resources_controller.rb +3 -3
  32. data/app/controllers/alchemy/pages_controller.rb +49 -14
  33. data/app/decorators/alchemy/element_editor.rb +1 -0
  34. data/app/helpers/alchemy/admin/base_helper.rb +0 -44
  35. data/app/helpers/alchemy/admin/navigation_helper.rb +2 -1
  36. data/app/models/alchemy/attachment.rb +20 -3
  37. data/app/models/alchemy/attachment/url.rb +40 -0
  38. data/app/models/alchemy/essence_picture.rb +3 -3
  39. data/app/models/alchemy/essence_picture_view.rb +5 -3
  40. data/app/models/alchemy/legacy_page_url.rb +1 -1
  41. data/app/models/alchemy/page.rb +24 -1
  42. data/app/models/alchemy/page/page_natures.rb +2 -0
  43. data/app/models/alchemy/page/url_path.rb +8 -6
  44. data/app/models/alchemy/picture.rb +58 -2
  45. data/app/models/alchemy/picture/calculations.rb +55 -0
  46. data/app/models/alchemy/picture/transformations.rb +5 -49
  47. data/app/models/alchemy/picture/url.rb +28 -77
  48. data/app/models/alchemy/picture_thumb.rb +57 -0
  49. data/app/models/alchemy/picture_thumb/create.rb +39 -0
  50. data/app/models/alchemy/picture_thumb/signature.rb +23 -0
  51. data/app/models/alchemy/picture_thumb/uid.rb +22 -0
  52. data/app/models/alchemy/picture_variant.rb +114 -0
  53. data/app/models/alchemy/site/layout.rb +30 -2
  54. data/app/views/alchemy/admin/attachments/show.html.erb +8 -8
  55. data/app/views/alchemy/admin/dashboard/index.html.erb +13 -16
  56. data/app/views/alchemy/admin/elements/_element_footer.html.erb +1 -1
  57. data/app/views/alchemy/admin/elements/publish.js.erb +1 -0
  58. data/app/views/alchemy/admin/essence_pictures/crop.html.erb +1 -1
  59. data/app/views/alchemy/admin/essence_pictures/edit.html.erb +2 -2
  60. data/app/views/alchemy/admin/layoutpages/edit.html.erb +4 -6
  61. data/app/views/alchemy/admin/pages/_create_language_form.html.erb +19 -29
  62. data/app/views/alchemy/admin/pages/_form.html.erb +4 -6
  63. data/app/views/alchemy/admin/pages/_new_page_form.html.erb +12 -2
  64. data/app/views/alchemy/admin/pages/_page_layout_filter.html.erb +29 -0
  65. data/app/views/alchemy/admin/pages/_table.html.erb +27 -0
  66. data/app/views/alchemy/admin/pages/_table_row.html.erb +107 -0
  67. data/app/views/alchemy/admin/pages/_toolbar.html.erb +77 -0
  68. data/app/views/alchemy/admin/pages/edit.html.erb +9 -1
  69. data/app/views/alchemy/admin/pages/index.html.erb +41 -74
  70. data/app/views/alchemy/admin/pages/list/_table.html.erb +31 -0
  71. data/app/views/alchemy/admin/pages/unlock.js.erb +2 -2
  72. data/app/views/alchemy/admin/pages/update.js.erb +19 -10
  73. data/app/views/alchemy/admin/partials/_remote_search_form.html.erb +14 -13
  74. data/app/views/alchemy/admin/partials/_search_form.html.erb +8 -8
  75. data/app/views/alchemy/admin/pictures/_archive.html.erb +1 -1
  76. data/app/views/alchemy/admin/pictures/_form.html.erb +1 -1
  77. data/app/views/alchemy/admin/pictures/_picture.html.erb +3 -3
  78. data/app/views/alchemy/admin/pictures/_picture_to_assign.html.erb +1 -1
  79. data/app/views/alchemy/admin/pictures/edit_multiple.html.erb +1 -1
  80. data/app/views/alchemy/admin/pictures/index.html.erb +1 -1
  81. data/app/views/alchemy/admin/pictures/show.html.erb +3 -3
  82. data/app/views/alchemy/admin/resources/_filter_bar.html.erb +13 -11
  83. data/app/views/alchemy/admin/resources/_per_page_select.html.erb +3 -3
  84. data/app/views/alchemy/admin/resources/index.html.erb +4 -1
  85. data/app/views/alchemy/admin/tags/index.html.erb +14 -15
  86. data/app/views/alchemy/base/500.html.erb +11 -13
  87. data/app/views/alchemy/essences/_essence_file_view.html.erb +3 -3
  88. data/config/alchemy/config.yml +15 -11
  89. data/config/alchemy/modules.yml +12 -12
  90. data/config/locales/alchemy.en.yml +6 -4
  91. data/config/routes.rb +1 -1
  92. data/db/migrate/20200617110713_create_alchemy_picture_thumbs.rb +22 -0
  93. data/db/migrate/20200907111332_remove_tri_state_booleans.rb +33 -0
  94. data/lib/alchemy.rb +66 -0
  95. data/lib/alchemy/admin/preview_url.rb +2 -0
  96. data/lib/alchemy/auth_accessors.rb +12 -5
  97. data/lib/alchemy/config.rb +1 -3
  98. data/lib/alchemy/engine.rb +7 -6
  99. data/lib/alchemy/modules.rb +11 -1
  100. data/lib/alchemy/permissions.rb +1 -0
  101. data/lib/alchemy/test_support/factories/picture_factory.rb +0 -1
  102. data/lib/alchemy/test_support/factories/picture_thumb_factory.rb +12 -0
  103. data/lib/alchemy/test_support/integration_helpers.rb +0 -7
  104. data/lib/alchemy/version.rb +1 -1
  105. data/lib/alchemy_cms.rb +2 -4
  106. data/lib/generators/alchemy/install/files/alchemy.en.yml +2 -2
  107. data/lib/generators/alchemy/install/templates/dragonfly.rb.tt +5 -5
  108. data/lib/tasks/alchemy/thumbnails.rake +37 -0
  109. data/vendor/assets/javascripts/jquery_plugins/select2.js +3729 -0
  110. data/vendor/assets/stylesheets/alchemy_admin/select2.scss +740 -0
  111. metadata +41 -31
  112. data/.github/workflows/greetings.yml +0 -13
  113. data/app/controllers/concerns/alchemy/locale_redirects.rb +0 -40
  114. data/app/controllers/concerns/alchemy/page_redirects.rb +0 -68
  115. data/lib/alchemy/userstamp.rb +0 -12
@@ -1,26 +1,10 @@
1
1
  .tag-list {
2
+ display: flex;
3
+ flex-direction: column;
2
4
  height: 100%;
3
- padding-bottom: 138px;
4
-
5
- &.filtered {
6
- padding-bottom: 178px;
7
- }
8
-
9
- &.with_filter_bar {
10
- padding-bottom: 218px;
11
-
12
- &.filtered {
13
- padding-bottom: 256px;
14
- }
15
- }
16
5
 
17
6
  .js_filter_field_box {
18
- position: absolute;
19
- right: auto;
20
- top: auto;
21
- width: 200px;
22
- z-index: 1100;
23
- transition: background-color $transition-duration;
7
+ margin: 0;
24
8
 
25
9
  input {
26
10
  background-color: transparentize($white, 0.25);
@@ -29,23 +13,22 @@
29
13
  background-color: $white;
30
14
  }
31
15
  }
32
-
33
- label { display: none }
34
16
  }
35
17
 
36
18
  ul {
37
19
  list-style-type: none;
38
20
  padding: 0;
39
- margin: 44px 0 4px 0;
21
+ margin: 0;
40
22
  height: 100%;
41
- width: 200px;
42
23
  overflow-x: hidden;
43
24
  overflow-y: auto;
44
25
 
45
26
  li {
46
27
  display: block;
47
28
 
48
- &:first-child { margin-top: 0 }
29
+ &:first-child {
30
+ margin-top: 0;
31
+ }
49
32
 
50
33
  a {
51
34
  @include tag-base;
@@ -53,13 +36,14 @@
53
36
  display: block;
54
37
  }
55
38
 
56
- &:hover { background-color: $very-light-blue }
39
+ &:hover {
40
+ background-color: $very-light-blue;
41
+ }
57
42
 
58
43
  &.active {
59
-
60
44
  a {
61
45
  background-color: $dark-gray;
62
- color: $light-gray
46
+ color: $light-gray;
63
47
  }
64
48
  }
65
49
  }
@@ -69,7 +53,7 @@
69
53
  .tag {
70
54
  @include tag-base(
71
55
  $margin: $default-margin/2 0,
72
- $padding: $default-padding 2*$default-padding $default-padding
56
+ $padding: $default-padding 2 * $default-padding $default-padding
73
57
  );
74
58
  pointer-events: none;
75
59
  font-size: $small-font-size;
@@ -124,7 +108,9 @@
124
108
  position: relative;
125
109
  border-radius: $default-border-radius;
126
110
 
127
- &.odd { background-color: #eaf3f9 }
111
+ &.odd {
112
+ background-color: #eaf3f9;
113
+ }
128
114
 
129
115
  input {
130
116
  position: absolute;
@@ -141,14 +127,16 @@
141
127
  }
142
128
  }
143
129
 
144
- .tag_list, .autocomplete_tag_list {
130
+ .tag_list,
131
+ .autocomplete_tag_list {
145
132
  .select2-container.select2-container-multi {
146
133
  .select2-search-choice {
147
134
  padding: 0;
148
135
 
149
136
  div {
150
137
  @include tag-base(
151
- $padding: $default-padding 6*$default-padding $default-padding 3*$default-padding,
138
+ $padding: $default-padding 6 * $default-padding $default-padding 3 *
139
+ $default-padding,
152
140
  $margin: 0
153
141
  );
154
142
  }
@@ -2,12 +2,12 @@
2
2
 
3
3
  module Alchemy
4
4
  module Admin
5
- class PagesController < Alchemy::Admin::BaseController
5
+ class PagesController < ResourcesController
6
6
  include OnPageLayout::CallbacksRunner
7
7
 
8
8
  helper "alchemy/pages"
9
9
 
10
- before_action :load_page, except: [:index, :flush, :new, :order, :create, :copy_language_tree, :link, :sort]
10
+ before_action :load_resource, except: [:index, :flush, :new, :order, :create, :copy_language_tree, :link, :sort]
11
11
 
12
12
  authorize_resource class: Alchemy::Page, except: [:index, :tree]
13
13
 
@@ -27,11 +27,33 @@ module Alchemy
27
27
  if: :run_on_page_layout_callbacks?,
28
28
  only: [:show]
29
29
 
30
+ before_action :load_languages_and_layouts,
31
+ unless: -> { @page_root },
32
+ only: [:index]
33
+
34
+ before_action :set_view, only: [:index]
35
+
30
36
  def index
31
- if !@page_root
32
- @language = @current_language
33
- @languages_with_page_tree = Language.on_current_site.with_root_page
34
- @page_layouts = PageLayout.layouts_for_select(@language.id)
37
+ @query = @current_language.pages.contentpages.ransack(search_filter_params[:q])
38
+
39
+ if @view == "list"
40
+ @query.sorts = default_sort_order if @query.sorts.empty?
41
+ items = @query.result
42
+
43
+ if search_filter_params[:tagged_with].present?
44
+ items = items.tagged_with(search_filter_params[:tagged_with])
45
+ end
46
+
47
+ if search_filter_params[:filter].present?
48
+ items = items.public_send(sanitized_filter_params)
49
+ end
50
+
51
+ if search_filter_params[:page_layout].present?
52
+ items = items.where(page_layout: search_filter_params[:page_layout])
53
+ end
54
+
55
+ items = items.page(params[:page] || 1).per(items_per_page)
56
+ @pages = items
35
57
  end
36
58
  end
37
59
 
@@ -85,7 +107,12 @@ module Alchemy
85
107
  elsif page_needs_lock?
86
108
  @page.lock_to!(current_alchemy_user)
87
109
  end
88
- @preview_url = Alchemy::Admin::PREVIEW_URL.url_for(@page)
110
+ @preview_urls = Alchemy.preview_sources.map do |klass|
111
+ [
112
+ klass.model_name.human,
113
+ klass.new(routes: Alchemy::Engine.routes).url_for(@page),
114
+ ]
115
+ end
89
116
  @layoutpage = @page.layoutpage?
90
117
  end
91
118
 
@@ -178,6 +205,10 @@ module Alchemy
178
205
  def publish
179
206
  # fetching page via before filter
180
207
  @page.publish!
208
+
209
+ # Send publish notification to all registered publish targets
210
+ Alchemy.publish_targets.each { |p| p.perform_later(@page) }
211
+
181
212
  flash[:notice] = Alchemy.t(:page_published, name: @page.name)
182
213
  redirect_back(fallback_location: admin_pages_path)
183
214
  end
@@ -220,6 +251,19 @@ module Alchemy
220
251
 
221
252
  private
222
253
 
254
+ def resource_handler
255
+ @_resource_handler ||= Alchemy::Resource.new(controller_path, alchemy_module, Alchemy::Page)
256
+ end
257
+
258
+ def common_search_filter_includes
259
+ super.push(:page_layout, :view)
260
+ end
261
+
262
+ def set_view
263
+ @view = params[:view] || session[:alchemy_pages_view] || "tree"
264
+ session[:alchemy_pages_view] = @view
265
+ end
266
+
223
267
  def copy_of_language_root
224
268
  Page.copy(
225
269
  language_root_to_copy_from,
@@ -301,7 +345,7 @@ module Alchemy
301
345
  { my_urlname: default_urlname, children_path: default_urlname }
302
346
  end
303
347
 
304
- def load_page
348
+ def load_resource
305
349
  @page = Page.find(params[:id])
306
350
  end
307
351
 
@@ -364,6 +408,12 @@ module Alchemy
364
408
  user: current_alchemy_user,
365
409
  full: params[:full] == "true")
366
410
  end
411
+
412
+ def load_languages_and_layouts
413
+ @language = @current_language
414
+ @languages_with_page_tree = Language.on_current_site.with_root_page
415
+ @page_layouts = PageLayout.layouts_for_select(@language.id)
416
+ end
367
417
  end
368
418
  end
369
419
  end
@@ -11,16 +11,18 @@ module Alchemy
11
11
  before_action :load_resource,
12
12
  only: [:show, :edit, :update, :destroy, :info]
13
13
 
14
+ before_action :set_size, only: [:index, :show, :edit_multiple]
15
+
14
16
  authorize_resource class: Alchemy::Picture
15
17
 
16
18
  def index
17
- @size = params[:size].present? ? params[:size] : "medium"
18
19
  @query = Picture.ransack(search_filter_params[:q])
19
20
  @pictures = Picture.search_by(
20
21
  search_filter_params,
21
22
  @query,
22
23
  items_per_page,
23
24
  )
25
+ @pictures = @pictures.includes(:thumbs)
24
26
 
25
27
  if in_overlay?
26
28
  archive_overlay
@@ -115,7 +117,7 @@ module Alchemy
115
117
 
116
118
  def items_per_page
117
119
  if in_overlay?
118
- case params[:size]
120
+ case @size
119
121
  when "small" then 25
120
122
  when "large" then 4
121
123
  else
@@ -124,19 +126,24 @@ module Alchemy
124
126
  else
125
127
  cookies[:alchemy_pictures_per_page] = params[:per_page] ||
126
128
  cookies[:alchemy_pictures_per_page] ||
127
- pictures_per_page_for_size(params[:size])
129
+ pictures_per_page_for_size
128
130
  end
129
131
  end
130
132
 
131
133
  def items_per_page_options
132
- per_page = pictures_per_page_for_size(@size)
134
+ per_page = pictures_per_page_for_size
133
135
  [per_page, per_page * 2, per_page * 4]
134
136
  end
135
137
 
136
138
  private
137
139
 
138
- def pictures_per_page_for_size(size)
139
- case size
140
+ def set_size
141
+ @size = params[:size] || session[:alchemy_pictures_size] || "medium"
142
+ session[:alchemy_pictures_size] = @size
143
+ end
144
+
145
+ def pictures_per_page_for_size
146
+ case @size
140
147
  when "small" then 60
141
148
  when "large" then 12
142
149
  else
@@ -148,15 +148,15 @@ module Alchemy
148
148
 
149
149
  def common_search_filter_includes
150
150
  [
151
- {q: [
151
+ { q: [
152
152
  resource_handler.search_field_name,
153
153
  :s,
154
- ]},
154
+ ] },
155
155
  :tagged_with,
156
156
  :filter,
157
157
  :page,
158
158
  :per_page,
159
- ].freeze
159
+ ]
160
160
  end
161
161
 
162
162
  def items_per_page
@@ -13,7 +13,10 @@ module Alchemy
13
13
 
14
14
  # Redirecting concerns. Order is important here!
15
15
  include SiteRedirects
16
- include LocaleRedirects
16
+
17
+ before_action :enforce_no_locale,
18
+ if: :locale_prefix_not_allowed?,
19
+ only: [:index, :show]
17
20
 
18
21
  before_action :load_index_page, only: [:index]
19
22
  before_action :load_page, only: [:show]
@@ -21,11 +24,13 @@ module Alchemy
21
24
  # Legacy page redirects need to run after the page was loaded and before we render 404.
22
25
  include LegacyPageRedirects
23
26
 
24
- # From here on, we need a +@page+ to work with!
25
- before_action :page_not_found!, if: -> { @page.blank? }, only: [:index, :show]
27
+ # From here on, we need a published +@page+ to work with!
28
+ before_action :page_not_found!, unless: -> { @page&.public? }, only: [:index, :show]
26
29
 
27
- # Page redirects need to run after the page was loaded and we're sure to have a +@page+ set.
28
- include PageRedirects
30
+ # Page redirects need to run after the page was loaded and we're sure to have a public +@page+ set.
31
+ before_action :enforce_locale,
32
+ if: :locale_prefix_missing?,
33
+ only: [:index, :show]
29
34
 
30
35
  # We only need to set the +@root_page+ if we are sure that no more redirects happen.
31
36
  before_action :set_root_page, only: [:index, :show]
@@ -66,12 +71,8 @@ module Alchemy
66
71
  # descendant it finds. If no public page can be found it renders a 404 error.
67
72
  #
68
73
  def show
69
- if redirect_url.present?
70
- redirect_permanently_to redirect_url
71
- else
72
- authorize! :show, @page
73
- render_page if render_fresh_page?
74
- end
74
+ authorize! :show, @page
75
+ render_page if render_fresh_page?
75
76
  end
76
77
 
77
78
  # Renders a search engine compatible xml sitemap.
@@ -84,13 +85,25 @@ module Alchemy
84
85
 
85
86
  private
86
87
 
88
+ # Redirects to requested action without locale prefixed
89
+ def enforce_no_locale
90
+ redirect_permanently_to additional_params.merge(locale: nil)
91
+ end
92
+
93
+ # Is the requested locale allowed?
94
+ #
95
+ # If Alchemy is not in multi language mode or the requested locale is the default locale,
96
+ # then we want to redirect to a non prefixed url.
97
+ #
98
+ def locale_prefix_not_allowed?
99
+ params[:locale].present? && !multi_language? ||
100
+ params[:locale].presence == ::I18n.default_locale.to_s
101
+ end
102
+
87
103
  # == Loads index page
88
104
  #
89
105
  # Loads the current public language root page.
90
106
  #
91
- # If the root page is not public it redirects to the first published child.
92
- # This can be configured via +redirect_to_public_child+ [default: true]
93
- #
94
107
  # If no index page and no admin users are present we show the "Welcome to Alchemy" page.
95
108
  #
96
109
  def load_index_page
@@ -116,6 +129,28 @@ module Alchemy
116
129
  )
117
130
  end
118
131
 
132
+ def enforce_locale
133
+ redirect_permanently_to page_locale_redirect_url(locale: Language.current.code)
134
+ end
135
+
136
+ def locale_prefix_missing?
137
+ multi_language? && params[:locale].blank? && !default_locale?
138
+ end
139
+
140
+ def default_locale?
141
+ Language.current.code.to_sym == ::I18n.default_locale.to_sym
142
+ end
143
+
144
+ # Page url with or without locale while keeping all additional params
145
+ def page_locale_redirect_url(options = {})
146
+ options = {
147
+ locale: prefix_locale? ? @page.language_code : nil,
148
+ urlname: @page.urlname,
149
+ }.merge(options)
150
+
151
+ alchemy.show_page_path additional_params.merge(options)
152
+ end
153
+
119
154
  # Redirects to given url with 301 status
120
155
  def redirect_permanently_to(url)
121
156
  redirect_to url, status: :moved_permanently
@@ -18,6 +18,7 @@ module Alchemy
18
18
  folded ? "folded" : "expanded",
19
19
  compact? ? "compact" : nil,
20
20
  fixed? ? "is-fixed" : "not-fixed",
21
+ public? ? "visible" : "hidden",
21
22
  ].join(" ")
22
23
  end
23
24
 
@@ -272,50 +272,6 @@ module Alchemy
272
272
  end
273
273
  end
274
274
 
275
- # Renders the toolbar shown on top of the records.
276
- #
277
- # == Example
278
- #
279
- # <% label_title = Alchemy.t("Create #{resource_name}", default: Alchemy.t('Create')) %>
280
- # <% toolbar(
281
- # buttons: [
282
- # {
283
- # icon: :plus,
284
- # label: label_title,
285
- # url: new_resource_path,
286
- # title: label_title,
287
- # hotkey: 'alt+n',
288
- # dialog_options: {
289
- # title: label_title,
290
- # size: "430x400"
291
- # },
292
- # if_permitted_to: [:create, resource_model]
293
- # }
294
- # ]
295
- # ) %>
296
- #
297
- # @option options [Array] :buttons ([])
298
- # Pass an Array with button options. They will be passed to {#toolbar_button} helper.
299
- # @option options [Boolean] :search (true)
300
- # Show searchfield.
301
- #
302
- def toolbar(options = {})
303
- defaults = {
304
- buttons: [],
305
- search: true,
306
- }
307
- options = defaults.merge(options)
308
- content_for(:toolbar) do
309
- content = <<-CONTENT.strip_heredoc
310
- #{options[:buttons].map { |button_options| toolbar_button(button_options) }.join}
311
- #{render("alchemy/admin/partials/search_form", url: options[:search_url]) if options[:search]}
312
- CONTENT
313
- content.html_safe
314
- end
315
- end
316
-
317
- deprecate toolbar: "Please use `content_for(:toolbar)` instead", deprecator: Alchemy::Deprecation
318
-
319
275
  # (internal) Used by upload form
320
276
  def new_asset_path_with_session_information(asset_type)
321
277
  session_key = Rails.application.config.session_options[:key]