From 3b6d2c5336eac35912909c9102c77bf6472901e6 Mon Sep 17 00:00:00 2001 From: Richard Fairhurst Date: Thu, 21 Aug 2008 21:40:23 +0000 Subject: [PATCH] edit diary entries --- app/controllers/diary_entry_controller.rb | 19 +++++- app/views/diary_entry/_diary_entry.rhtml | 6 +- app/views/diary_entry/edit.rhtml | 79 +++++++++++++++++++++++ config/routes.rb | 1 + 4 files changed, 103 insertions(+), 2 deletions(-) create mode 100644 app/views/diary_entry/edit.rhtml diff --git a/app/controllers/diary_entry_controller.rb b/app/controllers/diary_entry_controller.rb index c0d7204d5..0ad71da17 100644 --- a/app/controllers/diary_entry_controller.rb +++ b/app/controllers/diary_entry_controller.rb @@ -2,7 +2,7 @@ class DiaryEntryController < ApplicationController layout 'site', :except => :rss before_filter :authorize_web - before_filter :require_user, :only => [:new] + before_filter :require_user, :only => [:new, :edit] before_filter :check_database_availability def new @@ -16,6 +16,23 @@ class DiaryEntryController < ApplicationController end end + def edit + @title= 'edit diary entry' + @diary_entry = DiaryEntry.find(params[:id]) + if @user != @diary_entry.user + redirect_to :controller => 'diary_entry', :action => 'view', :id => params[:id] + end + if params[:diary_entry] + @diary_entry.title = params[:diary_entry][:title] + @diary_entry.body = params[:diary_entry][:body] + @diary_entry.latitude = params[:diary_entry][:latitude] + @diary_entry.longitude = params[:diary_entry][:longitude] + if @diary_entry.save + redirect_to :controller => 'diary_entry', :action => 'view', :id => params[:id] + end + end + end + def comment @entry = DiaryEntry.find(params[:id]) @diary_comment = @entry.diary_comments.build(params[:diary_comment]) diff --git a/app/views/diary_entry/_diary_entry.rhtml b/app/views/diary_entry/_diary_entry.rhtml index 372ec35f7..fe73155ac 100644 --- a/app/views/diary_entry/_diary_entry.rhtml +++ b/app/views/diary_entry/_diary_entry.rhtml @@ -3,13 +3,17 @@ <% if diary_entry.latitude and diary_entry.longitude %> Coordinates:
<%= diary_entry.latitude %>; <%= diary_entry.longitude %>
(<%=link_to 'map', :controller => 'site', :action => 'index', :lat => diary_entry.latitude, :lon => diary_entry.longitude, :zoom => 14 %> / <%=link_to 'edit', :controller => 'site', :action => 'edit', :lat => diary_entry.latitude, :lon => diary_entry.longitude, :zoom => 14 %>)
<% end %> -Posted by <%= link_to h(diary_entry.user.display_name), :controller => 'user', :action => 'view', :display_name => diary_entry.user.display_name %> at <%= diary_entry.created_at %>
+Posted by <%= link_to h(diary_entry.user.display_name), :controller => 'user', :action => 'view', :display_name => diary_entry.user.display_name %> at <%= diary_entry.created_at %> <% if params[:action] == 'list' %> +
<%= link_to 'Comment on this entry', :action => 'view', :display_name => diary_entry.user.display_name, :id => diary_entry.id, :anchor => 'newcomment' %> | <%= link_to 'Reply to this entry', :controller => 'message', :action => 'new', :user_id => diary_entry.user.id, :title => "Re: #{diary_entry.title}" %> | <%= link_to pluralize(diary_entry.diary_comments.count, "comment"), :action => 'view', :display_name => diary_entry.user.display_name, :id => diary_entry.id, :anchor => 'comments' %> <% end %> +<% if @user == diary_entry.user %> +| <%= link_to 'Edit this entry', :action => 'edit', :display_name => @user.display_name, :id => diary_entry.id %> +<% end %>

diff --git a/app/views/diary_entry/edit.rhtml b/app/views/diary_entry/edit.rhtml new file mode 100644 index 000000000..0a5203a66 --- /dev/null +++ b/app/views/diary_entry/edit.rhtml @@ -0,0 +1,79 @@ +<%= error_messages_for 'diary_entry' %> + +<% form_for :diary_entry do |f| %> + + + + + + + + + + + + + + + + + +
Subject<%= f.text_field :title, :size => 60 %>
Body<%= f.text_area :body, :cols => 80 %>
Location + + Latitude: <%= f.text_field :latitude, :size => 20, :id => "latitude" %> Longitude: <%= f.text_field :longitude, :size => 20, :id => "longitude" %> + use map +
<%= submit_tag 'Save' %>
+<% end %> + +<% if @user.home_lat.nil? or @user.home_lon.nil? %> + <% lon = h(params['lon'] || '-0.1') %> + <% lat = h(params['lat'] || '51.5') %> + <% zoom = h(params['zoom'] || '4') %> +<% else %> + <% lon = @user.home_lon %> + <% lat = @user.home_lat %> + <% zoom = '12' %> +<% end %> + +<%= javascript_include_tag '/openlayers/OpenLayers.js' %> +<%= javascript_include_tag '/openlayers/OpenStreetMap.js' %> +<%= javascript_include_tag 'map.js' %> + + diff --git a/config/routes.rb b/config/routes.rb index 4a9d0173d..7a06445ea 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -130,6 +130,7 @@ ActionController::Routing::Routes.draw do |map| map.connect '/user/:display_name/diary/:id/newcomment', :controller => 'diary_entry', :action => 'comment', :id => /\d+/ map.connect '/user/:display_name/diary/rss', :controller => 'diary_entry', :action => 'rss' map.connect '/user/:display_name/diary/newpost', :controller => 'diary_entry', :action => 'new' + map.connect '/user/:display_name/diary/:id/edit', :controller => 'diary_entry', :action => 'edit', :id => /\d+/ map.connect '/user/:display_name/account', :controller => 'user', :action => 'account' map.connect '/user/:display_name/set_home', :controller => 'user', :action => 'set_home' map.connect '/diary', :controller => 'diary_entry', :action => 'list' -- 2.43.2