comfortable_mexican_sofa 2.0.2 → 2.0.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (216) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +95 -4
  3. data/.travis.yml +2 -1
  4. data/CONTRIBUTING.md +8 -5
  5. data/Gemfile +9 -9
  6. data/Rakefile +1 -1
  7. data/app/assets/javascripts/comfy/admin/cms/base.js.coffee +1 -0
  8. data/app/assets/stylesheets/comfy/admin/cms/base.sass +14 -4
  9. data/app/controllers/application_controller.rb +2 -2
  10. data/app/controllers/comfy/admin/base_controller.rb +1 -1
  11. data/app/controllers/comfy/admin/cms/base_controller.rb +7 -6
  12. data/app/controllers/comfy/admin/cms/categories_controller.rb +2 -1
  13. data/app/controllers/comfy/admin/cms/files_controller.rb +32 -29
  14. data/app/controllers/comfy/admin/cms/layouts_controller.rb +10 -9
  15. data/app/controllers/comfy/admin/cms/pages_controller.rb +31 -27
  16. data/app/controllers/comfy/admin/cms/revisions/base_controller.rb +5 -4
  17. data/app/controllers/comfy/admin/cms/revisions/layout_controller.rb +2 -1
  18. data/app/controllers/comfy/admin/cms/revisions/page_controller.rb +9 -3
  19. data/app/controllers/comfy/admin/cms/revisions/snippet_controller.rb +2 -1
  20. data/app/controllers/comfy/admin/cms/revisions/translation_controller.rb +9 -3
  21. data/app/controllers/comfy/admin/cms/sites_controller.rb +10 -9
  22. data/app/controllers/comfy/admin/cms/snippets_controller.rb +10 -9
  23. data/app/controllers/comfy/admin/cms/translations_controller.rb +15 -14
  24. data/app/controllers/comfy/cms/assets_controller.rb +4 -3
  25. data/app/controllers/comfy/cms/base_controller.rb +12 -11
  26. data/app/controllers/comfy/cms/content_controller.rb +8 -7
  27. data/app/controllers/concerns/comfy/paginate.rb +2 -1
  28. data/app/helpers/comfy/cms_helper.rb +6 -3
  29. data/app/models/comfy/cms/categorization.rb +2 -1
  30. data/app/models/comfy/cms/category.rb +3 -2
  31. data/app/models/comfy/cms/file.rb +9 -7
  32. data/app/models/comfy/cms/fragment.rb +8 -6
  33. data/app/models/comfy/cms/layout.rb +24 -24
  34. data/app/models/comfy/cms/page.rb +51 -32
  35. data/app/models/comfy/cms/revision.rb +2 -1
  36. data/app/models/comfy/cms/site.rb +27 -26
  37. data/app/models/comfy/cms/snippet.rb +7 -5
  38. data/app/models/comfy/cms/translation.rb +6 -4
  39. data/app/models/concerns/comfy/cms/with_categories.rb +9 -7
  40. data/app/models/concerns/comfy/cms/with_fragments.rb +15 -13
  41. data/app/views/comfy/admin/cms/categories/_categories.html.haml +1 -1
  42. data/app/views/comfy/admin/cms/files/_file.html.haml +3 -3
  43. data/app/views/comfy/admin/cms/files/_modal.html.haml +2 -2
  44. data/app/views/comfy/admin/cms/{pages/_fragment_attachments.html.haml → fragments/_form_fragment_attachments.html.haml} +0 -0
  45. data/app/views/comfy/admin/cms/{pages → fragments}/_form_fragments.html.haml +0 -0
  46. data/app/views/comfy/admin/cms/layouts/_index_branch.html.haml +2 -2
  47. data/app/views/comfy/admin/cms/pages/_form.html.haml +7 -7
  48. data/app/views/comfy/admin/cms/pages/_index_branch.html.haml +16 -15
  49. data/app/views/comfy/admin/cms/pages/form_fragments.js.erb +1 -1
  50. data/app/views/comfy/admin/cms/pages/toggle_branch.js.erb +1 -1
  51. data/app/views/comfy/admin/cms/snippets/index.html.haml +3 -3
  52. data/app/views/comfy/admin/cms/translations/_form.html.haml +1 -1
  53. data/app/views/comfy/admin/cms/translations/form_fragments.js.erb +1 -1
  54. data/app/views/layouts/comfy/admin/cms/_body.html.haml +1 -4
  55. data/app/views/layouts/comfy/admin/cms.html.haml +1 -1
  56. data/bin/bundle +3 -0
  57. data/bin/rails +4 -0
  58. data/bin/rake +4 -0
  59. data/bin/setup +36 -0
  60. data/bin/update +31 -0
  61. data/bin/yarn +11 -0
  62. data/comfortable_mexican_sofa.gemspec +14 -14
  63. data/config/application.rb +4 -3
  64. data/config/boot.rb +3 -3
  65. data/config/cms_routes.rb +1 -1
  66. data/config/environment.rb +1 -1
  67. data/config/environments/development.rb +2 -2
  68. data/config/environments/test.rb +1 -1
  69. data/config/initializers/comfortable_mexican_sofa.rb +2 -5
  70. data/config/locales/cs.yml +2 -1
  71. data/config/locales/da.yml +2 -1
  72. data/config/locales/de.yml +2 -1
  73. data/config/locales/en.yml +2 -1
  74. data/config/locales/es.yml +2 -1
  75. data/config/locales/fr.yml +2 -1
  76. data/config/locales/it.yml +2 -1
  77. data/config/locales/ja.yml +2 -1
  78. data/config/locales/nb.yml +2 -1
  79. data/config/locales/nl.yml +2 -1
  80. data/config/locales/pl.yml +2 -1
  81. data/config/locales/pt-BR.yml +2 -1
  82. data/config/locales/ru.yml +2 -1
  83. data/config/locales/sk.yml +2 -1
  84. data/config/locales/sv.yml +2 -1
  85. data/config/locales/tr.yml +2 -1
  86. data/config/locales/uk.yml +2 -1
  87. data/config/locales/zh-CN.yml +2 -1
  88. data/config/locales/zh-TW.yml +2 -1
  89. data/config.ru +1 -1
  90. data/lib/comfortable_mexican_sofa/access_control/admin_authentication.rb +2 -1
  91. data/lib/comfortable_mexican_sofa/access_control/admin_authorization.rb +2 -0
  92. data/lib/comfortable_mexican_sofa/access_control/public_authentication.rb +3 -1
  93. data/lib/comfortable_mexican_sofa/access_control/public_authorization.rb +2 -0
  94. data/lib/comfortable_mexican_sofa/configuration.rb +27 -29
  95. data/lib/comfortable_mexican_sofa/content/block.rb +2 -1
  96. data/lib/comfortable_mexican_sofa/content/params_parser.rb +22 -21
  97. data/lib/comfortable_mexican_sofa/content/renderer.rb +10 -8
  98. data/lib/comfortable_mexican_sofa/content/tag.rb +1 -0
  99. data/lib/comfortable_mexican_sofa/content/tags/asset.rb +4 -3
  100. data/lib/comfortable_mexican_sofa/content/tags/checkbox.rb +3 -2
  101. data/lib/comfortable_mexican_sofa/content/tags/date.rb +4 -3
  102. data/lib/comfortable_mexican_sofa/content/tags/datetime.rb +4 -3
  103. data/lib/comfortable_mexican_sofa/content/tags/file.rb +15 -13
  104. data/lib/comfortable_mexican_sofa/content/tags/file_link.rb +8 -7
  105. data/lib/comfortable_mexican_sofa/content/tags/files.rb +15 -13
  106. data/lib/comfortable_mexican_sofa/content/tags/fragment.rb +7 -6
  107. data/lib/comfortable_mexican_sofa/content/tags/helper.rb +2 -1
  108. data/lib/comfortable_mexican_sofa/content/tags/markdown.rb +5 -4
  109. data/lib/comfortable_mexican_sofa/content/tags/number.rb +4 -3
  110. data/lib/comfortable_mexican_sofa/content/tags/partial.rb +1 -0
  111. data/lib/comfortable_mexican_sofa/content/tags/snippet.rb +3 -2
  112. data/lib/comfortable_mexican_sofa/content/tags/template.rb +1 -0
  113. data/lib/comfortable_mexican_sofa/content/tags/text.rb +4 -3
  114. data/lib/comfortable_mexican_sofa/content/tags/textarea.rb +4 -3
  115. data/lib/comfortable_mexican_sofa/content/tags/wysiwyg.rb +4 -3
  116. data/lib/comfortable_mexican_sofa/content.rb +21 -21
  117. data/lib/comfortable_mexican_sofa/engine.rb +17 -15
  118. data/lib/comfortable_mexican_sofa/error.rb +12 -6
  119. data/lib/comfortable_mexican_sofa/extensions/acts_as_tree.rb +17 -11
  120. data/lib/comfortable_mexican_sofa/extensions/has_revisions.rb +14 -13
  121. data/lib/comfortable_mexican_sofa/form_builder.rb +2 -2
  122. data/lib/comfortable_mexican_sofa/render_methods.rb +74 -76
  123. data/lib/comfortable_mexican_sofa/routes/cms.rb +4 -4
  124. data/lib/comfortable_mexican_sofa/routes/cms_admin.rb +2 -1
  125. data/lib/comfortable_mexican_sofa/routing.rb +4 -2
  126. data/lib/comfortable_mexican_sofa/seeds/file/exporter.rb +7 -6
  127. data/lib/comfortable_mexican_sofa/seeds/file/importer.rb +9 -9
  128. data/lib/comfortable_mexican_sofa/seeds/layout/exporter.rb +8 -7
  129. data/lib/comfortable_mexican_sofa/seeds/layout/importer.rb +11 -10
  130. data/lib/comfortable_mexican_sofa/seeds/page/exporter.rb +25 -23
  131. data/lib/comfortable_mexican_sofa/seeds/page/importer.rb +47 -43
  132. data/lib/comfortable_mexican_sofa/seeds/snippet/exporter.rb +7 -6
  133. data/lib/comfortable_mexican_sofa/seeds/snippet/importer.rb +7 -6
  134. data/lib/comfortable_mexican_sofa/seeds.rb +16 -9
  135. data/lib/comfortable_mexican_sofa/version.rb +4 -2
  136. data/lib/comfortable_mexican_sofa/view_hooks.rb +10 -9
  137. data/lib/comfortable_mexican_sofa.rb +30 -30
  138. data/lib/generators/comfy/cms/assets_generator.rb +6 -4
  139. data/lib/generators/comfy/cms/cms_generator.rb +14 -14
  140. data/lib/generators/comfy/cms/controllers_generator.rb +5 -3
  141. data/lib/generators/comfy/cms/models_generator.rb +5 -3
  142. data/lib/generators/comfy/cms/views_generator.rb +5 -3
  143. data/lib/generators/comfy/scaffold/scaffold_generator.rb +19 -18
  144. data/lib/tasks/cms_seeds.rake +4 -5
  145. data/test/controllers/comfy/admin/cms/base_controller_test.rb +4 -3
  146. data/test/controllers/comfy/admin/cms/categories_controller_test.rb +19 -18
  147. data/test/controllers/comfy/admin/cms/files_controller_test.rb +19 -19
  148. data/test/controllers/comfy/admin/cms/layouts_controller_test.rb +33 -32
  149. data/test/controllers/comfy/admin/cms/pages_controller_test.rb +99 -98
  150. data/test/controllers/comfy/admin/cms/revisions/layout_controller_test.rb +9 -9
  151. data/test/controllers/comfy/admin/cms/revisions/page_controller_test.rb +6 -6
  152. data/test/controllers/comfy/admin/cms/revisions/snippet_controller_test.rb +9 -8
  153. data/test/controllers/comfy/admin/cms/revisions/translation_controller_test.rb +6 -7
  154. data/test/controllers/comfy/admin/cms/sites_controller_test.rb +31 -30
  155. data/test/controllers/comfy/admin/cms/snippets_controller_test.rb +38 -37
  156. data/test/controllers/comfy/admin/cms/translations_controller_test.rb +21 -20
  157. data/test/controllers/comfy/cms/assets_controller_test.rb +14 -13
  158. data/test/controllers/comfy/cms/content_controller_test.rb +58 -57
  159. data/test/gemfiles/Gemfile.rails.5.2 +5 -4
  160. data/test/generators/cms_assets_generator_test.rb +6 -4
  161. data/test/generators/cms_controllers_generator_test.rb +7 -5
  162. data/test/generators/cms_generator_test.rb +12 -10
  163. data/test/generators/cms_models_generator_test.rb +7 -5
  164. data/test/generators/cms_views_generator_test.rb +6 -4
  165. data/test/generators/scaffold_generator_test.rb +18 -16
  166. data/test/helpers/cms_helper_test.rb +5 -2
  167. data/test/integration/access_control_test.rb +29 -20
  168. data/test/integration/i18n_test.rb +8 -7
  169. data/test/integration/js_variables_test.rb +2 -1
  170. data/test/integration/render_cms_test.rb +93 -88
  171. data/test/integration/routing_test.rb +4 -3
  172. data/test/integration/seeds_test.rb +21 -22
  173. data/test/integration/sites_test.rb +26 -25
  174. data/test/integration/view_hooks_test.rb +15 -14
  175. data/test/lib/configuration_test.rb +13 -15
  176. data/test/lib/content/block_test.rb +1 -1
  177. data/test/lib/content/params_parser_test.rb +11 -10
  178. data/test/lib/content/renderer_test.rb +16 -11
  179. data/test/lib/content/tag_test.rb +7 -3
  180. data/test/lib/content/tags/asset_test.rb +4 -3
  181. data/test/lib/content/tags/checkbox_test.rb +2 -1
  182. data/test/lib/content/tags/date_test.rb +2 -1
  183. data/test/lib/content/tags/datetime_test.rb +2 -1
  184. data/test/lib/content/tags/file_link_test.rb +3 -2
  185. data/test/lib/content/tags/file_test.rb +3 -2
  186. data/test/lib/content/tags/files_test.rb +4 -3
  187. data/test/lib/content/tags/fragment_test.rb +2 -1
  188. data/test/lib/content/tags/helper_test.rb +4 -3
  189. data/test/lib/content/tags/markdown_test.rb +2 -1
  190. data/test/lib/content/tags/number_test.rb +2 -1
  191. data/test/lib/content/tags/partial_test.rb +4 -3
  192. data/test/lib/content/tags/snippet_test.rb +2 -1
  193. data/test/lib/content/tags/template_test.rb +2 -1
  194. data/test/lib/content/tags/text_test.rb +2 -1
  195. data/test/lib/content/tags/textarea_test.rb +2 -1
  196. data/test/lib/content/tags/wysiwyg_test.rb +2 -1
  197. data/test/lib/revisions_test.rb +44 -42
  198. data/test/lib/seeds/files_test.rb +30 -29
  199. data/test/lib/seeds/layouts_test.rb +13 -12
  200. data/test/lib/seeds/pages_test.rb +32 -29
  201. data/test/lib/seeds/snippets_test.rb +21 -20
  202. data/test/lib/seeds_test.rb +9 -8
  203. data/test/models/categorization_test.rb +10 -9
  204. data/test/models/category_test.rb +1 -1
  205. data/test/models/file_test.rb +1 -1
  206. data/test/models/fragment_test.rb +11 -10
  207. data/test/models/layout_test.rb +71 -70
  208. data/test/models/page_test.rb +170 -159
  209. data/test/models/site_test.rb +17 -16
  210. data/test/models/snippet_test.rb +1 -0
  211. data/test/models/translation_test.rb +2 -1
  212. data/test/tasks/cms_seeds_test.rb +3 -2
  213. data/test/test_helper.rb +42 -40
  214. metadata +55 -51
  215. data/.rubocop_todo.yml +0 -974
  216. data/script/rails +0 -6
