ability to make trace public
authorSteve Coast <steve@asklater.com>
Sat, 7 Apr 2007 17:14:53 +0000 (17:14 +0000)
committerSteve Coast <steve@asklater.com>
Sat, 7 Apr 2007 17:14:53 +0000 (17:14 +0000)
app/controllers/trace_controller.rb
app/views/trace/view.rhtml

index fd9e2af2532a20c3483f160bf4e15ef15ab560f2..3614dadde46d54b2a51b133ff48861fcb9a32cef 100644 (file)
@@ -125,6 +125,16 @@ class TraceController < ApplicationController
     end
   end
 
+  def make_public
+    trace = Trace.find(params[:id])
+    if @user and trace.user == @user and !trace.public
+      trace.public = true
+      trace.save
+      flash[:notice] = 'Track made public'
+      redirect_to :controller => 'trace', :action => 'view', :id => params[:id]
+    end
+  end
+
   def georss
     traces = Trace.find(:all, :conditions => ['public = true'], :order => 'timestamp DESC', :limit => 20)
 
@@ -142,11 +152,11 @@ class TraceController < ApplicationController
 
   def picture
     trace = Trace.find(params[:id])
-    send_data(trace.large_picture, :filename => "#{trace.id}.gif", :type => 'image/gif', :disposition => 'inline') if trace.public?
+    send_data(trace.large_picture, :filename => "#{trace.id}.gif", :type => 'image/gif', :disposition => 'inline') if trace.public? or (@user and @user == trace.user)
   end
 
   def icon
     trace = Trace.find(params[:id])
-    send_data(trace.icon_picture, :filename => "#{trace.id}_icon.gif", :type => 'image/gif', :disposition => 'inline') if trace.public?
+    send_data(trace.icon_picture, :filename => "#{trace.id}_icon.gif", :type => 'image/gif', :disposition => 'inline') if trace.public? or (@user and @user == trace.user)
   end
 end
index 63b1b7e004542b4ccef21cbd7ed3ca9ca8160932..8defc69ee69f9950aa3603f73f731624a71446fc 100644 (file)
     <% end %>
   </td></tr>
 </table>
+
+<% unless @trace.public? %>
+  <br /><br />
+  <%= start_form_tag :controller => 'trace', :action => 'make_public', :id => @trace.id%>
+  <%= submit_tag 'Make this track public permanently' %>
+  <%= end_form_tag %>
+<% end %>