<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -2,4 +2,7 @@ class TextblockCell &lt; Cell::Base
   def index
     &quot;Testing index&quot;
   end
+
+  def edit
+  end
 end</diff>
      <filename>app/cells/textblock_cell.rb</filename>
    </modified>
    <modified>
      <diff>@@ -28,9 +28,37 @@ class JivepagesController &lt; ApplicationController
   def new
   end
   
+  # Automatically create a site if none is given.
+  # Anonymous user owns all pages if there's no logged in user.
   def create
     begin
-      @jivepage = jivepage_scope.create_and_setup(params[:jivepage])
+      @user = current_owner      
+      begin
+        site_id = params[:jivepage][:site_id]
+        raise &quot;Create a site&quot; if site_id.blank?
+        site = Site.find(site_id, :conditions =&gt; {:user_id =&gt; @user.id})
+      rescue
+        begin
+          logger.debug &quot;\n\nCreating site with user_id: #{@user.id}\n\n&quot;
+          site = Site.new
+          site.user = @user
+          site.save!
+        rescue
+          logger.debug &quot;\n\nFAIL! #{$!}\n\n&quot;
+          @jivepage = Jivepage.new
+          @jivepage.errors.add_to_base(&quot;Unable to create site: #{$!}, user: #{@user.inspect}&quot;)
+          flash[:notice] = 'Unable to create site'
+          respond_to do |format|
+            format.html { render :action =&gt; &quot;new&quot; }
+            format.xml  { render :xml =&gt; @jivepage.errors, :status =&gt; :unprocessable_entity }
+          end
+          return
+        end
+      end
+      
+      @jivepage = site.jivepages.create_and_setup(params[:jivepage].merge(
+          :user =&gt; @user, :site =&gt; site))
+          
       respond_to do |format|
         flash[:notice] = 'Page created'
         format.html { redirect_to(edit_jivepage_path(@jivepage)) }
@@ -107,13 +135,6 @@ class JivepagesController &lt; ApplicationController
         return false
       end
     end
-    
-    #
-    #
-    #
-    def load_box_classes
-      # Box.subclasses
-    end
 
     #
     #
@@ -122,20 +143,13 @@ class JivepagesController &lt; ApplicationController
       @jivepage.boxes.each do |box|
         self.append_view_path(box.plugin_view_path)
       end
-    end
-    
+    end    
     
     #
     #
     #
     def current_owner
-      Jivepage.uses_users? ? current_user : Jivepage
+      current_user || Jivepage.anonymous_user
     end
 
-    #
-    #
-    #
-    def jivepage_scope
-      Jivepage.uses_users? ? current_owner.jivepages : Jivepage
-    end
 end</diff>
      <filename>app/controllers/jivepages_controller.rb</filename>
    </modified>
    <modified>
      <diff>@@ -3,8 +3,8 @@ module JivepagesHelper
   #
   #
   def dom_id(o, suffix=nil)
-    return unless o
-    o.dom_id + (suffix ? &quot;-#{suffix}&quot; : '')    
+    return unless o     
+    o.class.name.underscore + (suffix ? &quot;-#{suffix}&quot; : '')    
   end
   
   def render_one_cell(cell, options={}, &amp;block)   </diff>
      <filename>app/helpers/jivepages_helper.rb</filename>
    </modified>
    <modified>
      <diff>@@ -2,7 +2,8 @@ class Jivepage &lt; ActiveRecord::Base
   include ActionView::Helpers::DateHelper
   include ActionView::Helpers::TextHelper
 
-  # belongs_to :user
+  validates_presence_of :user
+  belongs_to :user
   has_many :contributorships, :dependent =&gt; :delete_all
   has_many :contributors, :through =&gt; :contributorships, :source =&gt; :user
   has_many :rows, :order =&gt; &quot;position ASC&quot; do 
@@ -20,6 +21,7 @@ class Jivepage &lt; ActiveRecord::Base
     end
   end
   has_many :edit_sessions, :dependent =&gt; :destroy
+  belongs_to :site
   # has_many :editors, :through =&gt; :edit_sessions, :source =&gt; :user
   
   before_save :restructure
@@ -40,23 +42,41 @@ class Jivepage &lt; ActiveRecord::Base
   def setup
     row = self.rows.create!
   end
+
+  def self.anonymous_user
+    Jivepage.ensure_user_is_defined!
+    user = User.find_by_login(&quot;anonymous&quot;)
+    unless user
+      password = Digest::SHA1.hexdigest(Time.now.to_s.split(//).sort_by {rand}.join)
+      user = User.create!(:login =&gt; &quot;anonymous&quot;, :email =&gt; &quot;anonymous@jivepages.com&quot;,
+        :password =&gt; password, :password_confirmation =&gt; password)
+      user.activate
+    end
+    user
+  end
   
-  def self.uses_users?
-    defined?(User)
+  def Jivepage.ensure_user_is_defined!
+    raise &quot;Jivepages plugin requires that a User class is defined.&quot; unless self.user_is_defined?
+  end
+
+  def self.user_is_defined?
+    # TODO: make the user class configurable
+    # defined?(User)
+    true
   end
   
   def editable_by?(user)
-    return true unless Jivepage.uses_users?
+    Jivepage.ensure_user_is_defined!
     user &amp;&amp; (user.id == user_id || user.contributor_to?(self))
   end
   
   def being_edited_by?(user)
-    return true unless Jivepage.uses_users?
+    Jivepage.ensure_user_is_defined!
     being_edited? and edit_sessions.exists?(:user_id =&gt; user.id)
   end
   
   def being_edited?
-    return true unless Jivepage.uses_users?
+    Jivepage.ensure_user_is_defined!
     !edit_sessions.blank?
   end
 
@@ -65,7 +85,7 @@ class Jivepage &lt; ActiveRecord::Base
   # ...although only pmark is editing it currently.
   # ...There are 3 people currently editing this page.
   def heading
-    return &quot;&quot; unless Jivepage.uses_users?
+    Jivepage.ensure_user_is_defined!
     
     owner = self.user || User.find_anonymous
     who = owner.summary    </diff>
      <filename>app/models/jivepage.rb</filename>
    </modified>
    <modified>
      <diff>@@ -5,22 +5,7 @@
 &lt;%= rows_for(:body, @jivepage) %&gt;
 
 &lt;% content_for(:footer) do %&gt;
-&lt;!-- &lt;blockquote&gt; --&gt;
   &lt;%= rows_for(:footer, @jivepage) %&gt;  
-  &lt;%= link_to('View this page', jivepage_path(@jivepage)) %&gt;
-  &lt;br/&gt;
-&lt;% if @jivepage.editable_by?(page_user) %&gt;
-&lt;%= link_to('Delete this page', jivepage_path(@jivepage), :method =&gt; :delete,
-    :confirm =&gt; 'Are you sure?') %&gt;
-&lt;br/&gt;
-&lt;% end %&gt;
-&lt;%= link_to 'All pages', jivepages_path %&gt;
-&lt;br/&gt;
-&lt;br/&gt;
-&lt;% form_for Jivepage.new, :jivepage do %&gt;
-  &lt;%= submit_tag &quot;New page&quot; %&gt;
-&lt;% end %&gt;  
-&lt;!-- &lt;/blockquote&gt;   --&gt;
-&lt;%= render :partial =&gt; &quot;jivepages/tool_shed&quot; %&gt;
+  &lt;%= render :partial =&gt; &quot;jivepages/tool_shed&quot; %&gt;
 &lt;% end %&gt;
 </diff>
      <filename>app/views/jivepages/edit.html.erb</filename>
    </modified>
    <modified>
      <diff>@@ -17,6 +17,7 @@
 &lt;% content_for(:footer) do %&gt;
   &lt;blockquote&gt;
     &lt;% form_for :jivepage do %&gt;
+      &lt;%= hidden_field_tag &quot;jivepage[site_id]&quot;, nil %&gt;
       &lt;%= submit_tag &quot;Make your own page right now&quot; %&gt;
     &lt;% end %&gt;
   &lt;/blockquote&gt;</diff>
      <filename>app/views/jivepages/index.html.erb</filename>
    </modified>
    <modified>
      <diff>@@ -6,17 +6,6 @@
 &lt;blockquote&gt;
 &lt;%= error_messages_for :jivepage %&gt;
 
-&lt;% form_for(@jivepage) do |f| %&gt;
-  &lt;p&gt;
-    &lt;b&gt;What is the title of your new page?&lt;/b&gt;&lt;br /&gt;
-    &lt;%= f.text_field :title %&gt;
-  &lt;/p&gt;
-
-  &lt;p&gt;
-    &lt;%= f.submit &quot;create&quot; %&gt; or 
-    &lt;%= link_to 'cancel', jivepages_path %&gt;
-  &lt;/p&gt;
-&lt;% end %&gt;
 &lt;/blockquote&gt;
 
 &lt;% content_for(:footer) do %&gt;</diff>
      <filename>app/views/jivepages/new.html.erb</filename>
    </modified>
    <modified>
      <diff>@@ -1,5 +1,6 @@
 # NOT SURE IF THIS WORKS...
 resources :jivepages
+resources :sites
 resources :rows, :member =&gt; {:up =&gt; :put, :down =&gt; :put}
 resources :columns
 resources :boxes</diff>
      <filename>routes.rb</filename>
    </modified>
    <modified>
      <diff>@@ -137,27 +137,7 @@ describe JivepagesController do
     it &quot;should be successful&quot; do
       do_get
       response.should be_success
-    end
-  
-    it &quot;should render new template&quot; do
-      do_get
-      response.should render_template('new')
-    end
-  
-    it &quot;should create an new jivepage&quot; do
-      Jivepage.should_receive(:new).and_return(@jivepage)
-      do_get
-    end
-  
-    it &quot;should not save the new jivepage&quot; do
-      @jivepage.should_not_receive(:save)
-      do_get
-    end
-  
-    it &quot;should assign the new jivepage for the view&quot; do
-      do_get
-      assigns[:jivepage].should equal(@jivepage)
-    end
+    end  
   end
 
   describe &quot;handling GET /jivepages/1/edit&quot; do</diff>
      <filename>spec/controllers/jivepages_controller_spec.rb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>a3b7ac7423e102fa9cc1086ec11f3f72b7261508</id>
    </parent>
  </parents>
  <author>
    <name>Mark Anderson</name>
    <email>wayoutwest@gmail.com</email>
  </author>
  <url>http://github.com/pmark/jivepages/commit/3d0fb032f02abb7942fafc3e6d723d84aa9bf7da</url>
  <id>3d0fb032f02abb7942fafc3e6d723d84aa9bf7da</id>
  <committed-date>2008-06-15T02:14:41-07:00</committed-date>
  <authored-date>2008-06-15T02:14:41-07:00</authored-date>
  <message>Site config</message>
  <tree>8857f91d9222a2a1f13250a4adb48227ebf0b32c</tree>
  <committer>
    <name>Mark Anderson</name>
    <email>wayoutwest@gmail.com</email>
  </committer>
</commit>