@@ -1,4 +1,3 @@
1
- # encoding: utf-8
2
1
  zh-CN:
3
2
  activerecord:
4
3
  models:
@@ -146,6 +145,8 @@ zh-CN:
146
145
  cancel: 取消
147
146
  update: 更新页面
148
147
  choose_link: Select page...
148
+
149
+ fragments:
149
150
  form_fragments:
150
151
  no_tags: |-
151
152
  布局中没有定义内容标签。<br/>
@@ -1,4 +1,3 @@
1
- # encoding: utf-8
2
1
  zh-TW:
3
2
  activerecord:
4
3
  models:
@@ -146,6 +145,8 @@ zh-TW:
146
145
  cancel: 取消
147
146
  update: 更新頁面
148
147
  choose_link: 選擇頁面...
148
+
149
+ fragments:
149
150
  form_fragments:
150
151
  no_tags: |-
151
152
  佈局中沒有定義內容標記。<br/>
data/config.ru CHANGED
@@ -1,4 +1,4 @@
1
1
  # This file is used by Rack-based servers to start the application.
2
2
 
3
- require ::File.expand_path('../config/environment', __FILE__)
3
+ require ::File.expand_path("../config/environment", __FILE__)
4
4
  run ComfortableMexicanSofa::Application
@@ -1,11 +1,11 @@
1
1
  module ComfortableMexicanSofa::AccessControl
