slightcms 0.0.11 → 0.1.1
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/.DS_Store +0 -0
- data/.document +5 -0
- data/.rspec +1 -0
- data/Gemfile +12 -0
- data/Gemfile.lock +90 -0
- data/LICENSE.txt +20 -0
- data/README.rdoc +14 -37
- data/Rakefile +45 -17
- data/VERSION +1 -1
- data/{lib/app/controller → app/controllers}/slightcms/pages_controller.rb +8 -8
- data/lib/generators/slightcms/install.rb +19 -0
- data/lib/generators/templates/README +7 -0
- data/lib/slightcms.rb +0 -59
- data/slightcms.gemspec +42 -76
- data/spec/slightcms_spec.rb +5 -4
- data/spec/spec_helper.rb +9 -12
- metadata +60 -98
- data/.bnsignore +0 -18
- data/.gitignore +0 -3
- data/History.rdoc +0 -4
- data/bin/slightcms +0 -7
- data/generators/slightcms_setup/INSTALL +0 -1
- data/generators/slightcms_setup/images/arrow_down.png +0 -0
- data/generators/slightcms_setup/images/arrow_up.png +0 -0
- data/generators/slightcms_setup/images/main-menu-bg-divider.gif +0 -0
- data/generators/slightcms_setup/images/main-menu-bg-hover.gif +0 -0
- data/generators/slightcms_setup/images/main-menu-bg.gif +0 -0
- data/generators/slightcms_setup/images/page.png +0 -0
- data/generators/slightcms_setup/images/page_add.png +0 -0
- data/generators/slightcms_setup/images/page_delete.png +0 -0
- data/generators/slightcms_setup/images/page_edit.png +0 -0
- data/generators/slightcms_setup/javascripts/jquery-1.4.min.js +0 -151
- data/generators/slightcms_setup/javascripts/slightcms.js +0 -0
- data/generators/slightcms_setup/slightcms_setup_generator.rb +0 -29
- data/generators/slightcms_setup/stylesheets/960.css +0 -1
- data/generators/slightcms_setup/stylesheets/reset.css +0 -1
- data/generators/slightcms_setup/stylesheets/slightcms.css +0 -0
- data/generators/slightcms_setup/stylesheets/text.css +0 -1
- data/generators/slightcms_setup/templates/migrate/slightcms_setup_migration.rb +0 -54
- data/lib/app/controller/slightcms/admin/assets_controller.rb +0 -47
- data/lib/app/controller/slightcms/admin/layouts_controller.rb +0 -65
- data/lib/app/controller/slightcms/admin/pages_controller.rb +0 -80
- data/lib/app/models/asset.rb +0 -65
- data/lib/app/models/layout.rb +0 -30
- data/lib/app/models/page.rb +0 -97
- data/lib/app/models/part.rb +0 -21
- data/lib/app/views/layouts/slightcms_admin_interface.html.erb +0 -36
- data/lib/app/views/slightcms/admin/assets/index.html.erb +0 -12
- data/lib/app/views/slightcms/admin/assets/new.html.erb +0 -10
- data/lib/app/views/slightcms/admin/layouts/edit.html.erb +0 -10
- data/lib/app/views/slightcms/admin/layouts/index.html.erb +0 -13
- data/lib/app/views/slightcms/admin/layouts/new.html.erb +0 -12
- data/lib/app/views/slightcms/admin/pages/_page_list_item.html.erb +0 -14
- data/lib/app/views/slightcms/admin/pages/_page_part_fields.html.erb +0 -4
- data/lib/app/views/slightcms/admin/pages/edit.html.erb +0 -19
- data/lib/app/views/slightcms/admin/pages/index.html.erb +0 -8
- data/lib/app/views/slightcms/admin/pages/new.html.erb +0 -20
- data/lib/app/views/slightcms/pages/show.html.erb +0 -1
- data/test/test_slightcms.rb +0 -0
File without changes
|
@@ -1,29 +0,0 @@
|
|
1
|
-
class Rails::Generator::Commands::Create
|
2
|
-
def draw_routes
|
3
|
-
file_start = 'ActionController::Routing::Routes.draw do |map|'
|
4
|
-
unless options[:pretend]
|
5
|
-
gsub_file 'config/routes.rb', /(#{Regexp.escape(file_start)})/mi do |match|
|
6
|
-
"#{match}\n map.slightcms_pages '/:path', :controller => :slightcms_pages, :action => :show\n"
|
7
|
-
end
|
8
|
-
end
|
9
|
-
end
|
10
|
-
end
|
11
|
-
|
12
|
-
class SlightcmsSetupGenerator < Rails::Generator::Base
|
13
|
-
def manifest
|
14
|
-
record do |m|
|
15
|
-
# Setup directories
|
16
|
-
m.directory('public/slightcms/assets')
|
17
|
-
|
18
|
-
# Setup migration file
|
19
|
-
m.migration_template('migrate/slightcms_setup_migration.rb', 'db/migrate')
|
20
|
-
|
21
|
-
# Setup routes in routes.rb
|
22
|
-
# m.draw_routes
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
def file_name
|
27
|
-
"slightcms_setup"
|
28
|
-
end
|
29
|
-
end
|
@@ -1 +0,0 @@
|
|
1
|
-
.container_12,.container_16{margin-left:auto;margin-right:auto;width:960px}.grid_1,.grid_2,.grid_3,.grid_4,.grid_5,.grid_6,.grid_7,.grid_8,.grid_9,.grid_10,.grid_11,.grid_12,.grid_13,.grid_14,.grid_15,.grid_16{display:inline;float:left;position:relative;margin-left:10px;margin-right:10px}.container_12 .grid_3,.container_16 .grid_4{width:220px}.container_12 .grid_6,.container_16 .grid_8{width:460px}.container_12 .grid_9,.container_16 .grid_12{width:700px}.container_12 .grid_12,.container_16 .grid_16{width:940px}.alpha{margin-left:0}.omega{margin-right:0}.container_12 .grid_1{width:60px}.container_12 .grid_2{width:140px}.container_12 .grid_4{width:300px}.container_12 .grid_5{width:380px}.container_12 .grid_7{width:540px}.container_12 .grid_8{width:620px}.container_12 .grid_10{width:780px}.container_12 .grid_11{width:860px}.container_16 .grid_1{width:40px}.container_16 .grid_2{width:100px}.container_16 .grid_3{width:160px}.container_16 .grid_5{width:280px}.container_16 .grid_6{width:340px}.container_16 .grid_7{width:400px}.container_16 .grid_9{width:520px}.container_16 .grid_10{width:580px}.container_16 .grid_11{width:640px}.container_16 .grid_13{width:760px}.container_16 .grid_14{width:820px}.container_16 .grid_15{width:880px}.container_12 .prefix_3,.container_16 .prefix_4{padding-left:240px}.container_12 .prefix_6,.container_16 .prefix_8{padding-left:480px}.container_12 .prefix_9,.container_16 .prefix_12{padding-left:720px}.container_12 .prefix_1{padding-left:80px}.container_12 .prefix_2{padding-left:160px}.container_12 .prefix_4{padding-left:320px}.container_12 .prefix_5{padding-left:400px}.container_12 .prefix_7{padding-left:560px}.container_12 .prefix_8{padding-left:640px}.container_12 .prefix_10{padding-left:800px}.container_12 .prefix_11{padding-left:880px}.container_16 .prefix_1{padding-left:60px}.container_16 .prefix_2{padding-left:120px}.container_16 .prefix_3{padding-left:180px}.container_16 .prefix_5{padding-left:300px}.container_16 .prefix_6{padding-left:360px}.container_16 .prefix_7{padding-left:420px}.container_16 .prefix_9{padding-left:540px}.container_16 .prefix_10{padding-left:600px}.container_16 .prefix_11{padding-left:660px}.container_16 .prefix_13{padding-left:780px}.container_16 .prefix_14{padding-left:840px}.container_16 .prefix_15{padding-left:900px}.container_12 .suffix_3,.container_16 .suffix_4{padding-right:240px}.container_12 .suffix_6,.container_16 .suffix_8{padding-right:480px}.container_12 .suffix_9,.container_16 .suffix_12{padding-right:720px}.container_12 .suffix_1{padding-right:80px}.container_12 .suffix_2{padding-right:160px}.container_12 .suffix_4{padding-right:320px}.container_12 .suffix_5{padding-right:400px}.container_12 .suffix_7{padding-right:560px}.container_12 .suffix_8{padding-right:640px}.container_12 .suffix_10{padding-right:800px}.container_12 .suffix_11{padding-right:880px}.container_16 .suffix_1{padding-right:60px}.container_16 .suffix_2{padding-right:120px}.container_16 .suffix_3{padding-right:180px}.container_16 .suffix_5{padding-right:300px}.container_16 .suffix_6{padding-right:360px}.container_16 .suffix_7{padding-right:420px}.container_16 .suffix_9{padding-right:540px}.container_16 .suffix_10{padding-right:600px}.container_16 .suffix_11{padding-right:660px}.container_16 .suffix_13{padding-right:780px}.container_16 .suffix_14{padding-right:840px}.container_16 .suffix_15{padding-right:900px}.container_12 .push_3,.container_16 .push_4{left:240px}.container_12 .push_6,.container_16 .push_8{left:480px}.container_12 .push_9,.container_16 .push_12{left:720px}.container_12 .push_1{left:80px}.container_12 .push_2{left:160px}.container_12 .push_4{left:320px}.container_12 .push_5{left:400px}.container_12 .push_7{left:560px}.container_12 .push_8{left:640px}.container_12 .push_10{left:800px}.container_12 .push_11{left:880px}.container_16 .push_1{left:60px}.container_16 .push_2{left:120px}.container_16 .push_3{left:180px}.container_16 .push_5{left:300px}.container_16 .push_6{left:360px}.container_16 .push_7{left:420px}.container_16 .push_9{left:540px}.container_16 .push_10{left:600px}.container_16 .push_11{left:660px}.container_16 .push_13{left:780px}.container_16 .push_14{left:840px}.container_16 .push_15{left:900px}.container_12 .pull_3,.container_16 .pull_4{left:-240px}.container_12 .pull_6,.container_16 .pull_8{left:-480px}.container_12 .pull_9,.container_16 .pull_12{left:-720px}.container_12 .pull_1{left:-80px}.container_12 .pull_2{left:-160px}.container_12 .pull_4{left:-320px}.container_12 .pull_5{left:-400px}.container_12 .pull_7{left:-560px}.container_12 .pull_8{left:-640px}.container_12 .pull_10{left:-800px}.container_12 .pull_11{left:-880px}.container_16 .pull_1{left:-60px}.container_16 .pull_2{left:-120px}.container_16 .pull_3{left:-180px}.container_16 .pull_5{left:-300px}.container_16 .pull_6{left:-360px}.container_16 .pull_7{left:-420px}.container_16 .pull_9{left:-540px}.container_16 .pull_10{left:-600px}.container_16 .pull_11{left:-660px}.container_16 .pull_13{left:-780px}.container_16 .pull_14{left:-840px}.container_16 .pull_15{left:-900px}.clear{clear:both;display:block;overflow:hidden;visibility:hidden;width:0;height:0}.clearfix:after{clear:both;content:' ';display:block;font-size:0;line-height:0;visibility:hidden;width:0;height:0}* html .clearfix,*:first-child+html .clearfix{zoom:1}
|
@@ -1 +0,0 @@
|
|
1
|
-
html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,font,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td{margin:0;padding:0;border:0;outline:0;font-size:100%;vertical-align:baseline;background:transparent}body{line-height:1}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:before,blockquote:after,q:before,q:after{content:'';content:none}:focus{outline:0}ins{text-decoration:none}del{text-decoration:line-through}table{border-collapse:collapse;border-spacing:0}
|
File without changes
|
@@ -1 +0,0 @@
|
|
1
|
-
body{font:13px/1.5 'Helvetica Neue',Arial,'Liberation Sans',FreeSans,sans-serif}a:focus{outline:1px dotted}hr{border:0 #ccc solid;border-top-width:1px;clear:both;height:0}h1{font-size:25px}h2{font-size:23px}h3{font-size:21px}h4{font-size:19px}h5{font-size:17px}h6{font-size:15px}ol{list-style:decimal}ul{list-style:disc}li{margin-left:30px}p,dl,hr,h1,h2,h3,h4,h5,h6,ol,ul,pre,table,address,fieldset{margin-bottom:20px}
|
@@ -1,54 +0,0 @@
|
|
1
|
-
class SlightcmsSetup < ActiveRecord::Migration
|
2
|
-
def self.up
|
3
|
-
# Create layouts-table
|
4
|
-
create_table :slightcms_layouts do |t|
|
5
|
-
t.string :name, :null => false
|
6
|
-
t.text :content
|
7
|
-
t.timestamps
|
8
|
-
end
|
9
|
-
|
10
|
-
# Create pages-table
|
11
|
-
create_table :slightcms_pages do |t|
|
12
|
-
t.integer :parent_id
|
13
|
-
t.integer :layout_id
|
14
|
-
t.integer :position
|
15
|
-
t.string :path, :null => false
|
16
|
-
t.string :title, :null => false
|
17
|
-
t.string :slug, :null => false
|
18
|
-
t.string :keywords
|
19
|
-
t.string :description
|
20
|
-
t.boolean :published
|
21
|
-
t.timestamps
|
22
|
-
end
|
23
|
-
add_index :slightcms_pages, :parent_id
|
24
|
-
add_index :slightcms_pages, :layout_id
|
25
|
-
add_index :slightcms_pages, :path
|
26
|
-
add_index :slightcms_pages, :published
|
27
|
-
|
28
|
-
# Create page-parts-table
|
29
|
-
create_table :slightcms_page_parts do |t|
|
30
|
-
t.integer :page_id
|
31
|
-
t.string :name, :null => false
|
32
|
-
t.text :content, :null => false
|
33
|
-
t.timestamps
|
34
|
-
end
|
35
|
-
add_index :slightcms_page_parts, :page_id
|
36
|
-
|
37
|
-
# Create assets-table
|
38
|
-
create_table :slightcms_assets do |t|
|
39
|
-
t.string :name
|
40
|
-
t.string :content_type
|
41
|
-
t.string :filename
|
42
|
-
t.integer :size
|
43
|
-
t.timestamps
|
44
|
-
end
|
45
|
-
|
46
|
-
end
|
47
|
-
|
48
|
-
def self.down
|
49
|
-
drop_table :slightcms_layouts
|
50
|
-
drop_table :slightcms_pages
|
51
|
-
drop_table :slightcms_page_parts
|
52
|
-
drop_table :slightcms_assets
|
53
|
-
end
|
54
|
-
end
|
@@ -1,47 +0,0 @@
|
|
1
|
-
module Slightcms
|
2
|
-
|
3
|
-
module Admin
|
4
|
-
|
5
|
-
class AssetsController < ApplicationController
|
6
|
-
|
7
|
-
layout "slightcms_admin_assets"
|
8
|
-
|
9
|
-
# List all Assets
|
10
|
-
def index
|
11
|
-
@assets = Slightcms::Asset.find :all
|
12
|
-
end
|
13
|
-
|
14
|
-
# Render the form for uploading a new asset
|
15
|
-
def new
|
16
|
-
@asset = Slightcms::Asset.new
|
17
|
-
end
|
18
|
-
|
19
|
-
# Create a new Assert
|
20
|
-
def create
|
21
|
-
@asset = Slightcms::Asset.new(params[:slightcms_asset])
|
22
|
-
if @asset.save
|
23
|
-
flash[:notice] = "The asset was saved successfully."
|
24
|
-
redirect_to slightcms_admin_assets_path
|
25
|
-
else
|
26
|
-
flash[:error] = "An error occured uploading your asset!"
|
27
|
-
render :action => :new
|
28
|
-
end
|
29
|
-
end
|
30
|
-
|
31
|
-
# Delet an existing asset
|
32
|
-
def destroy
|
33
|
-
@asset = Slightcms::Asset.find(params[:id])
|
34
|
-
if @asset.destroy
|
35
|
-
flash[:notice] = "The asset was deleted successfully."
|
36
|
-
redirect_to slightcms_admin_assets_path
|
37
|
-
else
|
38
|
-
flash[:error] = "An error occured deleting the asset!"
|
39
|
-
redirect_to slightcms_admin_assets_path
|
40
|
-
end
|
41
|
-
end
|
42
|
-
|
43
|
-
end
|
44
|
-
|
45
|
-
end
|
46
|
-
|
47
|
-
end
|
@@ -1,65 +0,0 @@
|
|
1
|
-
module Slightcms
|
2
|
-
|
3
|
-
module Admin
|
4
|
-
|
5
|
-
class LayoutsController < ApplicationController
|
6
|
-
|
7
|
-
layout "slightcms_admin_layouts_list"
|
8
|
-
|
9
|
-
# List all layouts
|
10
|
-
def index
|
11
|
-
@layouts = Slightcms::Layout.find :all
|
12
|
-
end
|
13
|
-
|
14
|
-
# Render the form for creating a layout
|
15
|
-
def new
|
16
|
-
@layout = Slightcms::Layout.new
|
17
|
-
end
|
18
|
-
|
19
|
-
# Create a new assert
|
20
|
-
def create
|
21
|
-
@layout = Slightcms::Layout.new(params[:slightcms_layout])
|
22
|
-
if @layout.save
|
23
|
-
flash[:notice] = "The layout was saved successfully."
|
24
|
-
redirect_to slightcms_admin_layouts_path
|
25
|
-
else
|
26
|
-
flash[:error] = "An error occured saving the layout!"
|
27
|
-
render :action => :new
|
28
|
-
end
|
29
|
-
end
|
30
|
-
|
31
|
-
# Render the form for edit an existing layout
|
32
|
-
def edit
|
33
|
-
@layout = Slightcms::Layout.find(params[:id])
|
34
|
-
end
|
35
|
-
|
36
|
-
# Update an existing layout
|
37
|
-
def update
|
38
|
-
@layout = Slightcms::Layout.find(params[:id])
|
39
|
-
@layout.update_attributes(params[:slightcms_layout])
|
40
|
-
if @layout.save
|
41
|
-
flash[:notice] = "The layout was saved successfully."
|
42
|
-
redirect_to slightcms_admin_layouts_path
|
43
|
-
else
|
44
|
-
flash[:error] = "An error occured saving the layout."
|
45
|
-
render :action => :edit
|
46
|
-
end
|
47
|
-
end
|
48
|
-
|
49
|
-
# Delete an existing layout
|
50
|
-
def destroy
|
51
|
-
@layout = Slightcms::Layout.find(params[:id])
|
52
|
-
if @layout.destroy
|
53
|
-
flash[:notice] = "The layout was deleted successfully."
|
54
|
-
redirect_to slightcms_admin_layouts_path
|
55
|
-
else
|
56
|
-
flash[:error] = "An error occured deleting the layout!"
|
57
|
-
redirect_to slightcms_admin_layouts_path
|
58
|
-
end
|
59
|
-
end
|
60
|
-
|
61
|
-
end
|
62
|
-
|
63
|
-
end
|
64
|
-
|
65
|
-
end
|
@@ -1,80 +0,0 @@
|
|
1
|
-
module Slightcms
|
2
|
-
|
3
|
-
module Admin
|
4
|
-
|
5
|
-
class PagesController < ApplicationController
|
6
|
-
|
7
|
-
layout "slightcms_admin_pages"
|
8
|
-
|
9
|
-
# Show the page tree
|
10
|
-
def index
|
11
|
-
@pages = Slightcms::Page.find :all
|
12
|
-
end
|
13
|
-
|
14
|
-
# Render the new page form
|
15
|
-
def new
|
16
|
-
@page = Slightcms::Page.new
|
17
|
-
@page.parts.build
|
18
|
-
end
|
19
|
-
|
20
|
-
# Create a new page
|
21
|
-
def create
|
22
|
-
@page = Slightcms::Page.new(params[:slightcms_page])
|
23
|
-
if @page.save
|
24
|
-
flash[:notice] = "The page was saved successfully."
|
25
|
-
redirect_to slightcms_admin_pages_path
|
26
|
-
else
|
27
|
-
flash[:error] = "An error occured creating your page!"
|
28
|
-
render :action => :new
|
29
|
-
end
|
30
|
-
end
|
31
|
-
|
32
|
-
# Render the edit form
|
33
|
-
def edit
|
34
|
-
@page = Slightcms::Page.find(params[:id])
|
35
|
-
end
|
36
|
-
|
37
|
-
# Update an existing page
|
38
|
-
def update
|
39
|
-
@page = Slightcms::Page.find(params[:id])
|
40
|
-
@page.update_attributes(params[:slightcms_page])
|
41
|
-
if @page.save
|
42
|
-
flash[:notice] = "The page was saved successfully."
|
43
|
-
redirect_to slightcms_admin_pages_path
|
44
|
-
else
|
45
|
-
flash[:error] = "An error occured updating your page!"
|
46
|
-
render :action => :edit
|
47
|
-
end
|
48
|
-
end
|
49
|
-
|
50
|
-
# Delete an existing page
|
51
|
-
def destroy
|
52
|
-
@page = Slightcms::Page.find(params[:id])
|
53
|
-
if @page.destroy
|
54
|
-
flash[:notice] = "The page was removed successfully."
|
55
|
-
redirect_to slightcms_pages_path
|
56
|
-
else
|
57
|
-
flash[:error] = "An error occured deleting the page!"
|
58
|
-
redirect_to slightcms_admin_pages_path
|
59
|
-
end
|
60
|
-
end
|
61
|
-
|
62
|
-
# Move the page up in page-tree
|
63
|
-
def move_up
|
64
|
-
@page = Slightcms::Page.find(params[:id])
|
65
|
-
@page.move_higher
|
66
|
-
redirect_to slightcms_admin_pages_path
|
67
|
-
end
|
68
|
-
|
69
|
-
# Move the page down in page-tree
|
70
|
-
def move_down
|
71
|
-
@page = Slightcms::Page.find(params[:id])
|
72
|
-
@page.move_lower
|
73
|
-
redirect_to slightcms_admin_pages_path
|
74
|
-
end
|
75
|
-
|
76
|
-
end
|
77
|
-
|
78
|
-
end
|
79
|
-
|
80
|
-
end
|
data/lib/app/models/asset.rb
DELETED
@@ -1,65 +0,0 @@
|
|
1
|
-
module Slightcms
|
2
|
-
|
3
|
-
class Asset < ActiveRecord::Base
|
4
|
-
|
5
|
-
# Change default table name
|
6
|
-
set_table_name "slightcms_assets"
|
7
|
-
|
8
|
-
# Validations
|
9
|
-
validates_presence_of :name
|
10
|
-
validates_presence_of :filename
|
11
|
-
validates_presence_of :size
|
12
|
-
validates_presence_of :content_type
|
13
|
-
|
14
|
-
# Callbacks
|
15
|
-
after_create :store_file_in_filesystem
|
16
|
-
after_destroy :remove_file_from_file_system
|
17
|
-
|
18
|
-
def file=(uploaded_file)
|
19
|
-
@uploaded_file = uploaded_file
|
20
|
-
write_attribute(:content_type, @uploaded_file.content_type)
|
21
|
-
write_attribute(:size, File.size(@uploaded_file))
|
22
|
-
write_attribute(:filename, sanitize_filename(@uploaded_file.original_filename))
|
23
|
-
end
|
24
|
-
|
25
|
-
# Method to get the public file path
|
26
|
-
def public_file_path
|
27
|
-
"slightcms/assets/#{self.id}/#{self.filename}"
|
28
|
-
end
|
29
|
-
|
30
|
-
private
|
31
|
-
|
32
|
-
# Method to store file in filesystem
|
33
|
-
def store_file_in_filesystem
|
34
|
-
if !File.exists?(File.dirname(absolute_file_path))
|
35
|
-
Dir.mkdir(File.dirname(absolute_file_path))
|
36
|
-
end
|
37
|
-
if @uploaded_file.instance_of?(Tempfile)
|
38
|
-
FileUtils.copy(@uploaded_file.local_path, absolute_file_path)
|
39
|
-
else
|
40
|
-
File.open(absolute_file_path, "wb") { |f| f.write(@uploaded_file.read) }
|
41
|
-
end
|
42
|
-
end
|
43
|
-
|
44
|
-
# Method to remove the file from the filesystem
|
45
|
-
def remove_file_from_file_system
|
46
|
-
if File.exists?(absolute_file_path)
|
47
|
-
File.delete(absolute_file_path)
|
48
|
-
Dir.rmdir(File.dirname(absolute_file_path))
|
49
|
-
end
|
50
|
-
end
|
51
|
-
|
52
|
-
# Method to get the absolute path for the file
|
53
|
-
def absolute_file_path
|
54
|
-
File.expand_path("#{RAILS_ROOT}/public/slightcms/assets/#{self.id}/#{self.filename}")
|
55
|
-
end
|
56
|
-
|
57
|
-
# Replace non standard signs with underscores
|
58
|
-
def sanitize_filename(filename)
|
59
|
-
just_filename = File.basename(filename)
|
60
|
-
just_filename.gsub(/[^\w\.\_]/,'_')
|
61
|
-
end
|
62
|
-
|
63
|
-
end
|
64
|
-
|
65
|
-
end
|
data/lib/app/models/layout.rb
DELETED
@@ -1,30 +0,0 @@
|
|
1
|
-
module Slightcms
|
2
|
-
class Layout < ActiveRecord::Base
|
3
|
-
|
4
|
-
# Change default table name
|
5
|
-
set_table_name 'slightcms_layouts'
|
6
|
-
|
7
|
-
# Default order
|
8
|
-
default_scope :order => 'name'
|
9
|
-
|
10
|
-
# Associations
|
11
|
-
has_many :pages, :class_name => "Slightcms::Page"
|
12
|
-
|
13
|
-
# Validations
|
14
|
-
validates_presence_of :name
|
15
|
-
validates_uniqueness_of :name
|
16
|
-
validates_presence_of :content
|
17
|
-
|
18
|
-
# Create a file accessor
|
19
|
-
attr_accessor :file
|
20
|
-
|
21
|
-
# Write file to content if file is uploaded
|
22
|
-
def file=(uploaded_file)
|
23
|
-
unless uploaded_file.nil?
|
24
|
-
write_attribute(:content, uploaded_file.read)
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
end
|
29
|
-
|
30
|
-
end
|
data/lib/app/models/page.rb
DELETED
@@ -1,97 +0,0 @@
|
|
1
|
-
module Slightcms
|
2
|
-
|
3
|
-
class Page < ActiveRecord::Base
|
4
|
-
|
5
|
-
# Change default table name
|
6
|
-
set_table_name "slightcms_pages"
|
7
|
-
|
8
|
-
acts_as_tree :order => "position"
|
9
|
-
acts_as_list :scope => :parent_id
|
10
|
-
|
11
|
-
# Default order
|
12
|
-
default_scope :order => "position"
|
13
|
-
|
14
|
-
# Associations
|
15
|
-
belongs_to :layout, :class_name => "Slightcms::Layout"
|
16
|
-
has_many :parts, :class_name => "Slightcms::Part", :dependent => :destroy
|
17
|
-
|
18
|
-
# accept nested attributes for page-parts
|
19
|
-
accepts_nested_attributes_for :parts,
|
20
|
-
:reject_if => lambda { |a| a[:content].blank? },
|
21
|
-
:allow_destroy => true
|
22
|
-
|
23
|
-
# Validations
|
24
|
-
validates_presence_of :title
|
25
|
-
validates_presence_of :slug
|
26
|
-
validates_uniqueness_of :slug, :scope => :parent_id
|
27
|
-
|
28
|
-
# Callbacks
|
29
|
-
before_validation :create_slug
|
30
|
-
before_create :create_path
|
31
|
-
|
32
|
-
# protected
|
33
|
-
|
34
|
-
# Render the page's content
|
35
|
-
def render_content
|
36
|
-
content = self.layout.content
|
37
|
-
content.gsub!(/(#{Regexp.escape("<!-- slightcms:page:title -->")})/mi, self.title)
|
38
|
-
content.gsub!(/(#{Regexp.escape("<!-- slightcms:page:keywords -->")})/mi, self.keywords)
|
39
|
-
content.gsub!(/(#{Regexp.escape("<!-- slightcms:page:description -->")})/mi, self.description)
|
40
|
-
self.parts each do |part|
|
41
|
-
content.gsub!(/(#{Regexp.escape("<!-- slightcms:part:#{part.name} -->")})/mi, part.render_content)
|
42
|
-
end
|
43
|
-
end
|
44
|
-
|
45
|
-
# Find a page by full path
|
46
|
-
def find_by_path(path)
|
47
|
-
find :first, :conditions => {:path => path, :published => true}, :include => [:layout, :parts]
|
48
|
-
end
|
49
|
-
|
50
|
-
private
|
51
|
-
|
52
|
-
# Create a unique slug for SEO purposes
|
53
|
-
def create_slug
|
54
|
-
if self.slug.blank? && !self.title.blank?
|
55
|
-
proposed_slug = self.title.downcase.gsub!(/[^a-z1-9]+/, '-')
|
56
|
-
|
57
|
-
existing = true
|
58
|
-
suffix = ""
|
59
|
-
i = 2
|
60
|
-
|
61
|
-
# Check if slug already exists
|
62
|
-
while existing != nil
|
63
|
-
existing = self.class.find :first, :conditions => {:slug => proposed_slug + suffix}
|
64
|
-
if existing
|
65
|
-
suffix = "-#{i}"
|
66
|
-
i += 1
|
67
|
-
else
|
68
|
-
self.slug = proposed_slug + suffix
|
69
|
-
end
|
70
|
-
end
|
71
|
-
end
|
72
|
-
end
|
73
|
-
|
74
|
-
# Create page's path
|
75
|
-
def create_path
|
76
|
-
if parent.nil?
|
77
|
-
write_attribute(:path, self.slug)
|
78
|
-
else
|
79
|
-
write_attribute(:path, parent.path + "/#{self.slug}")
|
80
|
-
end
|
81
|
-
end
|
82
|
-
|
83
|
-
# Generate the page's path and save the object
|
84
|
-
def create_path_and_save
|
85
|
-
create_path
|
86
|
-
save
|
87
|
-
update_children_path
|
88
|
-
end
|
89
|
-
|
90
|
-
# Update the children's path
|
91
|
-
def update_children_path
|
92
|
-
children.each do |child|
|
93
|
-
child.create_path_and_save
|
94
|
-
end
|
95
|
-
end
|
96
|
-
end
|
97
|
-
end
|