liquid_cms 0.3.1.0 → 0.3.2.0
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG.rdoc +10 -0
- data/Gemfile +0 -3
- data/README.rdoc +16 -2
- data/TODO.rdoc +0 -2
- data/app/controllers/cms/assets_controller.rb +20 -6
- data/app/controllers/cms/components_controller.rb +11 -3
- data/app/controllers/cms/pages_controller.rb +15 -4
- data/app/helpers/cms/common_helper.rb +31 -32
- data/app/liquid/cms_paperclip_extension.rb +75 -3
- data/app/liquid/tags/{data_tag.rb → cms/data_tag.rb} +0 -0
- data/app/models/cms/asset.rb +1 -1
- data/app/models/cms/component.rb +3 -3
- data/app/views/cms/assets/_form.html.erb +1 -2
- data/app/views/cms/assets/update.js.rjs +1 -0
- data/app/views/cms/components/update.js.rjs +1 -0
- data/app/views/cms/pages/_form.html.erb +3 -3
- data/app/views/cms/pages/update.js.rjs +1 -0
- data/app/views/layouts/cms.html.erb +4 -3
- data/config/initializers/cms/simple_form.rb +70 -12
- data/config/initializers/cms/simple_form_updates.rb +9 -3
- data/config/locales/cms/en.yml +6 -0
- data/lib/generators/liquid_cms/install_generator.rb +5 -1
- data/lib/generators/liquid_cms/templates/migration_rev2.rb +13 -0
- data/lib/generators/liquid_cms/templates/public/cms/codemirror/LICENSE +16 -20
- data/lib/generators/liquid_cms/templates/public/cms/codemirror/lib/codemirror.css +68 -0
- data/lib/generators/liquid_cms/templates/public/cms/codemirror/lib/codemirror.js +2197 -0
- data/lib/generators/liquid_cms/templates/public/cms/codemirror/lib/overlay.js +51 -0
- data/lib/generators/liquid_cms/templates/public/cms/codemirror/lib/runmode.js +27 -0
- data/lib/generators/liquid_cms/templates/public/cms/codemirror/mode/clike/clike.js +247 -0
- data/lib/generators/liquid_cms/templates/public/cms/codemirror/mode/clike/index.html +102 -0
- data/lib/generators/liquid_cms/templates/public/cms/codemirror/mode/clojure/clojure.js +207 -0
- data/lib/generators/liquid_cms/templates/public/cms/codemirror/mode/clojure/index.html +85 -0
- data/lib/generators/liquid_cms/templates/public/cms/codemirror/mode/coffeescript/LICENSE +22 -0
- data/lib/generators/liquid_cms/templates/public/cms/codemirror/mode/coffeescript/coffeescript.js +325 -0
- data/lib/generators/liquid_cms/templates/public/cms/codemirror/mode/coffeescript/index.html +722 -0
- data/lib/generators/liquid_cms/templates/public/cms/codemirror/mode/css/css.js +124 -0
- data/lib/generators/liquid_cms/templates/public/cms/codemirror/mode/css/index.html +56 -0
- data/lib/generators/liquid_cms/templates/public/cms/codemirror/mode/diff/diff.css +3 -0
- data/lib/generators/liquid_cms/templates/public/cms/codemirror/mode/diff/diff.js +13 -0
- data/lib/generators/liquid_cms/templates/public/cms/codemirror/mode/diff/index.html +99 -0
- data/lib/generators/liquid_cms/templates/public/cms/codemirror/mode/haskell/haskell.js +242 -0
- data/lib/generators/liquid_cms/templates/public/cms/codemirror/mode/haskell/index.html +60 -0
- data/lib/generators/liquid_cms/templates/public/cms/codemirror/mode/htmlmixed/htmlmixed.js +79 -0
- data/lib/generators/liquid_cms/templates/public/cms/codemirror/mode/htmlmixed/index.html +52 -0
- data/lib/generators/liquid_cms/templates/public/cms/codemirror/mode/javascript/index.html +78 -0
- data/lib/generators/liquid_cms/templates/public/cms/codemirror/mode/javascript/javascript.js +352 -0
- data/lib/generators/liquid_cms/templates/public/cms/codemirror/mode/jinja2/index.html +38 -0
- data/lib/generators/liquid_cms/templates/public/cms/codemirror/mode/jinja2/jinja2.js +42 -0
- data/lib/generators/liquid_cms/templates/public/cms/codemirror/mode/lua/index.html +72 -0
- data/lib/generators/liquid_cms/templates/public/cms/codemirror/mode/lua/lua.js +140 -0
- data/lib/generators/liquid_cms/templates/public/cms/codemirror/mode/markdown/index.html +340 -0
- data/lib/generators/liquid_cms/templates/public/cms/codemirror/mode/markdown/markdown.css +10 -0
- data/lib/generators/liquid_cms/templates/public/cms/codemirror/mode/markdown/markdown.js +230 -0
- data/lib/generators/liquid_cms/templates/public/cms/codemirror/mode/ntriples/index.html +33 -0
- data/lib/generators/liquid_cms/templates/public/cms/codemirror/mode/ntriples/ntriples.js +172 -0
- data/lib/generators/liquid_cms/templates/public/cms/codemirror/mode/pascal/LICENSE +7 -0
- data/lib/generators/liquid_cms/templates/public/cms/codemirror/mode/pascal/index.html +49 -0
- data/lib/generators/liquid_cms/templates/public/cms/codemirror/mode/pascal/pascal.js +138 -0
- data/lib/generators/liquid_cms/templates/public/cms/codemirror/mode/php/index.html +49 -0
- data/lib/generators/liquid_cms/templates/public/cms/codemirror/mode/php/php.js +116 -0
- data/lib/generators/liquid_cms/templates/public/cms/codemirror/mode/plsql/index.html +63 -0
- data/lib/generators/liquid_cms/templates/public/cms/codemirror/mode/plsql/plsql.js +217 -0
- data/lib/generators/liquid_cms/templates/public/cms/codemirror/mode/python/LICENSE.txt +21 -0
- data/lib/generators/liquid_cms/templates/public/cms/codemirror/mode/python/index.html +123 -0
- data/lib/generators/liquid_cms/templates/public/cms/codemirror/mode/python/python.js +320 -0
- data/lib/generators/liquid_cms/templates/public/cms/codemirror/mode/r/LICENSE +24 -0
- data/lib/generators/liquid_cms/templates/public/cms/codemirror/mode/r/index.html +74 -0
- data/lib/generators/liquid_cms/templates/public/cms/codemirror/mode/r/r.js +141 -0
- data/lib/generators/liquid_cms/templates/public/cms/codemirror/mode/rst/index.html +526 -0
- data/lib/generators/liquid_cms/templates/public/cms/codemirror/mode/rst/rst.css +75 -0
- data/lib/generators/liquid_cms/templates/public/cms/codemirror/mode/rst/rst.js +333 -0
- data/lib/generators/liquid_cms/templates/public/cms/codemirror/mode/ruby/LICENSE +24 -0
- data/lib/generators/liquid_cms/templates/public/cms/codemirror/mode/ruby/index.html +172 -0
- data/lib/generators/liquid_cms/templates/public/cms/codemirror/mode/ruby/ruby.js +195 -0
- data/lib/generators/liquid_cms/templates/public/cms/codemirror/mode/scheme/index.html +65 -0
- data/lib/generators/liquid_cms/templates/public/cms/codemirror/mode/scheme/scheme.js +202 -0
- data/lib/generators/liquid_cms/templates/public/cms/codemirror/mode/smalltalk/index.html +56 -0
- data/lib/generators/liquid_cms/templates/public/cms/codemirror/mode/smalltalk/smalltalk.js +122 -0
- data/lib/generators/liquid_cms/templates/public/cms/codemirror/mode/sparql/index.html +41 -0
- data/lib/generators/liquid_cms/templates/public/cms/codemirror/mode/sparql/sparql.js +143 -0
- data/lib/generators/liquid_cms/templates/public/cms/codemirror/mode/stex/index.html +96 -0
- data/lib/generators/liquid_cms/templates/public/cms/codemirror/mode/stex/stex.js +167 -0
- data/lib/generators/liquid_cms/templates/public/cms/codemirror/mode/velocity/index.html +103 -0
- data/lib/generators/liquid_cms/templates/public/cms/codemirror/mode/velocity/velocity.js +146 -0
- data/lib/generators/liquid_cms/templates/public/cms/codemirror/mode/xml/index.html +42 -0
- data/lib/generators/liquid_cms/templates/public/cms/codemirror/mode/xml/xml.js +231 -0
- data/lib/generators/liquid_cms/templates/public/cms/codemirror/mode/xmlpure/index.html +60 -0
- data/lib/generators/liquid_cms/templates/public/cms/codemirror/mode/xmlpure/xmlpure.js +481 -0
- data/lib/generators/liquid_cms/templates/public/cms/codemirror/mode/yaml/index.html +68 -0
- data/lib/generators/liquid_cms/templates/public/cms/codemirror/mode/yaml/yaml.js +95 -0
- data/lib/generators/liquid_cms/templates/public/cms/codemirror/theme/cobalt.css +17 -0
- data/lib/generators/liquid_cms/templates/public/cms/codemirror/theme/default.css +19 -0
- data/lib/generators/liquid_cms/templates/public/cms/codemirror/theme/eclipse.css +24 -0
- data/lib/generators/liquid_cms/templates/public/cms/codemirror/theme/elegant.css +9 -0
- data/lib/generators/liquid_cms/templates/public/cms/codemirror/theme/neat.css +8 -0
- data/lib/generators/liquid_cms/templates/public/cms/codemirror/theme/night.css +20 -0
- data/lib/generators/liquid_cms/templates/public/cms/javascripts/cms.js +1 -1
- data/lib/generators/liquid_cms/templates/public/cms/javascripts/codemirror_custom.js +96 -0
- data/lib/generators/liquid_cms/templates/public/cms/stylesheets/codemirror_changes.css +26 -0
- data/lib/generators/liquid_cms/templates/public/cms/stylesheets/liquid.css +7 -0
- data/lib/generators/liquid_cms/templates/public/cms/stylesheets/simple_form.css +0 -8
- data/lib/liquid_cms/version.rb +1 -1
- data/liquid_cms.gemspec +1 -1
- data/test/functional/assets_controller_test.rb +35 -20
- data/test/functional/components_controller_test.rb +15 -5
- data/test/functional/pages_controller_test.rb +19 -6
- data/test/rails_app/Gemfile +1 -2
- data/test/rails_app/config/locales/cms/en.yml +26 -4
- data/test/rails_app/db/migrate/20110511161859_create_liquid_cms_upgrade_rev2.rb +13 -0
- data/test/unit/asset_test.rb +1 -1
- data/test/unit/component_test.rb +1 -1
- metadata +89 -32
- data/generators/liquid_cms/templates/migration_rev1.rb +0 -38
- data/lib/generators/liquid_cms/templates/public/cms/codemirror/css/csscolors.css +0 -55
- data/lib/generators/liquid_cms/templates/public/cms/codemirror/css/docs.css +0 -158
- data/lib/generators/liquid_cms/templates/public/cms/codemirror/css/font.js +0 -15
- data/lib/generators/liquid_cms/templates/public/cms/codemirror/css/jscolors.css +0 -59
- data/lib/generators/liquid_cms/templates/public/cms/codemirror/css/sparqlcolors.css +0 -43
- data/lib/generators/liquid_cms/templates/public/cms/codemirror/css/xmlcolors.css +0 -55
- data/lib/generators/liquid_cms/templates/public/cms/codemirror/js/codemirror.js +0 -582
- data/lib/generators/liquid_cms/templates/public/cms/codemirror/js/editor.js +0 -1671
- data/lib/generators/liquid_cms/templates/public/cms/codemirror/js/highlight.js +0 -68
- data/lib/generators/liquid_cms/templates/public/cms/codemirror/js/mirrorframe.js +0 -81
- data/lib/generators/liquid_cms/templates/public/cms/codemirror/js/parsecss.js +0 -161
- data/lib/generators/liquid_cms/templates/public/cms/codemirror/js/parsedummy.js +0 -32
- data/lib/generators/liquid_cms/templates/public/cms/codemirror/js/parsehtmlmixed.js +0 -93
- data/lib/generators/liquid_cms/templates/public/cms/codemirror/js/parsejavascript.js +0 -359
- data/lib/generators/liquid_cms/templates/public/cms/codemirror/js/parsesparql.js +0 -162
- data/lib/generators/liquid_cms/templates/public/cms/codemirror/js/parsexml.js +0 -291
- data/lib/generators/liquid_cms/templates/public/cms/codemirror/js/select.js +0 -699
- data/lib/generators/liquid_cms/templates/public/cms/codemirror/js/stringstream.js +0 -159
- data/lib/generators/liquid_cms/templates/public/cms/codemirror/js/tokenize.js +0 -57
- data/lib/generators/liquid_cms/templates/public/cms/codemirror/js/tokenizejavascript.js +0 -174
- data/lib/generators/liquid_cms/templates/public/cms/codemirror/js/undo.js +0 -413
- data/lib/generators/liquid_cms/templates/public/cms/codemirror/js/unittests.js +0 -44
- data/lib/generators/liquid_cms/templates/public/cms/codemirror/js/util.js +0 -133
data/CHANGELOG.rdoc
CHANGED
@@ -1,3 +1,13 @@
|
|
1
|
+
== 0.3.2.0
|
2
|
+
|
3
|
+
* Enhancements
|
4
|
+
* Optimize paperclip image dimension lookup in to_liquid calls. To make use of optimized paperclip attachments in your custom to_liquid methods, add a column to your table in a migration. See the README under the customization section for more information.
|
5
|
+
* Update to codemirror v2
|
6
|
+
* Ctrl+s now uses ajax for editing pages, textual assets and textual components in order to streamline the editing process.
|
7
|
+
|
8
|
+
* Fixes
|
9
|
+
* Move data_tag.rb file into cms dir due to possible rails class loading issues.
|
10
|
+
|
1
11
|
== 0.3.1.0
|
2
12
|
|
3
13
|
* Enhancements
|
data/Gemfile
CHANGED
@@ -3,9 +3,6 @@ source :gemcutter
|
|
3
3
|
# Specify your gem's dependencies in liquid_cms.gemspec
|
4
4
|
gemspec
|
5
5
|
|
6
|
-
# this version of vestal_versions is compatible with rails 3
|
7
|
-
gem 'vestal_versions', '~> 1.2.1', :git => 'http://github.com/adamcooper/vestal_versions.git'
|
8
|
-
|
9
6
|
group :test do
|
10
7
|
gem 'shoulda', '~> 2.10.3'
|
11
8
|
gem 'factory_girl', '~> 1.3.0'
|
data/README.rdoc
CHANGED
@@ -14,7 +14,7 @@ See the {wiki page}[http://github.com/redlinesoftware/liquid_cms/wiki] for addit
|
|
14
14
|
|
15
15
|
Add the gem to your Gemfile:
|
16
16
|
|
17
|
-
gem 'liquid_cms', '~> 0.3.
|
17
|
+
gem 'liquid_cms', '~> 0.3.2'
|
18
18
|
|
19
19
|
Install the gem:
|
20
20
|
|
@@ -33,7 +33,7 @@ The generator adds an additional dependency to your application, so bundler shou
|
|
33
33
|
Configure the engine in config/initializers/cms/liquid_cms.rb:
|
34
34
|
|
35
35
|
If you wish to run the cms under multiple "contexts" (ie. a cms each for a company, business, customer, etc.) then you need to perform the following steps:
|
36
|
-
|
36
|
+
|
37
37
|
* Set the *context_class* attribute to your apps context class:
|
38
38
|
|
39
39
|
config.context_class = :Company
|
@@ -62,6 +62,20 @@ In order to expose data in your application in the templates, liquid filters, dr
|
|
62
62
|
|
63
63
|
A set of filters, drops and tags are provided in addition to the defaults provided by liquid. The documentation link accessible in the CMS provides additional details.
|
64
64
|
|
65
|
+
If you're using paperclip images in any models and exposing them via to_liquid, you can add an addtional column to your table to optimize dimension lookup.
|
66
|
+
|
67
|
+
class Customer
|
68
|
+
has_attached :photo
|
69
|
+
|
70
|
+
def to_liquid
|
71
|
+
photo.to_liquid
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
change_table :customers do |t|
|
76
|
+
t.text :cms_photo_dimensions # field name must be named after the paperclip name. ie. :cms_{paperclip name}_dimensions
|
77
|
+
end
|
78
|
+
|
65
79
|
= Upgrading
|
66
80
|
|
67
81
|
To upgrade the liquid_cms engine once you've installed a newer gem, simply re-run the liquid_cms generator. If any differences are found in files, you'll be prompted to overwrite or compare versions.
|
data/TODO.rdoc
CHANGED
@@ -1,8 +1,6 @@
|
|
1
1
|
* Implement a cleaner, more functional UI.
|
2
|
-
* Vestal versions is used, but not exposed via the UI currently to go back to previous versions.
|
3
2
|
* No functions are currently limited to specific user roles. All CMS users can perform the same actions.
|
4
3
|
* Implement caching and expiration logic.
|
5
4
|
* Provide example apache/nginx/etc. conf files that properly scope cms assets for each context.
|
6
5
|
* Generate CMS documentation from rdoc comments in source files?
|
7
|
-
* Search functions. Find templates based on search text.
|
8
6
|
* Missing tests... add more coverage.
|
@@ -30,10 +30,21 @@ class Cms::AssetsController < Cms::MainController
|
|
30
30
|
@asset.assign_ordered_attributes params[:cms_asset]
|
31
31
|
|
32
32
|
if @asset.save
|
33
|
-
|
34
|
-
|
33
|
+
respond_to do |format|
|
34
|
+
format.html {
|
35
|
+
redirect_to edit_cms_asset_path(@asset), :notice => t('assets.flash.updated')
|
36
|
+
}
|
37
|
+
format.js {
|
38
|
+
flash.now[:notice] = t('assets.flash.updated')
|
39
|
+
}
|
40
|
+
end
|
35
41
|
else
|
36
|
-
|
42
|
+
respond_to do |format|
|
43
|
+
format.html {
|
44
|
+
render :action => 'edit'
|
45
|
+
}
|
46
|
+
format.js
|
47
|
+
end
|
37
48
|
end
|
38
49
|
end
|
39
50
|
|
@@ -42,7 +53,7 @@ class Cms::AssetsController < Cms::MainController
|
|
42
53
|
@asset.destroy
|
43
54
|
|
44
55
|
flash[:notice] = t('assets.flash.deleted')
|
45
|
-
|
56
|
+
|
46
57
|
respond_to do |format|
|
47
58
|
format.html { redirect_to cms_root_path }
|
48
59
|
end
|
@@ -62,10 +73,13 @@ protected
|
|
62
73
|
# remove meta values since we only want the key names
|
63
74
|
# new values will be provided for the new asset
|
64
75
|
asset.meta_data = meta_asset.meta_data.collect{|m| {:name => m[:name], :value => ''}}
|
76
|
+
end
|
65
77
|
|
78
|
+
dims_asset = @context.assets.tagged_with(curr_tag).first :conditions => 'custom_width is not null and custom_height is not null'
|
79
|
+
if dims_asset
|
66
80
|
# assign custom dims
|
67
|
-
asset.custom_width =
|
68
|
-
asset.custom_height =
|
81
|
+
asset.custom_width = dims_asset.custom_width
|
82
|
+
asset.custom_height = dims_asset.custom_height
|
69
83
|
end
|
70
84
|
|
71
85
|
asset
|
@@ -13,15 +13,23 @@ class Cms::ComponentsController < Cms::MainController
|
|
13
13
|
end
|
14
14
|
|
15
15
|
def update
|
16
|
+
edit_url = {:controller => 'cms/components', :action => 'edit', :url => @path}
|
17
|
+
|
16
18
|
if Cms::Component.editable?(@path)
|
17
19
|
@component = Cms::Component.new(@context, @path)
|
18
20
|
@component.write params[:file_content]
|
19
21
|
|
20
|
-
|
21
|
-
|
22
|
+
respond_to do |format|
|
23
|
+
format.html {
|
24
|
+
redirect_to edit_url, :notice => t('components.flash.updated')
|
25
|
+
}
|
26
|
+
format.js {
|
27
|
+
flash.now[:notice] = t('components.flash.updated')
|
28
|
+
}
|
29
|
+
end
|
22
30
|
else
|
23
31
|
flash[:error] = "Not an editable component."
|
24
|
-
redirect_to
|
32
|
+
redirect_to edit_url
|
25
33
|
end
|
26
34
|
end
|
27
35
|
|
@@ -26,10 +26,21 @@ class Cms::PagesController < Cms::MainController
|
|
26
26
|
def update
|
27
27
|
@page = @context.pages.find params[:id]
|
28
28
|
if @page.update_attributes(params[:cms_page])
|
29
|
-
|
30
|
-
|
29
|
+
respond_to do |format|
|
30
|
+
format.html {
|
31
|
+
redirect_to edit_cms_page_path(@page), :notice => t('pages.flash.updated')
|
32
|
+
}
|
33
|
+
format.js {
|
34
|
+
flash.now[:notice] = t('pages.flash.updated')
|
35
|
+
}
|
36
|
+
end
|
31
37
|
else
|
32
|
-
|
38
|
+
respond_to do |format|
|
39
|
+
format.html {
|
40
|
+
render :action => 'edit'
|
41
|
+
}
|
42
|
+
format.js
|
43
|
+
end
|
33
44
|
end
|
34
45
|
end
|
35
46
|
|
@@ -38,7 +49,7 @@ class Cms::PagesController < Cms::MainController
|
|
38
49
|
@page.destroy
|
39
50
|
|
40
51
|
flash[:notice] = t('pages.flash.deleted')
|
41
|
-
|
52
|
+
|
42
53
|
respond_to do |format|
|
43
54
|
format.html { redirect_to cms_root_path }
|
44
55
|
format.js
|
@@ -13,49 +13,48 @@ module Cms::CommonHelper
|
|
13
13
|
|
14
14
|
def cms_flash_message
|
15
15
|
type = (flash[:error] ? :error : :notice)
|
16
|
-
|
16
|
+
flash[type].present? ? "humanMsg.displayMsg('#{escape_javascript(flash[type])}', '#{type}')" : nil
|
17
|
+
end
|
18
|
+
|
19
|
+
def load_cms_flash_message
|
20
|
+
msg = cms_flash_message
|
21
|
+
msg.present? ? javascript_tag("document.observe('dom:loaded', function(){ #{msg} })") : nil
|
17
22
|
end
|
18
23
|
|
19
24
|
def cms_row_class
|
20
25
|
cycle 'dark', 'light'
|
21
26
|
end
|
22
27
|
|
23
|
-
def
|
24
|
-
|
28
|
+
def cms_ajax_update_form(page, object, path)
|
29
|
+
if object.errors.empty?
|
30
|
+
page << cms_flash_message
|
31
|
+
else
|
32
|
+
page.replace_html 'content', :file => "cms/#{path}/edit.html.erb"
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
def codemirror_edit(content_type, form, content_id, use_ajax = true, liquid_support = false)
|
37
|
+
mode = nil
|
38
|
+
|
39
|
+
case content_type
|
25
40
|
when "text/css"
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
41
|
+
mode = 'css'
|
42
|
+
content_for :cms_styles do
|
43
|
+
javascript_include_tag '/cms/codemirror/mode/css/css'
|
44
|
+
end
|
30
45
|
when "text/javascript"
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
46
|
+
mode = 'javascript'
|
47
|
+
content_for :cms_styles do
|
48
|
+
javascript_include_tag '/cms/codemirror/mode/javascript/javascript'
|
49
|
+
end
|
35
50
|
else
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
51
|
+
mode = 'htmlmixed'
|
52
|
+
content_for :cms_styles do
|
53
|
+
javascript_include_tag '/cms/codemirror/mode/htmlmixed/htmlmixed'
|
54
|
+
end
|
40
55
|
end
|
41
56
|
|
42
|
-
javascript_tag
|
43
|
-
js = <<-JS
|
44
|
-
var editor = CodeMirror.fromTextArea("#{content_id}", {
|
45
|
-
#{js_options}
|
46
|
-
path: "/cms/codemirror/js/",
|
47
|
-
textWrapping: false,
|
48
|
-
height: '600px',
|
49
|
-
width: '89%',
|
50
|
-
saveFunction: function() {
|
51
|
-
var form = $$('#{form}').first();
|
52
|
-
$('#{content_id}').setValue(editor.getCode());
|
53
|
-
form.submit();
|
54
|
-
}
|
55
|
-
});
|
56
|
-
JS
|
57
|
-
js.html_safe
|
58
|
-
end
|
57
|
+
javascript_tag %(initCodemirror('#{mode}', $$('#{form}').first(), $('#{content_id}'), #{use_ajax}, #{liquid_support}))
|
59
58
|
end
|
60
59
|
|
61
60
|
def file_type_icon(file_name)
|
@@ -3,14 +3,86 @@ module Paperclip
|
|
3
3
|
extend ActiveSupport::Memoizable
|
4
4
|
|
5
5
|
def to_liquid
|
6
|
-
{}
|
6
|
+
style_hash = {}
|
7
|
+
|
8
|
+
style_hash.tap do |h|
|
7
9
|
all_styles = self.styles.keys + ['original']
|
8
10
|
all_styles.each do |style|
|
9
|
-
|
10
|
-
h[style.to_s]
|
11
|
+
h[style.to_s] = find_geometry_dims(style)
|
12
|
+
h[style.to_s]['url'] = self.url(style) if h[style.to_s].present?
|
11
13
|
end
|
12
14
|
end
|
15
|
+
|
16
|
+
save_geometry_dims style_hash
|
17
|
+
|
18
|
+
style_hash
|
13
19
|
end
|
14
20
|
memoize :to_liquid
|
21
|
+
|
22
|
+
# clear out the dimension attribute when post processing
|
23
|
+
# it'll be updated on the next render via to_liquid
|
24
|
+
def post_process_with_dimension_attribute_clear
|
25
|
+
key = dimension_key
|
26
|
+
|
27
|
+
if instance.has_attribute?(key)
|
28
|
+
instance.send("#{key}=", nil)
|
29
|
+
end
|
30
|
+
|
31
|
+
post_process_without_dimension_attribute_clear
|
32
|
+
end
|
33
|
+
|
34
|
+
alias_method_chain :post_process, :dimension_attribute_clear
|
35
|
+
|
36
|
+
protected
|
37
|
+
def dimension_key
|
38
|
+
"cms_#{name}_dimensions"
|
39
|
+
end
|
40
|
+
|
41
|
+
def find_geometry_dims(style)
|
42
|
+
key = dimension_key
|
43
|
+
|
44
|
+
if instance.has_attribute?(key)
|
45
|
+
# dimension attr found
|
46
|
+
values = YAML::load(instance.send(key) || '{}')
|
47
|
+
if values.blank?
|
48
|
+
# no saved entry
|
49
|
+
geometry_dims(style)
|
50
|
+
else
|
51
|
+
# saved entry
|
52
|
+
dimensions = values[style.to_s]
|
53
|
+
if dimensions.blank?
|
54
|
+
# empty dimensions for the given style
|
55
|
+
geometry_dims(style)
|
56
|
+
else
|
57
|
+
# valid dimensions for the given style
|
58
|
+
{'width' => dimensions['width'].to_i, 'height' => dimensions['height'].to_i}
|
59
|
+
end
|
60
|
+
end
|
61
|
+
else
|
62
|
+
log %{To optimize image data in your liquid templates, add a text column named "#{key}" to your "#{instance.class.table_name}" table.}
|
63
|
+
# no dimensions found
|
64
|
+
geometry_dims(style)
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
def save_geometry_dims(style_hash)
|
69
|
+
key = dimension_key
|
70
|
+
|
71
|
+
if instance.has_attribute?(key) && YAML::load(instance.send(key) || '{}').all?{|k,v| v.blank?} && style_hash.present?
|
72
|
+
# deep copy hash
|
73
|
+
temp_hash = Marshal.load(Marshal.dump(style_hash))
|
74
|
+
# remove blank styles
|
75
|
+
temp_hash.delete_if{|k,v| v.blank?}
|
76
|
+
# and remove the urls
|
77
|
+
temp_hash.each{|k,v| v.delete_if{|k2,v2| k2 == 'url'}}
|
78
|
+
|
79
|
+
instance.update_attribute key, temp_hash.to_yaml if temp_hash.present?
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
def geometry_dims(style)
|
84
|
+
g = Paperclip::Geometry.from_file(self.path(style)) rescue nil
|
85
|
+
g.nil? ? {} : {'width' => g.width.to_i, 'height' => g.height.to_i}
|
86
|
+
end
|
15
87
|
end
|
16
88
|
end
|
File without changes
|
data/app/models/cms/asset.rb
CHANGED
data/app/models/cms/component.rb
CHANGED
@@ -2,7 +2,7 @@ require 'zip/zip'
|
|
2
2
|
|
3
3
|
class Cms::Component
|
4
4
|
attr_reader :path
|
5
|
-
|
5
|
+
|
6
6
|
def initialize(context, path = nil)
|
7
7
|
@context = context
|
8
8
|
@path = self.class.clean_path(path) if path
|
@@ -67,7 +67,7 @@ class Cms::Component
|
|
67
67
|
end if exist
|
68
68
|
end
|
69
69
|
end
|
70
|
-
|
70
|
+
|
71
71
|
def delete
|
72
72
|
return false if @path.blank?
|
73
73
|
|
@@ -78,7 +78,7 @@ class Cms::Component
|
|
78
78
|
end
|
79
79
|
|
80
80
|
def self.editable?(file)
|
81
|
-
Cms.editable_component_exts.include?(File.extname(file).downcase)
|
81
|
+
file.present? && Cms.editable_component_exts.include?(File.extname(file).downcase)
|
82
82
|
end
|
83
83
|
|
84
84
|
protected
|
@@ -23,10 +23,9 @@
|
|
23
23
|
|
24
24
|
<div class="text required">
|
25
25
|
<%= f.input :file_content, :as => :text, :input_html => {:rows => 40, :cols => nil} %>
|
26
|
-
<span class="hint"><%= t('simple_form.hints.cms_asset.file_content').html_safe %></span>
|
27
26
|
</div>
|
28
27
|
|
29
|
-
<%= codemirror_edit Cms::Editable::content_type(@asset.asset_file_name), 'form.simple_form', 'cms_asset_file_content' %>
|
28
|
+
<%= codemirror_edit Cms::Editable::content_type(@asset.asset_file_name), 'form.simple_form', 'cms_asset_file_content', !@asset.new_record? %>
|
30
29
|
<% end %>
|
31
30
|
|
32
31
|
<div class="dimensions">
|
@@ -0,0 +1 @@
|
|
1
|
+
cms_ajax_update_form page, @asset, 'assets'
|
@@ -0,0 +1 @@
|
|
1
|
+
page << cms_flash_message
|
@@ -1,7 +1,7 @@
|
|
1
1
|
<%= simple_form_for @page do |f| %>
|
2
|
-
<%= f.input :name %>
|
2
|
+
<%= f.input :name, :required => true %>
|
3
3
|
<%= f.input :slug, :required => false %>
|
4
|
-
<%= f.input :content, :input_html => {:
|
4
|
+
<%= f.input :content, :input_html => {:spellcheck => false} %>
|
5
5
|
<%= f.input :layout_page_id, :collection => layouts_for_page(@page).collect{|pg| [pg.to_s, pg.id]}, :include_blank => '-- layout file --', :required => false unless layouts_for_page(@page).empty? %>
|
6
6
|
<%= f.input :published, :required => false %>
|
7
7
|
<%= f.input :root, :required => false %>
|
@@ -9,4 +9,4 @@
|
|
9
9
|
<%= f.commit_button_or_cancel %>
|
10
10
|
<% end %>
|
11
11
|
|
12
|
-
<%= codemirror_edit @page.content_type, 'form.simple_form.cms_page', 'cms_page_content' %>
|
12
|
+
<%= codemirror_edit @page.content_type, 'form.simple_form.cms_page', 'cms_page_content', !@page.new_record?, true %>
|
@@ -0,0 +1 @@
|
|
1
|
+
cms_ajax_update_form page, @page, 'pages'
|
@@ -6,7 +6,8 @@
|
|
6
6
|
<title><%= t 'pages.layout.title' %></title>
|
7
7
|
<%= javascript_include_tag 'prototype', 'effects', 'rails' %>
|
8
8
|
<%= javascript_include_tag '/cms/javascripts/humanmsg', '/cms/javascripts/cookiejar', '/cms/javascripts/remote_helpers', '/cms/javascripts/cms', '/cms/javascripts/livepipe', '/cms/javascripts/tabs', :cache => 'cms_scripts' %>
|
9
|
-
<%= javascript_include_tag '/cms/codemirror/
|
9
|
+
<%= javascript_include_tag '/cms/codemirror/lib/codemirror', '/cms/codemirror/mode/javascript/javascript', '/cms/codemirror/mode/css/css', '/cms/codemirror/mode/xml/xml', '/cms/codemirror/lib/overlay', '/cms/javascripts/codemirror_custom', :cache => 'codemirror_scripts' %>
|
10
|
+
<%= stylesheet_link_tag '/cms/codemirror/lib/codemirror', '/cms/codemirror/theme/default', '/cms/stylesheets/codemirror_changes', :cache => 'codemirror_styles' %>
|
10
11
|
<%= stylesheet_link_tag '/cms/stylesheets/simple_form' %>
|
11
12
|
<%= stylesheet_link_tag '/cms/stylesheets/clearfix', '/cms/stylesheets/humanmsg', '/cms/stylesheets/styles', '/cms/stylesheets/sidebar', :cache => 'cms_styles' %>
|
12
13
|
<%= stylesheet_link_tag '/cms/stylesheets/themes/dark' %>
|
@@ -27,11 +28,11 @@
|
|
27
28
|
<div id="outer-container" class="clearfix">
|
28
29
|
<div id="sidebar" class="shadow curved">
|
29
30
|
<%= render 'cms/shared/sidebar' %>
|
30
|
-
</div>
|
31
|
+
</div>
|
31
32
|
|
32
33
|
<div id="content">
|
33
34
|
<%= yield %>
|
34
|
-
<%=
|
35
|
+
<%= load_cms_flash_message %>
|
35
36
|
</div>
|
36
37
|
</div>
|
37
38
|
</body>
|