2
2
  module AdminAuthentication
3
+
3
4
  # Set username and password in config/initializers/comfortable_mexican_sofa.rb
4
5
  # Like this:
5
6
  # ComfortableMexicanSofa::AccessControl::AdminAuthentication.username = 'myname'
6
7
  # ComfortableMexicanSofa::AccessControl::AdminAuthentication.password = 'mypassword'
7
8
 
8
-
9
9
  mattr_accessor :username,
10
10
  :password
11
11
 
@@ -17,5 +17,6 @@ module ComfortableMexicanSofa::AccessControl
17
17
  self.username == username && self.password == password
18
18
  end
19
19
  end
20
+
20
21
  end
21
22
  end
@@ -1,8 +1,10 @@
1
1
  module ComfortableMexicanSofa::AccessControl
2
2
  module AdminAuthorization
3
+
3
4
  # By default there's no authorization of any kind
4
5
  def authorize
5
6
  true
6
7
  end
8
+
7
9
  end
8
10
  end
@@ -1,8 +1,10 @@
1
1
  module ComfortableMexicanSofa::AccessControl
2
2
  module PublicAuthentication
3
+
3
4
  # By defaut all published pages are accessible
4
5
  def authenticate
5
6
  true
6
7
  end
8
+
7
9
  end
8
- end
10
+ end
@@ -1,8 +1,10 @@
1
1
  module ComfortableMexicanSofa::AccessControl
