mountable_cms 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/MIT-LICENSE +20 -0
- data/README.md +16 -0
- data/Rakefile +39 -0
- data/app/assets/javascripts/mountable_cms/application.js +9 -0
- data/app/assets/javascripts/mountable_cms/pages.js +4 -0
- data/app/assets/javascripts/mountable_cms/pages.js~ +4 -0
- data/app/assets/stylesheets/mountable_cms/application.css +7 -0
- data/app/assets/stylesheets/mountable_cms/pages.css.scss +39 -0
- data/app/assets/stylesheets/mountable_cms/pages.css.scss~ +33 -0
- data/app/assets/stylesheets/mountable_cms/pages.css~ +8 -0
- data/app/controllers/mountable_cms/application_controller.rb +4 -0
- data/app/controllers/mountable_cms/pages_controller.rb +56 -0
- data/app/controllers/mountable_cms/pages_controller.rb~ +4 -0
- data/app/helpers/mountable_cms/application_helper.rb +4 -0
- data/app/helpers/mountable_cms/pages_helper.rb +24 -0
- data/app/helpers/mountable_cms/pages_helper.rb~ +17 -0
- data/app/models/mountable_cms/page.rb +8 -0
- data/app/models/mountable_cms/page.rb~ +4 -0
- data/app/views/layouts/mountable_cms/application.html.haml +10 -0
- data/app/views/layouts/mountable_cms/application.html.haml~ +10 -0
- data/app/views/mountable_cms/pages/_form.html.haml +14 -0
- data/app/views/mountable_cms/pages/_form.html.haml~ +14 -0
- data/app/views/mountable_cms/pages/edit.html.haml +2 -0
- data/app/views/mountable_cms/pages/edit.html.haml~ +2 -0
- data/app/views/mountable_cms/pages/index.html.haml +18 -0
- data/app/views/mountable_cms/pages/index.html.haml~ +1 -0
- data/app/views/mountable_cms/pages/new.html.haml +2 -0
- data/app/views/mountable_cms/pages/new.html.haml~ +2 -0
- data/config/routes.rb +4 -0
- data/config/routes.rb~ +4 -0
- data/db/migrate/20120521104805_create_mountable_cms_pages.rb +11 -0
- data/lib/mountable_cms.rb +4 -0
- data/lib/mountable_cms/engine.rb +10 -0
- data/lib/mountable_cms/engine.rb~ +9 -0
- data/lib/mountable_cms/version.rb +3 -0
- data/lib/tasks/mountable_cms_tasks.rake +4 -0
- data/test/dummy/Rakefile +7 -0
- data/test/dummy/app/assets/javascripts/application.js +9 -0
- data/test/dummy/app/assets/stylesheets/application.css +7 -0
- data/test/dummy/app/controllers/application_controller.rb +3 -0
- data/test/dummy/app/helpers/application_helper.rb +2 -0
- data/test/dummy/app/views/layouts/application.html.erb +14 -0
- data/test/dummy/config.ru +4 -0
- data/test/dummy/config/application.rb +45 -0
- data/test/dummy/config/boot.rb +10 -0
- data/test/dummy/config/database.yml +25 -0
- data/test/dummy/config/environment.rb +5 -0
- data/test/dummy/config/environments/development.rb +30 -0
- data/test/dummy/config/environments/production.rb +60 -0
- data/test/dummy/config/environments/test.rb +39 -0
- data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/test/dummy/config/initializers/inflections.rb +10 -0
- data/test/dummy/config/initializers/mime_types.rb +5 -0
- data/test/dummy/config/initializers/secret_token.rb +7 -0
- data/test/dummy/config/initializers/session_store.rb +8 -0
- data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
- data/test/dummy/config/locales/en.yml +5 -0
- data/test/dummy/config/routes.rb +4 -0
- data/test/dummy/db/development.sqlite3 +0 -0
- data/test/dummy/db/migrate/20120521134944_create_mountable_cms_pages.rb +11 -0
- data/test/dummy/db/schema.rb +23 -0
- data/test/dummy/log/development.log +5394 -0
- data/test/dummy/public/404.html +26 -0
- data/test/dummy/public/422.html +26 -0
- data/test/dummy/public/500.html +26 -0
- data/test/dummy/public/favicon.ico +0 -0
- data/test/dummy/script/rails +6 -0
- data/test/dummy/tmp/cache/assets/C2E/E70/sprockets%2F244629dc72382f943792a75e1451e295 +3048 -0
- data/test/dummy/tmp/cache/assets/C84/DE0/sprockets%2F715d659ea5fa3c71433503a0983098e6 +12373 -0
- data/test/dummy/tmp/cache/assets/CB3/6D0/sprockets%2F6e6c30786a9378cb47d5e3561e32c401 +0 -0
- data/test/dummy/tmp/cache/assets/CD6/840/sprockets%2F87c676d41005221b3b9b84242e9bc1dd +0 -0
- data/test/dummy/tmp/cache/assets/CD9/E40/sprockets%2F566c80c3deac071c61851e1334d0e579 +0 -0
- data/test/dummy/tmp/cache/assets/CE3/C70/sprockets%2F0b2cfa91f89c2ad4a3584859542a8803 +0 -0
- data/test/dummy/tmp/cache/assets/CFA/240/sprockets%2F35a054e67624df5b1b0a6121b027be7f +0 -0
- data/test/dummy/tmp/cache/assets/D06/140/sprockets%2F95aaf408967e0f91fb5f122a4b64201a +0 -0
- data/test/dummy/tmp/cache/assets/D07/050/sprockets%2F339cb1b7b0750f3cf351e21776a570fe +0 -0
- data/test/dummy/tmp/cache/assets/D16/220/sprockets%2Fb3b6e90d80c526bec99b674e267206c5 +0 -0
- data/test/dummy/tmp/cache/assets/D23/3F0/sprockets%2F2e178f610e1cbad6c30bf4b5062d2330 +0 -0
- data/test/dummy/tmp/cache/assets/D32/A10/sprockets%2F13fe41fee1fe35b49d145bcc06610705 +0 -0
- data/test/dummy/tmp/cache/assets/D38/790/sprockets%2Fcb27da438d74b411b52962f86fad26a1 +0 -0
- data/test/dummy/tmp/cache/assets/D43/510/sprockets%2F290c407807c7f384a9fee7852aa0ea6b +0 -0
- data/test/dummy/tmp/cache/assets/D44/810/sprockets%2F5e148a60a47e203870ccf5c4def385e9 +84 -0
- data/test/dummy/tmp/cache/assets/D48/A30/sprockets%2Fe580af152f5c6e835305d3e59f0c7e7d +0 -0
- data/test/dummy/tmp/cache/assets/D52/F00/sprockets%2F1b3a577e87ba386a3f8e29ede078f096 +0 -0
- data/test/dummy/tmp/cache/assets/D54/ED0/sprockets%2F71c9fa01091d432b131da3bb73faf3d4 +0 -0
- data/test/dummy/tmp/cache/assets/D59/C30/sprockets%2F1693c21ecc863f979db1678cade5985e +0 -0
- data/test/dummy/tmp/cache/assets/D69/F10/sprockets%2F214424fa1b99a35f5c9ccad38d60e70d +444 -0
- data/test/dummy/tmp/cache/assets/D6E/270/sprockets%2F74aef784bdd5560009a0e8afd8b233d6 +0 -0
- data/test/dummy/tmp/cache/assets/D74/520/sprockets%2Fd7bc5320571cd40537e76cf47fdf9c3b +0 -0
- data/test/dummy/tmp/cache/assets/D7A/BA0/sprockets%2Fb6178ecda81dcf8e9d20e883177a473a +0 -0
- data/test/dummy/tmp/cache/assets/D84/210/sprockets%2Fabd0103ccec2b428ac62c94e4c40b384 +0 -0
- data/test/dummy/tmp/cache/assets/D96/9A0/sprockets%2F355ff606efa21b832c0a56cd81fe1b4f +0 -0
- data/test/dummy/tmp/cache/assets/DC5/9A0/sprockets%2F71541ca0c61fc824f5b48c4cfd5c1cde +0 -0
- data/test/dummy/tmp/cache/assets/DD2/7B0/sprockets%2Fdb3c6daae7266da7f717c3ec98c7214c +0 -0
- data/test/dummy/tmp/cache/assets/E04/890/sprockets%2F2f5173deea6c795b8fdde723bb4b63af +0 -0
- data/test/dummy/tmp/cache/assets/E5B/E70/sprockets%2Fb4fefca484ce24afc83cd35bafa8a771 +3052 -0
- data/test/dummy/tmp/cache/assets/E90/770/sprockets%2Faebbdd7bbc4ef96d479aff10266e4dcb +439 -0
- data/test/dummy/tmp/pids/server.pid +1 -0
- data/test/fixtures/mountable_cms/pages.yml +11 -0
- data/test/functional/mountable_cms/pages_controller_test.rb +9 -0
- data/test/integration/navigation_test.rb +10 -0
- data/test/mountable_cms_test.rb +7 -0
- data/test/test_helper.rb +10 -0
- data/test/unit/helpers/mountable_cms/pages_helper_test.rb +6 -0
- data/test/unit/mountable_cms/page_test.rb +9 -0
- metadata +325 -0
data/MIT-LICENSE
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright 2012 YOURNAME
|
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.md
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
MountableCms
|
2
|
+
============
|
3
|
+
|
4
|
+
gem 'mountable_cms'
|
5
|
+
|
6
|
+
$ bundle install
|
7
|
+
$ rake mountable_cms:install:migrations
|
8
|
+
$ rake db:migrate
|
9
|
+
|
10
|
+
```ruby
|
11
|
+
Rails.application.routes.draw do
|
12
|
+
mount MountableCms::Engine => '/cms'
|
13
|
+
# ...
|
14
|
+
end
|
15
|
+
```
|
16
|
+
This project uses MIT-LICENSE.
|
data/Rakefile
ADDED
@@ -0,0 +1,39 @@
|
|
1
|
+
#!/usr/bin/env rake
|
2
|
+
begin
|
3
|
+
require 'bundler/setup'
|
4
|
+
rescue LoadError
|
5
|
+
puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
|
6
|
+
end
|
7
|
+
begin
|
8
|
+
require 'rdoc/task'
|
9
|
+
rescue LoadError
|
10
|
+
require 'rdoc/rdoc'
|
11
|
+
require 'rake/rdoctask'
|
12
|
+
RDoc::Task = Rake::RDocTask
|
13
|
+
end
|
14
|
+
|
15
|
+
RDoc::Task.new(:rdoc) do |rdoc|
|
16
|
+
rdoc.rdoc_dir = 'rdoc'
|
17
|
+
rdoc.title = 'MountableCms'
|
18
|
+
rdoc.options << '--line-numbers'
|
19
|
+
rdoc.rdoc_files.include('README.rdoc')
|
20
|
+
rdoc.rdoc_files.include('lib/**/*.rb')
|
21
|
+
end
|
22
|
+
|
23
|
+
APP_RAKEFILE = File.expand_path("../test/dummy/Rakefile", __FILE__)
|
24
|
+
load 'rails/tasks/engine.rake'
|
25
|
+
|
26
|
+
|
27
|
+
Bundler::GemHelper.install_tasks
|
28
|
+
|
29
|
+
require 'rake/testtask'
|
30
|
+
|
31
|
+
Rake::TestTask.new(:test) do |t|
|
32
|
+
t.libs << 'lib'
|
33
|
+
t.libs << 'test'
|
34
|
+
t.pattern = 'test/**/*_test.rb'
|
35
|
+
t.verbose = false
|
36
|
+
end
|
37
|
+
|
38
|
+
|
39
|
+
task :default => :test
|
@@ -0,0 +1,9 @@
|
|
1
|
+
// This is a manifest file that'll be compiled into including all the files listed below.
|
2
|
+
// Add new JavaScript/Coffee code in separate files in this directory and they'll automatically
|
3
|
+
// be included in the compiled file accessible from http://example.com/assets/application.js
|
4
|
+
// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
|
5
|
+
// the compiled file.
|
6
|
+
//
|
7
|
+
//= require jquery
|
8
|
+
//= require jquery_ujs
|
9
|
+
//= require_tree .
|
@@ -0,0 +1,7 @@
|
|
1
|
+
/*
|
2
|
+
* This is a manifest file that'll automatically include all the stylesheets available in this directory
|
3
|
+
* and any sub-directories. You're free to add application-wide styles to this file and they'll appear at
|
4
|
+
* the top of the compiled file, but it's generally better to create a new file per style scope.
|
5
|
+
*= require_self
|
6
|
+
*= require_tree .
|
7
|
+
*/
|
@@ -0,0 +1,39 @@
|
|
1
|
+
/*
|
2
|
+
Place all the styles related to the matching controller here.
|
3
|
+
They will automatically be included in application.css.
|
4
|
+
|
5
|
+
*= require formtastic
|
6
|
+
*= require codemirror
|
7
|
+
*= require codemirror/themes/neat
|
8
|
+
*/
|
9
|
+
|
10
|
+
|
11
|
+
body#mountable_cms {
|
12
|
+
font-family: Verdana, Helvetica, Arial, Sans-Serif;
|
13
|
+
background-color: Azure;
|
14
|
+
color: CornflowerBlue;
|
15
|
+
margin: 0;
|
16
|
+
h1 {
|
17
|
+
background-color: CornflowerBlue;
|
18
|
+
color: Azure;
|
19
|
+
margin: 0;
|
20
|
+
padding: 30px;
|
21
|
+
}
|
22
|
+
.wrapper {
|
23
|
+
padding: 30px;
|
24
|
+
}
|
25
|
+
table {
|
26
|
+
width: 100%;
|
27
|
+
th {
|
28
|
+
border-bottom: 2px solid CornflowerBlue;
|
29
|
+
}
|
30
|
+
tr:nth-child(odd) td {
|
31
|
+
background-color: GhostWhite;
|
32
|
+
}
|
33
|
+
}
|
34
|
+
.CodeMirror-scroll {
|
35
|
+
border: 1px solid CornflowerBlue;
|
36
|
+
background-color: GhostWhite;
|
37
|
+
}
|
38
|
+
}
|
39
|
+
|
@@ -0,0 +1,33 @@
|
|
1
|
+
/*
|
2
|
+
Place all the styles related to the matching controller here.
|
3
|
+
They will automatically be included in application.css.
|
4
|
+
|
5
|
+
*= require formtastic
|
6
|
+
*= require codemirror
|
7
|
+
*/
|
8
|
+
|
9
|
+
|
10
|
+
body#mountable_cms {
|
11
|
+
font-family: Verdana, Helvetica, Arial, Sans-Serif;
|
12
|
+
background-color: Azure;
|
13
|
+
color: CornflowerBlue;
|
14
|
+
margin: 0;
|
15
|
+
h1 {
|
16
|
+
background-color: CornflowerBlue;
|
17
|
+
color: Azure;
|
18
|
+
margin: 0;
|
19
|
+
padding: 30px;
|
20
|
+
}
|
21
|
+
.wrapper {
|
22
|
+
padding: 30px;
|
23
|
+
}
|
24
|
+
table {
|
25
|
+
width: 100%;
|
26
|
+
th {
|
27
|
+
border-bottom: 2px solid CornflowerBlue;
|
28
|
+
}
|
29
|
+
tr:nth-child(odd) td {
|
30
|
+
background-color: GhostWhite;
|
31
|
+
}
|
32
|
+
}
|
33
|
+
}
|
@@ -0,0 +1,56 @@
|
|
1
|
+
module MountableCms
|
2
|
+
class PagesController < InheritedResources::Base
|
3
|
+
|
4
|
+
layout 'mountable_cms/application'
|
5
|
+
|
6
|
+
# respond_to :html
|
7
|
+
#
|
8
|
+
# # before_filter :find_page, :except => [:index, :new, :create]
|
9
|
+
#
|
10
|
+
# def index
|
11
|
+
# @pages = Page.all
|
12
|
+
# respond_with @pages
|
13
|
+
# end
|
14
|
+
#
|
15
|
+
# def show
|
16
|
+
# @page = Page.find(params[:id])
|
17
|
+
# respond_with @page
|
18
|
+
# end
|
19
|
+
#
|
20
|
+
# def new
|
21
|
+
# @page = Page.new
|
22
|
+
# respond_with @page
|
23
|
+
# end
|
24
|
+
#
|
25
|
+
# def create
|
26
|
+
# @page = Page.create(params[:page])
|
27
|
+
# if @page.save
|
28
|
+
# redirect_to @page, :notice => "Successfully created page."
|
29
|
+
# else
|
30
|
+
# render :action => 'new'
|
31
|
+
# end
|
32
|
+
# respond_with @page
|
33
|
+
# end
|
34
|
+
#
|
35
|
+
# def edit
|
36
|
+
# @page = Page.find(params[:id])
|
37
|
+
# respond_with @page
|
38
|
+
# end
|
39
|
+
#
|
40
|
+
# def update
|
41
|
+
# @page = Page.find(params[:id])
|
42
|
+
# if @page.update_attributes(params[:page])
|
43
|
+
# flash[:notice] = "Successfully saved page."
|
44
|
+
# end
|
45
|
+
# respond_with @page
|
46
|
+
# end
|
47
|
+
#
|
48
|
+
# def destroy
|
49
|
+
# @page = Page.find(params[:id])
|
50
|
+
# @page.destroy
|
51
|
+
# flash[:notice] = "Successfully deleted page."
|
52
|
+
# respond_with @page
|
53
|
+
# end
|
54
|
+
|
55
|
+
end
|
56
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module MountableCms
|
2
|
+
module PagesHelper
|
3
|
+
|
4
|
+
def views(arg=nil)
|
5
|
+
case arg
|
6
|
+
when String
|
7
|
+
`find #{arg} -type f -o -type l | \
|
8
|
+
grep -v '/_' | grep -v 'mailer' | grep -v 'tex' | grep -v '~$' | \
|
9
|
+
sed "s\@#{arg}/@@"`.split
|
10
|
+
when Array
|
11
|
+
arg.map { |path| views(path) }.flatten
|
12
|
+
when nil
|
13
|
+
return @views unless @views.nil?
|
14
|
+
paths = view_paths.map {|vp| vp.instance_variable_get('@path') }
|
15
|
+
@views = views(paths)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
def handlers
|
20
|
+
%w(erb haml)
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module MountableCms
|
2
|
+
module PagesHelper
|
3
|
+
|
4
|
+
# use config view paths, to include engines as well
|
5
|
+
def views
|
6
|
+
@views ||=
|
7
|
+
`find #{::Rails.root.to_s}/app/views -type f -o -type l | \
|
8
|
+
grep -v '/_' | grep -v 'mailer' | grep -v 'tex' | \
|
9
|
+
sed "s\@#{::Rails.root.to_s}/app/views/@@" `.split
|
10
|
+
end
|
11
|
+
|
12
|
+
def handlers
|
13
|
+
%w(erb haml)
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
=semantic_form_for @page do |f|
|
2
|
+
=f.inputs do
|
3
|
+
=f.input :path, :as => :select, :collection => views, :include_blank => false
|
4
|
+
=f.input :handler, :as => :select, :collection => handlers, :include_blank => false
|
5
|
+
=f.input :content
|
6
|
+
=f.actions do
|
7
|
+
=f.action :submit, :as => :button
|
8
|
+
=f.action :cancel, :as => :link
|
9
|
+
|
10
|
+
:javascript
|
11
|
+
var editor = CodeMirror.fromTextArea($("#page_content")[0], {
|
12
|
+
theme: 'neat',
|
13
|
+
lineNumbers: true
|
14
|
+
});
|
@@ -0,0 +1,14 @@
|
|
1
|
+
=semantic_form_for @page do |f|
|
2
|
+
=f.inputs do
|
3
|
+
=f.input :path, :as => :select, :collection => views, :include_blank => false
|
4
|
+
=f.input :handler, :as => :select, :collection => handlers, :include_blank => false
|
5
|
+
=f.input :content
|
6
|
+
=f.actions do
|
7
|
+
=f.action :submit, :as => :button
|
8
|
+
=f.action :cancel, :as => :link
|
9
|
+
|
10
|
+
:javascript
|
11
|
+
var editor = CodeMirror.fromTextArea($("#page_content")[0], {
|
12
|
+
theme: 'ambiance',
|
13
|
+
lineNumbers: true
|
14
|
+
});
|
@@ -0,0 +1,18 @@
|
|
1
|
+
%h2=t('.pages')
|
2
|
+
|
3
|
+
%table
|
4
|
+
%tr
|
5
|
+
%th=t('.id')
|
6
|
+
%th=t('.path')
|
7
|
+
%th=t('.handler')
|
8
|
+
%th=t('.content_size')
|
9
|
+
-@pages.each do |page|
|
10
|
+
%tr
|
11
|
+
%td=page.id
|
12
|
+
%td=link_to page.path, [:edit, page]
|
13
|
+
%td=page.handler
|
14
|
+
%td=number_to_human_size(page.content.try(:length))
|
15
|
+
-#=link_to t('.destroy'), @page, :method => :destroy
|
16
|
+
|
17
|
+
=link_to t('.new'), new_page_path
|
18
|
+
|
@@ -0,0 +1 @@
|
|
1
|
+
%h1 CMS
|
data/config/routes.rb
ADDED
data/config/routes.rb~
ADDED