slightcms 0.0.6 → 0.0.7

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/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.6
1
+ 0.0.7
@@ -0,0 +1,10 @@
1
+ module Slightcms
2
+
3
+ class Asset < ActiveRecord::Base
4
+
5
+ # Change default table name
6
+ set_table_name "slightcms_assets"
7
+
8
+ end
9
+
10
+ end
@@ -1,13 +1,14 @@
1
1
  module Slightcms
2
2
  class Layout < ActiveRecord::Base
3
3
 
4
- set_table_name 'jakfdajef'
4
+ # Change default table name
5
+ set_table_name 'slightcms_layouts'
5
6
 
6
7
  # Default order
7
8
  default_scope :order => 'name'
8
9
 
9
10
  # Associations
10
- has_many :pages, :class_name => "SlightcmsPage"
11
+ has_many :pages, :class_name => "Slightcms::Page"
11
12
 
12
13
  # Validations
13
14
  validates_presence_of :name
@@ -0,0 +1,85 @@
1
+ module Slightcms
2
+ class Page < ActiveRecord::Base
3
+
4
+ # Change default table name
5
+ set_table_name "slightcms_pages"
6
+
7
+ acts_as_tree :order => "position"
8
+ acts_as_list :scope => :parent_id
9
+
10
+ # Default order
11
+ default_scope :order => "position"
12
+
13
+ # Associations
14
+ belongs_to :layout, :class_name => "Slightcms::Layout"
15
+ has_many :parts, :class_name => "Slightcms::Part", :dependent => :destroy
16
+
17
+ # Validations
18
+ validates_presence_of :title
19
+ validates_presence_of :slug
20
+ validates_uniqueness_of :slug, :scope => :parent_id
21
+
22
+ # Callbacks
23
+ before_create :create_path
24
+ before_validation do |record|
25
+ if record.slug.blank? && !record.title.blank?
26
+ create_slug(record)
27
+ end
28
+ end
29
+
30
+ protected
31
+
32
+ # Render the pages content
33
+ def render_content
34
+ content = self.layout.content
35
+ self.parts each do |part|
36
+ content.gsub!(/(#{Regexp.escape("<!-- slightcms:part:#{part.name} -->")})/mi, part.render_content)
37
+ end
38
+ end
39
+
40
+ # Find a page by full path
41
+ def find_by_path(path)
42
+ find :first, :conditions => {:path => path, :published => true}, :include => [:layout, :parts]
43
+ end
44
+
45
+ private
46
+
47
+ # Create a unique slug for SEO purposes
48
+ def create_slug(record)
49
+ proposed_slug = record.title.downcase.gsub!(/[^a-z1-9]+/, '-')
50
+
51
+ existing = true
52
+ suffix = ""
53
+ i = 2
54
+
55
+ # Check if slug already exists
56
+ while existing != nil
57
+ existing = self.class.find :first, :conditions => {:slug => proposed_slug + suffix}
58
+ if existing
59
+ suffix = "-#{i}"
60
+ i += 1
61
+ else
62
+ self.slug = proposed_slug + suffix
63
+ end
64
+ end
65
+ end
66
+
67
+ # Create page's path
68
+ def create_path
69
+ self.path = parent.path + "/#{self.slug}"
70
+ end
71
+
72
+ # Generate the page's path and save the object
73
+ def create_path!
74
+ create_path
75
+ save
76
+ end
77
+
78
+ # Update the children's path
79
+ def update_children_path
80
+ children.each do |child|
81
+ create_path!
82
+ end
83
+ end
84
+ end
85
+ end
@@ -0,0 +1,21 @@
1
+ module Slightcms
2
+ class Part < ActiveRecord::Base
3
+
4
+ # Change default table name
5
+ set_table_name "slightcms_parts"
6
+ # Associations
7
+ belongs_to :page, :class_name => "Slightcms::Page"
8
+
9
+ # Validations
10
+ validates_presence_of :name
11
+ validates_uniqueness_of :name, :scope => :page_id
12
+ validates_presence_of :content
13
+
14
+ protected
15
+
16
+ # Render the part's content
17
+ def render_content
18
+ RedCloth.new(self.content).to_html
19
+ end
20
+ end
21
+ end
data/lib/slightcms.rb CHANGED
@@ -2,7 +2,7 @@
2
2
  module Slightcms
3
3
 
4
4
  # :stopdoc:
5
- VERSION = '0.0.6'
5
+ VERSION = '0.0.7'
6
6
  LIBPATH = ::File.expand_path(::File.dirname(__FILE__)) + ::File::SEPARATOR
7
7
  PATH = ::File.dirname(LIBPATH) + ::File::SEPARATOR
8
8
  # :startdoc:
@@ -46,3 +46,6 @@ end # module Slightcms
46
46
 
47
47
  # Slightcms.require_all_libs_relative_to(__FILE__)
48
48
  require "app/models/layout"
49
+ require "app/models/page"
50
+ require "app/models/part"
51
+ require "app/models/asset"
data/slightcms.gemspec CHANGED
@@ -5,7 +5,7 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{slightcms}
8
- s.version = "0.0.6"
8
+ s.version = "0.0.7"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Matthias Nitsch"]
@@ -28,7 +28,10 @@ Gem::Specification.new do |s|
28
28
  "generators/slightcms_setup/slightcms_setup_generator.rb",
29
29
  "generators/slightcms_setup/templates/INSTALL",
30
30
  "generators/slightcms_setup/templates/slightcms_setup_migration.rb",
31
+ "lib/app/models/asset.rb",
31
32
  "lib/app/models/layout.rb",
33
+ "lib/app/models/page.rb",
34
+ "lib/app/models/part.rb",
32
35
  "lib/slightcms.rb",
33
36
  "slightcms.gemspec",
34
37
  "spec/slightcms_spec.rb",
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.6
4
+ version: 0.0.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matthias Nitsch
@@ -71,7 +71,10 @@ files:
71
71
  - generators/slightcms_setup/slightcms_setup_generator.rb
72
72
  - generators/slightcms_setup/templates/INSTALL
73
73
  - generators/slightcms_setup/templates/slightcms_setup_migration.rb
74
+ - lib/app/models/asset.rb
74
75
  - lib/app/models/layout.rb
76
+ - lib/app/models/page.rb
77
+ - lib/app/models/part.rb
75
78
  - lib/slightcms.rb
76
79
  - slightcms.gemspec
77
80
  - spec/slightcms_spec.rb