trusty-cms 3.1.11 → 3.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (128) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +9 -14
  3. data/Gemfile.lock +84 -70
  4. data/README.md +4 -0
  5. data/app/assets/images/admin/add.png +0 -0
  6. data/app/assets/images/admin/archive_icon.png +0 -0
  7. data/app/assets/images/admin/audio_icon.png +0 -0
  8. data/app/assets/images/admin/audio_thumbnail.png +0 -0
  9. data/app/assets/images/admin/c_icon.png +0 -0
  10. data/app/assets/images/admin/copy.png +0 -0
  11. data/app/assets/images/admin/css_icon.png +0 -0
  12. data/app/assets/images/admin/database_icon.png +0 -0
  13. data/app/assets/images/admin/delete.png +0 -0
  14. data/app/assets/images/admin/document_icon.png +0 -0
  15. data/app/assets/images/admin/document_thumbnail.png +0 -0
  16. data/app/assets/images/admin/flash_icon.png +0 -0
  17. data/app/assets/images/admin/flash_thumbnail.png +0 -0
  18. data/app/assets/images/admin/font_icon.png +0 -0
  19. data/app/assets/images/admin/gzip_icon.png +0 -0
  20. data/app/assets/images/admin/html_icon.png +0 -0
  21. data/app/assets/images/admin/image_icon.png +0 -0
  22. data/app/assets/images/admin/image_thumbnail.png +0 -0
  23. data/app/assets/images/admin/java_icon.png +0 -0
  24. data/app/assets/images/admin/page_edit.png +0 -0
  25. data/app/assets/images/admin/pdf_icon.png +0 -0
  26. data/app/assets/images/admin/pdf_thumbnail.png +0 -0
  27. data/app/assets/images/admin/perl_icon.png +0 -0
  28. data/app/assets/images/admin/php_icon.png +0 -0
  29. data/app/assets/images/admin/presentation_icon.png +0 -0
  30. data/app/assets/images/admin/python_icon.png +0 -0
  31. data/app/assets/images/admin/reorder_assets.png +0 -0
  32. data/app/assets/images/admin/ruby_icon.png +0 -0
  33. data/app/assets/images/admin/script_icon.png +0 -0
  34. data/app/assets/images/admin/spinner.gif +0 -0
  35. data/app/assets/images/admin/spreadsheet_icon.png +0 -0
  36. data/app/assets/images/admin/tar_icon.png +0 -0
  37. data/app/assets/images/admin/unknown_icon.png +0 -0
  38. data/app/assets/images/admin/unknown_thumbnail.png +0 -0
  39. data/app/assets/images/admin/video_icon.png +0 -0
  40. data/app/assets/images/admin/video_thumbnail.png +0 -0
  41. data/app/assets/images/admin/xml_icon.png +0 -0
  42. data/app/assets/images/admin/zip_icon.png +0 -0
  43. data/app/assets/javascripts/admin/assets.js +268 -0
  44. data/app/assets/javascripts/admin/assets_admin.js +16 -0
  45. data/app/assets/javascripts/admin/jquery.fileupload.js +1457 -0
  46. data/app/assets/javascripts/admin/jquery.iframe-transport.js +214 -0
  47. data/app/assets/javascripts/admin/jquery.ui.widget.js +558 -0
  48. data/app/assets/stylesheets/admin/assets.scss +283 -0
  49. data/app/controllers/admin/assets_controller.rb +88 -0
  50. data/app/controllers/admin/page_attachments_controller.rb +23 -0
  51. data/app/helpers/admin/assets_helper.rb +16 -0
  52. data/app/helpers/admin/page_attachments_helper.rb +2 -0
  53. data/app/models/asset.rb +251 -0
  54. data/app/models/asset_type.rb +239 -0
  55. data/app/models/old_page_attachment.rb +26 -0
  56. data/app/models/page_attachment.rb +20 -0
  57. data/app/views/admin/assets/_asset.html.haml +12 -0
  58. data/app/views/admin/assets/_asset_table.html.haml +30 -0
  59. data/app/views/admin/assets/_errors.html.haml +3 -0
  60. data/app/views/admin/assets/_form.html.haml +18 -0
  61. data/app/views/admin/assets/_page_assets.html.haml +12 -0
  62. data/app/views/admin/assets/_search.html.haml +17 -0
  63. data/app/views/admin/assets/_search_results.html.haml +17 -0
  64. data/app/views/admin/assets/edit.html.haml +40 -0
  65. data/app/views/admin/assets/index.html.haml +15 -0
  66. data/app/views/admin/assets/new.html.haml +24 -0
  67. data/app/views/admin/assets/refresh.html.haml +14 -0
  68. data/app/views/admin/assets/remove.html.haml +16 -0
  69. data/app/views/admin/configuration/_clipped_edit.html.haml +8 -0
  70. data/app/views/admin/configuration/_clipped_show.html.haml +12 -0
  71. data/app/views/admin/page_attachments/_attachment.html.haml +25 -0
  72. data/app/views/admin/pages/_asset_popups.html.haml +37 -0
  73. data/app/views/admin/pages/_assets.html.haml +13 -0
  74. data/app/views/admin/removed/_assets_bucket.html.haml +8 -0
  75. data/app/views/admin/removed/_assets_container.html.haml +54 -0
  76. data/app/views/admin/removed/_bucket.html.haml +11 -0
  77. data/app/views/admin/removed/_bucket_asset.html.haml +9 -0
  78. data/app/views/admin/removed/_show_bucket_link.html.haml +4 -0
  79. data/app/views/admin/removed/_upload_to_page.html.haml +12 -0
  80. data/app/views/admin/removed/bucket/_iframe.html.haml +1 -0
  81. data/config/application.rb +0 -37
  82. data/config/initializers/assets.rb +1 -0
  83. data/config/initializers/interpolation.rb +6 -0
  84. data/config/initializers/kraken.rb +7 -0
  85. data/config/initializers/trusty_cms_config.rb +67 -0
  86. data/config/locales/en.yml +101 -0
  87. data/config/routes.rb +14 -3
  88. data/coverage/index.html +26 -26
  89. data/db/migrate/028_create_assets.rb +12 -0
  90. data/db/migrate/029_create_paperclip_attributes.rb +13 -0
  91. data/db/migrate/030_create_user_observer.rb +13 -0
  92. data/db/migrate/031_create_page_attachments.rb +19 -0
  93. data/db/migrate/032_rename_users.rb +13 -0
  94. data/db/migrate/20110513205050_asset_uuid.rb +11 -0
  95. data/db/migrate/20110606111250_update_configuration.rb +34 -0
  96. data/db/migrate/20110609101438_dimensions.rb +13 -0
  97. data/lib/trusty_cms.rb +1 -1
  98. data/spec/dummy/db/schema.rb +22 -0
  99. data/spec/dummy/log/test.log +95620 -0
  100. data/spec/dummy/tmp/cache/747/A70/TrustyCms%3A%3AConfig +0 -0
  101. data/spec/dummy/tmp/cache/85C/FA0/TrustyCms.cache_mtime +0 -0
  102. data/spec/dummy/tmp/capybara/capybara-20180312152412265881245.html +262 -0
  103. data/spec/dummy/tmp/capybara/capybara-201803121526139973682798.html +149 -0
  104. data/spec/factories/layout.rb +1 -1
  105. data/spec/factories/page.rb +3 -3
  106. data/spec/factories/page_part.rb +1 -1
  107. data/spec/factories/user.rb +1 -1
  108. data/spec/models/layout_spec.rb +6 -6
  109. data/spec/spec_helper.rb +4 -4
  110. data/trusty_cms.gemspec +27 -22
  111. data/vendor/extensions/clipped-extension/clipped_extension.rb +40 -0
  112. data/vendor/extensions/clipped-extension/lib/asset_tags.rb +346 -0
  113. data/vendor/extensions/clipped-extension/lib/clipped/engine.rb +11 -0
  114. data/vendor/extensions/clipped-extension/lib/clipped_admin_ui.rb +28 -0
  115. data/vendor/extensions/clipped-extension/lib/generators/templates/clipped_config.rb +53 -0
  116. data/vendor/extensions/clipped-extension/lib/page_asset_associations.rb +13 -0
  117. data/vendor/extensions/clipped-extension/lib/paperclip/frame_grab.rb +73 -0
  118. data/vendor/extensions/clipped-extension/lib/paperclip/geometry_transformation.rb +80 -0
  119. data/vendor/extensions/clipped-extension/lib/tasks/clipped_extension_tasks.rake +124 -0
  120. data/vendor/extensions/clipped-extension/lib/tasks/paperclip_tasks.rake +79 -0
  121. data/vendor/extensions/clipped-extension/lib/trusty-clipped-extension.rb +2 -0
  122. data/vendor/extensions/clipped-extension/lib/trusty_cms_clipped_extension/cloud.rb +41 -0
  123. metadata +219 -67
  124. data/config/initializers/ckeditor.rb +0 -3
  125. data/config/initializers/haml.rb +0 -2
  126. data/config/initializers/rails_patch.rb +0 -2
  127. data/config/initializers/string_extensions.rb +0 -1
  128. data/config/initializers/symbol_extensions.rb +0 -1
