content_engine 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (91) hide show
  1. data/README +1 -0
  2. data/Rakefile +1 -1
  3. data/VERSION +1 -1
  4. data/content_engine.gemspec +3 -118
  5. metadata +6 -117
  6. data/Gemfile +0 -40
  7. data/README.md +0 -43
  8. data/app/controllers/content_engine/articles_controller.rb +0 -54
  9. data/app/controllers/content_engine/pages_controller.rb +0 -76
  10. data/app/controllers/content_engine_controller.rb +0 -14
  11. data/app/helpers/application_helper.rb +0 -2
  12. data/app/models/article.rb +0 -29
  13. data/app/models/content.rb +0 -64
  14. data/app/models/page.rb +0 -40
  15. data/app/models/site.rb +0 -26
  16. data/app/models/tag.rb +0 -53
  17. data/app/models/user.rb +0 -5
  18. data/app/views/content_engine/articles/_form.erb +0 -8
  19. data/app/views/content_engine/articles/edit.html.erb +0 -7
  20. data/app/views/content_engine/articles/index.html.erb +0 -10
  21. data/app/views/content_engine/articles/new.html.erb +0 -6
  22. data/app/views/content_engine/articles/show.html.erb +0 -9
  23. data/app/views/content_engine/pages/_form.erb +0 -8
  24. data/app/views/content_engine/pages/edit.html.erb +0 -7
  25. data/app/views/content_engine/pages/index.html.erb +0 -10
  26. data/app/views/content_engine/pages/new.html.erb +0 -6
  27. data/app/views/content_engine/pages/show.html.erb +0 -9
  28. data/app/views/layouts/application.html.erb +0 -16
  29. data/config/application.rb +0 -1
  30. data/config/locales/en.yml +0 -5
  31. data/config/routes.rb +0 -25
  32. data/db/migrate/20100225105011_create_contents.rb +0 -22
  33. data/db/migrate/20100225105903_create_users.rb +0 -8
  34. data/db/migrate/20100225110024_create_sites.rb +0 -15
  35. data/db/migrate/20100225110037_create_memberships.rb +0 -12
  36. data/db/migrate/20100225112236_acts_as_taggable_on.rb +0 -26
  37. data/db/schema.rb +0 -58
  38. data/lib/content_engine.rb +0 -24
  39. data/lib/tasks/content_engine.rake +0 -24
  40. data/spec/blueprint.rb +0 -41
  41. data/spec/models/article_spec.rb +0 -56
  42. data/spec/models/page_spec.rb +0 -158
  43. data/spec/models/site_spec.rb +0 -32
  44. data/spec/rails_app/.gitignore +0 -4
  45. data/spec/rails_app/Rakefile +0 -10
  46. data/spec/rails_app/app/controllers/admins_controller.rb +0 -6
  47. data/spec/rails_app/app/controllers/application_controller.rb +0 -6
  48. data/spec/rails_app/app/controllers/home_controller.rb +0 -4
  49. data/spec/rails_app/app/controllers/sessions_controller.rb +0 -6
  50. data/spec/rails_app/app/controllers/users_controller.rb +0 -12
  51. data/spec/rails_app/app/helpers/application_helper.rb +0 -3
  52. data/spec/rails_app/app/views/home/index.html.erb +0 -1
  53. data/spec/rails_app/app/views/layouts/application.html.erb +0 -19
  54. data/spec/rails_app/config.ru +0 -4
  55. data/spec/rails_app/config/application.rb +0 -30
  56. data/spec/rails_app/config/boot.rb +0 -9
  57. data/spec/rails_app/config/database.yml +0 -16
  58. data/spec/rails_app/config/environment.rb +0 -5
  59. data/spec/rails_app/config/environments/development.rb +0 -19
  60. data/spec/rails_app/config/environments/production.rb +0 -33
  61. data/spec/rails_app/config/environments/test.rb +0 -29
  62. data/spec/rails_app/config/initializers/backtrace_silencers.rb +0 -7
  63. data/spec/rails_app/config/initializers/cookie_verification_secret.rb +0 -7
  64. data/spec/rails_app/config/initializers/inflections.rb +0 -2
  65. data/spec/rails_app/config/initializers/session_store.rb +0 -15
  66. data/spec/rails_app/config/routes.rb +0 -21
  67. data/spec/rails_app/db/migrate/20100225105011_create_contents.rb +0 -22
  68. data/spec/rails_app/db/migrate/20100225105903_create_users.rb +0 -8
  69. data/spec/rails_app/db/migrate/20100225110024_create_sites.rb +0 -15
  70. data/spec/rails_app/db/migrate/20100225110037_create_memberships.rb +0 -12
  71. data/spec/rails_app/db/migrate/20100225112236_acts_as_taggable_on.rb +0 -26
  72. data/spec/rails_app/db/schema.rb +0 -59
  73. data/spec/rails_app/public/404.html +0 -26
  74. data/spec/rails_app/public/422.html +0 -26
  75. data/spec/rails_app/public/500.html +0 -26
  76. data/spec/rails_app/public/favicon.ico +0 -0
  77. data/spec/rails_app/public/images/rails.png +0 -0
  78. data/spec/rails_app/public/javascripts/application.js +0 -2
  79. data/spec/rails_app/public/javascripts/controls.js +0 -963
  80. data/spec/rails_app/public/javascripts/dragdrop.js +0 -973
  81. data/spec/rails_app/public/javascripts/effects.js +0 -1128
  82. data/spec/rails_app/public/javascripts/prototype.js +0 -4320
  83. data/spec/rails_app/public/javascripts/rails.js +0 -110
  84. data/spec/rails_app/public/robots.txt +0 -5
  85. data/spec/rails_app/public/stylesheets/.gitkeep +0 -0
  86. data/spec/rails_app/script/rails +0 -10
  87. data/spec/requests/user_manage_articles_spec.rb +0 -85
  88. data/spec/requests/user_manage_pages_spec.rb +0 -92
  89. data/spec/requests/webrat.log +0 -17
  90. data/spec/spec.opts +0 -2
  91. data/spec/spec_helper.rb +0 -36
