lalala 4.0.0.dev.416 → 4.1.0.dev.299

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 (111) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +1 -1
  3. data/Gemfile +1 -3
  4. data/Haraway.md +14 -0
  5. data/app/assets/javascripts/lalala/base.js +8 -0
  6. data/app/assets/javascripts/lalala/initializers/chosen.module.js +3 -0
  7. data/app/assets/javascripts/lalala/initializers/haraway.module.js +8 -0
  8. data/app/assets/javascripts/lalala/lib/overlay.js +335 -0
  9. data/app/assets/javascripts/lalala/modules/collapsible_pages_tree.module.js +26 -33
  10. data/app/assets/javascripts/lalala/modules/editor.module.js +37 -23
  11. data/app/assets/javascripts/lalala/modules/file-uploader-metadata.module.js +248 -0
  12. data/app/assets/javascripts/lalala/modules/file-uploader.module.js +376 -0
  13. data/app/assets/javascripts/lalala/modules/init.module.js +1 -5
  14. data/app/assets/javascripts/lalala/modules/media_selector.module.js +250 -0
  15. data/app/assets/javascripts/lalala/modules/overlay.module.js +33 -0
  16. data/app/assets/stylesheets/lalala/_base.css.scss +5 -2
  17. data/app/assets/stylesheets/lalala/components/_buttons.css.scss +11 -3
  18. data/app/assets/stylesheets/lalala/components/_forms.css.scss +14 -64
  19. data/app/assets/stylesheets/lalala/lib/_overlay.css.scss +66 -0
  20. data/app/assets/stylesheets/lalala/modules/_dashboard.css.scss +10 -51
  21. data/app/assets/stylesheets/lalala/modules/_editor-cheatsheet.css.scss +1 -17
  22. data/app/assets/stylesheets/lalala/modules/_file-uploader-metadata.css.scss +118 -0
  23. data/app/assets/stylesheets/lalala/modules/_file-uploader.css.scss +289 -0
  24. data/app/assets/stylesheets/lalala/modules/_media-selector.css.scss +113 -0
  25. data/app/assets/stylesheets/lalala/modules/_title-bar.css.scss +0 -17
  26. data/app/controllers/lalala/public/errors_controller.rb +7 -0
  27. data/app/models/lalala/page.rb +0 -1
  28. data/app/views/lalala/markdown/cheatsheet.html.erb +0 -2
  29. data/config/routes.rb +12 -1
  30. data/lalala-assets.gemspec +3 -3
  31. data/lalala-development.gemspec +1 -1
  32. data/lalala-test.gemspec +1 -1
  33. data/lalala.gemspec +4 -5
  34. data/lib/formtastic/form_builder_ext.rb +10 -0
  35. data/lib/formtastic/inputs/haraway_input.rb +151 -0
  36. data/lib/generators/lalala/assets/templates/bower.json.erb +1 -1
  37. data/lib/generators/lalala/install/install_generator.rb +0 -23
  38. data/lib/lalala/admin/pages.rb +1 -26
  39. data/lib/lalala/engine.rb +0 -7
  40. data/lib/lalala/ext_action_dispatch.rb +0 -1
  41. data/lib/lalala/ext_active_record/i18n_translations_writer.rb +0 -1
  42. data/lib/lalala/ext_active_record.rb +0 -1
  43. data/lib/lalala/ext_i18n/input_helper.rb +0 -1
  44. data/lib/lalala/ext_i18n/negotiation_adapter.rb +0 -4
  45. data/lib/lalala/ext_i18n/test_negotiation_adapter.rb +0 -4
  46. data/lib/lalala/ext_rack/i18n_negotiator.rb +7 -9
  47. data/lib/lalala/markdown/handlers/asset.rb +24 -0
  48. data/lib/lalala/markdown/handlers/youtube.rb +9 -13
  49. data/lib/lalala/markdown/html_renderer.rb +2 -2
  50. data/lib/lalala/markdown.rb +2 -3
  51. data/lib/lalala/utils/install_template.rb +3 -9
  52. data/lib/lalala/version.rb +2 -2
  53. data/lib/lalala.rb +6 -7
  54. data/script/ci +33 -30
  55. data/test/dummy/app/admin/articles.rb +26 -12
  56. data/test/dummy/app/admin/dashboard.rb +5 -8
  57. data/test/dummy/app/admin/tags.rb +1 -3
  58. data/test/dummy/app/assets/stylesheets/_normalize.css +423 -0
  59. data/test/dummy/app/assets/stylesheets/application.css.scss +2 -0
  60. data/test/dummy/app/assets/stylesheets/base/_base.css.scss +4 -0
  61. data/test/dummy/app/controllers/pages_controller.rb +4 -0
  62. data/test/dummy/app/models/article.rb +10 -4
  63. data/test/dummy/app/pages/application_page.rb +7 -2
  64. data/test/dummy/app/pages/basic_page.rb +5 -6
  65. data/test/dummy/app/pages/home_page.rb +10 -10
  66. data/test/dummy/app/pages/media_page.rb +23 -0
  67. data/test/dummy/app/views/admin/_stats.html.erb +7 -14
  68. data/test/dummy/app/views/layouts/application.html.erb +6 -2
  69. data/test/dummy/app/views/pages/media.html.erb +3 -0
  70. data/test/dummy/config/initializers/haraway.rb +29 -0
  71. data/test/dummy/config/routes.rb +1 -0
  72. data/test/dummy/db/migrate/20130528092721_create_articles.rb +1 -0
  73. data/test/dummy/db/migrate/20130729125648_create_home_page.rb +4 -0
  74. data/test/dummy/db/migrate/20131122144302_enable_haraway.rb +16 -0
  75. data/test/dummy/db/migrate/20140228141749_create_media_page.rb +8 -0
  76. data/test/dummy/db/schema.rb +2 -4
  77. data/test/integration/aricles_test.rb +0 -1
  78. metadata +59 -81
  79. data/app/assets/javascripts/jquery-ui/sortable.js +0 -0
  80. data/app/assets/javascripts/lalala/lib/jquery-ui.js +0 -16617
  81. data/app/assets/javascripts/lalala/modules/grid.module.js +0 -284
  82. data/app/assets/javascripts/lalala/modules/input_group.module.js +0 -36
  83. data/app/assets/stylesheets/lalala/modules/_grid.css.scss +0 -197
  84. data/app/assets/stylesheets/lalala/modules/_index-as-sortable.css.scss +0 -89
  85. data/app/models/lalala/abstract_asset.rb +0 -24
  86. data/app/models/lalala/file_asset.rb +0 -3
  87. data/app/models/lalala/image_asset.rb +0 -3
  88. data/config/initializers/carrierwave.rb +0 -34
  89. data/lib/formtastic/inputs/grid_input.rb +0 -159
  90. data/lib/formtastic/inputs/single_file_input.rb +0 -44
  91. data/lib/generators/lalala/install/templates/application.html.erb +0 -64
  92. data/lib/generators/lalala/install/templates/helpers/application_helper.rb +0 -16
  93. data/lib/generators/lalala/install/templates/helpers/html_helper.rb +0 -60
  94. data/lib/generators/lalala/install/templates/helpers/open_graph_helper.rb.erb +0 -92
  95. data/lib/generators/lalala/install/templates/helpers/pages_helper.rb +0 -15
  96. data/lib/generators/lalala/install/templates/locales/en.yml +0 -6
  97. data/lib/generators/lalala/install/templates/uploaders/file_uploader.rb +0 -2
  98. data/lib/generators/lalala/install/templates/uploaders/image_uploader.rb +0 -11
  99. data/lib/lalala/ext_action_dispatch/multi_file_upload.rb +0 -55
  100. data/lib/lalala/ext_active_record/assets.rb +0 -25
  101. data/lib/lalala/markdown/handlers/soundcloud.rb +0 -36
  102. data/lib/lalala/markdown/handlers/vimeo.rb +0 -40
  103. data/lib/lalala/uploaders/file.rb +0 -50
  104. data/lib/lalala/uploaders/image.rb +0 -13
  105. data/lib/lalala/uploaders.rb +0 -6
  106. data/test/dummy/app/assets/stylesheets/application.css +0 -13
  107. data/test/dummy/app/models/file_asset.rb +0 -2
  108. data/test/dummy/app/models/image_asset.rb +0 -2
  109. data/test/dummy/app/uploaders/file_uploader.rb +0 -2
  110. data/test/dummy/app/uploaders/image_uploader.rb +0 -11
  111. data/test/dummy/db/migrate/20140926152646_add_pre_and_postpend_test_columns_to_articles.rb +0 -6
