slightcms 0.0.0 → 0.0.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/.gitignore +3 -0
- data/Rakefile +4 -0
- data/VERSION +1 -1
- data/init.rb +1 -0
- data/lib/slightcms/slightcms_page.rb +70 -0
- data/lib/slightcms/slightcms_page_element.rb +20 -0
- data/lib/slightcms/slightcms_page_element_sweeper.rb +20 -0
- data/lib/slightcms/slightcms_page_sweeper.rb +20 -0
- data/slightcms.gemspec +58 -0
- metadata +50 -5
- data/lib/slightcms.rb +0 -0
data/.gitignore
ADDED
data/Rakefile
CHANGED
@@ -7,6 +7,10 @@ begin
|
|
7
7
|
gemspec.email = "matthias.nitsch@me.com"
|
8
8
|
gemspec.homepage = "http://github.com/mnitsch/slightcms"
|
9
9
|
gemspec.authors = ["Matthias Nitsch"]
|
10
|
+
gemspec.add_dependency('rails', '>= 2.3.5')
|
11
|
+
gemspec.add_dependency('acts_as_tree', '>= 0.1.0')
|
12
|
+
gemspec.add_dependency('acts_as_list', '>= 0.1.2')
|
13
|
+
gemspec.add_dependency('acts_as_versioned', '>= 0.2.3')
|
10
14
|
end
|
11
15
|
Jeweler::GemcutterTasks.new
|
12
16
|
rescue LoadError
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.1
|
data/init.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
reguire 'app/slightcms_page'
|
@@ -0,0 +1,70 @@
|
|
1
|
+
class SlightcmsPage < ActiveRecord::Base
|
2
|
+
|
3
|
+
#has_many :elements, :class_name => "SlightcmsPageElement", :foreign_key => "page_id"
|
4
|
+
|
5
|
+
#cts_as_tree :order => "position, title"
|
6
|
+
#acts_as_list :scope => :parent_id
|
7
|
+
|
8
|
+
validates_presence_of :title
|
9
|
+
validates_uniqueness_of :slug, :scope => :parent_id
|
10
|
+
|
11
|
+
before_validation do |record|
|
12
|
+
if record.slug.blank? && !record.title.blank?
|
13
|
+
generate_slug(record)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
before_create :generate_full_path
|
18
|
+
|
19
|
+
# Render page's content to valid html
|
20
|
+
def to_html
|
21
|
+
elements = children.map {|child| child.to_html}
|
22
|
+
elements.join('\n')
|
23
|
+
end
|
24
|
+
|
25
|
+
protected
|
26
|
+
|
27
|
+
# Find a page by full path
|
28
|
+
def find_by_path(path)
|
29
|
+
find :first, :conditions => {:path => path, :published => true}
|
30
|
+
end
|
31
|
+
|
32
|
+
# Generate a unique slug for seo purposes
|
33
|
+
def generate_slug(record)
|
34
|
+
proposed_slug = record.title.downcase.gsub!(/[^a-z1-9]+/, '-')
|
35
|
+
|
36
|
+
existing = true
|
37
|
+
suffix = ""
|
38
|
+
i = 1
|
39
|
+
|
40
|
+
# Check if slug already exists
|
41
|
+
while existing != nil
|
42
|
+
existing = self.class.find :first, :conditions => {:slug => proposed_slug + suffix}
|
43
|
+
if existing
|
44
|
+
suffix = "-#{i}"
|
45
|
+
i += 1
|
46
|
+
else
|
47
|
+
self.slug = proposed_slug + suffix
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
# Generate the page's full path
|
53
|
+
def generate_path
|
54
|
+
self.path = parent_node.path + "/#{self.slug}"
|
55
|
+
end
|
56
|
+
|
57
|
+
# Generate the page's full path and save the object
|
58
|
+
def generate_path!
|
59
|
+
generate_path
|
60
|
+
save
|
61
|
+
end
|
62
|
+
|
63
|
+
# Update the children's path
|
64
|
+
def update_children_path
|
65
|
+
children.each do |child|
|
66
|
+
generate_path!
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require 'redcloth'
|
2
|
+
require 'acts-as-list'
|
3
|
+
|
4
|
+
class SlightcmsPageElement < ActiveRecord::Base
|
5
|
+
|
6
|
+
belongs_to :page, :class_name => "SlightcmsPage", :foreign_key => "page_id"
|
7
|
+
|
8
|
+
validates_presence_of :title
|
9
|
+
validates_presence_of :content
|
10
|
+
|
11
|
+
acts_as_list :scope => :page_id
|
12
|
+
|
13
|
+
after_save :expire_parent_page_cache
|
14
|
+
|
15
|
+
# Render the element's content into valid html
|
16
|
+
def to_html
|
17
|
+
RedCloth.new(self.content).to_html
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
class SlightcmsPageElementSweeper < ActionController::Caching::Sweeper
|
2
|
+
|
3
|
+
observe SlightcmsPageElement
|
4
|
+
|
5
|
+
def after_save(element)
|
6
|
+
expire_cache(element)
|
7
|
+
end
|
8
|
+
|
9
|
+
def after_destroy(element)
|
10
|
+
expire_cache(element)
|
11
|
+
end
|
12
|
+
|
13
|
+
private
|
14
|
+
|
15
|
+
# Expire page cache for given record
|
16
|
+
def expire_cache(record)
|
17
|
+
expire_page(:controller => :slightcms_pages, :action => :show, :path => record.page.full_path)
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
class SlightcmsPageSweeper < ActionController::Caching::Sweeper
|
2
|
+
|
3
|
+
observe SlightcmsPage
|
4
|
+
|
5
|
+
def before_save(page)
|
6
|
+
expire_cache(page)
|
7
|
+
end
|
8
|
+
|
9
|
+
def after_destroy(page)
|
10
|
+
expire_cache(page)
|
11
|
+
end
|
12
|
+
|
13
|
+
private
|
14
|
+
|
15
|
+
# Expire page cache for given record
|
16
|
+
def expire_cache(record)
|
17
|
+
expire_page(:controller => :slightcms_pages, :action => :show, :path => record.full_path)
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
data/slightcms.gemspec
ADDED
@@ -0,0 +1,58 @@
|
|
1
|
+
# Generated by jeweler
|
2
|
+
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
|
4
|
+
# -*- encoding: utf-8 -*-
|
5
|
+
|
6
|
+
Gem::Specification.new do |s|
|
7
|
+
s.name = %q{slightcms}
|
8
|
+
s.version = "0.0.1"
|
9
|
+
|
10
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
+
s.authors = ["Matthias Nitsch"]
|
12
|
+
s.date = %q{2010-01-06}
|
13
|
+
s.description = %q{}
|
14
|
+
s.email = %q{matthias.nitsch@me.com}
|
15
|
+
s.extra_rdoc_files = [
|
16
|
+
"README.rdoc"
|
17
|
+
]
|
18
|
+
s.files = [
|
19
|
+
".gitignore",
|
20
|
+
"README.rdoc",
|
21
|
+
"Rakefile",
|
22
|
+
"VERSION",
|
23
|
+
"init.rb",
|
24
|
+
"lib/slightcms/slightcms_page.rb",
|
25
|
+
"lib/slightcms/slightcms_page_element.rb",
|
26
|
+
"lib/slightcms/slightcms_page_element_sweeper.rb",
|
27
|
+
"lib/slightcms/slightcms_page_sweeper.rb",
|
28
|
+
"slightcms.gemspec"
|
29
|
+
]
|
30
|
+
s.homepage = %q{http://github.com/mnitsch/slightcms}
|
31
|
+
s.rdoc_options = ["--charset=UTF-8"]
|
32
|
+
s.require_paths = ["lib"]
|
33
|
+
s.rubygems_version = %q{1.3.5}
|
34
|
+
s.summary = %q{slightCMS is a small CMS, built for integration into existing rails applications}
|
35
|
+
|
36
|
+
if s.respond_to? :specification_version then
|
37
|
+
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
38
|
+
s.specification_version = 3
|
39
|
+
|
40
|
+
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
41
|
+
s.add_runtime_dependency(%q<rails>, [">= 2.3.5"])
|
42
|
+
s.add_runtime_dependency(%q<acts_as_tree>, [">= 0.1.0"])
|
43
|
+
s.add_runtime_dependency(%q<acts_as_list>, [">= 0.1.2"])
|
44
|
+
s.add_runtime_dependency(%q<acts_as_versioned>, [">= 0.2.3"])
|
45
|
+
else
|
46
|
+
s.add_dependency(%q<rails>, [">= 2.3.5"])
|
47
|
+
s.add_dependency(%q<acts_as_tree>, [">= 0.1.0"])
|
48
|
+
s.add_dependency(%q<acts_as_list>, [">= 0.1.2"])
|
49
|
+
s.add_dependency(%q<acts_as_versioned>, [">= 0.2.3"])
|
50
|
+
end
|
51
|
+
else
|
52
|
+
s.add_dependency(%q<rails>, [">= 2.3.5"])
|
53
|
+
s.add_dependency(%q<acts_as_tree>, [">= 0.1.0"])
|
54
|
+
s.add_dependency(%q<acts_as_list>, [">= 0.1.2"])
|
55
|
+
s.add_dependency(%q<acts_as_versioned>, [">= 0.2.3"])
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: slightcms
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Matthias Nitsch
|
@@ -9,10 +9,49 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2010-01-
|
12
|
+
date: 2010-01-06 00:00:00 +01:00
|
13
13
|
default_executable:
|
14
|
-
dependencies:
|
15
|
-
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: rails
|
17
|
+
type: :runtime
|
18
|
+
version_requirement:
|
19
|
+
version_requirements: !ruby/object:Gem::Requirement
|
20
|
+
requirements:
|
21
|
+
- - ">="
|
22
|
+
- !ruby/object:Gem::Version
|
23
|
+
version: 2.3.5
|
24
|
+
version:
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: acts_as_tree
|
27
|
+
type: :runtime
|
28
|
+
version_requirement:
|
29
|
+
version_requirements: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 0.1.0
|
34
|
+
version:
|
35
|
+
- !ruby/object:Gem::Dependency
|
36
|
+
name: acts_as_list
|
37
|
+
type: :runtime
|
38
|
+
version_requirement:
|
39
|
+
version_requirements: !ruby/object:Gem::Requirement
|
40
|
+
requirements:
|
41
|
+
- - ">="
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: 0.1.2
|
44
|
+
version:
|
45
|
+
- !ruby/object:Gem::Dependency
|
46
|
+
name: acts_as_versioned
|
47
|
+
type: :runtime
|
48
|
+
version_requirement:
|
49
|
+
version_requirements: !ruby/object:Gem::Requirement
|
50
|
+
requirements:
|
51
|
+
- - ">="
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: 0.2.3
|
54
|
+
version:
|
16
55
|
description: ""
|
17
56
|
email: matthias.nitsch@me.com
|
18
57
|
executables: []
|
@@ -22,10 +61,16 @@ extensions: []
|
|
22
61
|
extra_rdoc_files:
|
23
62
|
- README.rdoc
|
24
63
|
files:
|
64
|
+
- .gitignore
|
25
65
|
- README.rdoc
|
26
66
|
- Rakefile
|
27
67
|
- VERSION
|
28
|
-
-
|
68
|
+
- init.rb
|
69
|
+
- lib/slightcms/slightcms_page.rb
|
70
|
+
- lib/slightcms/slightcms_page_element.rb
|
71
|
+
- lib/slightcms/slightcms_page_element_sweeper.rb
|
72
|
+
- lib/slightcms/slightcms_page_sweeper.rb
|
73
|
+
- slightcms.gemspec
|
29
74
|
has_rdoc: true
|
30
75
|
homepage: http://github.com/mnitsch/slightcms
|
31
76
|
licenses: []
|
data/lib/slightcms.rb
DELETED
File without changes
|