2
2
  module PublicAuthorization
3
+
3
4
  # By default there's no authorization of any kind
4
5
  def authorize
5
6
  true
6
7
  end
8
+
7
9
  end
8
10
  end
@@ -1,5 +1,3 @@
1
- # encoding: utf-8
2
-
3
1
  class ComfortableMexicanSofa::Configuration
4
2
 
5
3
  # Don't like ComfortableMexicanSofa? Set it to whatever you like. :(
@@ -77,38 +75,38 @@ class ComfortableMexicanSofa::Configuration
77
75
 
78
76
  # Configuration defaults
79
77
  def initialize
80
- @cms_title = 'ComfortableMexicanSofa CMS Engine'
81
- @base_controller = 'ApplicationController'
82
- @admin_auth = 'ComfortableMexicanSofa::AccessControl::AdminAuthentication'
83
- @admin_authorization = 'ComfortableMexicanSofa::AccessControl::AdminAuthorization'
84
- @public_auth = 'ComfortableMexicanSofa::AccessControl::PublicAuthentication'
85
- @public_authorization = 'ComfortableMexicanSofa::AccessControl::PublicAuthorization'
78
+ @cms_title = "ComfortableMexicanSofa CMS Engine"
79
+ @base_controller = "ApplicationController"
80
+ @admin_auth = "ComfortableMexicanSofa::AccessControl::AdminAuthentication"
81
+ @admin_authorization = "ComfortableMexicanSofa::AccessControl::AdminAuthorization"
82
+ @public_auth = "ComfortableMexicanSofa::AccessControl::PublicAuthentication"
83
+ @public_authorization = "ComfortableMexicanSofa::AccessControl::PublicAuthorization"
86
84
  @seed_data_path = nil
87
- @admin_route_redirect = ''
85
+ @admin_route_redirect = ""
88
86
  @enable_sitemap = true
89
87
  @enable_seeds = false
90
- @seeds_path = File.expand_path('db/cms_seeds', Rails.root)
88
+ @seeds_path = File.expand_path("db/cms_seeds", Rails.root)
91
89
  @revisions_limit = 25