@@ -1,76 +0,0 @@
1
- module ContentEngine
2
- class PagesController < ContentEngineController
3
- respond_to :html, :xml
4
-
5
- # GET /pages
6
- # GET /pages.xml
7
- def index
8
- @pages = @site.pages.order('created_at desc').all.paginate(:page => params[:page])
9
- @rootpage = @site.pages.root
10
-
11
- if request.xhr? and params[:parent_id]
12
- @rootpage = @site.pages.find(params[:parent_id])
13
- return render(:partial => 'treeview')
14
- end
15
-
16
- respond_with @pages
17
- end
18
-
19
- # GET /pages/1
20
- # GET /pages/1.xml
21
- def show
22
- respond_with @page = @site.pages.find(params[:id])
23
- end
24
-
25
- def lookup
26
- @page = @site.pages.find_by_url(params[:url])
27
-
28
- render :template => 'content_engine/pages/show'
29
- end
30
-
31
- # GET /pages/new
32
- # GET /pages/new.xml
33
- def new
34
- respond_with @page = @site.pages.new
35
- end
36
-
37
- # GET /pages/1/edit
38
- def edit
39
- respond_with @page = @site.pages.find(params[:id])
40
- end
41
-
42
- # POST /pages
43
- # POST /pages.xml
44
- def create
45
- @page = @site.pages.new(params[:page])
46
- flash[:notice] = "Page was successfully created." if @page.save
47
- respond_with @page
48
- end
49
-
50
- # PUT /pages/1
51
- # PUT /pages/1.xml
52
- def update
53
- @page = @site.pages.find(params[:id])
54
- flash[:notice] = "Page was successfully updated." if @page.update_attributes(params[:page])
55
- respond_with @page
56
- end
57
-
58
- # DELETE /pages/1
59
- # DELETE /pages/1.xml
60
- def destroy
61
- @page = @site.pages.find(params[:id])
62
- @page.destroy
63
-
64
- respond_with @page
65
- end
66
-
67
-
68
- # # GET /pages/1/move?to=(up|down)
69
- # def move
70
- # @page = @site.pages.find(params[:id])
71
- # @page.move_left
72
- #
73
- # redirect_to pages_path
74
- # end
75
- end
76
- end
@@ -1,14 +0,0 @@
1
- class ContentEngineController < ApplicationController
2
- protect_from_forgery
3
- before_filter :load_site
4
-
5
- protected
6
- def load_site
7
- # Single site mode
8
- if Site.count == 1
9
- @site = Site.first
10
- else
11
- @site = Site.find_by_host(request.host)
12
- end
13
- end
14
- end
@@ -1,2 +0,0 @@
1
- module ApplicationHelper
2
- end
@@ -1,29 +0,0 @@
1
- class Article < Content
2
- has_permalink :title
3
- acts_as_taggable_on :tags
4
-
5
- validates_presence_of :title
6
- validates_presence_of :body
7
-
8
- def excerpt
9
- content = body[0, 300]
10
- words = content.gsub(/<\/?[^>]+>/, "").split(' ')
11
- words[0 .. 59].join(' ') + '...'
12
- end
13
-
14
- def url
15
- "/articles/%04d/%02d/%02d/#{permalink}" % [created_at.year, created_at.month, created_at.day]
16
- end
17
-
18
- def next
19
- site.articles.published.order('id').where("id > ?", id).first
20
- end
21
-
22
- def prev
23
- site.articles.published.order('id').where("id < ?", id).first
24
- end
25
-
26
- def to_param
27
- "#{id}-#{permalink}"
28
- end
29
- end
@@ -1,64 +0,0 @@
1
- class Content < ActiveRecord::Base
2
- abstract_class = true
3
-
4
- belongs_to :site
5
- belongs_to :author, :class_name => 'User'
6
-
7
- scope :recent, order("published_at DESC")
8
- scope :published, lambda{
9
- where("published_at is NOT null").where("published_at <= ?", Time.now).recent
10
- }
11
- scope :draft, where(:published_at => nil).recent
12
-
13
- before_save :update_published_at
14
-
15
- def body
16
- self[:body]
17
- end
18
-
19
- def body_html
20
- if self.body_source
21
- markdown = RDiscount.new(self.body_source)
22
- @body_html ||= markdown.to_html
23
- end
24
- end
25
- alias_method :body_source, :body
26
- alias_method :body, :body_html
27
-
28
-
29
- def author_name
30
- author.display_name if author
31
- end
32
-
33
- def status
34
- published? ? 'published' : 'draft'
35
- end
36
-
37
- def status=(status)
38
- if status == 'draft'
39
- self[:published_at] = nil
40
- else
41
- self[:published_at] = Time.now unless published?
42
- end
43
- end
44
-
45
- def published=(flag)
46
- @mark_published = flag
47
- end
48
-
49
- def published?
50
- published_at != nil
51
- end
52
-
53
- def publish!
54
- self.published = true
55
- self.send(:update_published_at)
56
- save
57
- end
58
-
59
- private
60
- def update_published_at
61
- self[:published_at] = Time.now if @mark_published and not published?
62
- end
63
-
64
- end
data/app/models/page.rb DELETED
@@ -1,40 +0,0 @@
1
- class Page < Content
2
- belongs_to :parent, :class_name => 'Page'
3
- has_many :children, :class_name => 'Page', :foreign_key => 'parent_id'
4
-
5
- acts_as_taggable_on :tags
6
-
7
- before_validation :ensure_hierarchy
8
- has_permalink :title, :scope => :parent_id, :unless => :homepage?
9
-
10
- validates_presence_of :title, :body
11
-
12
- # Tree structure
13
- scope :roots, where(:parent_id => nil)
14
-
15
- def self.root
16
- roots.first
17
- end
18
-
19
- def root?
20
- self == Page.root || Page.count == 0 && new_record?
21
- end
22
- alias :homepage? :root?
23
-
24
- def ancestors
25
- node, nodes = self, []
26
- nodes << node = node.parent while node.parent
27
- nodes
28
- end
29
-
30
- def url
31
- links = (ancestors.map(&:permalink) << permalink).delete_if(&:blank?)
32
-
33
- "/#{links.join('/')}"
34
- end
35
-
36
- private
37
- def ensure_hierarchy
38
- self.parent = site.homepage if !parent_id && site && site.homepage
39
- end
40
- end
data/app/models/site.rb DELETED
@@ -1,26 +0,0 @@
1
- class Site < ActiveRecord::Base
2
- belongs_to :owner, :class_name => 'User'
3
-
4
- has_many :memberships, :dependent => :destroy
5
- has_many :users, :through => :memberships
6
-
7
- # has_many :tags, :dependent => :destroy
8
- has_many :articles, :dependent => :destroy
9
- has_many :pages, :dependent => :destroy do
10
- def find_by_url(url = [])
11
- url = url.split('/').delete_if(&:blank?) if url.is_a? String
12
-
13
- page = where(:parent_id => nil).first
14
-
15
- url.each do |part|
16
- page = page.children.published.where(:permalink => part).first
17
- end
18
-
19
- page
20
- end
21
- end
22
-
23
- def homepage
24
- pages.root
25
- end
26
- end
data/app/models/tag.rb DELETED
@@ -1,53 +0,0 @@
1
- class Tag < ActiveRecord::Base
2
-
3
- attr_accessible :name
4
-
5
- ### ASSOCIATIONS:
6
-
7
- has_many :taggings, :dependent => :destroy
8
-
9
- ### VALIDATIONS:
10
-
11
- validates_presence_of :name
12
- validates_uniqueness_of :name
13
-
14
- ### NAMED SCOPES:
15
-
16
- scope :named, lambda { |name| { :conditions => ["name LIKE ?", name] } }
17
- scope :named_any, lambda { |list| { :conditions => list.map { |tag| sanitize_sql(["name LIKE ?", tag.to_s]) }.join(" OR ") } }
18
- scope :named_like, lambda { |name| { :conditions => ["name LIKE ?", "%#{name}%"] } }
19
- scope :named_like_any, lambda { |list| { :conditions => list.map { |tag| sanitize_sql(["name LIKE ?", "%#{tag.to_s}%"]) }.join(" OR ") } }
20
-
21
- ### CLASS METHODS:
22
-
23
- def self.find_or_create_with_like_by_name(name)
24
- named_like(name).first || create(:name => name)
25
- end
26
-
27
- def self.find_or_create_all_with_like_by_name(*list)
28
- list = [list].flatten
29
-
30
- return [] if list.empty?
31
-
32
- existing_tags = Tag.named_any(list).all
33
- new_tag_names = list.reject { |name| existing_tags.any? { |tag| tag.name.downcase == name.downcase } }
34
- created_tags = new_tag_names.map { |name| Tag.create(:name => name) }
35
-
36
- existing_tags + created_tags
37
- end
38
-
39
- ### INSTANCE METHODS:
40
-
41
- def ==(object)
42
- super || (object.is_a?(Tag) && name == object.name)
43
- end
44
-
45
- def to_s
46
- name
47
- end
48
-
49
- def count
50
- read_attribute(:count).to_i
51
- end
52
-
53
- end
data/app/models/user.rb DELETED
@@ -1,5 +0,0 @@
1
- class User < ActiveRecord::Base
2
- def display_name
3
- name || login
4
- end
5
- end
@@ -1,8 +0,0 @@
1
- <% semantic_form_for @article do |f| %>
2
- <%= f.inputs :title, :body, :tag_list %>
3
-
4
- <% f.inputs do %>
5
- <%= f.input :status, :as => :select, :collection => %w(draft publish) %>
6
- <% end %>
7
- <%= f.buttons :commit %>
8
- <% end %>
@@ -1,7 +0,0 @@
1
- <h1>Edit Article</h1>
2
- <%= link_to 'Destroy', @article, :confirm => 'Are you sure?', :method => :delete %>
3
-
4
- <%= render 'form' %>
5
-
6
- <%= link_to "Show", @article %>
7
- <%= link_to 'Back', articles_path %>
@@ -1,10 +0,0 @@
1
- All articles
2
-
3
- <%= link_to "New article", new_article_path %>
4
-
5
- <ul>
6
- <% @articles.each do |page| %>
7
- <li><%= link_to page.title, page %></li>
8
- <% end %>
9
- </ul>
10
-
@@ -1,6 +0,0 @@
1
- <h1>New Article</h1>
2
-
3
- <%= render 'form' %>
4
-
5
-
6
- <%= link_to 'Back', articles_path %>
@@ -1,9 +0,0 @@
1
- <h1><%= @article.title %></h1>
2
- <%= link_to "Edit", edit_article_path(@article) %>
3
-
4
- <p class="small">
5
- <%= "Published at #{@article.published_at}" if @article.published? %>
6
-
7
- Created by <%= @article.author_name %>
8
- </p>
9
- <%= raw @article.body %>
@@ -1,8 +0,0 @@
1
- <% semantic_form_for @page do |f| %>
2
- <%= f.inputs :title, :body, :tag_list %>
3
-
4
- <% f.inputs do %>
5
- <%= f.input :status, :as => :select, :collection => %w(draft publish) %>
6
- <% end %>
7
- <%= f.buttons :commit %>
8
- <% end %>
@@ -1,7 +0,0 @@
1
- <h1>Edit page</h1>
2
- <%= link_to 'Destroy', @page, :confirm => 'Are you sure?', :method => :delete %>
3
-
4
- <%= render 'form' %>
5
-
6
- <%= link_to "Show", @page %>
7
- <%= link_to 'Back', pages_path %>
@@ -1,10 +0,0 @@
1
- All pages
2
-
3
- <%= link_to "New page", new_page_path %>
4
-
5
- <ul>
6
- <% @pages.each do |page| %>
7
- <li><%= link_to page.title, page %></li>
8
- <% end %>
9
- </ul>
10
-
@@ -1,6 +0,0 @@
1
- <h1>New page</h1>
2
-
3
- <%= render 'form' %>
4
-
5
-
6
- <%= link_to 'Back', pages_path %>
@@ -1,9 +0,0 @@
1
- <h1><%= @page.title %></h1>
2
- <%= link_to "Edit", edit_page_path(@page) %>
3
-
4
- <p class="small">
5
- <%= "Published at #{@page.published_at}" if @page.published? %>
6
-
7
- Created by <%= @page.author_name %>
8
- </p>
9
- <%= raw @page.body %>
@@ -1,16 +0,0 @@
1
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
2
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3
- <html>
4
- <head>
5
- <title><%= @site.title %> - Content Engine</title>
6
- </head>
7
- <body>
8
- <div id="container">
9
- <%- flash.each do |name, msg| -%>
10
- <%= content_tag :div, msg, :id => "flash_#{name}" if msg.is_a?(String) %>
11
- <%- end -%>
12
-
13
- <%= yield %>
14
- </div>
15
- </body>
16
- </html>
@@ -1 +0,0 @@
1
- require File.expand_path("../../content_engine", __FILE__)