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.
- 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,124 @@
|
|
1
|
+
namespace :radiant do
|
2
|
+
namespace :extensions do
|
3
|
+
namespace :clipped do
|
4
|
+
|
5
|
+
desc "Runs the migration of the Clipped extension"
|
6
|
+
task :migrate => :environment do
|
7
|
+
require 'radiant/extension_migrator'
|
8
|
+
if ActiveRecord::Base.connection.select_values("SELECT version FROM #{ActiveRecord::Migrator.schema_migrations_table_name} WHERE version = 'Assets-20110513205050'").any?
|
9
|
+
puts "Assimilating Assets extension migration 20110513205050"
|
10
|
+
ClippedExtension.migrator.new(:up, ClippedExtension.migrations_path).send(:assume_migrated_upto_version, '20110513205050')
|
11
|
+
end
|
12
|
+
|
13
|
+
if ENV["VERSION"]
|
14
|
+
ClippedExtension.migrator.migrate(ENV["VERSION"].to_i)
|
15
|
+
Rake::Task['db:schema:dump'].invoke
|
16
|
+
else
|
17
|
+
ClippedExtension.migrator.migrate
|
18
|
+
Rake::Task['db:schema:dump'].invoke
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
desc "Copies public assets of the Clipped extension to the instance public/ directory."
|
23
|
+
task :update => [:environment, :initialize] do
|
24
|
+
is_svn_or_dir = proc {|path| path =~ /\.svn/ || File.directory?(path) }
|
25
|
+
puts "Copying assets from ClippedExtension"
|
26
|
+
Dir[ClippedExtension.root + "/public/**/*"].reject(&is_svn_or_dir).each do |file|
|
27
|
+
path = file.sub(ClippedExtension.root, '')
|
28
|
+
directory = File.dirname(path)
|
29
|
+
mkdir_p Rails.root + directory, :verbose => false
|
30
|
+
cp_r file, Rails.root + path, :verbose => false
|
31
|
+
end
|
32
|
+
|
33
|
+
desc "Syncs all available translations for this ext to the English ext master"
|
34
|
+
task :sync => :environment do
|
35
|
+
# The main translation root, basically where English is kept
|
36
|
+
language_root = ClippedExtension.get_translation_keys(language_root)
|
37
|
+
|
38
|
+
Dir["#{language_root}/*.yml"].each do |filename|
|
39
|
+
next if filename.match('_available_tags')
|
40
|
+
basename = File.basename(filename, '.yml')
|
41
|
+
puts "Syncing #{basename}"
|
42
|
+
(comments, other) = TranslationSupport.read_file(filename, basename)
|
43
|
+
words.each { |k,v| other[k] ||= words[k] } # Initializing hash variable as empty if it does not exist
|
44
|
+
other.delete_if { |k,v| !words[k] } # Remove if not defined in en.yml
|
45
|
+
TranslationSupport.write_file(filename, basename, comments, other)
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
desc "Exports assets from database to assets directory"
|
51
|
+
task :export => :environment do
|
52
|
+
asset_path = File.join(Rails.root, "assets")
|
53
|
+
mkdir_p asset_path
|
54
|
+
Asset.find(:all).each do |asset|
|
55
|
+
puts "Exporting #{asset.asset_file_name}"
|
56
|
+
cp asset.asset.path, File.join(asset_path, asset.asset_file_name)
|
57
|
+
end
|
58
|
+
puts "Done."
|
59
|
+
end
|
60
|
+
|
61
|
+
desc "Imports assets to database from assets directory"
|
62
|
+
task :import => :environment do
|
63
|
+
asset_path = File.join(Rails.root, "assets")
|
64
|
+
if File.exist?(asset_path) && File.stat(asset_path).directory?
|
65
|
+
Dir.glob("#{asset_path}/*").each do |file_with_path|
|
66
|
+
if File.stat(file_with_path).file?
|
67
|
+
new_asset = File.new(file_with_path)
|
68
|
+
puts "Creating #{File.basename(file_with_path)}"
|
69
|
+
Asset.create :asset => new_asset
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
desc "Migrates page attachments from the original page attachments extension into new Assets"
|
76
|
+
task :migrate_from_page_attachments => :environment do
|
77
|
+
puts "This task can clean up traces of the page_attachments (think table records and files currently in /public/page_attachments).
|
78
|
+
If you would like to use this mode type \"yes\", type \"no\" or just hit enter to leave them untouched for now."
|
79
|
+
answer = STDIN.gets.chomp
|
80
|
+
erase_tracks = answer.eql?('yes') ? true : false
|
81
|
+
OldPageAttachment.find_all_by_parent_id(nil).each do |opa|
|
82
|
+
asset = opa.create_paperclipped_record
|
83
|
+
# move the actual file
|
84
|
+
old_dir = "#{Rails.root}/public/page_attachments/0000/#{opa.id.to_s.rjust(4,'0')}"
|
85
|
+
new_dir = "#{Rails.root}/public/assets/#{asset.id}"
|
86
|
+
puts "Copying #{old_dir.gsub(Rails.root, '')}/#{opa.filename} to #{new_dir.gsub(Rails.root, '')}/#{opa.filename}..."
|
87
|
+
mkdir_p new_dir
|
88
|
+
cp old_dir + "/#{opa.filename}", new_dir + "/#{opa.filename}"
|
89
|
+
# remove old record and remainings
|
90
|
+
if erase_tracks
|
91
|
+
rm_rf old_dir
|
92
|
+
end
|
93
|
+
end
|
94
|
+
# regenerate thumbnails
|
95
|
+
puts "Regenerating asset thumbnails"
|
96
|
+
ENV['CLASS'] = 'Asset'
|
97
|
+
Rake::Task['paperclip:refresh'].invoke
|
98
|
+
puts "Done."
|
99
|
+
end
|
100
|
+
|
101
|
+
desc "Migrates from old 'assets' extension."
|
102
|
+
task :migrate_from_assets => :environment do
|
103
|
+
Asset.delete_all("thumbnail IS NOT NULL OR parent_id IS NOT NULL")
|
104
|
+
ActiveRecord::Base.connection.tap do |c|
|
105
|
+
c.rename_column :assets, :filename, :asset_file_name
|
106
|
+
c.rename_column :assets, :content_type, :asset_content_type
|
107
|
+
c.rename_column :assets, :size, :asset_file_size
|
108
|
+
c.remove_column :assets, :parent_id
|
109
|
+
c.remove_column :assets, :thumbnail
|
110
|
+
end
|
111
|
+
|
112
|
+
ClippedExtension.migrator.new(:up, ClippedExtension.migrations_path).send(:assume_migrated_upto_version, 3)
|
113
|
+
ClippedExtension.migrator.migrate
|
114
|
+
end
|
115
|
+
|
116
|
+
desc "Generate an example initializer"
|
117
|
+
task :initialize do
|
118
|
+
puts "Copying initializer from ClippedExtension"
|
119
|
+
cp ClippedExtension.root + "/lib/generators/templates/clipped_config.rb", Rails.root + "/config/initializers/", :verbose => false
|
120
|
+
end
|
121
|
+
|
122
|
+
end
|
123
|
+
end
|
124
|
+
end
|
@@ -0,0 +1,79 @@
|
|
1
|
+
def obtain_class
|
2
|
+
class_name = ENV['CLASS'] || ENV['class']
|
3
|
+
raise "Must specify CLASS" unless class_name
|
4
|
+
@klass = Object.const_get(class_name)
|
5
|
+
end
|
6
|
+
|
7
|
+
def obtain_attachments
|
8
|
+
name = ENV['ATTACHMENT'] || ENV['attachment']
|
9
|
+
raise "Class #{@klass.name} has no attachments specified" unless @klass.respond_to?(:attachment_definitions)
|
10
|
+
if !name.blank? && @klass.attachment_definitions.keys.include?(name)
|
11
|
+
[ name ]
|
12
|
+
else
|
13
|
+
@klass.attachment_definitions.keys
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
def for_all_attachments
|
18
|
+
klass = obtain_class
|
19
|
+
names = obtain_attachments
|
20
|
+
ids = klass.connection.select_values(klass.send(:construct_finder_sql, :select => 'id'))
|
21
|
+
|
22
|
+
ids.each do |id|
|
23
|
+
instance = klass.find(id)
|
24
|
+
names.each do |name|
|
25
|
+
result = if instance.send("#{ name }?")
|
26
|
+
yield(instance, name)
|
27
|
+
else
|
28
|
+
true
|
29
|
+
end
|
30
|
+
print result ? "." : "x"; $stdout.flush
|
31
|
+
end
|
32
|
+
end
|
33
|
+
puts " Done."
|
34
|
+
end
|
35
|
+
|
36
|
+
namespace :paperclip do
|
37
|
+
desc "Refreshes both metadata and thumbnails."
|
38
|
+
task :refresh => ["paperclip:refresh:metadata", "paperclip:refresh:thumbnails"]
|
39
|
+
|
40
|
+
namespace :refresh do
|
41
|
+
desc "Regenerates thumbnails for a given CLASS (and optional ATTACHMENT)."
|
42
|
+
task :thumbnails => :environment do
|
43
|
+
errors = []
|
44
|
+
for_all_attachments do |instance, name|
|
45
|
+
result = instance.send(name).reprocess!
|
46
|
+
errors << [instance.id, instance.errors] unless instance.errors.blank?
|
47
|
+
result
|
48
|
+
end
|
49
|
+
errors.each{|e| puts "#{e.first}: #{e.last.full_messages.inspect}" }
|
50
|
+
end
|
51
|
+
|
52
|
+
desc "Regenerates content_type/size metadata for a given CLASS (and optional ATTACHMENT)."
|
53
|
+
task :metadata => :environment do
|
54
|
+
for_all_attachments do |instance, name|
|
55
|
+
if file = instance.send(name).to_file
|
56
|
+
instance.send("#{name}_file_name=", instance.send("#{name}_file_name").strip)
|
57
|
+
instance.send("#{name}_content_type=", file.content_type.strip)
|
58
|
+
instance.send("#{name}_file_size=", file.size) if instance.respond_to?("#{name}_file_size")
|
59
|
+
instance.save(false)
|
60
|
+
else
|
61
|
+
true
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
desc "Cleans out invalid attachments. Useful after you've added new validations."
|
68
|
+
task :clean => :environment do
|
69
|
+
for_all_attachments do |instance, name|
|
70
|
+
instance.send(name).send(:validate)
|
71
|
+
if instance.send(name).valid?
|
72
|
+
true
|
73
|
+
else
|
74
|
+
instance.send("#{name}=", nil)
|
75
|
+
instance.save
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
module TrustyCmsClippedExtension
|
2
|
+
|
3
|
+
module Cloud
|
4
|
+
|
5
|
+
def self.credentials
|
6
|
+
case TrustyCms.config["paperclip.fog.provider"]
|
7
|
+
when "AWS"
|
8
|
+
{
|
9
|
+
:provider => "AWS",
|
10
|
+
:aws_access_key_id => TrustyCms.config["paperclip.s3.key"],
|
11
|
+
:aws_secret_access_key => TrustyCms.config["paperclip.s3.secret"],
|
12
|
+
:region => TrustyCms.config["paperclip.s3.region"],
|
13
|
+
}
|
14
|
+
when "Google"
|
15
|
+
{
|
16
|
+
:provider => "Google",
|
17
|
+
:rackspace_username => TrustyCms.config["paperclip.google_storage.access_key_id"],
|
18
|
+
:rackspace_api_key => TrustyCms.config["paperclip.google_storage.secret_access_key"]
|
19
|
+
}
|
20
|
+
when "Rackspace"
|
21
|
+
{
|
22
|
+
:provider => "Rackspace",
|
23
|
+
:rackspace_username => TrustyCms.config["paperclip.rackspace.username"],
|
24
|
+
:rackspace_api_key => TrustyCms.config["paperclip.rackspace.api_key"]
|
25
|
+
}
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
def self.host
|
30
|
+
return TrustyCms.config["paperclip.fog.host"] if TrustyCms.config["paperclip.fog.host"]
|
31
|
+
case TrustyCms.config["paperclip.fog.provider"]
|
32
|
+
when "AWS"
|
33
|
+
"http://#{TrustyCms.config['paperclip.fog.directory']}.s3.amazonaws.com"
|
34
|
+
else
|
35
|
+
nil
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|
40
|
+
|
41
|
+
end
|