92
90
  @locales = {
93
- 'cs' => 'Česky',
94
- 'da' => 'Dansk',
95
- 'de' => 'Deutsch',
96
- 'en' => 'English',
97
- 'es' => 'Español',
98
- 'fr' => 'Français',
99
- 'it' => 'Italiano',
100
- 'ja' => '日本語',
101
- 'nb' => 'Norsk',
102
- 'nl' => 'Nederlands',
103
- 'pl' => 'Polski',
104
- 'pt-BR' => 'Português Brasileiro',
105
- 'ru' => 'Русский',
106
- 'sk' => 'Slovensky',
107
- 'sv' => 'Svenska',
108
- 'tr' => 'Türkçe',
109
- 'uk' => 'Українська',
110
- 'zh-CN' => '简体中文',
111
- 'zh-TW' => '正體中文'
91
+ "cs" => "Česky",
92
+ "da" => "Dansk",
93
+ "de" => "Deutsch",
94
+ "en" => "English",
95
+ "es" => "Español",
96
+ "fr" => "Français",
97
+ "it" => "Italiano",
98
+ "ja" => "日本語",
99
+ "nb" => "Norsk",
100
+ "nl" => "Nederlands",
101
+ "pl" => "Polski",
102
+ "pt-BR" => "Português Brasileiro",
103
+ "ru" => "Русский",
104
+ "sk" => "Slovensky",
105
+ "sv" => "Svenska",
106
+ "tr" => "Türkçe",
107
+ "uk" => "Українська",
108
+ "zh-CN" => "简体中文",
109
+ "zh-TW" => "正體中文"
112
110
  }
113
111
  @admin_locale = nil
114
112
  @admin_cache_sweeper = nil
@@ -3,9 +3,10 @@
3
3
  # {{cms:block}} some content {{cms:end_block}}
4
4
  class ComfortableMexicanSofa::Content::Block < ComfortableMexicanSofa::Content::Tag
5
5
 
6
- attr_accessor :nodes
6
+ attr_writer :nodes
7
7
 
8
8
  def nodes
9
9
  @nodes ||= []
10
10
  end
11
+
11
12
  end
@@ -2,23 +2,22 @@ module ComfortableMexicanSofa::Content::ParamsParser
2
2
 
3
3
  class Error < StandardError; end
4
4
 
5
- SINGLE_STRING_LITERAL = /'[^\']*'/
6
- DOUBLE_STRING_LITERAL = /"[^\"]*"/
7
- IDENTIFIER = /[a-z0-9][\w\-\/.]*/i
8
- COLUMN = /\:/
9
- COMMA = /\,/
5
+ SINGLE_STRING_LITERAL = %r{'[^']*'}
6
+ DOUBLE_STRING_LITERAL = %r{"[^"]*"}
7
+ IDENTIFIER = %r{[a-z0-9][\w\-/.]*}i
8
+ COLUMN = %r{:}
9
+ COMMA = %r{,}
10
10
 
11
11
  def self.parse(text)
12
12
  parameterize(slice(tokenize(text.to_s)))
13
13
  end
14
14
 
15
15
  def self.parameterize(token_groups)
16
- params = [ ]
16
+ params = []
17
17
  token_groups.each do |tokens|
18
- case
19
- when tokens.count == 1
18
+ if tokens.count == 1
20
19
  collect_param_for_string!(params, tokens[0])
21
- when tokens.count == 3
20
+ elsif tokens.count == 3
22
21
  collect_param_for_hash!(params, tokens)
23
22
  else
24
23
  raise Error, "Unexpected tokens found: #{tokens}"
@@ -36,7 +35,7 @@ module ComfortableMexicanSofa::Content::ParamsParser
36
35
  def self.collect_param_for_hash!(params, tokens)
37
36
  key, col, val = tokens
38
37
  key_type, key_value = key
39
- col_type, _ = col
38
+ col_type, = col
40
39
  val_type, val_value = val
41
40
 
42
41
  unless key_type == :string && col_type == :column && val_type == :string
@@ -50,10 +49,11 @@ module ComfortableMexicanSofa::Content::ParamsParser
50
49
 
51
50
  # grouping tokens based on the comma and also removing comma tokens
52
51
  def self.slice(tokens)
53
- tokens.slice_after do |token|
52
+ slices = tokens.slice_after do |token|
54
53
  token[0] == :comma
55
- end.map do |expression|
56
- expression.reject{|t| t[0] == :comma}
54
+ end
55
+ slices.map do |expression|
56
+ expression.reject { |t| t[0] == :comma }
57
57
  end
58
58
  end
59
59
 
@@ -62,19 +62,20 @@ module ComfortableMexicanSofa::Content::ParamsParser
62
62
  tokens = []
63
63
  ss = StringScanner.new(args_string)
64
64
  until ss.eos?
65
- ss.skip(/\s*/)
65
+ ss.skip(%r{\s*})
66
66
  break if ss.eos?
67
- token = case
68
- when t = ss.scan(SINGLE_STRING_LITERAL) then [:string, t[1...t.size - 1]]
69
- when t = ss.scan(DOUBLE_STRING_LITERAL) then [:string, t[1...t.size - 1]]
70
- when t = ss.scan(IDENTIFIER) then [:string, t]
71
- when t = ss.scan(COLUMN) then [:column, t]
72
- when t = ss.scan(COMMA) then [:comma, t]
67
+ token =
68
+ if (t = ss.scan(SINGLE_STRING_LITERAL)) then [:string, t[1...t.size - 1]]
69
+ elsif (t = ss.scan(DOUBLE_STRING_LITERAL)) then [:string, t[1...t.size - 1]]
70
+ elsif (t = ss.scan(IDENTIFIER)) then [:string, t]
71
+ elsif (t = ss.scan(COLUMN)) then [:column, t]
72
+ elsif (t = ss.scan(COMMA)) then [:comma, t]
73
73
  else
74
74
  raise Error, "Unexpected char: #{ss.getch}"
75
- end
75
+ end
76
76
  tokens << token
77
77
  end
78
78
  tokens
79
79
  end
80
+
80
81
  end
@@ -18,7 +18,7 @@ class ComfortableMexicanSofa::Content::Renderer
18
18
  MAX_DEPTH = 100
