diff --git a/app/controllers/cms_controller.rb b/app/controllers/cms_controller.rb
new file mode 100644
index 0000000..e545aed
--- /dev/null
+++ b/app/controllers/cms_controller.rb
@@ -0,0 +1,2 @@
+class CmsController < ComatoseAdminController
+end
diff --git a/app/views/cms/_form.rhtml b/app/views/cms/_form.rhtml
new file mode 100644
index 0000000..54fbe91
--- /dev/null
+++ b/app/views/cms/_form.rhtml
@@ -0,0 +1,86 @@
+<%= error_messages_for :page %>
+
+<% form_for :page, @page do |f| %>
+
+
+ <%= _("Title") %>
+ <%= f.text_field :title, :tabindex => 1, :maxlength => 255, :size => 30 %> <%= link_to_function "More...", "ComatoseEditForm.toggle_extra_fields(this, '%s', '%s')" % [_('More...'), _('Less...')], :id => 'more-options' %>
+
+
+
+ <%= _('Slug') %>
+ <%= f.text_field :slug, :tabindex=>6, :maxlength=>255, :size=>50, :disabled=>@root_pages.include?(@page) %>
+
+
+
+ <% if show_field? 'keywords' %>
+ <%= _('Keywords') %>
+ <%= f.text_field :keywords, :tabindex=>7, :maxlength=>1000, :size=>50 %>
+ <% end %>
+
+
+
+ <% if show_field? 'parent' %>
+ <%= _('Parent') %>
+ <% if mode != :new and @root_pages.include? @page %>
+ <%= _('%s is a root page') % @page.title %>
+ <% else %>
+ <%= tree_select_box @root_pages, @page.parent_id, @page.id %>
+ <% end %>
+ <% end %>
+
+
+
+ <%= _('Content') %>
+ <%= f.text_area :body, :rows => 14, :tabindex => 2 %>
+
+
+
+ <% if show_field? 'filter' %>
+ <%= _("Filter") %>
+ <%= select_tag 'page[filter_type]', options_for_select(TextFilters.all_titles.sort, @page.filter_type || Comatose.config.default_filter), :tabindex=>3, :id=>'page_filter_type' %>
+ <%= _('Converts plain text into HTML') %>
+ <% end %>
+
+
+
+ <% if show_field? 'created_on' %>
+ <%= _('Created') %>
+ <%= f.datetime_select :created_on %>
+ <% end %>
+
+
+
+<% end %>
+
+
+
+ <%= _('Page Preview') %>
+
+
<%= _('Loading Preview...') %>
+
+
+
+
+
+
+<%= javascript_tag "ComatoseEditForm.init('#{mode.to_s}');" %>
diff --git a/app/views/cms/_page_list_item.rhtml b/app/views/cms/_page_list_item.rhtml
new file mode 100644
index 0000000..bbec58b
--- /dev/null
+++ b/app/views/cms/_page_list_item.rhtml
@@ -0,0 +1,57 @@
+<%# Params:
+# - page (Page Node)
+# - level (integer indicating current tree depth)
+# Called From:
+# - index
+# Description:
+# This partial is used recursively. Render it with the root node, and it will recurse
+# down all of the child nodes to build a list with proper indentation to indicate
+# tree depth.
+%>
+
+<%
+# Create the page-level links...
+links = []
+links << link_to(pluralize(page.versions.length, 'revision', 'revisions'), :action=>'versions', :id=>page) if page.versions.length > 0
+links << link_to('add child page', {:action=>'new', :parent=>page}, :title=> _("Add a child to '%s'") % page.title, :class=>'add-page')
+links << link_to_function('reorder children', "ComatoseList.toggle_reorder('page_list_#{page.id}',this,#{page.id}, '%s', '%s')" % [_('reorder children'), _('finished reordering')], :title=> _("Reorder children of '%s'") % page.title, :class=>'reorder-children', :href=>url_for(:action=>'reorder', :id=>page)) if !page.children.empty? and page.children.length > 1
+links << link_to('delete', {:action=>'delete', :id=>page}, :confirm=> _('This will delete this page, and any children. Are you sure?'), :title=> _("Delete page '%s' and all it's children") % page.title, :class=>'delete-page', :method=>'post', :onmouseover=>"ComatoseList.item_hover('page_#{page.id}', 'over', true)", :onmouseout=>"ComatoseList.item_hover('page_#{page.id}', 'out', true)") unless @root_pages.include? page
+# Level check, one, two, three...
+collapse_children = (level >= Comatose.config.default_tree_level)
+%>
+
+
+
+
+
+ <% if !page.children.empty? %>
+ <%= image_tag( ((collapse_children) ? 'comatose/collapsed.gif' : 'comatose/expanded.gif'), :title=>'Expand/Collapse', :onclick=>"ComatoseList.toggle_tree_nodes(this,#{page.id});", :class=>'tree-controller', :size=>'12x12', :id=>"page_controller_#{page.id}" ) %>
+ <% else %>
+ <%= image_tag 'comatose/no-children.gif', :size=>'12x12', :class=>'tree-controller' %>
+ <% end %>
+
+
+ <%= icon_for_document(page) %>
+ <%= _('DRAG') %>
+
+
+ <%= link_to page.title, {:action=>'edit', :id=>page}, :title=>"Path:#{page.full_path}", :class=>'page' %>
+
+
+ <%= links.join(', ') %>.
+
+
+
+
+
+ <% for child in page.children %>
+ <%= render :partial=>'page_list_item', :locals=>{ :page=>child, :level=>level+1 } %>
+ <% end %>
+
+
+ <%= sortable_element( "page_list_#{page.id}",
+ :complete => visual_effect(:highlight, "page_list_#{page.id}"),
+ :handle=>'handle',
+ :update=>'flash-content',
+ :url => { :action => "reorder", :id=>page } ) if !page.children.empty? and page.children.length > 1 %>
+
diff --git a/app/views/cms/delete.rhtml b/app/views/cms/delete.rhtml
new file mode 100644
index 0000000..fd3dd07
--- /dev/null
+++ b/app/views/cms/delete.rhtml
@@ -0,0 +1,18 @@
+
+ Page Delete Confirmation
+
+
+
+ <%= _('Are you sure you want to delete the page titled "%s"?') % content_tag('strong', @page.title) %>
+ <% unless @page.children.empty? %>
+ <%= _("It has %s child pages that will also be deleted...") % content_tag('strong', @page.children.length) %>
+<% end %>
+
+
+<%= start_form_tag %>
+
+ <%= submit_tag _("Yes, Delete The Page") %>
+ or
+ <%= link_to _("Cancel"), :action=>'index' %>
+
+<%= end_form_tag %>
diff --git a/app/views/cms/edit.rhtml b/app/views/cms/edit.rhtml
new file mode 100644
index 0000000..6b2f158
--- /dev/null
+++ b/app/views/cms/edit.rhtml
@@ -0,0 +1,5 @@
+
+ <%= _("Edit Page") %>
+
+
+<%= render :partial=>'form', :locals=>{:mode=>:edit} %>
diff --git a/app/views/cms/index.rhtml b/app/views/cms/index.rhtml
new file mode 100644
index 0000000..826c4e3
--- /dev/null
+++ b/app/views/cms/index.rhtml
@@ -0,0 +1,18 @@
+
+ <%= link_to 'Clear Page Cache', :controller=>controller.controller_name, :action=>'expire_page_cache' %>
+
+
+
+ <%= _('Document List') %>
+ <%= image_tag 'comatose/spinner.gif', :id=>'spinner', :align=>'absmiddle', :style=>'display:none;' %>
+
+
+
+<% @root_pages.each do |page| %>
+ <%= render :partial=>'page_list_item', :locals=>{ :page=>page, :level=>1 } %>
+<% end %>
+
+
+
+
+<%= javascript_tag "ComatoseList.init()" %>
diff --git a/app/views/cms/new.rhtml b/app/views/cms/new.rhtml
new file mode 100644
index 0000000..26bf982
--- /dev/null
+++ b/app/views/cms/new.rhtml
@@ -0,0 +1,5 @@
+
+ <%= _('New Page') %>
+
+
+<%= render :partial=>'form', :locals=>{:mode=>:new} %>
diff --git a/app/views/cms/reorder.rhtml b/app/views/cms/reorder.rhtml
new file mode 100644
index 0000000..d839538
--- /dev/null
+++ b/app/views/cms/reorder.rhtml
@@ -0,0 +1,30 @@
+<%= _('Reorder Pages') %>
+
+<%= _('"%s" child pages:') % @page.title %>
+
+
+<% @page.children.each do |page| %>
+
+
+
+
+ <%= image_tag 'comatose/page.gif', :size=>'25x31', :align=>"absmiddle" %>
+
+
+ <%= page.title %>
+
+
+
+
+ <%= link_to _("Move Up"), :action=>'reorder', :cmd=>'up', :page=>page.id %>,
+ <%= link_to _("Move Down"), :action=>'reorder', :cmd=>'down', :page=>page.id %>
+
+
+
+
+<% end %>
+
+
+
+ <%= link_to _("Finished"), :action=>'index' %>
+
diff --git a/app/views/cms/versions.rhtml b/app/views/cms/versions.rhtml
new file mode 100644
index 0000000..c470c55
--- /dev/null
+++ b/app/views/cms/versions.rhtml
@@ -0,0 +1,44 @@
+<%= _('Page Revisions') %>
+