trusty-cms 3.1.11 → 3.2.0
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.
- checksums.yaml +4 -4
- data/Gemfile +9 -14
- data/Gemfile.lock +84 -70
- data/README.md +4 -0
- data/app/assets/images/admin/add.png +0 -0
- data/app/assets/images/admin/archive_icon.png +0 -0
- data/app/assets/images/admin/audio_icon.png +0 -0
- data/app/assets/images/admin/audio_thumbnail.png +0 -0
- data/app/assets/images/admin/c_icon.png +0 -0
- data/app/assets/images/admin/copy.png +0 -0
- data/app/assets/images/admin/css_icon.png +0 -0
- data/app/assets/images/admin/database_icon.png +0 -0
- data/app/assets/images/admin/delete.png +0 -0
- data/app/assets/images/admin/document_icon.png +0 -0
- data/app/assets/images/admin/document_thumbnail.png +0 -0
- data/app/assets/images/admin/flash_icon.png +0 -0
- data/app/assets/images/admin/flash_thumbnail.png +0 -0
- data/app/assets/images/admin/font_icon.png +0 -0
- data/app/assets/images/admin/gzip_icon.png +0 -0
- data/app/assets/images/admin/html_icon.png +0 -0
- data/app/assets/images/admin/image_icon.png +0 -0
- data/app/assets/images/admin/image_thumbnail.png +0 -0
- data/app/assets/images/admin/java_icon.png +0 -0
- data/app/assets/images/admin/page_edit.png +0 -0
- data/app/assets/images/admin/pdf_icon.png +0 -0
- data/app/assets/images/admin/pdf_thumbnail.png +0 -0
- data/app/assets/images/admin/perl_icon.png +0 -0
- data/app/assets/images/admin/php_icon.png +0 -0
- data/app/assets/images/admin/presentation_icon.png +0 -0
- data/app/assets/images/admin/python_icon.png +0 -0
- data/app/assets/images/admin/reorder_assets.png +0 -0
- data/app/assets/images/admin/ruby_icon.png +0 -0
- data/app/assets/images/admin/script_icon.png +0 -0
- data/app/assets/images/admin/spinner.gif +0 -0
- data/app/assets/images/admin/spreadsheet_icon.png +0 -0
- data/app/assets/images/admin/tar_icon.png +0 -0
- data/app/assets/images/admin/unknown_icon.png +0 -0
- data/app/assets/images/admin/unknown_thumbnail.png +0 -0
- data/app/assets/images/admin/video_icon.png +0 -0
- data/app/assets/images/admin/video_thumbnail.png +0 -0
- data/app/assets/images/admin/xml_icon.png +0 -0
- data/app/assets/images/admin/zip_icon.png +0 -0
- data/app/assets/javascripts/admin/assets.js +268 -0
- data/app/assets/javascripts/admin/assets_admin.js +16 -0
- data/app/assets/javascripts/admin/jquery.fileupload.js +1457 -0
- data/app/assets/javascripts/admin/jquery.iframe-transport.js +214 -0
- data/app/assets/javascripts/admin/jquery.ui.widget.js +558 -0
- data/app/assets/stylesheets/admin/assets.scss +283 -0
- data/app/controllers/admin/assets_controller.rb +88 -0
- data/app/controllers/admin/page_attachments_controller.rb +23 -0
- data/app/helpers/admin/assets_helper.rb +16 -0
- data/app/helpers/admin/page_attachments_helper.rb +2 -0
- data/app/models/asset.rb +251 -0
- data/app/models/asset_type.rb +239 -0
- data/app/models/old_page_attachment.rb +26 -0
- data/app/models/page_attachment.rb +20 -0
- data/app/views/admin/assets/_asset.html.haml +12 -0
- data/app/views/admin/assets/_asset_table.html.haml +30 -0
- data/app/views/admin/assets/_errors.html.haml +3 -0
- data/app/views/admin/assets/_form.html.haml +18 -0
- data/app/views/admin/assets/_page_assets.html.haml +12 -0
- data/app/views/admin/assets/_search.html.haml +17 -0
- data/app/views/admin/assets/_search_results.html.haml +17 -0
- data/app/views/admin/assets/edit.html.haml +40 -0
- data/app/views/admin/assets/index.html.haml +15 -0
- data/app/views/admin/assets/new.html.haml +24 -0
- data/app/views/admin/assets/refresh.html.haml +14 -0
- data/app/views/admin/assets/remove.html.haml +16 -0
- data/app/views/admin/configuration/_clipped_edit.html.haml +8 -0
- data/app/views/admin/configuration/_clipped_show.html.haml +12 -0
- data/app/views/admin/page_attachments/_attachment.html.haml +25 -0
- data/app/views/admin/pages/_asset_popups.html.haml +37 -0
- data/app/views/admin/pages/_assets.html.haml +13 -0
- data/app/views/admin/removed/_assets_bucket.html.haml +8 -0
- data/app/views/admin/removed/_assets_container.html.haml +54 -0
- data/app/views/admin/removed/_bucket.html.haml +11 -0
- data/app/views/admin/removed/_bucket_asset.html.haml +9 -0
- data/app/views/admin/removed/_show_bucket_link.html.haml +4 -0
- data/app/views/admin/removed/_upload_to_page.html.haml +12 -0
- data/app/views/admin/removed/bucket/_iframe.html.haml +1 -0
- data/config/application.rb +0 -37
- data/config/initializers/assets.rb +1 -0
- data/config/initializers/interpolation.rb +6 -0
- data/config/initializers/kraken.rb +7 -0
- data/config/initializers/trusty_cms_config.rb +67 -0
- data/config/locales/en.yml +101 -0
- data/config/routes.rb +14 -3
- data/coverage/index.html +26 -26
- data/db/migrate/028_create_assets.rb +12 -0
- data/db/migrate/029_create_paperclip_attributes.rb +13 -0
- data/db/migrate/030_create_user_observer.rb +13 -0
- data/db/migrate/031_create_page_attachments.rb +19 -0
- data/db/migrate/032_rename_users.rb +13 -0
- data/db/migrate/20110513205050_asset_uuid.rb +11 -0
- data/db/migrate/20110606111250_update_configuration.rb +34 -0
- data/db/migrate/20110609101438_dimensions.rb +13 -0
- data/lib/trusty_cms.rb +1 -1
- data/spec/dummy/db/schema.rb +22 -0
- data/spec/dummy/log/test.log +95620 -0
- data/spec/dummy/tmp/cache/747/A70/TrustyCms%3A%3AConfig +0 -0
- data/spec/dummy/tmp/cache/85C/FA0/TrustyCms.cache_mtime +0 -0
- data/spec/dummy/tmp/capybara/capybara-20180312152412265881245.html +262 -0
- data/spec/dummy/tmp/capybara/capybara-201803121526139973682798.html +149 -0
- data/spec/factories/layout.rb +1 -1
- data/spec/factories/page.rb +3 -3
- data/spec/factories/page_part.rb +1 -1
- data/spec/factories/user.rb +1 -1
- data/spec/models/layout_spec.rb +6 -6
- data/spec/spec_helper.rb +4 -4
- data/trusty_cms.gemspec +27 -22
- data/vendor/extensions/clipped-extension/clipped_extension.rb +40 -0
- data/vendor/extensions/clipped-extension/lib/asset_tags.rb +346 -0
- data/vendor/extensions/clipped-extension/lib/clipped/engine.rb +11 -0
- data/vendor/extensions/clipped-extension/lib/clipped_admin_ui.rb +28 -0
- data/vendor/extensions/clipped-extension/lib/generators/templates/clipped_config.rb +53 -0
- data/vendor/extensions/clipped-extension/lib/page_asset_associations.rb +13 -0
- data/vendor/extensions/clipped-extension/lib/paperclip/frame_grab.rb +73 -0
- data/vendor/extensions/clipped-extension/lib/paperclip/geometry_transformation.rb +80 -0
- data/vendor/extensions/clipped-extension/lib/tasks/clipped_extension_tasks.rake +124 -0
- data/vendor/extensions/clipped-extension/lib/tasks/paperclip_tasks.rake +79 -0
- data/vendor/extensions/clipped-extension/lib/trusty-clipped-extension.rb +2 -0
- data/vendor/extensions/clipped-extension/lib/trusty_cms_clipped_extension/cloud.rb +41 -0
- metadata +219 -67
- data/config/initializers/ckeditor.rb +0 -3
- data/config/initializers/haml.rb +0 -2
- data/config/initializers/rails_patch.rb +0 -2
- data/config/initializers/string_extensions.rb +0 -1
- data/config/initializers/symbol_extensions.rb +0 -1
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
- @stylesheets << 'admin/assets'
|
|
2
|
+
= javascript_include_tag 'admin/assets_admin'
|
|
3
|
+
|
|
4
|
+
#assets-container
|
|
5
|
+
#asset-tabs
|
|
6
|
+
- render_region :asset_tabs do |asset_tabs|
|
|
7
|
+
- if @page && !@page.new_record?
|
|
8
|
+
- asset_tabs.attachment_tab do
|
|
9
|
+
%a.asset-tab{ :href => "#page-attachments", :id => "tab_page-attachments" }
|
|
10
|
+
= t("clipped_extension.attached_assets")
|
|
11
|
+
- asset_tabs.upload_tab do
|
|
12
|
+
%a.asset-tab{ :href => "#upload_assets", :id => "tab_upload_assets" }
|
|
13
|
+
= t("clipped_extension.upload")
|
|
14
|
+
- asset_tabs.bucket_tab do
|
|
15
|
+
%a.asset-tab{ :href => "#bucket", :id => "tab_bucket" }
|
|
16
|
+
= t("clipped_extension.bucket")
|
|
17
|
+
- asset_tabs.search_tab do
|
|
18
|
+
%a.asset-tab{ :href => "#search-assets" }
|
|
19
|
+
= t("clipped_extension.search")
|
|
20
|
+
- else
|
|
21
|
+
- asset_tabs.bucket_tab do
|
|
22
|
+
%a.asset-tab.here{ :href => "#" }
|
|
23
|
+
= t("clipped_extension.bucket")
|
|
24
|
+
- if @page && !@page.new_record?
|
|
25
|
+
- render_region :asset_panes do |asset_panes|
|
|
26
|
+
|
|
27
|
+
- asset_panes.page_attachments do
|
|
28
|
+
#page-attachments.pane
|
|
29
|
+
%p
|
|
30
|
+
%span.note
|
|
31
|
+
!= t("clipped_extension.asset_note")
|
|
32
|
+
%ul#attachments
|
|
33
|
+
= render :partial => "admin/assets/page_assets"
|
|
34
|
+
.clear
|
|
35
|
+
|
|
36
|
+
- asset_panes.upload do
|
|
37
|
+
#upload_assets.pane
|
|
38
|
+
%p
|
|
39
|
+
%span.note
|
|
40
|
+
!= t("clipped_extension.asset_page_upload_note")
|
|
41
|
+
= render :partial => "admin/assets/upload_to_page"
|
|
42
|
+
.clear
|
|
43
|
+
- asset_panes.search do
|
|
44
|
+
#search-assets.pane
|
|
45
|
+
- form_tag do
|
|
46
|
+
%p
|
|
47
|
+
%label.note{ :for => 'search' }
|
|
48
|
+
= t("clipped_extension.search_assets")
|
|
49
|
+
%input{ :type => "hidden", :name => "search", :value => @page.id }
|
|
50
|
+
%input{ :type => "search", :id => "search", :name => "search" }
|
|
51
|
+
= submit_tag t("clipped_extension.search")
|
|
52
|
+
#search-results
|
|
53
|
+
.clear
|
|
54
|
+
= observe_field 'search', :frequency => 1, :update => 'search-results', :url => admin_assets_path(:asset_page => @page), :method => 'get', :with => "'search=' + escape(value)"
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
%ul#bucket_list
|
|
2
|
+
- if session[:bucket]
|
|
3
|
+
- session[:bucket].each do |url, info|
|
|
4
|
+
= render :partial => 'admin/assets/bucket_asset', :locals => { :asset_url => url, :asset_id => info[:id], :asset_type => info[:type], :asset_title => info[:title], :asset_thumbnail =>info[:thumbnail], :page => @page }
|
|
5
|
+
- else
|
|
6
|
+
%li
|
|
7
|
+
%p.note
|
|
8
|
+
= t("clipped_extension.empty_bucket")
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
%li
|
|
2
|
+
|
|
3
|
+
%div{ :class => "#{asset_type} asset", :id => "bucket_#{asset_id}" }
|
|
4
|
+
= link_to image_tag(asset_thumbnail), asset_url, :title => asset_title, :class => "bucket_link"
|
|
5
|
+
|
|
6
|
+
.info{ :id => "#{asset_id}_info" }
|
|
7
|
+
= link_to image('assets/edit'), edit_admin_asset_url(asset_id), :class => "edit_asset", :title => t("clipped_extension.edit_asset", :asset => asset_title)
|
|
8
|
+
- if page && !page.new_record?
|
|
9
|
+
= link_to image('assets/add'), attach_page_asset_url(:asset => asset_id, :page => page.id), :class => "add_asset", :title => t("clipped_extension.attach_to_page")
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
#upload-form
|
|
2
|
+
- form_for :asset, :url => admin_assets_path(:page => @page, :format => 'js'), :html => { :id => 'asset-upload', :method => "post", :multipart => true, :target => 'ulframe' } do |form|
|
|
3
|
+
%div.file
|
|
4
|
+
%label.upload
|
|
5
|
+
= t("clipped_extension.choose_upload")
|
|
6
|
+
= form.file_field :asset, :class => "", :style => "width: 100%"
|
|
7
|
+
|
|
8
|
+
.upload-buttons
|
|
9
|
+
= form.submit t("clipped_extension.save_and_upload"), :class => "button"
|
|
10
|
+
%div.spinner
|
|
11
|
+
|
|
12
|
+
%iframe{:id => 'ulframe', :name => "ulframe", :src => "about:blank"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
= render :partial => 'admin/assets/asset', :object => asset, :locals => {:dom_id => "attachment_#{asset.id}" }
|
data/config/application.rb
CHANGED
|
@@ -12,10 +12,7 @@ require 'trustygems'
|
|
|
12
12
|
|
|
13
13
|
|
|
14
14
|
if defined?(Bundler)
|
|
15
|
-
# If you precompile assets before deploying to production, use this line
|
|
16
15
|
Bundler.require(*Rails.groups(:assets => %w(development test)))
|
|
17
|
-
# If you want your assets lazily compiled in production, use this line
|
|
18
|
-
# Bundler.require(:default, :assets, Rails.env)
|
|
19
16
|
end
|
|
20
17
|
|
|
21
18
|
module TrustyCms
|
|
@@ -47,40 +44,6 @@ module TrustyCms
|
|
|
47
44
|
|
|
48
45
|
config.encoding = 'utf-8'
|
|
49
46
|
|
|
50
|
-
# Skip frameworks you're not going to use (only works if using vendor/rails).
|
|
51
|
-
# To use Rails without a database, you must remove the Active Record framework
|
|
52
|
-
# config.frameworks -= [ :action_mailer ]
|
|
53
|
-
|
|
54
|
-
# Only load the extensions named here, in the order given. By default all
|
|
55
|
-
# extensions in vendor/extensions are loaded, in alphabetical order. :all
|
|
56
|
-
# can be used as a placeholder for all extensions not explicitly named.
|
|
57
|
-
# config.extensions = [ :all ]
|
|
58
|
-
|
|
59
|
-
# By default, only English translations are loaded. Remove any of these from
|
|
60
|
-
# the list below if you'd like to provide any of the additional options
|
|
61
|
-
# config.ignore_extensions []
|
|
62
|
-
|
|
63
|
-
# Comment out this line if you want to turn off all caching, or
|
|
64
|
-
# add options to modify the behavior. In the majority of deployment
|
|
65
|
-
# scenarios it is desirable to leave TrustyCms's cache enabled and in
|
|
66
|
-
# the default configuration.
|
|
67
|
-
#
|
|
68
|
-
# Additional options:
|
|
69
|
-
# :use_x_sendfile => true
|
|
70
|
-
# Turns on X-Sendfile support for Apache with mod_xsendfile or lighttpd.
|
|
71
|
-
# :use_x_accel_redirect => '/some/virtual/path'
|
|
72
|
-
# Turns on X-Accel-Redirect support for nginx. You have to provide
|
|
73
|
-
# a path that corresponds to a virtual location in your webserver
|
|
74
|
-
# configuration.
|
|
75
|
-
# :entitystore => "radiant:tmp/cache/entity"
|
|
76
|
-
# Sets the entity store type (preceding the colon) and storage
|
|
77
|
-
# location (following the colon, relative to Rails.root).
|
|
78
|
-
# We recommend you use radiant: since this will enable manual expiration.
|
|
79
|
-
# :metastore => "radiant:tmp/cache/meta"
|
|
80
|
-
# Sets the meta store type and storage location. We recommend you use
|
|
81
|
-
# radiant: since this will enable manual expiration and acceleration headers.
|
|
82
|
-
|
|
83
|
-
|
|
84
47
|
config.middleware.use Rack::Cache,
|
|
85
48
|
:private_headers => ['Authorization'],
|
|
86
49
|
:entitystore => "radiant:tmp/cache/entity",
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
require 'multi_site/engine'
|
|
2
|
+
require 'clipped/engine'
|
|
2
3
|
|
|
3
4
|
TrustyCms.config do |config|
|
|
4
5
|
config.define 'admin.title', :default => "TrustyCms CMS"
|
|
@@ -19,6 +20,72 @@ TrustyCms.config do |config|
|
|
|
19
20
|
require 'multi_site/scoped_validation'
|
|
20
21
|
end
|
|
21
22
|
|
|
23
|
+
TrustyCms.config do |config|
|
|
24
|
+
config.namespace 'paperclip' do |pc|
|
|
25
|
+
pc.define 'url', :default => '/system/:attachment/:id/:style/:basename:no_original_style.:extension', :allow_change => true
|
|
26
|
+
pc.define 'path', :default => ':rails_root/public/system/:attachment/:id/:style/:basename:no_original_style.:extension', :allow_change => true
|
|
27
|
+
pc.define 'skip_filetype_validation', :default => true, :type => :boolean
|
|
28
|
+
pc.define 'storage', :default => 'filesystem',
|
|
29
|
+
:select_from => {
|
|
30
|
+
'File System' => 'filesystem',
|
|
31
|
+
'Amazon S3' => 'fog',
|
|
32
|
+
'Google Storage' => 'fog',
|
|
33
|
+
'Rackspace Cloud Files' => 'fog'
|
|
34
|
+
},
|
|
35
|
+
:allow_blank => false,
|
|
36
|
+
:allow_display => false
|
|
37
|
+
|
|
38
|
+
pc.namespace 'fog' do |fog|
|
|
39
|
+
fog.define 'provider', :select_from => {
|
|
40
|
+
'Amazon S3' => 'AWS',
|
|
41
|
+
'Google Storage' => 'Google',
|
|
42
|
+
'Rackspace Cloud Files' => 'Rackspace'
|
|
43
|
+
}
|
|
44
|
+
fog.define 'directory'
|
|
45
|
+
fog.define 'public?', :default => true
|
|
46
|
+
fog.define 'host'
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
pc.namespace 'google_storage' do |gs|
|
|
50
|
+
gs.define 'access_key_id'
|
|
51
|
+
gs.define 'secret_access_key'
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
pc.namespace 'rackspace' do |rs|
|
|
55
|
+
rs.define 'username'
|
|
56
|
+
rs.define 'api_key'
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
pc.namespace 's3' do |s3|
|
|
60
|
+
s3.define 'key'
|
|
61
|
+
s3.define 'secret'
|
|
62
|
+
s3.define 'region', :select_from => {
|
|
63
|
+
'Asia North East' => 'ap-northeast-1',
|
|
64
|
+
'Asia South East' => 'ap-southeast-1',
|
|
65
|
+
'EU West' => 'eu-west-1',
|
|
66
|
+
'US East' => 'us-east-1',
|
|
67
|
+
'US West' => 'us-west-1'
|
|
68
|
+
}
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
config.namespace 'assets', :allow_display => false do |assets|
|
|
73
|
+
assets.define 'create_image_thumbnails?', :default => 'true'
|
|
74
|
+
assets.define 'create_video_thumbnails?', :default => 'true'
|
|
75
|
+
assets.define 'create_pdf_thumbnails?', :default => 'true'
|
|
76
|
+
|
|
77
|
+
assets.namespace 'thumbnails' do |thumbs| # NB :icon and :thumbnail are already defined as fixed formats for use in the admin interface and can't be changed
|
|
78
|
+
thumbs.define 'image', :default => 'normal:size=640x640>|small:size=320x320>'
|
|
79
|
+
thumbs.define 'video', :default => 'normal:size=640x640>,format=jpg|small:size=320x320>,format=jpg'
|
|
80
|
+
thumbs.define 'pdf', :default => 'normal:size=640x640>,format=jpg|small:size=320x320>,format=jpg'
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
assets.define 'max_asset_size', :default => 5, :type => :integer, :units => 'MB'
|
|
84
|
+
assets.define 'display_size', :default => 'normal', :allow_blank => true
|
|
85
|
+
assets.define 'insertion_size', :default => 'normal', :allow_blank => true
|
|
86
|
+
end
|
|
87
|
+
end
|
|
88
|
+
|
|
22
89
|
if TrustyCms.config_definitions['defaults.snippet.filter'].nil?
|
|
23
90
|
TrustyCms.config.define 'defaults.snippet.filter', :select_from => lambda { TextFilter.descendants.map { |s| s.filter_name }.sort }, :allow_blank => true
|
|
24
91
|
end
|
data/config/locales/en.yml
CHANGED
|
@@ -13,6 +13,10 @@ en:
|
|
|
13
13
|
too_long: 'this must not be longer than %{count} characters' # character_limit
|
|
14
14
|
too_short: 'this must be at least %{count} characters long' # character_minimum
|
|
15
15
|
models:
|
|
16
|
+
asset:
|
|
17
|
+
attributes:
|
|
18
|
+
asset:
|
|
19
|
+
blank: 'You must choose a file to upload!'
|
|
16
20
|
page:
|
|
17
21
|
attributes:
|
|
18
22
|
slug:
|
|
@@ -30,6 +34,19 @@ en:
|
|
|
30
34
|
add_part: 'Add Part'
|
|
31
35
|
add_tab: 'Add Tab'
|
|
32
36
|
admin: 'Administrator'
|
|
37
|
+
assets: 'Assets'
|
|
38
|
+
asset_types:
|
|
39
|
+
all: 'All'
|
|
40
|
+
documents: 'Documents'
|
|
41
|
+
fonts: 'Fonts'
|
|
42
|
+
images: 'Images'
|
|
43
|
+
others: 'Others'
|
|
44
|
+
audios: 'Audio'
|
|
45
|
+
flashes: 'Flash'
|
|
46
|
+
fonts: 'Fonts'
|
|
47
|
+
videos: 'Video'
|
|
48
|
+
pdfs: 'PDFs'
|
|
49
|
+
swfs: 'Flash'
|
|
33
50
|
available_tags: 'Available Tags'
|
|
34
51
|
available_tags_for: 'Available Tags for %{name}'
|
|
35
52
|
body: 'Body'
|
|
@@ -40,10 +57,94 @@ en:
|
|
|
40
57
|
save_changes: 'Save Changes'
|
|
41
58
|
cancel: 'Cancel'
|
|
42
59
|
change: 'Change'
|
|
60
|
+
clipped_extension:
|
|
61
|
+
actions: Actions
|
|
62
|
+
all: 'All'
|
|
63
|
+
all_thumbnails_refreshed: 'All asset thumbnails refreshed.'
|
|
64
|
+
alt_text_or_title: 'Set Asset Title <span class="hint">(optional)</span>'
|
|
65
|
+
asset: 'Asset'
|
|
66
|
+
asset_edit_title: 'Edit Asset'
|
|
67
|
+
asset_errors: 'Sorry. {{errors}}'
|
|
68
|
+
asset_page_attachment_note: 'Attached assets. These can be inserted with drag and drop or shown with the <code><r:assets:each /></code> tag.'
|
|
69
|
+
asset_note: 'Attached assets. '
|
|
70
|
+
assets: 'Assets'
|
|
71
|
+
assets_explanation: 'Assets and images can be uploaded and then attached or inserted into pages, snippets and layouts. Click on a asset name above to edit it or click <code>Remove</code> to delete it.'
|
|
72
|
+
assets_title: 'Assets'
|
|
73
|
+
asset_page_upload_note: 'Assets uploaded here will be automatically associated with this page.'
|
|
74
|
+
asset_upload_note: 'Choose an asset to upload here. If the <code>Title</code> field is left blank, the filename (without the file type) will be automatically added. By clicking on <code>More</code>, you can add a caption as well.'
|
|
75
|
+
attached_assets: 'Attached Assets'
|
|
76
|
+
attach: 'Attach'
|
|
77
|
+
attach_asset: 'attach asset'
|
|
78
|
+
attach_assets: 'Attach assets'
|
|
79
|
+
attach_existing: 'Attach Existing Assets'
|
|
80
|
+
attach_to_page: 'Attach to page'
|
|
81
|
+
audio: 'Audio'
|
|
82
|
+
cancel_attachment: 'Unattach'
|
|
83
|
+
copy: 'Copy'
|
|
84
|
+
copy_alt: 'copy radius tag to clipboard'
|
|
85
|
+
choose_file: 'Choose File'
|
|
86
|
+
documents: 'Documents'
|
|
87
|
+
caption: 'Caption'
|
|
88
|
+
confirm_refresh_assets: 'Are you sure you want to regenerate every asset thumbnail? This is likely to take a long time and use a lot of server resources: <strong class="warning">the performance of your site is very likely to be affected</strong> and your browser may time out before the operation is complete. This is only recommended if your asset collection is small!'
|
|
89
|
+
confirm_remove_asset: 'Are you sure you want to permanently remove the following asset?'
|
|
90
|
+
confirm_remove_from_page: 'Are you sure you want to remove this assets from the page?'
|
|
91
|
+
delete_asset: 'Delete Asset'
|
|
92
|
+
detach: 'Detach'
|
|
93
|
+
edit: 'Edit'
|
|
94
|
+
edit_asset: 'Edit {{asset}}'
|
|
95
|
+
filename: 'Filename'
|
|
96
|
+
find_assets: 'Find Assets'
|
|
97
|
+
images: 'Images'
|
|
98
|
+
images_automatically_created: 'images are automatically created'
|
|
99
|
+
insert: 'Insert'
|
|
100
|
+
modify: 'Modify'
|
|
101
|
+
movies: 'Movies'
|
|
102
|
+
need_to_upload: 'Need to upload?'
|
|
103
|
+
new_asset: 'New Asset'
|
|
104
|
+
no_assets_found: 'There were no assets found'
|
|
105
|
+
no_assets: 'No Assets'
|
|
106
|
+
no_attached_assets: 'No assets attached.'
|
|
107
|
+
others: 'Others'
|
|
108
|
+
refresh_assets: 'Regenerate all thumbnails'
|
|
109
|
+
regenerate: 'Regenerate'
|
|
110
|
+
regenerate_thumbnails: 'Regenerate Thumbnails'
|
|
111
|
+
remove_asset: 'Remove Asset'
|
|
112
|
+
remove_from_page: 'Remove from page'
|
|
113
|
+
reorder: 'Reorder'
|
|
114
|
+
remove: 'Remove'
|
|
115
|
+
refresh_assets_rake_task: 'For better results please log into your server and run <code>rake paperclip:refresh class=Asset</code>.'
|
|
116
|
+
replace_file: 'Replace File'
|
|
117
|
+
save_and_upload: 'Save and Upload'
|
|
118
|
+
search_assets: 'Search for assets'
|
|
119
|
+
search: 'Search'
|
|
120
|
+
select: 'Select'
|
|
121
|
+
thumbnails_refreshed: "Thumbnails refreshed."
|
|
122
|
+
title: 'Title'
|
|
123
|
+
type: 'Type'
|
|
124
|
+
types_to_find: 'Types to find'
|
|
125
|
+
upload: 'Upload'
|
|
126
|
+
upload_asset: 'Upload Asset'
|
|
43
127
|
close: 'Close'
|
|
44
128
|
trusty_config:
|
|
45
129
|
admin:
|
|
46
130
|
title: 'admin header title'
|
|
131
|
+
assets:
|
|
132
|
+
additional_thumbnails: 'Additional Thumbnails'
|
|
133
|
+
content_types: 'Content Types'
|
|
134
|
+
create_image_thumbnails?: 'Image thumbnails'
|
|
135
|
+
create_pdf_thumbnails?: 'PDF thumbnails'
|
|
136
|
+
create_video_thumbnails?: 'Video thumbnails'
|
|
137
|
+
display_size: 'Display Size'
|
|
138
|
+
insertion_size: 'Insertion Size'
|
|
139
|
+
max_asset_size: 'Max Asset Size'
|
|
140
|
+
path: 'Path'
|
|
141
|
+
s3:
|
|
142
|
+
bucket: 'Bucket'
|
|
143
|
+
key: 'Key'
|
|
144
|
+
secret: 'Secret'
|
|
145
|
+
skip_filetype_validation: 'Skip Filetype Validation'
|
|
146
|
+
storage: 'Storage'
|
|
147
|
+
url: 'Url'
|
|
47
148
|
defaults:
|
|
48
149
|
locale: 'default language'
|
|
49
150
|
page:
|
data/config/routes.rb
CHANGED
|
@@ -4,12 +4,10 @@ TrustyCms::Application.routes.draw do
|
|
|
4
4
|
get '/rad_social/mail' => 'social_mailer#social_mail_form', as: :rad_social_mail_form
|
|
5
5
|
post '/rad_social/mail' => 'social_mailer#create_social_mail', as: :rad_create_social_mail
|
|
6
6
|
TrustyCms::Application.config.enabled_extensions.each { |ext|
|
|
7
|
-
#load File.join(TrustyCms::ExtensionPath.find(ext).to_s, "config", "routes.rb")
|
|
8
7
|
}
|
|
9
8
|
namespace :admin do
|
|
10
9
|
resources :pages do
|
|
11
10
|
resources :children, :controller => 'pages'
|
|
12
|
-
#TODO: put back the remove on children possibly
|
|
13
11
|
get 'remove', on: :member
|
|
14
12
|
end
|
|
15
13
|
resources :layouts do
|
|
@@ -23,6 +21,20 @@ TrustyCms::Application.routes.draw do
|
|
|
23
21
|
end
|
|
24
22
|
resources :password_resets
|
|
25
23
|
post 'save-table-position' => "pages#save_table_position", as: "save_tables_position"
|
|
24
|
+
|
|
25
|
+
resources :assets do
|
|
26
|
+
get :remove, on: :member
|
|
27
|
+
get :refresh, on: :collection
|
|
28
|
+
post :regenerate, on: :collection
|
|
29
|
+
put :refresh, on: :member
|
|
30
|
+
end
|
|
31
|
+
resources :page_attachments, :only => [:new] do
|
|
32
|
+
get :remove, on: :member
|
|
33
|
+
end
|
|
34
|
+
resources :pages do
|
|
35
|
+
get :remove, on: :member
|
|
36
|
+
resources :page_attachments
|
|
37
|
+
end
|
|
26
38
|
end
|
|
27
39
|
|
|
28
40
|
match 'admin/preview' => 'admin/pages#preview', :as => :preview, :via => [:post, :put]
|
|
@@ -47,7 +59,6 @@ TrustyCms::Application.routes.draw do
|
|
|
47
59
|
get 'admin/welcome' => 'admin/welcome#index', :as => :welcome
|
|
48
60
|
match 'admin/login' => 'admin/welcome#login', :as => :login, :via => [:get, :post]
|
|
49
61
|
get 'admin/logout' => 'admin/welcome#logout', :as => :logout
|
|
50
|
-
# match '/' => 'site#show_page', :url => '/' # set root to this so root_path works
|
|
51
62
|
get 'error/404' => 'site#not_found', :as => :not_found
|
|
52
63
|
get 'error/500' => 'site#error', :as => :error
|
|
53
64
|
get '*url' => 'site#show_page'
|
data/coverage/index.html
CHANGED
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
<img src="./assets/0.10.2/loading.gif" alt="loading"/>
|
|
15
15
|
</div>
|
|
16
16
|
<div id="wrapper" style="display:none;">
|
|
17
|
-
<div class="timestamp">Generated <abbr class="timeago" title="2018-
|
|
17
|
+
<div class="timestamp">Generated <abbr class="timeago" title="2018-03-30T11:37:29-04:00">2018-03-30T11:37:29-04:00</abbr></div>
|
|
18
18
|
<ul class="group_tabs"></ul>
|
|
19
19
|
|
|
20
20
|
<div id="content">
|
|
@@ -287,7 +287,7 @@
|
|
|
287
287
|
<td>14</td>
|
|
288
288
|
<td>14</td>
|
|
289
289
|
<td>0</td>
|
|
290
|
-
<td>21.
|
|
290
|
+
<td>21.9</td>
|
|
291
291
|
</tr>
|
|
292
292
|
|
|
293
293
|
<tr>
|
|
@@ -6414,8 +6414,8 @@
|
|
|
6414
6414
|
<code class="ruby"> # Default Order</code>
|
|
6415
6415
|
</li>
|
|
6416
6416
|
|
|
6417
|
-
<li class="covered" data-hits="
|
|
6418
|
-
<span class="hits">
|
|
6417
|
+
<li class="covered" data-hits="27" data-linenumber="7">
|
|
6418
|
+
<span class="hits">27</span>
|
|
6419
6419
|
|
|
6420
6420
|
<code class="ruby"> default_scope {order("name")}</code>
|
|
6421
6421
|
</li>
|
|
@@ -6888,14 +6888,14 @@
|
|
|
6888
6888
|
<code class="ruby"> def encrypt_password_unless_empty_or_unchanged</code>
|
|
6889
6889
|
</li>
|
|
6890
6890
|
|
|
6891
|
-
<li class="covered" data-hits="
|
|
6892
|
-
<span class="hits">
|
|
6891
|
+
<li class="covered" data-hits="2" data-linenumber="86">
|
|
6892
|
+
<span class="hits">2</span>
|
|
6893
6893
|
|
|
6894
6894
|
<code class="ruby"> user = self.class.find(self.id)</code>
|
|
6895
6895
|
</li>
|
|
6896
6896
|
|
|
6897
|
-
<li class="covered" data-hits="
|
|
6898
|
-
<span class="hits">
|
|
6897
|
+
<li class="covered" data-hits="2" data-linenumber="87">
|
|
6898
|
+
<span class="hits">2</span>
|
|
6899
6899
|
|
|
6900
6900
|
<code class="ruby"> case password</code>
|
|
6901
6901
|
</li>
|
|
@@ -7039,8 +7039,8 @@
|
|
|
7039
7039
|
<code class="ruby"> def current_user</code>
|
|
7040
7040
|
</li>
|
|
7041
7041
|
|
|
7042
|
-
<li class="covered" data-hits="
|
|
7043
|
-
<span class="hits">
|
|
7042
|
+
<li class="covered" data-hits="9" data-linenumber="12">
|
|
7043
|
+
<span class="hits">9</span>
|
|
7044
7044
|
|
|
7045
7045
|
<code class="ruby"> self.class.current_user</code>
|
|
7046
7046
|
</li>
|
|
@@ -7057,8 +7057,8 @@
|
|
|
7057
7057
|
<code class="ruby"> def self.current_user</code>
|
|
7058
7058
|
</li>
|
|
7059
7059
|
|
|
7060
|
-
<li class="covered" data-hits="
|
|
7061
|
-
<span class="hits">
|
|
7060
|
+
<li class="covered" data-hits="9" data-linenumber="15">
|
|
7061
|
+
<span class="hits">9</span>
|
|
7062
7062
|
|
|
7063
7063
|
<code class="ruby"> Thread.current[:current_user]</code>
|
|
7064
7064
|
</li>
|
|
@@ -7105,8 +7105,8 @@
|
|
|
7105
7105
|
<code class="ruby"> def before_update(model)</code>
|
|
7106
7106
|
</li>
|
|
7107
7107
|
|
|
7108
|
-
<li class="covered" data-hits="
|
|
7109
|
-
<span class="hits">
|
|
7108
|
+
<li class="covered" data-hits="2" data-linenumber="23">
|
|
7109
|
+
<span class="hits">2</span>
|
|
7110
7110
|
|
|
7111
7111
|
<code class="ruby"> model.updated_by = self.current_user</code>
|
|
7112
7112
|
</li>
|
|
@@ -8189,7 +8189,7 @@
|
|
|
8189
8189
|
<li class="covered" data-hits="1" data-linenumber="1">
|
|
8190
8190
|
<span class="hits">1</span>
|
|
8191
8191
|
|
|
8192
|
-
<code class="ruby">
|
|
8192
|
+
<code class="ruby">FactoryBot.define do</code>
|
|
8193
8193
|
</li>
|
|
8194
8194
|
|
|
8195
8195
|
<li class="never" data-hits="" data-linenumber="2">
|
|
@@ -8310,7 +8310,7 @@
|
|
|
8310
8310
|
<li class="covered" data-hits="1" data-linenumber="1">
|
|
8311
8311
|
<span class="hits">1</span>
|
|
8312
8312
|
|
|
8313
|
-
<code class="ruby">
|
|
8313
|
+
<code class="ruby">FactoryBot.define do</code>
|
|
8314
8314
|
</li>
|
|
8315
8315
|
|
|
8316
8316
|
<li class="covered" data-hits="1" data-linenumber="2">
|
|
@@ -8352,7 +8352,7 @@
|
|
|
8352
8352
|
<li class="covered" data-hits="1" data-linenumber="8">
|
|
8353
8353
|
<span class="hits">1</span>
|
|
8354
8354
|
|
|
8355
|
-
<code class="ruby"> page_parts { [
|
|
8355
|
+
<code class="ruby"> page_parts { [FactoryBot.create(:page_part, name: 'body')] }</code>
|
|
8356
8356
|
</li>
|
|
8357
8357
|
|
|
8358
8358
|
<li class="never" data-hits="" data-linenumber="9">
|
|
@@ -8376,7 +8376,7 @@
|
|
|
8376
8376
|
<li class="covered" data-hits="1" data-linenumber="12">
|
|
8377
8377
|
<span class="hits">1</span>
|
|
8378
8378
|
|
|
8379
|
-
<code class="ruby"> children { [
|
|
8379
|
+
<code class="ruby"> children { [FactoryBot.create(:page, :with_parts)] }</code>
|
|
8380
8380
|
</li>
|
|
8381
8381
|
|
|
8382
8382
|
<li class="never" data-hits="" data-linenumber="13">
|
|
@@ -8707,7 +8707,7 @@
|
|
|
8707
8707
|
<li class="covered" data-hits="1" data-linenumber="1">
|
|
8708
8708
|
<span class="hits">1</span>
|
|
8709
8709
|
|
|
8710
|
-
<code class="ruby">
|
|
8710
|
+
<code class="ruby">FactoryBot.define do</code>
|
|
8711
8711
|
</li>
|
|
8712
8712
|
|
|
8713
8713
|
<li class="never" data-hits="" data-linenumber="2">
|
|
@@ -8774,7 +8774,7 @@
|
|
|
8774
8774
|
<li class="covered" data-hits="1" data-linenumber="1">
|
|
8775
8775
|
<span class="hits">1</span>
|
|
8776
8776
|
|
|
8777
|
-
<code class="ruby">
|
|
8777
|
+
<code class="ruby">FactoryBot.define do</code>
|
|
8778
8778
|
</li>
|
|
8779
8779
|
|
|
8780
8780
|
<li class="covered" data-hits="1" data-linenumber="2">
|
|
@@ -10483,7 +10483,7 @@
|
|
|
10483
10483
|
<li class="covered" data-hits="1" data-linenumber="5">
|
|
10484
10484
|
<span class="hits">1</span>
|
|
10485
10485
|
|
|
10486
|
-
<code class="ruby"> let(:layout){
|
|
10486
|
+
<code class="ruby"> let(:layout){ FactoryBot.build(:layout) }</code>
|
|
10487
10487
|
</li>
|
|
10488
10488
|
|
|
10489
10489
|
<li class="never" data-hits="" data-linenumber="6">
|
|
@@ -10507,7 +10507,7 @@
|
|
|
10507
10507
|
<li class="covered" data-hits="1" data-linenumber="9">
|
|
10508
10508
|
<span class="hits">1</span>
|
|
10509
10509
|
|
|
10510
|
-
<code class="ruby"> layout =
|
|
10510
|
+
<code class="ruby"> layout = FactoryBot.build(:layout, name: '')</code>
|
|
10511
10511
|
</li>
|
|
10512
10512
|
|
|
10513
10513
|
<li class="covered" data-hits="1" data-linenumber="10">
|
|
@@ -10543,7 +10543,7 @@
|
|
|
10543
10543
|
<li class="covered" data-hits="1" data-linenumber="15">
|
|
10544
10544
|
<span class="hits">1</span>
|
|
10545
10545
|
|
|
10546
|
-
<code class="ruby"> layout =
|
|
10546
|
+
<code class="ruby"> layout = FactoryBot.build(:layout, name: 'Normal', content: "Content!")</code>
|
|
10547
10547
|
</li>
|
|
10548
10548
|
|
|
10549
10549
|
<li class="covered" data-hits="1" data-linenumber="16">
|
|
@@ -10555,7 +10555,7 @@
|
|
|
10555
10555
|
<li class="covered" data-hits="1" data-linenumber="17">
|
|
10556
10556
|
<span class="hits">1</span>
|
|
10557
10557
|
|
|
10558
|
-
<code class="ruby"> other =
|
|
10558
|
+
<code class="ruby"> other = FactoryBot.build(:layout, name: 'Normal', content: "Content!")</code>
|
|
10559
10559
|
</li>
|
|
10560
10560
|
|
|
10561
10561
|
<li class="covered" data-hits="2" data-linenumber="18">
|
|
@@ -10585,7 +10585,7 @@
|
|
|
10585
10585
|
<li class="covered" data-hits="1" data-linenumber="22">
|
|
10586
10586
|
<span class="hits">1</span>
|
|
10587
10587
|
|
|
10588
|
-
<code class="ruby"> layout =
|
|
10588
|
+
<code class="ruby"> layout = FactoryBot.build(:layout, name: 'x' * 100)</code>
|
|
10589
10589
|
</li>
|
|
10590
10590
|
|
|
10591
10591
|
<li class="covered" data-hits="1" data-linenumber="23">
|
|
@@ -10597,7 +10597,7 @@
|
|
|
10597
10597
|
<li class="covered" data-hits="1" data-linenumber="24">
|
|
10598
10598
|
<span class="hits">1</span>
|
|
10599
10599
|
|
|
10600
|
-
<code class="ruby"> layout =
|
|
10600
|
+
<code class="ruby"> layout = FactoryBot.build(:layout, name: 'x' * 101)</code>
|
|
10601
10601
|
</li>
|
|
10602
10602
|
|
|
10603
10603
|
<li class="covered" data-hits="2" data-linenumber="25">
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
class CreatePaperclipAttributes < ActiveRecord::Migration[5.1]
|
|
2
|
+
def self.up
|
|
3
|
+
add_column :assets, :asset_file_name, :string
|
|
4
|
+
add_column :assets, :asset_content_type, :string
|
|
5
|
+
add_column :assets, :asset_file_size, :integer
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
def self.down
|
|
9
|
+
remove_column :assets, :asset_file_name
|
|
10
|
+
remove_column :assets, :asset_content_type
|
|
11
|
+
remove_column :assets, :asset_file_size
|
|
12
|
+
end
|
|
13
|
+
end
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
class CreateUserObserver < ActiveRecord::Migration[5.1]
|
|
2
|
+
def self.up
|
|
3
|
+
add_column :assets, :created_by, :integer
|
|
4
|
+
add_column :assets, :updated_by, :integer
|
|
5
|
+
add_column :assets, :created_at, :datetime
|
|
6
|
+
add_column :assets, :updated_at, :datetime
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def self.down
|
|
10
|
+
remove_column :assets, :created_by
|
|
11
|
+
remove_column :assets, :updated_by
|
|
12
|
+
end
|
|
13
|
+
end
|