19
19
 
20
20
  # tags are in this format: {{ cms:tag_class params }}
21
- TAG_REGEX = /\{\{\s*?cms:(?<class>\w+)(?<params>.*?)\}\}/
21
+ TAG_REGEX = %r{\{\{\s*?cms:(?<class>\w+)(?<params>.*?)\}\}}
22
22
 
23
23
  class << self
24
24
 
@@ -29,6 +29,7 @@ class ComfortableMexicanSofa::Content::Renderer
29
29
  def register_tag(name, klass)
30
30
  tags[name.to_s] = klass
31
31
  end
32
+
32
33
  end
33
34
 
34
35
  def initialize(context)
@@ -59,7 +60,7 @@ class ComfortableMexicanSofa::Content::Renderer
59
60
  if allow_erb
60
61
  string.to_s
61
62
  else
62
- string.to_s.gsub('<%', '&lt;%').gsub('%>', '%&gt;')
63
+ string.to_s.gsub("<%", "&lt;%").gsub("%>", "%&gt;")
63
64
  end
64
65
  end
65
66
 
@@ -67,14 +68,14 @@ class ComfortableMexicanSofa::Content::Renderer
67
68
  def tokenize(string)
68
69
  tokens = []
69
70
  ss = StringScanner.new(string.to_s)
70
- while string = ss.scan_until(TAG_REGEX)
71
- text = string.sub(ss[0], '')
72
- tokens << text if text.length > 0
73
- tokens << {tag_class: ss[:class], tag_params: ss[:params].strip}
71
+ while (string = ss.scan_until(TAG_REGEX))
72
+ text = string.sub(ss[0], "")
73
+ tokens << text unless text.empty?
74
+ tokens << { tag_class: ss[:class], tag_params: ss[:params].strip }
74
75
  end
75
76
  text = ss.rest
76
77
  tokens << text if text.present?
77
- return tokens
78
+ tokens
78
79
  end
79
80
 
80
81
  # Constructing node tree for content. It's a list of strings and tags with
@@ -97,7 +98,7 @@ class ComfortableMexicanSofa::Content::Renderer
97
98
  nodes.pop
98
99
 
99
100
  else
100
- unless klass = self.class.tags[tag_class]
101
+ unless (klass = self.class.tags[tag_class])
101
102
  raise SyntaxError, "Unrecognized tag #{tag_class}: #{token}"
102
103
  end
103
104
 
@@ -122,4 +123,5 @@ class ComfortableMexicanSofa::Content::Renderer
122
123
 
123
124
  nodes.flatten
124
125
  end
126
+
125
127
  end
@@ -34,4 +34,5 @@ class ComfortableMexicanSofa::Content::Tag
34
34
  def parse_params_string(string)
35
35
  ComfortableMexicanSofa::Content::ParamsParser.parse(string)
36
36
  end
37
+
37
38
  end
@@ -29,15 +29,15 @@ class ComfortableMexicanSofa::Content::Tag::Asset < ComfortableMexicanSofa::Cont
29
29
  def content
30
30
  return "" unless layout
31
31
 
32
- base = ComfortableMexicanSofa.config.public_cms_path || ''
32
+ base = ComfortableMexicanSofa.config.public_cms_path || ""
33
33
  unless base.ends_with?("/")
34
- base = base + "/"
34
+ base += "/"
35
35
  end
36
36
 
37
37
  case @type
38
38
  when "css"
39
39
  out = "#{base}cms-css/#{context.site.id}/#{@identifier}/#{layout.cache_buster}.css"
40
- if @as == 'tag'
40
+ if @as == "tag"
41
41
  out = "<link href='#{out}' media='screen' rel='stylesheet' type='text/css' />"
42
42
  end
43
43
  out
@@ -49,6 +49,7 @@ class ComfortableMexicanSofa::Content::Tag::Asset < ComfortableMexicanSofa::Cont
49
49
  out
50
50
  end
51
51
  end
52
+
52
53
  end
53
54
 
