comfortable_mexican_sofa 0.0.18
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.
- data/.gitignore +10 -0
- data/CHANGELOG.rdoc +2 -0
- data/LICENSE +20 -0
- data/README.rdoc +55 -0
- data/Rakefile +88 -0
- data/VERSION +1 -0
- data/app/controllers/cms_admin/attachments_controller.rb +55 -0
- data/app/controllers/cms_admin/base_controller.rb +25 -0
- data/app/controllers/cms_admin/categories_controller.rb +69 -0
- data/app/controllers/cms_admin/layouts_controller.rb +71 -0
- data/app/controllers/cms_admin/pages_controller.rb +79 -0
- data/app/controllers/cms_admin/sections_controller.rb +17 -0
- data/app/controllers/cms_admin/snippets_controller.rb +58 -0
- data/app/controllers/cms_common/render_page.rb +47 -0
- data/app/controllers/cms_content_controller.rb +30 -0
- data/app/helpers/cms_helper.rb +12 -0
- data/app/models/cms_attachment.rb +17 -0
- data/app/models/cms_attachment_categorization.rb +5 -0
- data/app/models/cms_block.rb +15 -0
- data/app/models/cms_category.rb +36 -0
- data/app/models/cms_layout.rb +102 -0
- data/app/models/cms_page.rb +125 -0
- data/app/models/cms_page_categorization.rb +6 -0
- data/app/models/cms_snippet.rb +15 -0
- data/app/views/cms_admin/attachments/_details.html.haml +27 -0
- data/app/views/cms_admin/attachments/_form.html.haml +24 -0
- data/app/views/cms_admin/attachments/edit.html.haml +10 -0
- data/app/views/cms_admin/attachments/index.html.haml +36 -0
- data/app/views/cms_admin/attachments/new.html.haml +8 -0
- data/app/views/cms_admin/categories/_category.html.haml +21 -0
- data/app/views/cms_admin/categories/_category_subform.html.haml +12 -0
- data/app/views/cms_admin/categories/_form.html.haml +18 -0
- data/app/views/cms_admin/categories/_new.html.haml +7 -0
- data/app/views/cms_admin/categories/_toggle_link.html.haml +9 -0
- data/app/views/cms_admin/categories/_tree_branch.html.haml +36 -0
- data/app/views/cms_admin/categories/children.js.rjs +10 -0
- data/app/views/cms_admin/categories/create.js.rjs +9 -0
- data/app/views/cms_admin/categories/edit.html.haml +10 -0
- data/app/views/cms_admin/categories/index.html.haml +7 -0
- data/app/views/cms_admin/categories/new.html.haml +8 -0
- data/app/views/cms_admin/categories/show.html.haml +17 -0
- data/app/views/cms_admin/layouts/_details.html.haml +6 -0
- data/app/views/cms_admin/layouts/_form.html.haml +19 -0
- data/app/views/cms_admin/layouts/_toggle_link.html.haml +9 -0
- data/app/views/cms_admin/layouts/_tree_branch.html.haml +39 -0
- data/app/views/cms_admin/layouts/children.js.rjs +10 -0
- data/app/views/cms_admin/layouts/edit.html.haml +10 -0
- data/app/views/cms_admin/layouts/index.html.haml +7 -0
- data/app/views/cms_admin/layouts/new.html.haml +8 -0
- data/app/views/cms_admin/pages/_details.html.haml +25 -0
- data/app/views/cms_admin/pages/_form.html.haml +45 -0
- data/app/views/cms_admin/pages/_form_blocks.html.haml +48 -0
- data/app/views/cms_admin/pages/_toggle_link.html.haml +10 -0
- data/app/views/cms_admin/pages/_tree_branch.html.haml +41 -0
- data/app/views/cms_admin/pages/children.js.rjs +10 -0
- data/app/views/cms_admin/pages/edit.html.haml +11 -0
- data/app/views/cms_admin/pages/form_blocks.js.rjs +1 -0
- data/app/views/cms_admin/pages/index.html.haml +6 -0
- data/app/views/cms_admin/pages/new.html.haml +9 -0
- data/app/views/cms_admin/sections/show.html.haml +23 -0
- data/app/views/cms_admin/snippets/_form.html.haml +10 -0
- data/app/views/cms_admin/snippets/edit.html.haml +10 -0
- data/app/views/cms_admin/snippets/index.html.haml +26 -0
- data/app/views/cms_admin/snippets/new.html.haml +8 -0
- data/app/views/cms_content/show.xml.rxml +27 -0
- data/app/views/cms_content/sitemap.xml.rxml +16 -0
- data/app/views/layouts/cms_admin.html.haml +44 -0
- data/comfortable_mexican_sofa.gemspec +254 -0
- data/config/cms_routes.rb +25 -0
- data/generators/cms/cms_generator.rb +55 -0
- data/generators/cms/templates/README +32 -0
- data/generators/cms/templates/images/arrow_bottom.gif +0 -0
- data/generators/cms/templates/images/arrow_right.gif +0 -0
- data/generators/cms/templates/images/icon_attachment.gif +0 -0
- data/generators/cms/templates/images/icon_category.gif +0 -0
- data/generators/cms/templates/images/icon_draft.gif +0 -0
- data/generators/cms/templates/images/icon_layout.gif +0 -0
- data/generators/cms/templates/images/icon_move.gif +0 -0
- data/generators/cms/templates/images/icon_regular.gif +0 -0
- data/generators/cms/templates/images/icon_snippet.gif +0 -0
- data/generators/cms/templates/images/logo.png +0 -0
- data/generators/cms/templates/initializers/cms.rb +14 -0
- data/generators/cms/templates/initializers/paperclip.rb +14 -0
- data/generators/cms/templates/javascripts/codemirror_init.js +16 -0
- data/generators/cms/templates/javascripts/mce_init.js +17 -0
- data/generators/cms/templates/javascripts/utilities.js +27 -0
- data/generators/cms/templates/migrations/create_cms.rb +113 -0
- data/generators/cms/templates/stylesheets/cms_master.sass +414 -0
- data/init.rb +1 -0
- data/lib/comfortable_mexican_sofa.rb +46 -0
- data/lib/comfortable_mexican_sofa/acts_as_categorized.rb +87 -0
- data/lib/comfortable_mexican_sofa/acts_as_published.rb +60 -0
- data/lib/comfortable_mexican_sofa/cms_acts_as_tree.rb +108 -0
- data/lib/comfortable_mexican_sofa/cms_rails_extensions.rb +12 -0
- data/lib/comfortable_mexican_sofa/cms_tag.rb +109 -0
- data/lib/comfortable_mexican_sofa/cms_tags/attachment.rb +3 -0
- data/lib/comfortable_mexican_sofa/cms_tags/block.rb +117 -0
- data/lib/comfortable_mexican_sofa/cms_tags/helper.rb +3 -0
- data/lib/comfortable_mexican_sofa/cms_tags/page_block.rb +119 -0
- data/lib/comfortable_mexican_sofa/cms_tags/partial.rb +19 -0
- data/lib/comfortable_mexican_sofa/cms_tags/snippet.rb +19 -0
- data/rails/init.rb +1 -0
- data/test/fixtures/cms_attachment_categorizations.yml +7 -0
- data/test/fixtures/cms_attachments.yml +6 -0
- data/test/fixtures/cms_blocks.yml +38 -0
- data/test/fixtures/cms_categories.yml +19 -0
- data/test/fixtures/cms_layouts.yml +41 -0
- data/test/fixtures/cms_page_categorizations.yml +15 -0
- data/test/fixtures/cms_pages.yml +38 -0
- data/test/fixtures/cms_snippets.yml +7 -0
- data/test/fixtures/files/upload_file.txt +1 -0
- data/test/functional/cms_admin/attachments_controller_test.rb +63 -0
- data/test/functional/cms_admin/categories_controller_test.rb +86 -0
- data/test/functional/cms_admin/layouts_controller_test.rb +77 -0
- data/test/functional/cms_admin/pages_controller_test.rb +153 -0
- data/test/functional/cms_admin/sections_controller_test.rb +9 -0
- data/test/functional/cms_admin/snippets_controller_test.rb +63 -0
- data/test/functional/cms_content_controller_test.rb +52 -0
- data/test/models/cms_attachment_test.rb +16 -0
- data/test/models/cms_block_test.rb +11 -0
- data/test/models/cms_categorization_test.rb +39 -0
- data/test/models/cms_category_test.rb +71 -0
- data/test/models/cms_layout_test.rb +44 -0
- data/test/models/cms_page_test.rb +55 -0
- data/test/models/cms_snippet_test.rb +16 -0
- data/test/models/cms_tag_test.rb +70 -0
- data/test/rails_root/README +243 -0
- data/test/rails_root/Rakefile +10 -0
- data/test/rails_root/app/controllers/application_controller.rb +10 -0
- data/test/rails_root/app/helpers/application_helper.rb +3 -0
- data/test/rails_root/app/views/cms/under-development.html.haml +1 -0
- data/test/rails_root/app/views/complex_page/_example.html.erb +1 -0
- data/test/rails_root/config/boot.rb +110 -0
- data/test/rails_root/config/database.yml +22 -0
- data/test/rails_root/config/environment.rb +48 -0
- data/test/rails_root/config/environments/development.rb +17 -0
- data/test/rails_root/config/environments/production.rb +28 -0
- data/test/rails_root/config/environments/test.rb +28 -0
- data/test/rails_root/config/initializers/backtrace_silencers.rb +7 -0
- data/test/rails_root/config/initializers/inflections.rb +10 -0
- data/test/rails_root/config/initializers/mime_types.rb +5 -0
- data/test/rails_root/config/initializers/new_rails_defaults.rb +19 -0
- data/test/rails_root/config/initializers/session_store.rb +15 -0
- data/test/rails_root/config/locales/en.yml +5 -0
- data/test/rails_root/config/routes.rb +43 -0
- data/test/rails_root/doc/README_FOR_APP +2 -0
- data/test/rails_root/public/404.html +30 -0
- data/test/rails_root/public/422.html +30 -0
- data/test/rails_root/public/500.html +30 -0
- data/test/rails_root/public/favicon.ico +0 -0
- data/test/rails_root/public/images/rails.png +0 -0
- data/test/rails_root/public/index.html +275 -0
- data/test/rails_root/public/javascripts/application.js +2 -0
- data/test/rails_root/public/javascripts/controls.js +963 -0
- data/test/rails_root/public/javascripts/dragdrop.js +973 -0
- data/test/rails_root/public/javascripts/effects.js +1128 -0
- data/test/rails_root/public/javascripts/prototype.js +4320 -0
- data/test/rails_root/public/robots.txt +5 -0
- data/test/rails_root/public/stylesheets/sass/cms_master.sass +414 -0
- data/test/rails_root/script/about +4 -0
- data/test/rails_root/script/console +3 -0
- data/test/rails_root/script/dbconsole +3 -0
- data/test/rails_root/script/destroy +3 -0
- data/test/rails_root/script/generate +3 -0
- data/test/rails_root/script/performance/benchmarker +3 -0
- data/test/rails_root/script/performance/profiler +3 -0
- data/test/rails_root/script/plugin +3 -0
- data/test/rails_root/script/runner +3 -0
- data/test/rails_root/script/server +3 -0
- data/test/test_helper.rb +17 -0
- metadata +303 -0
data/.gitignore
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
.DS_Store
|
|
2
|
+
pkg
|
|
3
|
+
rdoc
|
|
4
|
+
test/rails_root/db
|
|
5
|
+
test/rails_root/log
|
|
6
|
+
test/rails_root/vendor
|
|
7
|
+
test/rails_root/config/initializers/paperclip.rb
|
|
8
|
+
test/rails_root/public/javascripts/cms_mce_init.js
|
|
9
|
+
test/rails_root/public/javascripts/cms_codemirror_init.js
|
|
10
|
+
test/rails_root/public/javascripts/cms_utilities.js
|
data/CHANGELOG.rdoc
ADDED
data/LICENSE
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
Copyright (c) 2009 Oleg Khabarov and The Working Group
|
|
2
|
+
|
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
|
4
|
+
a copy of this software and associated documentation files (the
|
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
|
9
|
+
the following conditions:
|
|
10
|
+
|
|
11
|
+
The above copyright notice and this permission notice shall be
|
|
12
|
+
included in all copies or substantial portions of the Software.
|
|
13
|
+
|
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.rdoc
ADDED
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
= Comfortable Mexican Sofa
|
|
2
|
+
|
|
3
|
+
ComfortableMexicanSofa is a CMS engine that provides CMS functionality to any Rails app.
|
|
4
|
+
It is not intended for users that would put <% ActiveRecord::Base.connection.execute('DROP DATABASE;') %> as content of a page.
|
|
5
|
+
|
|
6
|
+
== Install
|
|
7
|
+
|
|
8
|
+
From local gem:
|
|
9
|
+
rake manifest && rake install
|
|
10
|
+
|
|
11
|
+
In your Rails project:
|
|
12
|
+
# config/envionment.rb
|
|
13
|
+
config.gem 'comfortable_mexican_sofa'
|
|
14
|
+
|
|
15
|
+
Run the follwing in your console to generate migrations and update your database:
|
|
16
|
+
script/generate cms
|
|
17
|
+
rake db:migrate
|
|
18
|
+
|
|
19
|
+
Navigate to the following address to access CMS admin page:
|
|
20
|
+
http://your_application/cms-admin
|
|
21
|
+
|
|
22
|
+
== Sample CMS Configuration
|
|
23
|
+
|
|
24
|
+
ComfortableMexicanSofa.config do |config|
|
|
25
|
+
config.http_auth_username = 'username'
|
|
26
|
+
config.http_auth_password = 'secret_password'
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
== Setting Up Layouts and Writing CMS Content
|
|
30
|
+
|
|
31
|
+
Here's some available type of tags that allow construction and insertion of page content:
|
|
32
|
+
|
|
33
|
+
cms_page_block - block that gets rendered in the actual content of the page
|
|
34
|
+
cms_block - block that is not automatically rendered
|
|
35
|
+
cms_snippet - it's a snippet
|
|
36
|
+
cms_helper - it's a helper method of some sort
|
|
37
|
+
cms_partial - sometimes all we need is a partial
|
|
38
|
+
|
|
39
|
+
Here are the different formats for page blocks and what they will generate in the CMS page editing form:
|
|
40
|
+
|
|
41
|
+
string - a single-line text input
|
|
42
|
+
text - a textarea
|
|
43
|
+
rich_text - if TinyMCE is installed in the app, this will generate a TinyMCE enhanced textarea
|
|
44
|
+
code - if CodeMirror is installed in the app, this will generate a CodeMirror editor with syntax highlighting for HTML, JavaScript and CSS
|
|
45
|
+
|
|
46
|
+
== Installing CodeMirror Support
|
|
47
|
+
|
|
48
|
+
Download CodeMirror from: http://marijn.haverbeke.nl/codemirror
|
|
49
|
+
|
|
50
|
+
To get CodeMirror support properly working, you need to place the CodeMirror files in specific folders in your app. The JavaScript initializer expects the CodeMirror .js files to be at /publib/javascripts/codemirrror/ and the CSS files at /public/stylesheets/codemirror/.
|
|
51
|
+
|
|
52
|
+
To properly generate the .sass files, use the following command:
|
|
53
|
+
|
|
54
|
+
css2sass -a file.css > file.sass
|
|
55
|
+
|
data/Rakefile
ADDED
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
require 'rubygems'
|
|
2
|
+
require 'rake'
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
begin
|
|
6
|
+
require 'jeweler'
|
|
7
|
+
Jeweler::Tasks.new do |gem|
|
|
8
|
+
gem.name = 'comfortable_mexican_sofa'
|
|
9
|
+
gem.summary = 'ComfortableMexicanSofa is a Rails Engine CMS gem'
|
|
10
|
+
gem.description = ''
|
|
11
|
+
gem.email = "oleg@theworkinggroup.ca"
|
|
12
|
+
gem.homepage = "http://theworkinggroup.ca"
|
|
13
|
+
gem.authors = ["Oleg Khabarov, The Working Group Inc"]
|
|
14
|
+
# gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
|
|
15
|
+
gem.rubyforge_project = 'cms-sofa'
|
|
16
|
+
gem.add_dependency('haml')
|
|
17
|
+
gem.add_dependency('will_paginate')
|
|
18
|
+
gem.add_dependency('paperclip')
|
|
19
|
+
gem.add_dependency('calendar_date_select')
|
|
20
|
+
gem.add_dependency('active_link_to')
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
Jeweler::RubyforgeTasks.new do |rubyforge|
|
|
24
|
+
rubyforge.doc_task = "rdoc"
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
Jeweler::GemcutterTasks.new
|
|
28
|
+
rescue LoadError
|
|
29
|
+
puts "Jeweler (or a dependency) not available. Install it with: sudo gem install jeweler"
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
require 'rake/testtask'
|
|
33
|
+
Rake::TestTask.new(:test) do |test|
|
|
34
|
+
test.libs << 'lib' << 'test'
|
|
35
|
+
test.pattern = 'test/**/*_test.rb'
|
|
36
|
+
test.verbose = true
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
namespace :generator do
|
|
40
|
+
desc "Cleans up test application"
|
|
41
|
+
task :cleanup do
|
|
42
|
+
files = [
|
|
43
|
+
'test/rails_root/vendor/plugins/comfortable_mexican_sofa',
|
|
44
|
+
'test/rails_root/db',
|
|
45
|
+
'test/rails_root/public/javascripts/cms',
|
|
46
|
+
'test/rails_root/public/images/cms',
|
|
47
|
+
'test/rails_root/tmp/',
|
|
48
|
+
'test/rails_root/public/blank_iframe.html',
|
|
49
|
+
'test/rails_root/public/images/calendar_date_select',
|
|
50
|
+
'test/rails_root/public/javascripts/calendar_date_select/',
|
|
51
|
+
'test/rails_root/public/stylesheets/calendar_date_select/',
|
|
52
|
+
'test/rails_root/public/stylesheets/cms_master.css',
|
|
53
|
+
'test/rails_root/config/initializers/cms.rb',
|
|
54
|
+
'test/rails_root/public/system/files/'
|
|
55
|
+
]
|
|
56
|
+
files.each do |file|
|
|
57
|
+
FileUtils.rm_rf(file)
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
desc "Run the generator on the tests"
|
|
62
|
+
task :prepare do
|
|
63
|
+
plugin_root = File.expand_path(File.dirname(__FILE__))
|
|
64
|
+
system("ln -s #{plugin_root} test/rails_root/vendor/plugins/comfortable_mexican_sofa")
|
|
65
|
+
system "cd test/rails_root && ./script/generate cms && rake db:migrate db:test:prepare"
|
|
66
|
+
end
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
desc "Run the test suite"
|
|
70
|
+
task :default => ['generator:cleanup', 'generator:prepare', :test]
|
|
71
|
+
task :test => :check_dependencies
|
|
72
|
+
task :gemspec => ['generator:cleanup']
|
|
73
|
+
|
|
74
|
+
require 'rake/rdoctask'
|
|
75
|
+
Rake::RDocTask.new do |rdoc|
|
|
76
|
+
if File.exist?('VERSION')
|
|
77
|
+
version = File.read('VERSION')
|
|
78
|
+
else
|
|
79
|
+
version = ""
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
rdoc.rdoc_dir = 'rdoc'
|
|
83
|
+
rdoc.title = "active_link_to #{version}"
|
|
84
|
+
rdoc.rdoc_files.include('README*')
|
|
85
|
+
rdoc.rdoc_files.include('lib/**/*.rb')
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
Dir["#{File.dirname(__FILE__)}/tasks/*.rake"].sort.each { |ext| load ext }
|
data/VERSION
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
0.0.18
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
class CmsAdmin::AttachmentsController < CmsAdmin::BaseController
|
|
2
|
+
|
|
3
|
+
before_filter :load_attachment, :only => [:edit, :update, :destroy]
|
|
4
|
+
|
|
5
|
+
def index
|
|
6
|
+
@category_id = params[:filter][:category_id] rescue nil
|
|
7
|
+
unless @category_id.blank?
|
|
8
|
+
@cms_attachments = CmsAttachment.in_category(@category_id).paginate(:page => params[:page])
|
|
9
|
+
else
|
|
10
|
+
@cms_attachments = CmsAttachment.paginate(:page => params[:page])
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def new
|
|
15
|
+
@cms_attachment = CmsAttachment.new
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def edit
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def create
|
|
22
|
+
@cms_attachment = CmsAttachment.new(params[:cms_attachment])
|
|
23
|
+
@cms_attachment.save!
|
|
24
|
+
|
|
25
|
+
flash[:notice] = 'Attachment created'
|
|
26
|
+
redirect_to :action => :edit, :id => @cms_attachment
|
|
27
|
+
|
|
28
|
+
rescue ActiveRecord::RecordInvalid
|
|
29
|
+
render :action => :new
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def update
|
|
33
|
+
@cms_attachment.update_attributes!(params[:cms_attachment])
|
|
34
|
+
|
|
35
|
+
flash[:notice] = 'Attachment updated'
|
|
36
|
+
redirect_to :action => :edit, :id => @cms_attachment
|
|
37
|
+
|
|
38
|
+
rescue ActiveRecord::RecordInvalid
|
|
39
|
+
render :action => :edit
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def destroy
|
|
43
|
+
@cms_attachment.destroy
|
|
44
|
+
|
|
45
|
+
flash[:notice] = 'Attachment removed'
|
|
46
|
+
redirect_to :action => :index
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
protected
|
|
50
|
+
|
|
51
|
+
def load_attachment
|
|
52
|
+
@cms_attachment = CmsAttachment.find_by_id(params[:id])
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
end
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
class CmsAdmin::BaseController < ApplicationController
|
|
2
|
+
|
|
3
|
+
before_filter :authenticate
|
|
4
|
+
|
|
5
|
+
layout 'cms_admin'
|
|
6
|
+
|
|
7
|
+
def manage_session_array(name, action, value)
|
|
8
|
+
session[name] = case action
|
|
9
|
+
when :add
|
|
10
|
+
(session[name] || []) + [value]
|
|
11
|
+
when :remove
|
|
12
|
+
(session[name] || []) - [value]
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
protected
|
|
17
|
+
|
|
18
|
+
def authenticate
|
|
19
|
+
authenticate_or_request_with_http_basic do |username, password|
|
|
20
|
+
username == ComfortableMexicanSofa::Config.http_auth_username &&
|
|
21
|
+
password == ComfortableMexicanSofa::Config.http_auth_password
|
|
22
|
+
end if ComfortableMexicanSofa::Config.http_auth_enabled
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
end
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
class CmsAdmin::CategoriesController < CmsAdmin::BaseController
|
|
2
|
+
before_filter :load_category, :except => [:create, :new, :index]
|
|
3
|
+
|
|
4
|
+
def index
|
|
5
|
+
@cms_categories = CmsCategory.roots
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
def children
|
|
9
|
+
manage_session_array(:cms_category_tree, (params[:state] == 'open' ? :remove : :add), params[:id])
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def new
|
|
13
|
+
@cms_category = CmsCategory.new(params.slice(:parent_id))
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def create
|
|
17
|
+
@cms_category = CmsCategory.new(params[:cms_category])
|
|
18
|
+
@cms_category.save!
|
|
19
|
+
|
|
20
|
+
flash[:notice] = 'Category created'
|
|
21
|
+
respond_to do |format|
|
|
22
|
+
format.html { redirect_to :action => :edit, :id => @cms_category}
|
|
23
|
+
format.js
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
rescue ActiveRecord::RecordInvalid
|
|
27
|
+
respond_to do |format|
|
|
28
|
+
format.html { render :action => 'new' }
|
|
29
|
+
format.js
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def edit
|
|
34
|
+
# ...
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def update
|
|
38
|
+
@cms_category.update_attributes!(params[:cms_category])
|
|
39
|
+
flash[:notice] = 'Category updated'
|
|
40
|
+
respond_to do |format|
|
|
41
|
+
format.html { redirect_to :action => :edit, :id => @cms_category }
|
|
42
|
+
format.js
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
rescue ActiveRecord::RecordInvalid
|
|
46
|
+
respond_to do |format|
|
|
47
|
+
format.html { render :action => 'edit' }
|
|
48
|
+
format.js
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
def show
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
def destroy
|
|
56
|
+
@cms_category.destroy
|
|
57
|
+
flash[:notice] = 'Category deleted'
|
|
58
|
+
redirect_to cms_admin_categories_path
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
protected
|
|
62
|
+
|
|
63
|
+
def load_category
|
|
64
|
+
@cms_category = CmsCategory.find(params[:id])
|
|
65
|
+
rescue ActiveRecord::RecordNotFound
|
|
66
|
+
render :text => 'Item not found', :status => 404
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
end
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
class CmsAdmin::LayoutsController < CmsAdmin::BaseController
|
|
2
|
+
|
|
3
|
+
before_filter :load_layout, :only => [:children, :edit, :update, :destroy, :reorder]
|
|
4
|
+
|
|
5
|
+
def index
|
|
6
|
+
@layouts = CmsLayout.roots
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def children
|
|
10
|
+
manage_session_array(:cms_layout_tree, (params[:state] == 'open' ? :remove : :add), params[:id])
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def new
|
|
14
|
+
@layout = CmsLayout.new(params.slice(:parent_id))
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def edit
|
|
18
|
+
# ...
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def create
|
|
22
|
+
@layout = CmsLayout.new(params[:layout])
|
|
23
|
+
@layout.save!
|
|
24
|
+
|
|
25
|
+
flash[:notice] = 'Layout created'
|
|
26
|
+
manage_session_array(:cms_layout_tree, :add, @layout.parent_id.to_s)
|
|
27
|
+
redirect_to :action => :edit, :id => @layout
|
|
28
|
+
|
|
29
|
+
rescue ActiveRecord::RecordInvalid
|
|
30
|
+
render :action => :new
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def update
|
|
34
|
+
@layout.update_attributes!(params[:layout])
|
|
35
|
+
|
|
36
|
+
flash[:notice] = 'Layout updated'
|
|
37
|
+
redirect_to :action => :edit, :id => @layout
|
|
38
|
+
|
|
39
|
+
rescue ActiveRecord::RecordInvalid
|
|
40
|
+
render :action => :edit
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def destroy
|
|
44
|
+
@layout.destroy
|
|
45
|
+
|
|
46
|
+
flash[:notice] = 'Layout removed'
|
|
47
|
+
redirect_to :action => :index
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
def reorder
|
|
51
|
+
if @layout
|
|
52
|
+
layout_id = @layout.id
|
|
53
|
+
find_scope = @layout.children
|
|
54
|
+
else
|
|
55
|
+
layout_id = 0
|
|
56
|
+
find_scope = CmsLayout
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
params["layout_#{layout_id}_branch"].each_with_index do |id, position|
|
|
60
|
+
find_scope.find(id).update_attribute(:position, position)
|
|
61
|
+
end
|
|
62
|
+
render :nothing => true
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
protected
|
|
66
|
+
|
|
67
|
+
def load_layout
|
|
68
|
+
@layout = CmsLayout.find_by_id(params[:id])
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
end
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
class CmsAdmin::PagesController < CmsAdmin::BaseController
|
|
2
|
+
|
|
3
|
+
include CmsCommon::RenderPage
|
|
4
|
+
|
|
5
|
+
before_filter :load_page, :only => [:children, :edit, :update, :destroy, :reorder]
|
|
6
|
+
|
|
7
|
+
def index
|
|
8
|
+
params[:root] ? @cms_pages = CmsPage.find(params[:root]).children : @cms_pages = CmsPage.roots
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def children
|
|
12
|
+
manage_session_array(:cms_page_tree, (params[:state] == 'open' ? :remove : :add), params[:id])
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def new
|
|
16
|
+
@cms_page = CmsPage.new(params.slice(:parent_id))
|
|
17
|
+
@cms_page.published_at = Time.now.utc
|
|
18
|
+
@cms_page.cms_layout = @cms_page.parent.cms_layout if @cms_page.parent
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def edit
|
|
22
|
+
# ...
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def create
|
|
26
|
+
@cms_page = CmsPage.new(params[:cms_page])
|
|
27
|
+
|
|
28
|
+
return render_page if !params[:preview].blank? && @cms_page.valid?
|
|
29
|
+
|
|
30
|
+
@cms_page.save!
|
|
31
|
+
|
|
32
|
+
flash[:notice] = 'Page created'
|
|
33
|
+
manage_session_array(:cms_page_tree, :add, @cms_page.parent_id.to_s)
|
|
34
|
+
redirect_to :action => :edit, :id => @cms_page
|
|
35
|
+
|
|
36
|
+
rescue ActiveRecord::RecordInvalid
|
|
37
|
+
render :action => :new
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def update
|
|
41
|
+
@cms_page.attributes = params[:cms_page]
|
|
42
|
+
|
|
43
|
+
return render_page if !params[:preview].blank? && @cms_page.valid?
|
|
44
|
+
|
|
45
|
+
@cms_page.save!
|
|
46
|
+
|
|
47
|
+
flash[:notice] = 'Page updated'
|
|
48
|
+
redirect_to :action => :edit, :id => @cms_page
|
|
49
|
+
|
|
50
|
+
rescue ActiveRecord::RecordInvalid
|
|
51
|
+
render :action => :edit
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
def destroy
|
|
55
|
+
@cms_page.destroy
|
|
56
|
+
|
|
57
|
+
flash[:notice] = 'Page removed'
|
|
58
|
+
redirect_to :action => :index
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
def form_blocks
|
|
62
|
+
@cms_page = CmsPage.find_by_id(params[:id])
|
|
63
|
+
@layout = CmsLayout.find(params[:layout_id])
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
def reorder
|
|
67
|
+
params["page_#{@cms_page.id}_branch"].each_with_index do |id, position|
|
|
68
|
+
@cms_page.children.find(id).update_attribute(:position, position)
|
|
69
|
+
end
|
|
70
|
+
render :nothing => true
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
protected
|
|
74
|
+
|
|
75
|
+
def load_page
|
|
76
|
+
@cms_page = CmsPage.find_by_id(params[:id])
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
end
|