@@ -0,0 +1,239 @@
1
+ class AssetType
2
+
3
+ # The Asset Type encapsulates a type of attachment.
4
+ # Conventionally this would a sensible category like 'image' or 'video'
5
+ # that should be processed and presented in a particular way.
6
+ # An AssetType currently provides:
7
+ # * processor definitions for paperclip
8
+ # * styles definitions for paperclip
9
+ # * mime type list for file recognition
10
+ # * selectors and scopes for retrieving this (or not this) category of asset
11
+ # * radius tags for those subsets of assets (temporarily removed pending discussion of interface)
12
+
13
+ @@types = []
14
+ @@type_lookup = {}
15
+ @@extension_lookup = {}
16
+ @@mime_lookup = {}
17
+ @@default_type = nil
18
+ attr_reader :name, :processors, :styles, :icon_name, :catchall, :default_radius_tag
19
+
20
+ def initialize(name, options = {})
21
+ options = options.symbolize_keys
22
+ @name = name
23
+ @icon_name = options[:icon] || name
24
+ @processors = options[:processors] || []
25
+ @styles = options[:styles] || {}
26
+ @styles = standard_styles if @styles == :standard
27
+ @default_radius_tag = options[:default_radius_tag] || 'link'
28
+ @extensions = options[:extensions] || []
29
+ @extensions.each { |ext| @@extension_lookup[ext] ||= self }
30
+ @mimes = options[:mime_types] || []
31
+ @mimes.each { |mimetype| @@mime_lookup[mimetype] ||= self }
32
+
33
+ this = self
34
+ Asset.send :define_method, "#{name}?".intern do this.mime_types.include?(asset_content_type) end
35
+ Asset.send :define_class_method, "#{name}_condition".intern do this.condition; end
36
+ Asset.send :define_class_method, "not_#{name}_condition".intern do this.non_condition; end
37
+ Asset.send :scope, plural.to_sym, -> {where(:conditions => condition)}
38
+ Asset.send :scope, "not_#{plural}".to_sym, -> {where(:conditions => non_condition)}
39
+
40
+ self.define_radius_tags
41
+ @@types.push self
42
+ @@type_lookup[@name] = self
43
+ end
44
+
45
+ def plural
46
+ name.to_s.pluralize
47
+ end
48
+
49
+ def icon(style_name='icon')
50
+ if File.exist?(Rails.root + "public/images/admin/assets/#{icon_name}_#{style_name.to_s}.png")
51
+ return "/assets/admin/#{icon_name}_#{style_name.to_s}.png"
52
+ else
53
+ return "/assets/admin/#{icon_name}_icon.png"
54
+ end
55
+ end
56
+
57
+ def icon_path(style_name='icon')
58
+ Rails.root + "public#{icon(style_name)}"
59
+ end
60
+
61
+ def condition
62
+ if @mimes.any?
63
+ ["asset_content_type IN (#{@mimes.map{'?'}.join(',')})", *@mimes]
64
+ else
65
+ self.class.other_condition
66
+ end
67
+ end
68
+
69
+ def sanitized_condition
70
+ ActiveRecord::Base.send :sanitize_sql_array, condition
71
+ end
72
+
73
+ def non_condition
74
+ if @mimes.any?
75
+ ["NOT asset_content_type IN (#{@mimes.map{'?'}.join(',')})", *@mimes]
76
+ else
77
+ self.class.non_other_condition
78
+ end
79
+ end
80
+
81
+ def sanitized_non_condition
82
+ ActiveRecord::Base.send :sanitize_sql_array, non_condition
83
+ end
84
+
85
+ def mime_types
86
+ @mimes
87
+ end
88
+
89
+ def paperclip_processors
90
+ TrustyCms.config["assets.create_#{name}_thumbnails?"] ? processors : []
91
+ end
92
+
93
+ # Parses and combines the various ways in which paperclip styles can be defined, and normalises them into
94
+ # the format that paperclip expects. Note that :styles => :standard has already been replaced with the
95
+ # results of a call to standard_styles.
96
+ # Styles are passed to paperclip as a hash and arbitrary keys can be passed through from configuration.
97
+ #
98
+ def paperclip_styles
99
+ # Styles are not relevant if processors are not defined.
100
+ # TODO: should this default to an icon set?
101
+ @paperclip_styles ||= if paperclip_processors.any?
102
+ normalize_style_rules(configured_styles.merge(styles))
103
+ else
104
+ {}
105
+ end
106
+ @paperclip_styles
107
+ end
108
+
109
+ # Takes a motley collection of differently-defined styles and renders them into the standard hash-of-hashes format.
110
+ # Solitary strings are assumed to be
111
+ #TODO: define permitted and/or expected options for the asset type and pass through that subset of the style-definition hash
112
+ #
113
+ def normalize_style_rules(styles={})
114
+ styles.each_pair do |name, rule|
115
+ unless rule.is_a? Hash
116
+ if rule =~ /\=/
117
+ parameters = rule.split(',').collect{ |parameter| parameter.split('=') } # array of pairs
118
+ rule = Hash[parameters].symbolize_keys # into hash of :first => last
119
+ else
120
+ rule = {:geometry => rule} # simplest case: name:geom|name:geom
121
+ end
122
+ end
123
+ rule[:geometry] ||= rule.delete(:size)
124
+ styles[name.to_sym] = rule
125
+ end
126
+ styles
127
+ end
128
+
129
+ def standard_styles
130
+ {
131
+ :thumbnail => { :geometry => '100x100#', :format => :png }
132
+ }
133
+ end
134
+
135
+ # Paperclip styles are defined in the config entry `assets.thumbnails.asset_type`, with the format:
136
+ # foo:key-x,key=y,key=z|bar:key-x,key=y,key=z
137
+ # where 'key' can be any parameter understood by your paperclip processors. Usually they include :geometry and :format.
138
+ # A typical entry would be:
139
+ #
140
+ # standard:geometry=640x640>,format=jpg
141
+ #
142
+ # This method parses that string and returns the defined styles as a hash of style-defining strings that will later be normalized into hashes.
143
+ #
144
+ def configured_styles
145
+ @configured_styles ||= if style_definitions = TrustyCms.config["assets.thumbnails.#{name}"]
146
+ style_definitions.split('|').each_with_object({}) do |definition, styles|
147
+ name, rule = definition.split(':')
148
+ styles[name.strip.to_sym] = rule.to_s.strip
149
+ end
150
+ else
151
+ {}
152
+ end
153
+ end
154
+
155
+ def legacy_styles
156
+ TrustyCms::config["assets.additional_thumbnails"].to_s.gsub(' ','').split(',').collect{|s| s.split('=')}.inject({}) {|ha, (k, v)| ha[k.to_sym] = v; ha}
157
+ end
158
+
159
+ def style_dimensions(style_name)
160
+ if style = paperclip_styles[style_name.to_sym]
161
+ style[:size]
162
+ end
163
+ end
164
+
165
+ def define_radius_tags
166
+ type = self.name
167
+ Page.class_eval {
168
+ tag "asset:if_#{type}" do |tag|
169
+ tag.expand if find_asset(tag, tag.attr.dup).send("#{type}?".to_sym)
170
+ end
171
+ tag "asset:unless_#{type}" do |tag|
172
+ tag.expand unless find_asset(tag, tag.attr.dup).send("#{type}?".to_sym)
173
+ end
174
+ }
175
+ end
176
+
177
+ # class methods
178
+
179
+ def self.for(attachment)
180
+ extension = File.extname(attachment.original_filename).sub(/^\.+/, "")
181
+ from_extension(extension) || from_mimetype(attachment.instance_read(:content_type)) || catchall
182
+ end
183
+
184
+ def self.from_extension(extension)
185
+ @@extension_lookup[extension]
186
+ end
187
+
188
+ def self.from_mimetype(mimetype)
189
+ @@mime_lookup[mimetype]
190
+ end
191
+
192
+ def self.catchall
193
+ @@default_type ||= self.find(:other)
194
+ end
195
+
196
+ def self.known?(name)
197
+ !self.find(name).nil?
198
+ end
199
+
200
+ def self.slice(*types)
201
+ @@type_lookup.slice(*types.map(&:to_sym)).values if types # Hash#slice is provided by will_paginate
202
+ end
203
+
204
+ def self.find(type)
205
+ @@type_lookup[type] if type
206
+ end
207
+ def self.[](type)
208
+ find(type)
209
+ end
210
+
211
+ def self.all
212
+ @@types
213
+ end
214
+
215
+ def self.known_types
216
+ @@types.map(&:name) # to preserve order
217
+ end
218
+
219
+ def self.known_mimetypes
220
+ @@mime_lookup.keys
221
+ end
222
+
223
+ def self.mime_types_for(*names)
224
+ names.collect{ |name| find(name).mime_types }.flatten
225
+ end
226
+
227
+ def self.conditions_for(*names)
228
+ names.collect{ |name| self.find(name).sanitized_condition }.join(' OR ')
229
+ end
230
+
231
+ def self.non_other_condition
232
+ ["asset_content_type IN (#{known_mimetypes.map{'?'}.join(',')})", *known_mimetypes]
233
+ end
234
+
235
+ def self.other_condition
236
+ ["NOT asset_content_type IN (#{known_mimetypes.map{'?'}.join(',')})", *known_mimetypes]
237
+ end
238
+
239
+ end
@@ -0,0 +1,26 @@
1
+ class OldPageAttachment < ActiveRecord::Base
2
+ def create_paperclipped_record
3
+ options = {
4
+ :asset_file_size => size,
5
+ :asset_file_name => filename,
6
+ :asset_content_type => content_type,
7
+ :created_by_id => created_by
8
+ }
9
+
10
+ # In newer versions of page_attachments we have title and description fields.
11
+ options[:title] = title if respond_to?(:title)
12
+ options[:caption] = description if respond_to?(:description)
13
+
14
+ a = Asset.new(options)
15
+ a.save
16
+
17
+ # Re-attach the asset to it's page
18
+ page = Page.find(page_id)
19
+ p = PageAttachment.create(:asset_id => a.id, :page_id => page.id)
20
+
21
+ # Circumvent acts_as_list before_create filter to set the original page_attachment position.
22
+ PageAttachment.update_all("position=#{position}", "id=#{p.id}") if respond_to?(:position)
23
+
24
+ a
25
+ end
26
+ end
@@ -0,0 +1,20 @@
1
+ class PageAttachment < ActiveRecord::Base
2
+ belongs_to :asset
3
+ belongs_to :page
4
+ attr_accessor :selected
5
+
6
+ accepts_nested_attributes_for :asset
7
+
8
+ acts_as_list :scope => :page_id
9
+
10
+ def selected?
11
+ !!selected
12
+ end
13
+
14
+ # a small change to the method in acts_as_list so that we don't override
15
+ # the position value if it has already been set (as it usually is for new attachments)
16
+ def add_to_list_bottom
17
+ self[position_column] ||= bottom_position_in_list.to_i + 1
18
+ end
19
+
20
+ end
@@ -0,0 +1,12 @@
1
+ - asset ||= @asset
2
+ - asset_type = asset.image? ? "image" : "link"
3
+
4
+ %li{:class => "#{asset_type} asset", :id => "asset_#{asset.id}"}
5
+ .front
6
+ .thumbnail= image_tag asset.thumbnail(:thumbnail)
7
+ .back
8
+ .title= asset.title
9
+ %ul.actions
10
+ %li
11
+ = link_to t('clipped_extension.edit'), edit_admin_asset_url(asset), :class => 'edit_asset'
12
+ = link_to t('clipped_extension.remove'), remove_admin_asset_url(asset), :class => 'remove_asset'
@@ -0,0 +1,30 @@
1
+ - assets ||= @assets
2
+ - page ||= @page
3
+ - with_pagination ||= false
4
+
5
+ - if assets.empty?
6
+ %p
7
+ = t("clipped_extension.no_assets")
8
+ - else
9
+ - if with_pagination && assets.respond_to?(:total_pages) && assets.total_pages > 1
10
+ = pagination_for(assets, pagination_parameters.merge(:depaginate => false, :params => {:controller => 'admin/assets', :action => 'index', :id => nil, :format => 'js'}))
11
+
12
+ %ul
13
+ - assets.each_with_index do |asset, index|
14
+ - asset_type = asset.image? ? "image" : "link"
15
+ %li{:class => "#{asset_type} asset", :id => "asset_#{asset.id}"}
16
+ .front
17
+ .thumbnail= image_tag asset.thumbnail(:thumbnail)
18
+ .back
19
+ .title
20
+ = asset.title
21
+ %ul.actions
22
+ - if @page
23
+ %li= asset_insertion_link(asset)
24
+ %li= asset_attachment_link(asset)
25
+ - else
26
+ %li= link_to t('clipped_extension.edit'), admin_asset_path(asset), :class => 'edit'
27
+ %li= link_to t("clipped_extension.remove"), remove_admin_asset_path(asset), :class => "delete"
28
+
29
+ - if with_pagination && assets.respond_to?(:total_pages) && assets.total_pages > 1
30
+ = pagination_for(assets, pagination_parameters.merge(:depaginate => false, :param_name => 'p', :params => {:controller => 'admin/assets', :action => 'index', :id => nil, :format => 'js', :page_id => (page && page.id), :pp => assets.per_page }))
@@ -0,0 +1,3 @@
1
+ - if @asset.errors && !@asset.errors.empty?
2
+ %p#asset_errors
3
+ %strong= t("clipped_extension.asset_errors", :errors => @asset.errors.full_messages.to_sentence)
@@ -0,0 +1,18 @@
1
+ = render_region :form_top
2
+ - render_region :form do |form|
3
+ - form.edit_title do
4
+ %fieldset.title
5
+ - form.edit_metadata do
6
+ .drawer
7
+ .drawer_contents#attributes
8
+ %table.fieldset
9
+ %tr
10
+ %th.label
11
+ %label{ :for => "asset_caption" }
12
+ = t("clipped_extension.caption")
13
+ %td.field
14
+ = f.text_field :caption, :class => 'textbox', :maxlength => 255
15
+ = render_region :extended_metadata, :locals => {:f => f}
16
+ .drawer_handle
17
+ %a.toggle.more{:href=>'#attributes', :rel=>"toggle[attributes]"}
18
+ = t('more')
@@ -0,0 +1,12 @@
1
+ - unless @page.assets.empty?
2
+ - @page.page_attachments.each do |attachment|
3
+ = render :partial => 'admin/assets/asset', :locals => { :attachment => attachment }
4
+ - else
5
+ %li
6
+ %p.note
7
+ = t("clipped_extension.no_attached_assets")
8
+
9
+ %script{ :type => "text/javascript" }
10
+ Asset.MakeDraggables();
11
+
12
+ = sortable_element 'attachments', :url => reorder_assets_url(@page), :constraint => 'horizontal', :handle => 'reorder', :ghosting => false, :complete => visual_effect(:highlight, 'assets')
@@ -0,0 +1,17 @@
1
+ = form_tag(admin_assets_path, :id=>'filesearchform', :method => 'get', :class=>"search") do
2
+ - if @page
3
+ = hidden_field_tag "page_id", @page.id
4
+ = hidden_field_tag "p", params['p'] || 1
5
+ = hidden_field_tag "pp", params['pp'] || 20
6
+
7
+ .asset_filters
8
+ = link_to t("asset_types.all"), admin_assets_url, :id => "select_all", :class => params[:filter].blank? ? "deselective pressed" : "deselective"
9
+ - AssetType.all.each do |type|
10
+ - unless type.name == :other
11
+ = link_to t("asset_types.#{type.plural}"), admin_assets_url(:filter => type.name), :rel => type.name.to_s, :class => params[:filter] == type.name.to_s ? "selective pressed" : "selective"
12
+ .right
13
+ %input{:type=>"search", :id => 'filesearchforminput', :class=>"search", :name=>"search", :value=>h(params[:search]), :placeholder=>"Search", :results=>0, :size=>30}
14
+
15
+ #type_boxes{:style => "display: none"}
16
+ - AssetType.all.each do |type|
17
+ = check_box_tag 'filter[]', type.name.to_s, false, :id => "#{type.name}-check", :class => 'selective'
@@ -0,0 +1,17 @@
1
+ %ul#search_list
2
+ - unless @assets.empty?
3
+ - @assets.each do |asset|
4
+ =# render :partial => 'asset', :locals => { :asset => asset, :page => @page }
5
+ = render :partial => 'admin/assets/asset', :locals => { :asset_url => asset.asset.url, :asset_id => asset.id, :asset_type => 'image', :asset_title => asset.title, :asset_thumbnail => asset.thumbnail(:thumbnail), :page => @page }
6
+
7
+ - else
8
+ %li
9
+ %p.note
10
+ = t("clipped_extension.no_assets_found")
11
+
12
+ %script
13
+ Asset.MakeDroppables();
14
+ Asset.MakeDraggables();
15
+ Event.addBehavior({ '.asset a' : Asset.DisableLinks, 'a.add_asset' : Asset.AddToPage });
16
+
17
+
@@ -0,0 +1,40 @@
1
+ = stylesheet_link_tag 'admin/assets'
2
+ = render_region :top
3
+
4
+ - render_region :main do |main|
5
+ - main.edit_header do
6
+ %h1= t("clipped_extension.asset_edit_title")
7
+
8
+ - main.edit_form do
9
+ - form_for :asset, :url => admin_asset_path(@asset), :html => { :method => "put", :multipart => true } do |f|
10
+ .form_area
11
+ = render :partial => "form", :locals => { :f => f }
12
+
13
+ %div.content
14
+ %fieldset
15
+ %label.filename
16
+ = "#{t("clipped_extension.filename")}: #{@asset.asset_file_name unless @asset.new_record?}"
17
+ %p.asset
18
+ - display_size = TrustyCms::config['assets.display_size'] || 'normal'
19
+ = image_tag @asset.thumbnail(display_size.to_sym), :class => 'preview'
20
+
21
+ = updated_stamp @asset
22
+
23
+ %fieldset.upload
24
+ %label.upload
25
+ = t("clipped_extension.replace_file")
26
+ = f.file_field :asset, :class => "", :style => "width: 100%"
27
+
28
+ .buttons
29
+ = save_model_button(@asset)
30
+ = save_model_and_continue_editing_button(@asset)
31
+ = t("or")
32
+ = link_to t("cancel"), admin_assets_path
33
+
34
+ - main.edit_regenerate do
35
+ - if current_user.admin? or current_user.designer?
36
+ %fieldset= t("clipped_extension.regenerate_thumbnails")
37
+
38
+ - form_tag refresh_admin_asset_path(@asset), :method => :put do
39
+ %p.asset_buttons
40
+ %input.button{ :type => "submit", :value => t("clipped_extension.regenerate") }
@@ -0,0 +1,15 @@
1
+ = stylesheet_link_tag 'admin/assets'
2
+ = javascript_include_tag 'admin/assets_admin'
3
+
4
+ - content_for :toolbar do
5
+ = render 'search'
6
+
7
+ .outset
8
+ #assets_table.assets
9
+ = render :partial => 'asset_table', :locals => { assets: @assets, with_pagination: true }
10
+ %p{style: 'clear: both; height: 2em'} &nbsp;
11
+
12
+ - render_region :bottom do |bottom|
13
+ #actions
14
+ %ul
15
+ %li= link_to((image('upload') + ' ' + t('clipped_extension.upload_asset')), new_admin_asset_path)
@@ -0,0 +1,24 @@
1
+ = stylesheet_link_tag 'admin/assets'
2
+ = render_region :top
3
+
4
+ - render_region :main do |main|
5
+ - main.edit_header do
6
+ %h1= t("clipped_extension.new_asset")
7
+
8
+ - main.edit_form do
9
+ - form_for :asset, :url => admin_assets_path, :html => { :method => "post", :multipart => true } do |f|
10
+
11
+ = render :partial => "form", :locals => { :f => f }
12
+
13
+ %fieldset
14
+ %label= t("clipped_extension.choose_file")
15
+ = f.file_field :asset, :style => "width: 100%", :multiple => true
16
+
17
+ .buttons
18
+ = save_model_button(@asset)
19
+ = save_model_and_continue_editing_button(@asset)
20
+ = t("or")
21
+ = link_to t("cancel"), admin_assets_path
22
+
23
+ - main.edit_regenerate do
24
+ &nbsp;
@@ -0,0 +1,14 @@
1
+ = stylesheet_link_tag 'admin/assets'
2
+
3
+ %h1
4
+ = t("clipped_extension.refresh_assets")
5
+ %p.confirmation
6
+ = t("clipped_extension.confirm_refresh_assets")
7
+ %p.confirmation
8
+ =t('clipped_extension.refresh_assets_rake_task')
9
+
10
+ %form{:action => regenerate_admin_assets_path, :method => :post}
11
+ .buttons
12
+ %input.button{:type => "submit", :value => t("clipped_extension.refresh_assets")}
13
+ = t("or")
14
+ = link_to t("cancel"), admin_assets_path
@@ -0,0 +1,16 @@
1
+ = stylesheet_link_tag 'admin/assets'
2
+
3
+ %h1= t("clipped_extension.remove_asset")
4
+ %p.warning= t("clipped_extension.confirm_remove_asset")
5
+
6
+ %table.index#assets{:cellpadding => "0", :cellspacing => "0", :border => "0"}
7
+ %tbody
8
+ %tr[@asset]
9
+ %td.icon= image_tag @asset.thumbnail(:icon), :title => @asset.asset_file_name
10
+ %td.name= @asset.title
11
+
12
+ = form_for [:admin, @asset], :html => { :method => 'delete' } do
13
+ .buttons
14
+ %input.button{:type => "submit", :value => t("clipped_extension.delete_asset")}
15
+ = t("or")
16
+ = link_to t("cancel"), admin_assets_path
@@ -0,0 +1,8 @@
1
+ %fieldset
2
+ %h3
3
+ = t('clipped_extension.assets')
4
+ %p= edit_config 'assets.max_asset_size'
5
+ %p= edit_config 'assets.display_size'
6
+ %p= edit_config 'assets.insertion_size'
7
+ - %w{image video pdf}.each do |type|
8
+ %p= edit_config "assets.create_#{type}_thumbnails?"
@@ -0,0 +1,12 @@
1
+ %h4
2
+ = t('clipped_extension.assets')
3
+ %p.ruled
4
+ = show_config 'assets.max_asset_size'
5
+ %p.ruled
6
+ = show_config 'assets.display_size'
7
+ %p.ruled
8
+ = show_config 'assets.insertion_size'
9
+ - %w{image video pdf}.each do |type|
10
+ %p.ruled
11
+ = show_config "assets.create_#{type}_thumbnails?"
12
+
@@ -0,0 +1,25 @@
1
+ - attachment ||= @page_attachment
2
+
3
+ - page = attachment.page
4
+ - asset = attachment.asset
5
+ - asset_type = asset.image? ? "image" : "link"
6
+ - css_class = "#{asset_type} asset"
7
+ - css_class += ' unsaved' if attachment.new_record?
8
+
9
+ %li{:class => css_class, :id => "attachment_#{asset.uuid}", data: {toggle: "tooltip", placement: "left"}, title: "Asset ID: #{asset.id}"}
10
+ = fields_for :page, @page do |f|
11
+ = f.fields_for :page_attachments, attachment, :child_index => asset.uuid do |paf|
12
+ - if attachment.new_record?
13
+ = paf.hidden_field :asset_id, :class => 'attacher'
14
+ - else
15
+ = paf.hidden_field :_destroy, :class => 'destroyer'
16
+ = paf.hidden_field :position, :class => 'pos'
17
+ .front
18
+ .thumbnail= image_tag asset.thumbnail(:thumbnail), alt: "Asset ID: #{asset.id}"
19
+ .back
20
+ .title= asset.title
21
+ %ul.actions
22
+ %li
23
+ = asset_insertion_link(asset)
24
+ %li
25
+ = link_to t('clipped_extension.detach'), '#', :class => 'detach_asset'
@@ -0,0 +1,37 @@
1
+ - render_region :asset_popups do |popups|
2
+ - popups.upload_asset do
3
+ #upload_asset.popup.textured{:style => "display: none; width: 28em"}
4
+ #upload_asset_busy.busy{:style => "display: none"}= image('spinner.gif', :alt => "")
5
+
6
+ .popup_title= t('clipped_extension.upload_asset')
7
+
8
+ = form_for([:admin, Asset.new], :html => {:method => 'post', :multipart => true, :class => 'upload_asset'}) do |f|
9
+ = hidden_field_tag "for_attachment", 1
10
+ = hidden_field_tag "page_id", @page.id
11
+ #upload-controls
12
+ %p
13
+ = f.label :asset, t("clipped_extension.choose_file")
14
+ = f.file_field :asset, :class => 'file', :multiple => true
15
+ #upload-status{:style => 'display: none;'}
16
+ %img{:src => "/assets/admin/spinner.gif"}
17
+ %p
18
+ %a#attach-popup{:href=>"#attach_asset", :style => 'color: #666; font-size: .8em'}= t('clipped_extension.attach_existing')
19
+
20
+ -#%a.close_popup{:href=>"#"}= 'Upload Complete. Click to Close.'
21
+
22
+ - popups.attach_asset do
23
+ #attach_asset.popup.textured{:style=>"display: none;"}
24
+
25
+ .popup_title= t('clipped_extension.find_assets')
26
+
27
+ .toolbar
28
+ = render :partial => 'admin/assets/search'
29
+
30
+ #assets_table.assets.viewport{:style=>"height: 320px; width: 610px"}
31
+ - assets = Asset.all.paginate(:per_page => 20, page: params[:p])
32
+ = render :partial => 'admin/assets/asset_table', :locals => {:assets => assets, :with_pagination => true}
33
+
34
+ .busy{:style => "display: none"}= image('spinner.gif', :alt => "")
35
+ .buttons
36
+ %a.cancel.close_popup{:href=>"#"}= t('close')
37
+ %a{:href=>"#upload_asset", :id=> "upload_asset_link", :style => 'color: #666; float: left'}= t('clipped_extension.upload_asset')
@@ -0,0 +1,13 @@
1
+ = stylesheet_link_tag 'admin/assets'
2
+ = javascript_include_tag 'admin/assets_admin'
3
+ #content.fieldset
4
+ #attachment_list.assets
5
+ %ul#attachment_fields{:class => @page.page_attachments.empty? ? 'empty' : ''}
6
+ = render :partial => 'admin/page_attachments/attachment', :collection => @page.page_attachments
7
+ %p.note
8
+ = link_to "path/to/page.html" '#attach_asset', :class => 'button', :id => 'attach_assets' do
9
+ %i.fa.fa-image
10
+ = t('clipped_extension.assets')
11
+ %span.message
12
+ - if @page.page_attachments.empty?
13
+ = t('clipped_extension.no_attached_assets')
@@ -0,0 +1,8 @@
1
+ #asset-bucket{ :style => "display: none" }
2
+ = render :partial => "/admin/assets/assets_container"
3
+
4
+ %p.note
5
+ = automatic_size_descriptions
6
+ = t('clipped_extension.images_automatically_created')
7
+ #close-link
8
+ = link_to t("close"), "#"