54
55
  ComfortableMexicanSofa::Content::Renderer.register_tag(
@@ -7,13 +7,14 @@ class ComfortableMexicanSofa::Content::Tag::Checkbox < ComfortableMexicanSofa::C
7
7
  fragment.boolean
8
8
  end
9
9
 
10
- def form_field(object_name, view, index, &block)
10
+ def form_field(object_name, view, index)
11
11
  name = "#{object_name}[fragments_attributes][#{index}][boolean]"
12
12
  checkbox_hidden = view.hidden_field_tag(name, "0", id: nil)
13
- checkbox_input = view.check_box_tag(name, "1", self.content.present?, id: nil)
13
+ checkbox_input = view.check_box_tag(name, "1", content.present?, id: nil)
14
14
 
15
15
  yield [checkbox_hidden, checkbox_input].join.html_safe
16
16
  end
17
+
17
18
  end
18
19
 
19
20
  ComfortableMexicanSofa::Content::Renderer.register_tag(
@@ -7,14 +7,15 @@ class ComfortableMexicanSofa::Content::Tag::Date < ComfortableMexicanSofa::Conte
7
7
  fragment.datetime
8
8
  end
9
9
 
10
- def form_field(object_name, view, index, &block)
10
+ def form_field(object_name, view, index)
11
11
  name = "#{object_name}[fragments_attributes][#{index}][datetime]"
12
- options = {id: nil, class: "form-control", data: {"cms-date" => true}}
13
- value = self.content.present?? self.content.to_s(:db) : ""
12
+ options = { id: nil, class: "form-control", data: { "cms-date" => true } }
13
+ value = content.present? ? content.to_s(:db) : ""
14
14
  input = view.send(:text_field_tag, name, value, options)
15
15
 
16
16
  yield input
17
17
  end
18
+
18
19
  end
19
20
 
20
21
  ComfortableMexicanSofa::Content::Renderer.register_tag(
@@ -7,14 +7,15 @@ class ComfortableMexicanSofa::Content::Tag::Datetime < ComfortableMexicanSofa::C
7
7
  fragment.datetime
8
8
  end
9
9
 
10
- def form_field(object_name, view, index, &block)
10
+ def form_field(object_name, view, index)
11
11
  name = "#{object_name}[fragments_attributes][#{index}][datetime]"
12
- options = {id: nil, class: "form-control", data: {"cms-datetime" => true}}
13
- value = self.content.present?? self.content.to_s(:db) : ""
12
+ options = { id: nil, class: "form-control", data: { "cms-datetime" => true } }
13
+ value = content.present? ? content.to_s(:db) : ""
14
14
  input = view.send(:text_field_tag, name, value, options)
15
15
 
16
16
  yield input
17
17
  end
18
+
18
19
  end
19
20
 
20
21
  ComfortableMexicanSofa::Content::Renderer.register_tag(
@@ -36,20 +36,21 @@ class ComfortableMexicanSofa::Content::Tag::File < ComfortableMexicanSofa::Conte
36
36
  end
37
37
  end
38
38
 
39
- def form_field(object_name, view, index, &block)
39
+ def form_field(object_name, view, index)
40
40
  name = "#{object_name}[fragments_attributes][#{index}][files]"
41
- input = view.send(:file_field_tag, name, {id: nil})
41
+ input = view.send(:file_field_tag, name, id: nil)
42
42
 
43
- attachments_partial = if fragment.attachments
44
- view.render(
45
- partial: "comfy/admin/cms/pages/fragment_attachments",
46
- locals: {
47
- object_name: object_name,
48
- index: index,
49
- attachments: fragment.attachments
50
- }
51
- )
52
- end
43
+ attachments_partial =
44
+ if fragment.attachments
45
+ view.render(
46
+ partial: "comfy/admin/cms/fragments/form_fragment_attachments",
47
+ locals: {
48
+ object_name: object_name,
49
+ index: index,
50
+ attachments: fragment.attachments
51
+ }
52
+ )
53
+ end
53
54
 
54
55
  yield [input, attachments_partial].join.html_safe
55
56
  end
@@ -67,9 +68,10 @@ protected
67
68
  def url_for(attachment)
68
69
  ApplicationController.render(
69
70
  inline: "<%= url_for(@attachment) %>",
70
- assigns: {attachment: attachment}
71
+ assigns: { attachment: attachment }
71
72
  )
72
73
  end
74
+
73
75
  end
74
76
 
75
77
  ComfortableMexicanSofa::Content::Renderer.register_tag(
@@ -10,7 +10,7 @@
10
10
  #
11
11
  class ComfortableMexicanSofa::Content::Tag::FileLink < ComfortableMexicanSofa::Content::Tag
12
12
 
13
- attr_reader :identifier, :as, :label, :variant_attrs
13
+ attr_reader :identifier, :as, :variant_attrs
14
14
 
15
15
  def initialize(context, params_string)
16
16
  super
@@ -26,7 +26,11 @@ class ComfortableMexicanSofa::Content::Tag::FileLink < ComfortableMexicanSofa::C
26
26
  end
27
27
 
28
28
  def file
29
- @file ||= context.site.files.detect{|f| f.id == self.identifier.to_i}
29
+ @file ||= context.site.files.detect { |f| f.id == identifier.to_i }
30
+ end
31
+
32
+ def label
33
+ @file.label.present? ? @file.label : @file.attachment.filename
30
34
  end
31
35
 
32
36
  def content
@@ -49,16 +53,13 @@ class ComfortableMexicanSofa::Content::Tag::FileLink < ComfortableMexicanSofa::C
49
53
 
50
54
  protected
51
55
 
52
- def label
53
- @file.label.present?? @file.label : @file.attachment.filename
54
- end
55
-
56
56
  def url_for(attachment)
57
57
  ApplicationController.render(
58
58
  inline: "<%= url_for(@attachment) %>",
59
- assigns: {attachment: attachment}
59
+ assigns: { attachment: attachment }
60
60
  )
61
61
  end
62
+
62
63
  end
63
64
 
64
65
  ComfortableMexicanSofa::Content::Renderer.register_tag(
@@ -15,23 +15,25 @@ class ComfortableMexicanSofa::Content::Tag::Files < ComfortableMexicanSofa::Cont
15
15
  end.join(" ")
16
16
  end
17
17
 
18
- def form_field(object_name, view, index, &block)
18
+ def form_field(object_name, view, index)
19
19
  name = "#{object_name}[fragments_attributes][#{index}][files][]"
20
- input = view.send(:file_field_tag, name, {id: nil, multiple: true})
21
-
22
- attachments_partial = if fragment.attachments
23
- view.render(
24
- partial: "comfy/admin/cms/pages/fragment_attachments",
25
- locals: {
26
- object_name: object_name,
27
- index: index,
28
- attachments: fragment.attachments
29
- }
30
- )
31
- end
20
+ input = view.send(:file_field_tag, name, id: nil, multiple: true)
21
+
22
+ attachments_partial =
23
+ if fragment.attachments
24
+ view.render(
25
+ partial: "comfy/admin/cms/fragments/form_fragment_attachments",
26
+ locals: {
27
+ object_name: object_name,
28
+ index: index,
29
+ attachments: fragment.attachments
30
+ }
31
+ )
32
+ end
32
33
 
33
34
  yield [input, attachments_partial].join.html_safe
34
35
  end
36
+
35
37
  end
36
38
 
37
39
  ComfortableMexicanSofa::Content::Renderer.register_tag(
@@ -21,13 +21,13 @@ class ComfortableMexicanSofa::Content::Tag::Fragment < ComfortableMexicanSofa::C
21
21
  end
22
22
 
23
23
  @namespace = @options["namespace"] || "default"
24
- @renderable = @options["render"].to_s.downcase == "false" ? false : true
24
+ @renderable = @options["render"].to_s.downcase != "false"
25
25
  end
26
26
 
27
27
  # Grabs existing fragment record or spins up a new instance if there's none
28
28
  def fragment
29
- self.context.fragments.detect{|f| f.identifier == self.identifier} ||
30
- self.context.fragments.build(identifier: self.identifier)
29
+ context.fragments.detect { |f| f.identifier == identifier } ||
30
+ context.fragments.build(identifier: identifier)
31
31
  end
32
32
 
33
33
  def content
@@ -37,10 +37,10 @@ class ComfortableMexicanSofa::Content::Tag::Fragment < ComfortableMexicanSofa::C
37
37
  # If `render: false` was passed in we won't render anything. Assuming that
38
38
  # that fragment content will be rendered manually
39
39
  def render
40
- self.renderable ? content : ""
40
+ renderable ? content : ""
41
41
  end
42
42
 
43
- # Tag renders its own form inputs via `form_field(template, index, &block)`
43
+ # Tag renders its own form inputs via `form_field(template, index)`
44
44
  # For example:
45
45
  # class MyTag < ComfortableMexicanSofa::Content::Tag::Fragment
46
46
  # def form_field(view, index, &block)
@@ -48,7 +48,8 @@ class ComfortableMexicanSofa::Content::Tag::Fragment < ComfortableMexicanSofa::C
48
48
  # yield view.text_area "input_name", "value"
49
49
  # end
50
50
  # end
51
- def form_field(object_name, view, index, &block)
51
+ def form_field
52
52
  raise "Form field rendering not implemented for this Tag"
53
53
  end
54
+
54
55
  end
@@ -7,7 +7,7 @@
7
7
  #
8
8
  class ComfortableMexicanSofa::Content::Tag::Helper < ComfortableMexicanSofa::Content::Tag
9
9
 
10
- BLACKLIST = %w(eval class_eval instance_eval render)
10
+ BLACKLIST = %w[eval class_eval instance_eval render].freeze
11
11
 
12
12
  attr_reader :method_name
13
13
 
@@ -45,6 +45,7 @@ class ComfortableMexicanSofa::Content::Tag::Helper < ComfortableMexicanSofa::Con
45
45
  content unless BLACKLIST.member?(method_name)
46
46
  end
47
47
  end
48
+
48
49
  end
49
50
 
50
51
  ComfortableMexicanSofa::Content::Renderer.register_tag(
@@ -4,16 +4,17 @@
4
4
  class ComfortableMexicanSofa::Content::Tag::Markdown < ComfortableMexicanSofa::Content::Tag::Fragment
5
5
 
6
6
  def render
7
- self.renderable ? Kramdown::Document.new(self.content.to_s).to_html : ""
7
+ renderable ? Kramdown::Document.new(content.to_s).to_html : ""
8
8
  end
9
9
 
10
- def form_field(object_name, view, index, &block)
10
+ def form_field(object_name, view, index)
11
11
  name = "#{object_name}[fragments_attributes][#{index}][content]"
12
- options = {id: nil, data: {"cms-cm-mode" => "text/x-markdown"}}
13
- input = view.send(:text_area_tag, name, self.content, options)
12
+ options = { id: nil, data: { "cms-cm-mode" => "text/x-markdown" } }
13
+ input = view.send(:text_area_tag, name, content, options)
14
14
 
15
15
  yield input
16
16
  end
17
+
17
18
  end
18
19
 
19
20
  ComfortableMexicanSofa::Content::Renderer.register_tag(
@@ -3,13 +3,14 @@
3
3
  #
4
4
  class ComfortableMexicanSofa::Content::Tag::Number < ComfortableMexicanSofa::Content::Tag::Fragment
5
5
 
6
- def form_field(object_name, view, index, &block)
6
+ def form_field(object_name, view, index)
7
7
  name = "#{object_name}[fragments_attributes][#{index}][content]"
8
- options = {id: nil, class: "form-control"}
9
- input = view.send(:number_field_tag, name, self.content, options)
8
+ options = { id: nil, class: "form-control" }
9
+ input = view.send(:number_field_tag, name, content, options)
10
10
 
11
11
  yield input
12
12
  end
13
+
13
14
  end
14
15
 
15
16
  ComfortableMexicanSofa::Content::Renderer.register_tag(
@@ -35,6 +35,7 @@ class ComfortableMexicanSofa::Content::Tag::Partial < ComfortableMexicanSofa::Co
35
35
  content
36
36
  end
37
37
  end
38
+
38
39
  end
39
40
 
40
41
  ComfortableMexicanSofa::Content::Renderer.register_tag(