From 2cf04f96cb83784bdb01c46c5a405e67c5b362d8 Mon Sep 17 00:00:00 2001 From: Connor Turland Date: Wed, 26 Feb 2014 12:23:29 -0800 Subject: [PATCH] removed last_edited from map model, and set up code to update map updated_at column whenever certain events happen that update the map --- app/controllers/mappings_controller.rb | 1 + app/controllers/maps_controller.rb | 1 + app/controllers/synapses_controller.rb | 9 ++++++++- app/controllers/topics_controller.rb | 12 +++++++++++- app/models/map.rb | 12 ------------ app/views/maps/_homemap.html.erb | 2 +- app/views/maps/_mapinfobox.html.erb | 2 +- 7 files changed, 23 insertions(+), 16 deletions(-) diff --git a/app/controllers/mappings_controller.rb b/app/controllers/mappings_controller.rb index b0a5f03c..c8e2c07f 100644 --- a/app/controllers/mappings_controller.rb +++ b/app/controllers/mappings_controller.rb @@ -25,6 +25,7 @@ class MappingsController < ApplicationController if params[:map] if params[:map][:id] @map = Map.find(params[:map][:id]) + @map.touch(:updated_at) @mapping.map = @map end end diff --git a/app/controllers/maps_controller.rb b/app/controllers/maps_controller.rb index 9085127b..a5ef3c6b 100644 --- a/app/controllers/maps_controller.rb +++ b/app/controllers/maps_controller.rb @@ -217,6 +217,7 @@ class MapsController < ApplicationController end end @map.arranged = true + @map.touch(:updated_at) @map.save end end diff --git a/app/controllers/synapses_controller.rb b/app/controllers/synapses_controller.rb index 74b67b3b..8d667a1d 100644 --- a/app/controllers/synapses_controller.rb +++ b/app/controllers/synapses_controller.rb @@ -41,6 +41,8 @@ class SynapsesController < ApplicationController if params[:synapse][:map] @map = Map.find(params[:synapse][:map]) + @map.touch(:updated_at) + @mapping = Mapping.new() @mapping.category = "Synapse" @mapping.user = @user @@ -104,12 +106,14 @@ class SynapsesController < ApplicationController end end - # POST mappings/:map_id/:synapse_id/removefrommap + # POST synapses/:map_id/:synapse_id/removefrommap def removefrommap @user = current_user @mapping = Mapping.find_by_synapse_id_and_map_id(params[:synapse_id],params[:map_id]) + Map.find(params[:map_id]).touch(:updated_at) + #push notify to anyone viewing same map in realtime (see mapping.rb to understand the 'message' action) @mapping.message 'destroy',@user.id @@ -126,6 +130,9 @@ class SynapsesController < ApplicationController @synapse = Synapse.find(params[:id]).authorize_to_edit(@current) @synapse.mappings.each do |m| + + m.map.touch(:updated_at) + #push notify to anyone viewing same map in realtime (see mapping.rb to understand the 'message' action) m.message 'destroy',@current.id diff --git a/app/controllers/topics_controller.rb b/app/controllers/topics_controller.rb index 06bcb6b7..d16a8f80 100644 --- a/app/controllers/topics_controller.rb +++ b/app/controllers/topics_controller.rb @@ -94,6 +94,7 @@ class TopicsController < ApplicationController @mapping = nil if params[:topic][:map] @map = Map.find(params[:topic][:map]) + @map.touch(:updated_at) @mapping = Mapping.new() @mapping.category = "Topic" @@ -150,12 +151,13 @@ class TopicsController < ApplicationController end end - # GET mappings/:map_id/:topic_id/removefrommap + # POST topics/:map_id/:topic_id/removefrommap def removefrommap @current = current_user @mapping = Mapping.find_by_topic_id_and_map_id(params[:topic_id],params[:map_id]) @map = Map.find(params[:map_id]) + @map.touch(:updated_at) @topic = Topic.find(params[:topic_id]) @mappings = @map.mappings.select{|m| if m.synapse != nil @@ -194,6 +196,10 @@ class TopicsController < ApplicationController @synapses.each do |synapse| synapse.mappings.each do |m| + + @map = m.map + @map.touch(:updated_at) + #push notify to anyone viewing same map in realtime (see mapping.rb to understand the 'message' action) m.message 'destroy',@current.id @@ -204,6 +210,10 @@ class TopicsController < ApplicationController end @mappings.each do |mapping| + + @map = mapping.map + @map.touch(:updated_at) + #push notify to anyone viewing a map with this topic in realtime (see mapping.rb to understand the 'message' action) mapping.message 'destroy',@current.id diff --git a/app/models/map.rb b/app/models/map.rb index 5d305b41..02d5a7b1 100644 --- a/app/models/map.rb +++ b/app/models/map.rb @@ -33,18 +33,6 @@ end return contributors end - #return the date of the last edit (mapping updated) to the map - def last_edited - date = self.created_at - self.mappings.each do |m| - if m.updated_at > date - date = m.updated_at - end - end - - return date - end - ###### JSON ###### #build a json object of a map diff --git a/app/views/maps/_homemap.html.erb b/app/views/maps/_homemap.html.erb index 3f6c0ebd..94472968 100644 --- a/app/views/maps/_homemap.html.erb +++ b/app/views/maps/_homemap.html.erb @@ -22,7 +22,7 @@ <%= best_in_place map, :desc, :type => :textarea, :nil => "Click to add description.", :classes => 'best_in_place_desc' %> - <%= pluralize(map.contributors.count, 'contributor') %>Last edit <%= time_ago_in_words( map.last_edited ) %> ago + <%= pluralize(map.contributors.count, 'contributor') %>Last edit <%= time_ago_in_words( map.updated_at ) %> ago diff --git a/app/views/maps/_mapinfobox.html.erb b/app/views/maps/_mapinfobox.html.erb index 3771aeb3..2a5579e9 100644 --- a/app/views/maps/_mapinfobox.html.erb +++ b/app/views/maps/_mapinfobox.html.erb @@ -37,7 +37,7 @@

Created by <%= @map.user.name %> on <%= @map.created_at.strftime("%m/%d/%Y") %>

-

Last edited <%= @map.last_edited.strftime("%m/%d/%Y") %>

+

Last edited <%= @map.updated_at.strftime("%m/%d/%Y") %>