@@ -1,159 +0,0 @@
1
- class Formtastic::Inputs::GridInput
2
- include Formtastic::Inputs::Base
3
-
4
- def to_html
5
- object = builder.object
6
- assets = object.send(method)
7
- asset_model_class = builder.object.class.reflect_on_association(method).class_name.constantize
8
-
9
- # build html
10
- ul = template.content_tag :ul do
11
- html = []
12
- html << Formtastic::Inputs::GridInput.build_assets(assets, asset_model_class, builder, template, method)
13
- html << Formtastic::Inputs::GridInput.build_errors(assets, asset_model_class, builder, template, method)
14
- html << Formtastic::Inputs::GridInput.build_actions(assets, asset_model_class, builder, template, method)
15
- template.raw html.join("")
16
- end
17
-
18
- input_wrapping { ul }
19
- end
20
-
21
- private
22
-
23
- #
24
- # Asset blocks (+ their attributes)
25
- #
26
- def self.build_assets(assets, asset_model_class, builder, template, method)
27
- html = []
28
-
29
- # collect attribute names
30
- asset_attributes = asset_model_class.accessible_attributes.to_a
31
- asset_attributes.select! { |x| x.size > 0 and !%w(asset translations_writer).include?(x) }
32
-
33
- # build each
34
- assets.each_with_index do |asset, idx|
35
- li = template.content_tag :li, class: "asset", title: asset.asset.file.filename do
36
- builder.fields_for(method, asset) do |f|
37
- Formtastic::Inputs::GridInput.build_asset(asset, asset_attributes, f, template)
38
- end
39
- end
40
-
41
- html << li
42
- end
43
-
44
- template.raw(html.join(""))
45
- end
46
-
47
-
48
-
49
- def self.build_asset(asset, asset_attributes, f, template)
50
- html = []
51
-
52
- # html -> link
53
- html << Formtastic::Inputs::GridInput.build_asset_link(f, template)
54
-
55
- # html -> attributes
56
- html << template.content_tag(:ol, { class: "attributes" }) do
57
- inputs = asset_attributes.map do |attribute|
58
- Formtastic::Inputs::GridInput.build_asset_attribute(attribute, f)
59
- end
60
-
61
- template.raw <<-EOS
62
- #{inputs.join}
63
- <a class="close-button">&#10005;</a>
64
- EOS
65
- end
66
-
67
- # return
68
- template.raw(html.join(""))
69
- end
70
-
71
-
72
-
73
- def self.build_asset_link(f, template)
74
- inner_html = template.raw("")
75
- filename = f.object.asset.file.filename
76
-
77
- # get thumbnail
78
- lalala_thumb = if f.object.asset.respond_to?(:lalala_thumb)
79
- f.object.asset.lalala_thumb
80
- end
81
-
82
- # thumbnail or file-icon + filename
83
- inner_html << if url = lalala_thumb.try(:url)
84
- template.image_tag(url)
85
- else
86
- combo = template.raw("")
87
- combo << template.content_tag(:span, "", class: "file-icon")
88
- combo << template.content_tag(:span, filename, class: "filename")
89
- combo
90
- end
91
-
92
- # return
93
- template.link_to(inner_html, f.object.asset.url)
94
- end
95
-
96
-
97
-
98
- def self.build_asset_attribute(attribute, f)
99
- args = [attribute.to_sym]
100
- collection_name = attribute.chomp("_id").pluralize.to_sym
101
-
102
- if attribute.include?("_id") && f.object.respond_to?(collection_name)
103
- args << {
104
- as: :select,
105
- collection: f.object.send(collection_name)
106
- }
107
- else
108
- args << {
109
- placeholder: attribute
110
- }
111
- end
112
-
113
- f.input(*args)
114
- end
115
-
116
-
117
-
118
- #
119
- # Errors
120
- #
121
- def self.build_errors(assets, asset_model_class, builder, template, method)
122
- html = ""
123
-
124
- asset_errors = assets.map do |asset|
125
- asset.errors.to_a
126
- end.flatten
127
-
128
- if asset_errors.present?
129
- html = <<-EOS
130
- <li class="errors">
131
- <ul>%{items}</ul>
132
- </li>
133
- EOS
134
-
135
- errors_html = template.raw("")
136
- asset_errors.each do |error|
137
- errors_html << template.content_tag(:li, error)
138
- end
139
-
140
- html.sub("%{items}", errors_html)
141
- end
142
-
143
- template.raw(html)
144
- end
145
-
146
-
147
-
148
- #
149
- # Actions
150
- #
151
- def self.build_actions(assets, asset_model_class, builder, template, method)
152
- template.content_tag :li, class: "actions" do
153
- builder.fields_for(method, assets.build) do |f|
154
- f.file_field :asset, multiple: true, accept: asset_model_class.extension_white_list
155
- end
156
- end
157
- end
158
-
159
- end
@@ -1,44 +0,0 @@
1
- class Formtastic::Inputs::SingleFileInput
2
- include Formtastic::Inputs::Base
3
-
4
- def to_html
5
- object = builder.object
6
- model_instance = object.send(method)
7
- model_class = object.class.reflect_on_association(method).klass
8
-
9
- html = template.raw("")
10
- html << label_html
11
- html << builder.fields_for(method, model_instance || model_class.new) do |f|
12
- f_html = template.raw("")
13
- f_html << f.file_field(:asset, accept: model_class.extension_white_list, id: input_html_options[:id])
14
- if model_instance
15
- f_html << template.content_tag(:div, class: "delete-button") do
16
- b_html = template.raw("")
17
- b_html << f.label(:_destroy, "delete")
18
- b_html << f.check_box(:_destroy)
19
- b_html
20
- end
21
- end
22
- f_html
23
- end
24
-
25
- if model_instance
26
- html << template.content_tag(:div, class: "file-description") do
27
- filename = model_instance.asset.file.try(:filename)
28
- f_html = template.raw("")
29
-
30
- if model_class.to_s.include?("Image")
31
- f_html << template.content_tag(:img, "", src: model_instance.asset.lalala_thumb.url)
32
- end
33
-
34
- if filename
35
- f_html << template.content_tag(:span, filename)
36
- end
37
-
38
- f_html
39
- end
40
- end
41
-
42
- input_wrapping { html }
43
- end
44
- end
@@ -1,64 +0,0 @@
1
- <!DOCTYPE html>
2
- <!--[if lt IE 7]> <html class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]-->
3
- <!--[if IE 7]> <html class="no-js lt-ie9 lt-ie8"> <![endif]-->
4
- <!--[if IE 8]> <html class="no-js lt-ie9"> <![endif]-->
5
- <!--[if gt IE 8]><!--> <html class="no-js"> <!--<![endif]-->
6
- <head>
7
- <meta charset="utf-8">
8
- <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
9
-
10
- <title><%= og_title %></title>
11
-
12
- <meta name="viewport" content="width=device-width, initial-scale=1, minimal-ui" />
13
-
14
- <meta name="description" content="<%= og_description %>" />
15
- <meta name="distribution" content="global" />
16
- <%= meta_name_robots %>
17
- <meta name="revisit-after" content="31 days" />
18
- <meta name="author" content="" />
19
- <meta name="publisher" content="Mr. Henry" />
20
- <meta name="copyright" content="" />
21
-
22
- <link rel="shortcut icon" href="/assets/favicon.ico"/>
23
- <link rel="canonical" href="<%= canonical_url(request.original_fullpath) %>" />
24
-
25
- <meta property="og:url" content="<%= canonical_url(request.original_fullpath) %>" />
26
- <meta property="og:title" content="<%= og_title %>" />
27
- <meta property="og:site_name" content="<%= site_name %>">
28
- <meta property="og:description" content="<%= og_description %>" />
29
- <%= meta_property_og_image %>
30
- <meta property="og:image" content="<%= og_image_default_url %>" />
31
-
32
- <%= javascript_include_tag "modernizr" %>
33
- <%= stylesheet_link_tag "application", media: "all" %>
34
-
35
- <%= csrf_meta_tags %>
36
- </head>
37
- <body class="<%= body_class %>">
38
-
39
- <!--[if lt IE 9]>
40
- <p class="chromeframe" style="background-color: rgb(255,65,45); color: white; font-size: 12px; margin: 0; padding: 7px; text-align: center;">
41
- You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/" style="color: black;">upgrade your browser</a> or <a href="http://www.google.com/chromeframe/?redirect=true" style="color: black;">activate Google Chrome Frame</a> to improve your experience.</p>
42
- <![endif]-->
43
-
44
- <%= yield %>
45
-
46
- <script type="text/javascript">
47
- // Bridge between I18n YAML & JS
48
- window.translations = { };
49
- </script>
50
-
51
- <%= javascript_include_tag "application" %>
52
-
53
- <script type="text/javascript">
54
- (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
55
- (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
56
- m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
57
- })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
58
-
59
- ga('create', 'UA-XXXXXX-XX', 'auto');
60
- ga('require', 'displayfeatures');
61
- ga('send', 'pageview');
62
- </script>
63
- </body>
64
- </html>
@@ -1,16 +0,0 @@
1
- module ApplicationHelper
2
-
3
- # When on .mrhenry.eu domain, we don't want a search crawler to index
4
- #
5
- # @return {String}
6
- def meta_name_robots
7
- if request.host.match /.*\.a\.mrhenry\.eu.*/
8
- tag("meta", name: "robots", content: "noindex, nofollow")
9
-
10
- else
11
- tag("meta", name: "robots", content: "index, follow")
12
-
13
- end
14
- end
15
-
16
- end
@@ -1,60 +0,0 @@
1
- module HtmlHelper
2
-
3
- # Returns class_name if x equals y
4
- #
5
- # @param {String} class_name
6
- # @param {Mixed} x
7
- # @param {Mixed} y
8
- # @param {Boolean} exact
9
- #
10
- # @return {String}
11
- def css_class(class_name, x, y = true, exact = false)
12
- if exact
13
- class_name if (x === y)
14
-
15
- else
16
- class_name if (x == y)
17
-
18
- end
19
- end
20
-
21
-
22
- # Returns CSS body class
23
- # By default it shows the current controller & action
24
- # You can add items by using @body_class
25
- #
26
- # @return {String}
27
- def body_class
28
- body_class = [ params[:controller], params[:action] ]
29
- body_class << @body_class if @body_class
30
- body_class.join(" ")
31
- end
32
-
33
-
34
- # Return CSS background-image style
35
- #
36
- # @return {String}
37
- def css_bg_img(img_url = nil)
38
- "background-image: url('#{img_url}');"
39
- end
40
-
41
-
42
- # Includes inline SVG
43
- #
44
- # @param {String} path
45
- #
46
- # @return {String}
47
- def inline_svg(path)
48
- File.open("app/assets/images/#{path}", "rb") do |file|
49
- raw file.read
50
- end
51
- end
52
-
53
-
54
- # Render partial
55
- #
56
- def render_partial(partial_name, locals={}, &block)
57
- render partial: partial_name, locals: locals.merge({ block: block })
58
- end
59
-
60
- end
@@ -1,92 +0,0 @@
1
- module OpenGraphHelper
2
-
3
- # Returns site name
4
- #
5
- # @return {String}
6
- def site_name
7
- "<%= Rails.application.class.name.split("::").first.titlecase.gsub("Client ", "") %>"
8
- end
9
-
10
-
11
- # Returns canonical url and following path for the given key in CANONICAL_URLS hash
12
- #
13
- # @params {String} path
14
- #
15
- # @return {String}
16
- def canonical_url(path = '/', protocol = nil)
17
- protocol ||= request.protocol
18
-
19
- begin
20
- "#{protocol}#{ENV["CANONICAL_DOMAIN"]}#{path}"
21
-
22
- rescue
23
- Rails.logger.error("canonical_url failed with following argument: #{path}")
24
- "#{protocol}#{request.domain}#{path}"
25
-
26
- end
27
- end
28
-
29
-
30
- # Returns meta description.
31
- # Default lives in locale file. Add @og_description in your controller
32
- # to override default.
33
- #
34
- # @return {String}
35
- def og_description
36
- @og_description.strip_tags rescue t("meta.description")
37
- end
38
-
39
-
40
- # Returns default OG image url based on current app name
41
- #
42
- # @return {String}
43
- def og_image_default_url
44
- "#{request.protocol}#{request.host_with_port}#{image_path("og-image.png")}"
45
- end
46
-
47
-
48
- # Returns meta og:image tags when @og_image(s) is given
49
- #
50
- # @return {String}
51
- def meta_property_og_image
52
- if @og_image
53
- tag("meta", property: "og:image", content: "http:#{@og_image.url(:medium)}")
54
- end
55
-
56
- if @og_images
57
- @og_images.each do |og_image|
58
- tag("meta", property: "og:image", content: "http:#{og_image.url(:medium)}")
59
- end
60
- end
61
- end
62
-
63
-
64
- # Returns the page title, build upon the current page chain, separated by |
65
- # To prefix, use @og_title in your controller.
66
- #
67
- # @param {Integer} offset How many page chain levels you want to skip
68
- #
69
- # @return {String}
70
- def og_title(offset = 0)
71
- page_title = []
72
-
73
- if @og_title
74
- if offset > 0
75
- offset -= 1
76
- else
77
- page_title << @og_title
78
- end
79
- end
80
-
81
- current_page_chain.reverse.each_with_index do |page, idx|
82
- next if idx < offset
83
-
84
- page_title << page.title unless page.type == "HomePage"
85
- end
86
-
87
- page_title << site_name
88
-
89
- page_title.join(' | ')
90
- end
91
-
92
- end
@@ -1,15 +0,0 @@
1
- module PagesHelper
2
-
3
- # Returns page by class name & puts it in an instance variable
4
- #
5
- # @param {Class} page_class
6
- #
7
- # @return {ApplicationPage}
8
- def get_page(page_class)
9
- key = "@#{page_class.to_s.underscore.to_sym}"
10
-
11
- page = instance_variable_get(key)
12
- page ||= instance_variable_set(key, page_class.first)
13
- end
14
-
15
- end
@@ -1,6 +0,0 @@
1
- # Sample localization file for English. Add more files in this directory for other locales.
2
- # See https://github.com/svenfuchs/rails-i18n/tree/master/rails%2Flocale for starting points.
3
-
4
- en:
5
- meta:
6
- description: ""
@@ -1,2 +0,0 @@
1
- class FileUploader < Lalala::Uploaders::File
2
- end
@@ -1,11 +0,0 @@
1
- class ImageUploader < Lalala::Uploaders::Image
2
-
3
- #
4
- # Versions
5
- # -- https://github.com/jnicklas/carrierwave#adding-versions
6
- #
7
- # version :example do
8
- # process :resize_to_fill => [420, 700]
9
- # end
10
-
11
- end
@@ -1,55 +0,0 @@
1
- module Lalala::ExtActionDispatch::MultiFileUpload
2
-
3
- private
4
-
5
- def normalize_parameters(value)
6
- value = super(value)
7
-
8
- if Hash === value
9
- value.each do |key, v|
10
- value[key] = correct_assets_hash_nesting(key, v)
11
- end
12
- end
13
-
14
- return value
15
- end
16
-
17
- def correct_assets_hash_nesting(key, value)
18
- unless key.to_s.ends_with?("_attributes")
19
- return value
20
- end
21
-
22
- unless Hash === value
23
- return value
24
- end
25
-
26
- if value.size == 0
27
- return value
28
- end
29
-
30
- last_id = value.keys.sort_by(&:to_i).last
31
- last_id = "#{last_id}"
32
-
33
- unless /^\d+$/ === last_id
34
- return value
35
- end
36
-
37
- assets = value[last_id].try(:[], "asset")
38
-
39
- unless Array === assets
40
- return value
41
- end
42
-
43
- unless assets.all?{ |i| ActionDispatch::Http::UploadedFile === i }
44
- return value
45
- end
46
-
47
- assets.each do |file|
48
- value[last_id] = { "asset" => file }.with_indifferent_access
49
- last_id.succ!
50
- end
51
-
52
- return value
53
- end
54
-
55
- end
@@ -1,25 +0,0 @@
1
- module Lalala::ExtActiveRecord::Assets
2
- extend ActiveSupport::Concern
3
-
4
- module ClassMethods
5
-
6
- def has_many_assets(name, options={})
7
- class_name = options.delete(:class_name)
8
- class_name ||= if name.to_s.include?("image") then "::ImageAsset" else "::FileAsset" end
9
-
10
- attr_accessible :"#{name}_attributes"
11
- has_many name, class_name: class_name, as: :asset_owner, dependent: :destroy, conditions: { asset_owner_section: name.to_s }
12
- accepts_nested_attributes_for name, allow_destroy: true
13
- end
14
-
15
- def has_one_asset(name, options={})
16
- class_name = options.delete(:class_name)
17
- class_name ||= if name.to_s.include?("image") then "::ImageAsset" else "::FileAsset" end
18
-
19
- attr_accessible :"#{name}_attributes"
20
- has_one name, class_name: class_name, as: :asset_owner, dependent: :destroy, conditions: { asset_owner_section: name.to_s }
21
- accepts_nested_attributes_for name, allow_destroy: true
22
- end
23
-
24
- end
25
- end
@@ -1,36 +0,0 @@
1
- class Lalala::Markdown::Handlers::Soundcloud < Lalala::Markdown::Handlers::Base
2
-
3
- def initialize(options={})
4
- options.assert_valid_keys(:width, :height)
5
-
6
- options = {
7
- width: 560,
8
- height: 166
9
- }.merge(options)
10
-
11
- @options = options
12
- end
13
-
14
- def image(url, alt=nil, title=nil)
15
- unless %r|^soundcloud[:]//(.+)$| === url
16
- return ""
17
- end
18
-
19
- id = $1
20
-
21
- helpers.content_tag :span, class: "embed-container is-soundcloud" do
22
- helpers.content_tag(
23
- :iframe,
24
- "",
25
- class: "soundcloud-embed js-soundcloud-embed",
26
- width: @options[:width],
27
- height: @options[:height],
28
- src: "//w.soundcloud.com/player/?auto_play=false&hide_related=true&show_comments=false&show_user=false&show_reposts=false&visual=false",
29
- :"data-url" => "https://soundcloud.com/oembed?format=json&url=https://soundcloud.com/#{id}",
30
- frameborder: 0,
31
- allowfullscreen: true
32
- )
33
- end
34
- end
35
-
36
- end
@@ -1,40 +0,0 @@
1
- class Lalala::Markdown::Handlers::Vimeo < Lalala::Markdown::Handlers::Base
2
-
3
- def initialize(options={})
4
- options.assert_valid_keys(:color, :height, :show_badge, :show_byline, :show_portrait, :show_title, :width)
5
-
6
- options = {
7
- color: "ffffff",
8
- height: 315,
9
- show_badge: 0,
10
- show_byline: 0,
11
- show_portrait: 0,
12
- show_title: 0,
13
- width: 560
14
- }.merge(options)
15
-
16
- @options = options
17
- end
18
-
19
- def image(url, alt=nil, title=nil)
20
- unless %r|^vimeo[:]//(.+)$| === url
21
- return ""
22
- end
23
-
24
- id = $1
25
-
26
- helpers.content_tag :span, class: "embed-container is-vimeo" do
27
- helpers.content_tag(
28
- :iframe,
29
- "",
30
- width: @options[:width],
31
- height: @options[:height],
32
- src: "//player.vimeo.com/video/#{id}?portrait=#{@options[:show_portrait]}&title=#{@options[:show_title]}&badge=#{@options[:show_badge]}&byline=#{@options[:show_byline]}&color=#{@options[:color]}&wmode=transparent",
33
-
34
- frameborder: 0,
35
- allowfullscreen: true
36
- )
37
- end
38
- end
39
-
40
- end
@@ -1,50 +0,0 @@
1
- class Lalala::Uploaders::File < CarrierWave::Uploader::Base
2
-
3
- def store_dir
4
- if Rails.env.production? or Rails.env.staging?
5
- "#{model.class.to_s.underscore}/#{model.id}"
6
- else
7
- "uploads/#{model.class.to_s.underscore}/#{model.id}"
8
- end
9
- end
10
-
11
- def url(*)
12
- super_url = super
13
- if Rails.env.production? or Rails.env.staging?
14
- if super_url
15
- if super_url.starts_with?('/storage/assets')
16
- super_url
17
- else
18
- AssetURL.new(File.join("/storage/assets", super_url))
19
- end
20
- else
21
- super_url
22
- end
23
- else
24
- super_url
25
- end
26
- end
27
-
28
- # This class circumvents the Sprockets asset path rewriting
29
- # by pretending that it is a full URL.
30
- #
31
- # @see
32
- # https://mrhenry.basecamphq.com/projects/10235776-hetpaleis/todo_items/164031435/comments (internal)
33
- # http://apidock.com/rails/ActionView/Helpers/AssetTagHelper/image_tag
34
- # http://apidock.com/rails/v3.2.13/ActionView/Helpers/AssetTagHelper/path_to_image
35
- # http://apidock.com/rails/ActionView/Helpers/AssetTagHelper/image_path
36
- # http://apidock.com/rails/ActionView/AssetPaths/compute_public_path
37
- # http://apidock.com/rails/v3.2.13/ActionView/AssetPaths/is_uri%3F
38
- class AssetURL < String
39
-
40
- def to_s
41
- self
42
- end
43
-
44
- def =~(pattern)
45
- return true
46
- end
47
-
48
- end
49
-
50
- end