various diary bits
authorSteve Coast <steve@asklater.com>
Sat, 7 Apr 2007 20:12:35 +0000 (20:12 +0000)
committerSteve Coast <steve@asklater.com>
Sat, 7 Apr 2007 20:12:35 +0000 (20:12 +0000)
app/controllers/diary_entry_controller.rb
app/controllers/user_controller.rb
app/models/diary_entry.rb
app/models/user.rb
app/views/diary_entry/_diary_entry.rhtml [new file with mode: 0644]
app/views/diary_entry/new.rhtml [new file with mode: 0644]
app/views/user/diary.rhtml [new file with mode: 0644]
app/views/user/new.rhtml
app/views/user/view.rhtml [new file with mode: 0644]
config/routes.rb
db/migrate.sql

index 7c77fc177394280ba823c56a8be2aee9b47b2eb8..c25c8718dced4fab126fea2f8a3e8494146fd01d 100644 (file)
@@ -1,2 +1,16 @@
 class DiaryEntryController < ApplicationController
+  layout 'site'
+  
+  before_filter :authorize_web
+  before_filter :require_user
+
+  def new
+    if params[:diary_entry]     
+      @entry = DiaryEntry.new(@params[:diary_entry])
+      @entry.user = @user
+      if @entry.save 
+        redirect_to :controller => 'user', :action => 'diary', :display_name => @user.display_name 
+      end
+    end
+  end
 end
index 9fd20f2ff669a6dece17d773b3943cb54aa2e820..3837d097609512816176798d7d7339d72d011c8a 100644 (file)
@@ -2,7 +2,7 @@ class UserController < ApplicationController
   layout 'site'
 
   before_filter :authorize, :only => [:preferences, :api_details, :api_gpx_files]
-  before_filter :authorize_web, :only => [:edit, :account, :go_public, :view]
+  before_filter :authorize_web, :only => [:edit, :account, :go_public, :view, :diary]
   before_filter :require_user, :only => [:edit, :account, :go_public]
  
   def save
@@ -139,11 +139,14 @@ class UserController < ApplicationController
     render :text => doc.to_s
   end
 
-
   def view
     @this_user = User.find_by_display_name(params[:display_name])
   end
 
+  def diary
+    @this_user = User.find_by_display_name(params[:display_name])
+  end
+
 
 end
 
index 2da92d400648a564eecc1bdd66c6841190b6245f..ad334151c37f8eafc786b7a8fe9212c7d6ad523e 100644 (file)
@@ -1,2 +1,3 @@
 class DiaryEntry < ActiveRecord::Base
+  belongs_to :user
 end
index 780e0caafb8f9ca6dbae2f7c4779eae6114a3d6d..7befa479ac547387f6da99f4457b702749fd0ede 100644 (file)
@@ -3,6 +3,7 @@ class User < ActiveRecord::Base
   require 'digest/md5'
 
   has_many :traces
+  has_many :diary_entries
 
   validates_confirmation_of :pass_crypt, :message => 'Password must match the confirmation password'
   validates_uniqueness_of :display_name, :allow_nil => true
diff --git a/app/views/diary_entry/_diary_entry.rhtml b/app/views/diary_entry/_diary_entry.rhtml
new file mode 100644 (file)
index 0000000..cf9115f
--- /dev/null
@@ -0,0 +1,3 @@
+<b><%= diary_entry.title %></b><br />
+<%= simple_format(diary_entry.body) %>
+<br />
diff --git a/app/views/diary_entry/new.rhtml b/app/views/diary_entry/new.rhtml
new file mode 100644 (file)
index 0000000..ead5894
--- /dev/null
@@ -0,0 +1,7 @@
+<%= error_messages_for 'diary_entry' %>
+
+<%= start_form_tag :controller => 'diary_entry', :action => 'new' %>
+subject<%= text_field 'diary_entry', 'title' %><br>
+body<%= text_area 'diary_entry', 'body' %><br>
+  <%= submit_tag 'Save' %>
+<% end_form_tag %>
diff --git a/app/views/user/diary.rhtml b/app/views/user/diary.rhtml
new file mode 100644 (file)
index 0000000..abe896d
--- /dev/null
@@ -0,0 +1,8 @@
+<h2><%= @this_user.display_name %>'s diary</h2>
+<% if @this_user.id == @user.id %>
+  <%= link_to 'new post', :controller => 'diary_entry', :action => 'new', :display_name => @user.display_name %>
+<% end %>
+
+<h3>recent posts:</h3>
+FIXME: geoRSS needed<br><br>
+<%= render :partial => 'diary_entry/diary_entry', :collection => @this_user.diary_entries %>
index 681182321fbadb9d8bcad7d78b97b656f2f2c9be..e1222c64e394c31dbf408209b4bc5fa647264a0e 100644 (file)
@@ -12,7 +12,8 @@ By creating an account, you agree that all work uploaded to openstreetmap.org an
   <tr><td>password:</td><td><%= password_field('user', 'pass_crypt',{:size => 50, :maxlength => 255}) %></td></tr>
   <tr><td>retype password:</td><td><%= password_field('user', 'pass_crypt_confirmation',{:size => 50, :maxlength => 255}) %></td></tr>
 </table>
-
+<br>
+FIXME OL map so people can submit where they live
 <br>
 <input type="submit" value="Signup">
 
diff --git a/app/views/user/view.rhtml b/app/views/user/view.rhtml
new file mode 100644 (file)
index 0000000..34a30dd
--- /dev/null
@@ -0,0 +1,13 @@
+<h2><%= @this_user.display_name %></h2>
+<% if @this_user.id == @user.id %>
+  <%= link_to 'go to your account page', :controller => 'user', :action => 'account', :display_name => @user.display_name %><br /><br />
+<% else %>
+  <%= link_to 'send message', :controller => 'user', :action => 'message', :display_name => @user.display_name %><br /><br /> |
+  <%= link_to 'Add as friend', :controller => 'user', :action => 'make_friend', :display_name => @user.display_name %><br /><br />
+<% end %>
+
+<%= link_to 'diary', :controller => 'user', :action => 'diary', :display_name => @user.display_name %><br /><br />
+
+<%= simple_format(@this_user.description) %>
+
+
index 8bfc36388086e2f84c3099864e53f4ae9dbd9c21..ff42dbfa409a754eb0c1a421a22ab73c83df5f89 100644 (file)
@@ -55,7 +55,8 @@ ActionController::Routing::Routes.draw do |map|
   # user pages
   
   map.connect '/user/:display_name', :controller => 'user', :action => 'view'
-  map.connect '/user/:display_name/diary', :controller => 'diary', :action => 'view'
+  map.connect '/user/:display_name/diary', :controller => 'user', :action => 'diary'
+  map.connect '/user/:display_name/diary/newpost', :controller => 'diary_entry', :action => 'new'
   map.connect '/user/:display_name/edit', :controller => 'user', :action => 'edit'
   map.connect '/user/:display_name/account', :controller => 'user', :action => 'account'
 
index 6f7266cefcc39adce6db3ab683604e8fd8469802..dc81e5d0c315d357243161ddfad7ed56ac5ecfe1 100644 (file)
@@ -36,3 +36,8 @@ alter table gpx_files drop column tmpname;
 
 alter table users add column description text not null;
 create table diary_entries(id bigint not null auto_increment, user_id bigint not null, title varchar(255), body text, primary key(id));
+alter table diary_entries add created_at datetime;
+alter table diary_entries add updated_at datetime;
+
+
+