spina 1.1.1 → 2.0.0.alpha

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of spina might be problematic. Click here for more details.

Files changed (204) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +23 -244
  3. data/app/assets/fonts/spina/Metropolis-Black.woff2 +0 -0
  4. data/app/assets/fonts/spina/Metropolis-BlackItalic.woff2 +0 -0
  5. data/app/assets/fonts/spina/Metropolis-Bold.woff2 +0 -0
  6. data/app/assets/fonts/spina/Metropolis-BoldItalic.woff2 +0 -0
  7. data/app/assets/fonts/spina/Metropolis-ExtraBold.woff2 +0 -0
  8. data/app/assets/fonts/spina/Metropolis-ExtraBoldItalic.woff2 +0 -0
  9. data/app/assets/fonts/spina/Metropolis-ExtraLight.woff2 +0 -0
  10. data/app/assets/fonts/spina/Metropolis-ExtraLightItalic.woff2 +0 -0
  11. data/app/assets/fonts/spina/Metropolis-Light.woff2 +0 -0
  12. data/app/assets/fonts/spina/Metropolis-LightItalic.woff2 +0 -0
  13. data/app/assets/fonts/spina/Metropolis-Medium.woff2 +0 -0
  14. data/app/assets/fonts/spina/Metropolis-MediumItalic.woff2 +0 -0
  15. data/app/assets/fonts/spina/Metropolis-Regular.woff2 +0 -0
  16. data/app/assets/fonts/spina/Metropolis-RegularItalic.woff2 +0 -0
  17. data/app/assets/fonts/spina/Metropolis-SemiBold.woff2 +0 -0
  18. data/app/assets/fonts/spina/Metropolis-SemiBoldItalic.woff2 +0 -0
  19. data/app/assets/fonts/spina/Metropolis-Thin.woff2 +0 -0
  20. data/app/assets/fonts/spina/Metropolis-ThinItalic.woff2 +0 -0
  21. data/app/assets/fonts/spina/ics_spina.eot +0 -0
  22. data/app/assets/fonts/spina/ics_spina.svg +285 -267
  23. data/app/assets/fonts/spina/ics_spina.ttf +0 -0
  24. data/app/assets/fonts/spina/ics_spina.woff +0 -0
  25. data/app/assets/fonts/spina/ics_spina.woff2 +0 -0
  26. data/app/assets/icons/spina/bold.svg +1 -1
  27. data/app/assets/icons/spina/code.svg +1 -1
  28. data/app/assets/icons/spina/image.svg +1 -10
  29. data/app/assets/icons/spina/indent.svg +1 -0
  30. data/app/assets/icons/spina/italic.svg +1 -1
  31. data/app/assets/icons/spina/link.svg +1 -1
  32. data/app/assets/icons/spina/list-ol.svg +1 -0
  33. data/app/assets/icons/spina/list.svg +1 -0
  34. data/app/assets/icons/spina/outdent.svg +1 -0
  35. data/app/assets/icons/spina/preview/ics_spina-preview.html +121 -1
  36. data/app/assets/icons/spina/quote-right.svg +1 -0
  37. data/app/assets/icons/spina/redo.svg +1 -0
  38. data/app/assets/icons/spina/strikethrough.svg +1 -0
  39. data/app/assets/icons/spina/undo.svg +1 -0
  40. data/app/assets/images/spina/favicon.png +0 -0
  41. data/app/assets/javascripts/spina/admin/application.js +1 -2
  42. data/app/assets/javascripts/spina/admin/controllers/attachment_picker_controller.js +15 -0
  43. data/app/assets/javascripts/spina/admin/controllers/image_form_controller.js +5 -4
  44. data/app/assets/javascripts/spina/admin/controllers/infinite_scroll_controller.js +20 -22
  45. data/app/assets/javascripts/spina/admin/controllers/media_picker_controller.js +171 -0
  46. data/app/assets/javascripts/spina/admin/controllers/modal_controller.js +18 -0
  47. data/app/assets/javascripts/spina/admin/controllers/repeater_form_controller.js +38 -0
  48. data/app/assets/javascripts/spina/admin/media_gallery.coffee +0 -3
  49. data/app/assets/javascripts/spina/admin/notifications.coffee +1 -1
  50. data/app/assets/javascripts/spina/admin/pages.coffee.erb +3 -20
  51. data/app/assets/javascripts/spina/admin/scaffold.coffee +0 -3
  52. data/app/assets/javascripts/spina/admin/trix.coffee.erb +14 -18
  53. data/app/assets/stylesheets/spina.sass +10 -10
  54. data/app/assets/stylesheets/spina/_buttons.sass +58 -32
  55. data/app/assets/stylesheets/spina/_configuration.sass.erb +2 -2
  56. data/app/assets/stylesheets/spina/_fonts.sass +32 -0
  57. data/app/assets/stylesheets/spina/_forms.sass +65 -76
  58. data/app/assets/stylesheets/spina/_gallery.sass +22 -4
  59. data/app/assets/stylesheets/spina/_ics_spina.scss +8 -0
  60. data/app/assets/stylesheets/spina/_media_picker.sass +133 -0
  61. data/app/assets/stylesheets/spina/_modal.sass +35 -2
  62. data/app/assets/stylesheets/spina/_notifications.sass +20 -14
  63. data/app/assets/stylesheets/spina/_pages.sass +131 -0
  64. data/app/assets/stylesheets/spina/_sortable_lists.sass +14 -8
  65. data/app/assets/stylesheets/spina/_tables.sass +7 -4
  66. data/app/assets/stylesheets/spina/_trix_custom.sass +15 -28
  67. data/app/controllers/concerns/spina/frontend.rb +9 -0
  68. data/app/controllers/spina/admin/accounts_controller.rb +9 -13
  69. data/app/controllers/spina/admin/attachments_controller.rb +0 -22
  70. data/app/controllers/spina/admin/images_controller.rb +1 -1
  71. data/app/controllers/spina/admin/media_folders_controller.rb +10 -0
  72. data/app/controllers/spina/admin/media_picker_controller.rb +18 -19
  73. data/app/controllers/spina/admin/pages_controller.rb +3 -7
  74. data/app/controllers/spina/admin/resources_controller.rb +9 -4
  75. data/app/controllers/spina/application_controller.rb +1 -1
  76. data/app/helpers/spina/admin/pages_helper.rb +22 -20
  77. data/app/helpers/spina/{files_helper.rb → attachments_helper.rb} +1 -1
  78. data/app/helpers/spina/images_helper.rb +14 -0
  79. data/app/helpers/spina/pages_helper.rb +23 -4
  80. data/app/models/concerns/spina/partable.rb +19 -7
  81. data/app/models/concerns/spina/translated_content.rb +19 -0
  82. data/app/models/spina/account.rb +3 -10
  83. data/app/models/spina/attachment.rb +0 -4
  84. data/app/models/spina/current.rb +1 -0
  85. data/app/models/spina/image.rb +0 -4
  86. data/app/models/spina/page.rb +19 -20
  87. data/app/models/spina/parts/attachment.rb +17 -0
  88. data/app/models/spina/parts/base.rb +12 -0
  89. data/app/models/spina/parts/image.rb +30 -0
  90. data/app/models/spina/parts/image_collection.rb +23 -0
  91. data/app/models/spina/parts/line.rb +7 -0
  92. data/app/models/spina/parts/option.rb +13 -0
  93. data/app/models/spina/parts/repeater.rb +10 -0
  94. data/app/models/spina/parts/repeater_content.rb +15 -0
  95. data/app/models/spina/parts/text.rb +7 -0
  96. data/app/models/spina/resource.rb +4 -12
  97. data/app/presenters/spina/content_presenter.rb +58 -0
  98. data/app/presenters/spina/menu_presenter.rb +2 -1
  99. data/app/views/layouts/spina/admin/admin.html.haml +3 -4
  100. data/app/views/layouts/spina/admin/pages.html.haml +5 -4
  101. data/app/views/spina/admin/accounts/_form.html.haml +13 -7
  102. data/app/views/spina/admin/accounts/analytics.html.haml +5 -3
  103. data/app/views/spina/admin/accounts/style.html.haml +26 -21
  104. data/app/views/spina/admin/images/index.html.haml +7 -5
  105. data/app/views/spina/admin/media_folders/_form.html.haml +5 -2
  106. data/app/views/spina/admin/media_folders/edit.js.erb +1 -0
  107. data/app/views/spina/admin/media_folders/show.html.haml +2 -1
  108. data/app/views/spina/admin/media_picker/_image.html.haml +3 -0
  109. data/app/views/spina/admin/media_picker/_media_picker.html.haml +32 -0
  110. data/app/views/spina/admin/media_picker/_media_picker_grid.html.haml +25 -0
  111. data/app/views/spina/admin/media_picker/infinite_scroll.js.erb +4 -4
  112. data/app/views/spina/admin/media_picker/select.js.erb +2 -0
  113. data/app/views/spina/admin/media_picker/show.html.haml +1 -0
  114. data/app/views/spina/admin/media_picker/show.js.erb +1 -1
  115. data/app/views/spina/admin/pages/_form.html.haml +10 -8
  116. data/app/views/spina/admin/pages/_form_advanced.html.haml +19 -17
  117. data/app/views/spina/admin/pages/_form_page_content.html.haml +14 -13
  118. data/app/views/spina/admin/pages/_form_page_seo.html.haml +15 -4
  119. data/app/views/spina/admin/pages/_page.html.haml +5 -3
  120. data/app/views/spina/admin/pages/_page_nested_list.html.haml +2 -3
  121. data/app/views/spina/admin/pages/index.html.haml +5 -4
  122. data/app/views/spina/admin/parts/attachments/_form.html.haml +6 -0
  123. data/app/views/spina/admin/parts/image_collections/_fields.html.haml +7 -0
  124. data/app/views/spina/admin/parts/image_collections/_form.html.haml +12 -0
  125. data/app/views/spina/admin/parts/images/_form.html.haml +18 -0
  126. data/app/views/spina/admin/parts/lines/_form.html.haml +2 -0
  127. data/app/views/spina/admin/parts/options/_form.html.haml +3 -0
  128. data/app/views/spina/admin/parts/repeaters/_fields.html.haml +15 -0
  129. data/app/views/spina/admin/parts/repeaters/_form.html.haml +18 -0
  130. data/app/views/spina/admin/parts/texts/_form.html.haml +6 -0
  131. data/app/views/spina/admin/resources/edit.html.haml +28 -12
  132. data/app/views/spina/admin/resources/show.html.haml +6 -3
  133. data/app/views/spina/admin/shared/_notifications.html.haml +4 -4
  134. data/config/locales/TH.yml +220 -205
  135. data/config/locales/bg.yml +219 -211
  136. data/config/locales/de.yml +218 -190
  137. data/config/locales/en.yml +218 -208
  138. data/config/locales/es.yml +219 -206
  139. data/config/locales/fr.yml +219 -190
  140. data/config/locales/id.yml +219 -189
  141. data/config/locales/it.yml +225 -152
  142. data/config/locales/nl.yml +220 -197
  143. data/config/locales/pl.yml +218 -185
  144. data/config/locales/pt-BR.yml +218 -205
  145. data/config/locales/ro.yml +258 -225
  146. data/config/locales/ru.yml +231 -171
  147. data/config/locales/sv.yml +218 -183
  148. data/config/locales/tr.yml +224 -151
  149. data/config/locales/zh-CN.yml +225 -175
  150. data/db/migrate/11_create_spina_resources.rb +0 -2
  151. data/db/migrate/12_add_url_title_to_spina_page_translations.rb +5 -0
  152. data/db/migrate/13_add_json_attributes_to_spina_accounts.rb +5 -0
  153. data/db/migrate/14_add_json_attributes_to_spina_pages.rb +5 -0
  154. data/db/migrate/15_add_slug_to_spina_resources.rb +5 -0
  155. data/lib/generators/spina/templates/app/views/demo/pages/demo.html.haml +13 -21
  156. data/lib/generators/spina/templates/app/views/demo/pages/homepage.html.haml +1 -1
  157. data/lib/generators/spina/templates/config/initializers/themes/default.rb +4 -4
  158. data/lib/generators/spina/templates/config/initializers/themes/demo.rb +32 -44
  159. data/lib/spina.rb +2 -0
  160. data/lib/spina/attr_json_spina_parts_model.rb +29 -0
  161. data/lib/spina/engine.rb +13 -3
  162. data/lib/spina/part.rb +19 -0
  163. data/lib/spina/theme.rb +1 -1
  164. data/lib/spina/version.rb +1 -1
  165. data/vendor/assets/javascripts/spina/sortable.js +2 -2
  166. metadata +71 -45
  167. data/app/assets/javascripts/spina/admin/account.coffee +0 -16
  168. data/app/models/concerns/spina/image_collectable.rb +0 -23
  169. data/app/models/concerns/spina/optionable.rb +0 -12
  170. data/app/models/concerns/spina/part.rb +0 -38
  171. data/app/models/spina/attachment_collection.rb +0 -20
  172. data/app/models/spina/image_collection.rb +0 -23
  173. data/app/models/spina/image_collections_image.rb +0 -6
  174. data/app/models/spina/layout_part.rb +0 -22
  175. data/app/models/spina/line.rb +0 -10
  176. data/app/models/spina/option.rb +0 -17
  177. data/app/models/spina/page_part.rb +0 -22
  178. data/app/models/spina/structure.rb +0 -14
  179. data/app/models/spina/structure_item.rb +0 -22
  180. data/app/models/spina/structure_part.rb +0 -20
  181. data/app/models/spina/text.rb +0 -10
  182. data/app/views/dummy/show.html.haml +0 -1
  183. data/app/views/spina/admin/attachments/_attachment_collection.html.haml +0 -2
  184. data/app/views/spina/admin/attachments/_select.html.haml +0 -17
  185. data/app/views/spina/admin/attachments/_select_collection.html.haml +0 -18
  186. data/app/views/spina/admin/attachments/insert.js.erb +0 -5
  187. data/app/views/spina/admin/attachments/insert_collection.js.coffee +0 -7
  188. data/app/views/spina/admin/attachments/select.js.erb +0 -2
  189. data/app/views/spina/admin/attachments/select_collection.js.erb +0 -2
  190. data/app/views/spina/admin/image_collections/_image_collection.html.haml +0 -5
  191. data/app/views/spina/admin/layout_partables/lines/_form.html.haml +0 -2
  192. data/app/views/spina/admin/partables/attachment_collections/_form.html.haml +0 -14
  193. data/app/views/spina/admin/partables/attachments/_form.html.haml +0 -13
  194. data/app/views/spina/admin/partables/image_collections/_form.html.haml +0 -16
  195. data/app/views/spina/admin/partables/images/_form.html.haml +0 -21
  196. data/app/views/spina/admin/partables/lines/_form.html.haml +0 -5
  197. data/app/views/spina/admin/partables/options/_form.html.haml +0 -7
  198. data/app/views/spina/admin/partables/photo_collections/_form.html.haml +0 -4
  199. data/app/views/spina/admin/partables/photos/_form.html.haml +0 -4
  200. data/app/views/spina/admin/partables/structures/_form.html.haml +0 -21
  201. data/app/views/spina/admin/partables/texts/_form.html.haml +0 -8
  202. data/app/views/spina/admin/structure_items/_fields.html.haml +0 -15
  203. data/app/views/spina/admin/structure_partables/attachment_collections/_form.html.haml +0 -14
  204. data/app/views/spina/admin/structure_partables/attachments/_form.html.haml +0 -13
