From a912b4719621fb1fdeeacdcd643d3f1b3ff601bf Mon Sep 17 00:00:00 2001 From: Omar Ali Date: Tue, 14 Aug 2012 17:37:05 -0700 Subject: [PATCH] added tracking versions to graphs, nodes --- Gemfile.lock | 6 ++++-- app/controllers/graphs_controller.rb | 5 +++++ app/controllers/nodes_controller.rb | 5 +++++ app/models/graph.rb | 2 ++ app/models/node.rb | 2 ++ app/views/graphs/versions.html.erb | 2 ++ app/views/nodes/versions.html.erb | 0 config/routes.rb | 2 ++ db/migrate/20120814002222_create_versions.rb | 18 ++++++++++++++++++ db/schema.rb | 13 ++++++++++++- 10 files changed, 52 insertions(+), 3 deletions(-) create mode 100644 app/views/graphs/versions.html.erb create mode 100644 app/views/nodes/versions.html.erb create mode 100644 db/migrate/20120814002222_create_versions.rb diff --git a/Gemfile.lock b/Gemfile.lock index ff111ea..5a7b0c6 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -79,6 +79,9 @@ GEM mime-types (1.19) multi_json (1.3.6) nokogiri (1.5.5) + paper_trail (2.6.3) + activerecord (~> 3.0) + railties (~> 3.0) pg (0.14.0) polyglot (0.3.3) rack (1.4.1) @@ -131,7 +134,6 @@ GEM hike (~> 1.2) rack (~> 1.0) tilt (~> 1.1, != 1.3.0) - sqlite3 (1.3.5) therubyracer (0.10.2) libv8 (~> 3.3.10) thor (0.14.6) @@ -157,10 +159,10 @@ DEPENDENCIES database_cleaner dynamic_form jquery-rails + paper_trail pg rails (= 3.2.3) rspec-rails (~> 2.0) rufus-scheduler (~> 2.0.17) - sqlite3 (= 1.3.5) therubyracer uglifier (>= 1.0.3) diff --git a/app/controllers/graphs_controller.rb b/app/controllers/graphs_controller.rb index d672208..96f5307 100644 --- a/app/controllers/graphs_controller.rb +++ b/app/controllers/graphs_controller.rb @@ -115,4 +115,9 @@ def groups_widget render :partial => "groups_widget", :layout => false#, :layout => !request.xhr? end + + def versions + @graphs = Graph.find(params[:graph_id]).versions.map { |v| v.item } + render 'index' + end end diff --git a/app/controllers/nodes_controller.rb b/app/controllers/nodes_controller.rb index 19834fd..b362fe4 100644 --- a/app/controllers/nodes_controller.rb +++ b/app/controllers/nodes_controller.rb @@ -130,4 +130,9 @@ def node_widget render :partial => 'node_widget' end + + def versions + @nodes = Node.find(params[:id]).versions.map { |v| v.item } + render 'index' + end end diff --git a/app/models/graph.rb b/app/models/graph.rb index 1571dd5..2b72683 100644 --- a/app/models/graph.rb +++ b/app/models/graph.rb @@ -14,6 +14,8 @@ class Graph < ActiveRecord::Base # Validations validates :name, :presence => true, :uniqueness => true + has_paper_trail + def all_subgraphs_naive return [] if subgraphs.nil? result = subgraphs diff --git a/app/models/node.rb b/app/models/node.rb index 068d0ec..032b02f 100644 --- a/app/models/node.rb +++ b/app/models/node.rb @@ -21,6 +21,8 @@ class Node < ActiveRecord::Base # Validations validates :title, :presence => true, :uniqueness => true + has_paper_trail + def related_nodes related_nodes_A | related_nodes_B end diff --git a/app/views/graphs/versions.html.erb b/app/views/graphs/versions.html.erb new file mode 100644 index 0000000..98b315d --- /dev/null +++ b/app/views/graphs/versions.html.erb @@ -0,0 +1,2 @@ +<%= render :partial => "application/flash", :locals => { :flash => flash } %> + diff --git a/app/views/nodes/versions.html.erb b/app/views/nodes/versions.html.erb new file mode 100644 index 0000000..e69de29 diff --git a/config/routes.rb b/config/routes.rb index 14c5261..59c23d6 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -8,11 +8,13 @@ resources :graphs do get "groups_widget" => "graphs#groups_widget", :as => "groups_widget" + get "versions" => "graphs#versions", :as => "graph_versions" end resources :nodes do get "learning_path" => "nodes#learning_path", :as => "learning_path" get "node_widget" => "nodes#node_widget", :as => "node_widget" + get "versions" => "nodes#versions", :as => "node_versions" end resources :courses do diff --git a/db/migrate/20120814002222_create_versions.rb b/db/migrate/20120814002222_create_versions.rb new file mode 100644 index 0000000..701f7ea --- /dev/null +++ b/db/migrate/20120814002222_create_versions.rb @@ -0,0 +1,18 @@ +class CreateVersions < ActiveRecord::Migration + def self.up + create_table :versions do |t| + t.string :item_type, :null => false + t.integer :item_id, :null => false + t.string :event, :null => false + t.string :whodunnit + t.text :object + t.datetime :created_at + end + add_index :versions, [:item_type, :item_id] + end + + def self.down + remove_index :versions, [:item_type, :item_id] + drop_table :versions + end +end diff --git a/db/schema.rb b/db/schema.rb index eed734d..a28ca61 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,7 +11,7 @@ # # It's strongly recommended to check this file into your version control system. -ActiveRecord::Schema.define(:version => 20120809211628) do +ActiveRecord::Schema.define(:version => 20120814002222) do create_table "actions", :force => true do |t| t.integer "user_id" @@ -127,4 +127,15 @@ t.boolean "track", :default => true end + create_table "versions", :force => true do |t| + t.string "item_type", :null => false + t.integer "item_id", :null => false + t.string "event", :null => false + t.string "whodunnit" + t.text "object" + t.datetime "created_at" + end + + add_index "versions", ["item_type", "item_id"], :name => "index_versions_on_item_type_and_item_id" + end