@@ -1,16 +0,0 @@
1
- ready = ->
2
- if $('.account-theme').length > 0
3
- layout_parts = $('.account-theme').data('layout-parts')
4
- show_layout_parts(layout_parts)
5
-
6
- $(document).on 'turbolinks:load', ready
7
-
8
- $(document).on 'change', '.account-theme select', ->
9
- layout_parts = $(this).find('option:selected').data('layout-parts').split(" ")
10
- show_layout_parts(layout_parts)
11
-
12
- show_layout_parts = (layout_parts) ->
13
- $('tr.layout-part').hide()
14
- for layout_part in layout_parts
15
- if layout_part
16
- $('tr.layout-part[data-name=' + layout_part + ']').show()
@@ -1,23 +0,0 @@
1
- require 'active_support/concern'
2
-
3
- module Spina
4
- module ImageCollectable
5
- extend ActiveSupport::Concern
6
-
7
- included do
8
- attr_reader :image_tokens, :image_positions
9
- end
10
-
11
- def image_tokens=(ids)
12
- self.image_ids = ids.split(",")
13
- end
14
-
15
- def image_positions=(positions)
16
- positions = positions.split(",")
17
- self.image_collections_images.each do |image|
18
- image.position = positions.index(image.image.try(:id).try(:to_s))
19
- end
20
- end
21
-
22
- end
23
- end
@@ -1,12 +0,0 @@
1
- require 'active_support/concern'
2
-
3
- module Spina
4
- module Optionable
5
- extend ActiveSupport::Concern
6
-
7
- included do
8
- attr_accessor :options
9
- end
10
-
11
- end
12
- end
@@ -1,38 +0,0 @@
1
- require 'active_support/concern'
2
-
3
- module Spina
4
- module Part
5
- extend ActiveSupport::Concern
6
-
7
- included do
8
- attr_accessor :position
9
-
10
- validates :name, :title, :partable_type, presence: true
11
-
12
- after_save -> { partable.try(:save) }
13
-
14
- scope :sorted, -> { order(:position) }
15
- end
16
-
17
- def to_s
18
- name
19
- end
20
-
21
- def content
22
- (partable || partable_type.constantize.new).content
23
- end
24
-
25
- def value
26
- partable.try(:value)
27
- end
28
-
29
- def partable_attributes=(attributes)
30
- if partable.present?
31
- partable.assign_attributes(attributes)
32
- else
33
- self.partable = self.partable_type.constantize.new(attributes)
34
- end
35
- end
36
-
37
- end
38
- end
@@ -1,20 +0,0 @@
1
- module Spina
2
- class AttachmentCollection < ApplicationRecord
3
-
4
- has_one :page_part, as: :page_partable
5
- has_many :structure_parts, as: :structure_partable
6
- has_and_belongs_to_many :attachments, join_table: 'spina_attachment_collections_attachments'
7
-
8
- attr_reader :attachment_tokens
9
- accepts_nested_attributes_for :attachments, allow_destroy: true
10
-
11
- def content
12
- self
13
- end
14
-
15
- def attachment_tokens=(ids)
16
- self.attachment_ids = ids.split(",")
17
- end
18
-
19
- end
20
- end
@@ -1,23 +0,0 @@
1
- module Spina
2
- class ImageCollection < ApplicationRecord
3
- include ImageCollectable
4
-
5
- has_one :page_part, as: :page_partable
6
- has_many :image_collections_images, autosave: true
7
- has_many :images, through: :image_collections_images
8
- has_many :structure_parts, as: :structure_partable
9
-
10
- accepts_nested_attributes_for :images, allow_destroy: true
11
-
12
- def content
13
- self
14
- end
15
-
16
- alias_method :old_update, :update
17
- def update(attributes)
18
- self.images.clear if attributes.reject{|key,value| key == "id" }.blank?
19
- old_update(attributes)
20
- end
21
-
22
- end
23
- end
@@ -1,6 +0,0 @@
1
- module Spina
2
- class ImageCollectionsImage < ApplicationRecord
3
- belongs_to :image
4
- belongs_to :image_collection
5
- end
6
- end
@@ -1,22 +0,0 @@
1
- module Spina
2
- class LayoutPart < ApplicationRecord
3
- include Part
4
- include Optionable
5
-
6
- belongs_to :account
7
- belongs_to :layout_partable, polymorphic: true
8
-
9
- accepts_nested_attributes_for :layout_partable, allow_destroy: true
10
-
11
- validates_uniqueness_of :name, scope: :account_id
12
-
13
- alias_attribute :partable, :layout_partable
14
- alias_attribute :partable_type, :layout_partable_type
15
- alias_method :layout_partable_attributes=, :partable_attributes=
16
-
17
- def position(theme)
18
- layout_parts = theme.layout_template[:layout_parts]
19
- layout_parts.index { |layout_part| layout_part == self.name }.to_i
20
- end
21
- end
22
- end
@@ -1,10 +0,0 @@
1
- module Spina
2
- class Line < ApplicationRecord
3
- extend Mobility
4
- translates :content, fallbacks: true
5
-
6
- has_many :page_parts, as: :page_partable
7
- has_many :layout_parts, as: :layout_partable
8
- has_many :structure_parts, as: :structure_partable
9
- end
10
- end
@@ -1,17 +0,0 @@
1
- module Spina
2
- class Option < ApplicationRecord
3
- has_one :page_part, as: :page_partable
4
- has_one :layout_part, as: :layout_partable
5
- has_one :structure_part, as: :structure_partable
6
-
7
- def content
8
- I18n.t(['options',part.name,value].compact.join('.'))
9
- end
10
-
11
- private
12
-
13
- def part
14
- page_part || layout_part || structure_part
15
- end
16
- end
17
- end
@@ -1,22 +0,0 @@
1
- module Spina
2
- class PagePart < ApplicationRecord
3
- include Part
4
- include Optionable
5
-
6
- belongs_to :page, inverse_of: :page_parts
7
- belongs_to :page_partable, polymorphic: true, optional: true
8
-
9
- accepts_nested_attributes_for :page_partable, allow_destroy: true
10
-
11
- validates :name, uniqueness: {scope: :page_id}
12
-
13
- alias_attribute :partable, :page_partable
14
- alias_attribute :partable_id, :page_partable_id
15
- alias_attribute :partable_type, :page_partable_type
16
- alias_method :page_partable_attributes=, :partable_attributes=
17
-
18
- def position(theme)
19
- page.view_template_config(theme)[:page_parts].index { |page_part| page_part == self.name }.to_i
20
- end
21
- end
22
- end
@@ -1,14 +0,0 @@
1
- module Spina
2
- class Structure < ApplicationRecord
3
- has_one :page_part, as: :page_partable
4
- has_many :structure_items
5
-
6
- after_save -> { structure_items.each(&:save) }
7
-
8
- accepts_nested_attributes_for :structure_items, allow_destroy: true
9
-
10
- def content
11
- self
12
- end
13
- end
14
- end
@@ -1,22 +0,0 @@
1
- module Spina
2
- class StructureItem < ApplicationRecord
3
- include Partable
4
-
5
- before_validation :ensure_position
6
- belongs_to :structure, optional: true
7
- has_many :structure_parts, dependent: :destroy
8
-
9
- scope :sorted_by_structure, -> { order(:position) }
10
-
11
- after_save -> { structure_parts.each(&:save) }
12
-
13
- validates_presence_of :position
14
- accepts_nested_attributes_for :structure_parts, allow_destroy: true
15
-
16
- alias_attribute :parts, :structure_parts
17
-
18
- def ensure_position
19
- self.position ||= Time.now.to_i
20
- end
21
- end
22
- end
@@ -1,20 +0,0 @@
1
- module Spina
2
- class StructurePart < ApplicationRecord
3
- include Part
4
- include ImageCollectable
5
- include Optionable
6
-
7
- belongs_to :structure_item, optional: true
8
- belongs_to :structure_partable, polymorphic: true, optional: true
9
-
10
- accepts_nested_attributes_for :structure_partable, allow_destroy: true
11
-
12
- validates :structure_partable_type, presence: true
13
- validates :name, uniqueness: {scope: :structure_item_id}
14
-
15
- alias_attribute :partable, :structure_partable
16
- alias_attribute :partable_id, :structure_partable_id
17
- alias_attribute :partable_type, :structure_partable_type
18
- alias_method :structure_partable_attributes=, :partable_attributes=
19
- end
20
- end
@@ -1,10 +0,0 @@
1
- module Spina
2
- class Text < ApplicationRecord
3
- extend Mobility
4
- translates :content, fallbacks: true
5
-
6
- has_many :page_parts, as: :page_partable
7
- has_many :layout_parts, as: :layout_partable
8
- has_many :structure_parts, as: :structure_partable
9
- end
10
- end
@@ -1 +0,0 @@
1
- hoi
@@ -1,2 +0,0 @@
1
- - attachments.each do |attachment|
2
- .attachment= attachment.name
@@ -1,17 +0,0 @@
1
- .modal.modal-large
2
- %header
3
- = link_to "", "#", class: 'close_modal', data: {dismiss: 'modal', icon: 'm'}
4
- %h3= t('spina.attachments.insert')
5
-
6
- %section
7
- = form_tag spina.insert_admin_attachments_path(params[:page_part_id]), remote: true, class: 'document-select' do
8
- = hidden_field_tag :hidden_field_id, @hidden_field_id
9
-
10
- %ul
11
- - @attachments.each do |attachment|
12
- %li.item
13
- = radio_button_tag :attachment_id, attachment.id, attachment.id == @selected_attachment_id
14
- = label_tag "attachment_id_#{attachment.id}", attachment.name
15
- %footer
16
- = link_to t('spina.cancel'), "#", data: {dismiss: 'modal'}
17
- = button_tag t('spina.attachments.insert'), type: 'submit', class: 'primary', data: {icon: 't '}
@@ -1,18 +0,0 @@
1
- .modal.modal-large
2
- %header
3
- = link_to "", "#", class: 'close_modal', data: {dismiss: 'modal', icon: 'm'}
4
- %h3= t('spina.attachments.insert_multiple')
5
-
6
- %section
7
- = form_tag spina.insert_collection_admin_attachments_path(params[:page_part_id]), remote: true, class: 'document-select' do
8
- .table-container
9
- %table.table.table-clickable-tr{style: 'margin-top: 0'}
10
- - @attachments.each do |attachment|
11
- %tr
12
- %td
13
- .form-checkbox
14
- = check_box_tag 'attachment_ids[]', attachment.id, attachment.id.in?(@selected_attachment_ids), id: "attachment_id_#{attachment.id}"
15
- = label_tag "attachment_id_#{attachment.id}", attachment.name
16
- %footer
17
- = link_to t('spina.cancel'), "#", data: {dismiss: 'modal'}
18
- = button_tag t('spina.attachments.insert_multiple'), type: 'submit', class: 'primary', data: {icon: 't '}
@@ -1,5 +0,0 @@
1
- var hidden_input = $("input[name='<%= j params[:page_part_id] %>[partable_id]'], input[name='<%= j params[:page_part_id] %>[structure_partable_id]'], input[data-hidden-field-id='<%= j params[:hidden_field_id] %>']");
2
- hidden_input.parents('.media_picker').find('.attachment').remove();
3
- hidden_input.parents('.media_picker').append("<div class='attachment'><%= @attachment.name %></div>");
4
- hidden_input.val("<%= @attachment.id %>");
5
- $.hideModal();
@@ -1,7 +0,0 @@
1
- hidden_input = $("input[name='<%= j params[:page_part_id] %>[attachment_tokens]']")
2
- attachment_collection = $("<%= j render partial: 'attachment_collection', locals: {attachments: @attachments} %>")
3
-
4
- hidden_input.parents('.media_picker').find('.attachment').remove()
5
- hidden_input.parents('.media_picker').append(attachment_collection)
6
- hidden_input.val("<%= @attachments.map(&:id).join(',') %>")
7
- $.hideModal()
@@ -1,2 +0,0 @@
1
- var modal = $("<%= j render 'select' %>");
2
- modal.modal();
@@ -1,2 +0,0 @@
1
- var modal = $("<%= j render 'select_collection' %>");
2
- modal.modal();
@@ -1,5 +0,0 @@
1
- - if images.present?
2
- %ul.sortable-grid
3
- - images.each do |image|
4
- %li.image{data: {image_id: image.id}}
5
- = image_tag variant(image.file, resize: '300x300^', crop: "300x300+0+0")
@@ -1,2 +0,0 @@
1
- = f.fields_for :layout_partable, f.object.layout_partable do |ff|
2
- = ff.text_field :content, placeholder: f.object.title
@@ -1,14 +0,0 @@
1
- .horizontal-form-label
2
- = f.object.title
3
- .horizontal-form-content
4
- = f.fields_for :partable, f.object.partable do |ff|
5
- = link_to select_collection_admin_attachments_path(ff.object_name, selected_attachment_ids: ff.object.attachment_ids), remote: true, class: 'media_picker clearfix' do
6
- .placeholder
7
- %span.button.button-small.button-round
8
- %i.icon.icon-dots
9
- = t('spina.choose_from_library')
10
- - if ff.object.attachments.any?
11
- - ff.object.attachments.each do |attachment|
12
- .attachment= attachment.name
13
-
14
- = ff.hidden_field :attachment_tokens, value: ff.object.attachment_ids.join(",")
@@ -1,13 +0,0 @@
1
- .horizontal-form-label
2
- = f.object.title
3
- .horizontal-form-content
4
- = link_to select_admin_attachments_path(f.object_name, selected_attachment_id: f.object.partable.try(:id)), remote: true, class: 'media_picker clearfix' do
5
- .placeholder
6
- %span.button.button-small.button-round
7
- %i.icon.icon-dots
8
- = t('spina.choose_from_library')
9
-
10
- - if f.object.partable && f.object.partable.file.attached?
11
- .attachment= f.object.partable.name
12
-
13
- = f.hidden_field :partable_id
@@ -1,16 +0,0 @@
1
- .horizontal-form-label
2
- = f.object.title
3
- .horizontal-form-content
4
- = f.fields_for :partable, f.object.partable do |ff|
5
- = link_to admin_media_picker_path(selected_ids: ff.object.image_ids, hidden_field_id: "media_picker_#{ff.object.object_id}", multiple: true), remote: true, class: 'media_picker clearfix' do
6
- .placeholder
7
- %span.button.button-small.button-round
8
- %i.icon.icon-dots
9
- =t 'spina.images.choose_images'
10
-
11
- .image-collection
12
- - if ff.object.images.any?
13
- = render 'spina/admin/image_collections/image_collection', images: ff.object.images.sorted_by_image_collection
14
-
15
- = ff.hidden_field :image_tokens, value: ff.object.image_ids.join(","), data: {hidden_field_id: "media_picker_#{ff.object.object_id}"}
16
- = ff.hidden_field :image_positions, value: ff.object.images.sorted_by_image_collection.pluck(:image_id).join(","), class: 'image-positions'
@@ -1,21 +0,0 @@
1
- .horizontal-form-label
2
- = f.object.title
3
- .horizontal-form-content{data: {controller: "image-form"}}
4
- = link_to admin_media_picker_path(selected_ids: [f.object.partable_id], hidden_field_id: "media_picker_#{f.object.object_id}"), remote: true, class: 'media_picker clearfix' do
5
- .placeholder
6
- %span.button.button-small.button-round
7
- %i.icon.icon-dots
8
- =t 'spina.images.choose_image'
9
-
10
- - if f.object.partable.file.attached?
11
- %br/
12
-
13
- %span.button.button-small.button-round{data: {action: "click->image-form#remove", target: "image-form.button"}}
14
- %i.icon.icon-trash
15
- =t 'spina.images.remove_image'
16
-
17
- - if f.object.partable.file.attached?
18
- .image{data: {target: 'image-form.image'}}
19
- = image_tag variant(f.object.partable.file, resize: "300x300^", crop: "300x300+0+0")
20
-
21
- = f.hidden_field :partable_id, data: {hidden_field_id: "media_picker_#{f.object.object_id}", target: 'image-form.field'}