add tags to gpx files
authorSteve Coast <steve@asklater.com>
Wed, 6 Dec 2006 17:10:59 +0000 (17:10 +0000)
committerSteve Coast <steve@asklater.com>
Wed, 6 Dec 2006 17:10:59 +0000 (17:10 +0000)
app/controllers/trace_controller.rb
app/controllers/tracetag_controller.rb [new file with mode: 0644]
app/helpers/tracetag_helper.rb [new file with mode: 0644]
app/models/trace.rb
app/models/tracetag.rb [new file with mode: 0644]
app/views/trace/mine.rhtml
db/migrate.sql
db/migrate/016_create_tracetags.rb [new file with mode: 0644]

index 06db32248229e3b139927f7a3b966ed5f7ecd02d..f7f323e9c5af550a7284b7c63f6f4598a82c102e 100644 (file)
@@ -3,7 +3,7 @@ class TraceController < ApplicationController
   layout 'site'
 
   def list
-    @traces = Trace.find(:all)
+    @traces = Trace.find(:all, :conditions => ['public = true'])
   end
 
   def mine
@@ -12,7 +12,11 @@ class TraceController < ApplicationController
 
   def view
     @trace = Trace.find(params[:id])
-    render :nothing, :status => 401 if @trace.user.id != @user.id
+    unless @trace.public
+      if @user
+        render :nothing, :status => 401 if @trace.user.id != @user.id
+      end
+    end
   end
 
   def create
diff --git a/app/controllers/tracetag_controller.rb b/app/controllers/tracetag_controller.rb
new file mode 100644 (file)
index 0000000..ec44ee0
--- /dev/null
@@ -0,0 +1,2 @@
+class TracetagController < ApplicationController
+end
diff --git a/app/helpers/tracetag_helper.rb b/app/helpers/tracetag_helper.rb
new file mode 100644 (file)
index 0000000..c1479e1
--- /dev/null
@@ -0,0 +1,2 @@
+module TracetagHelper
+end
index 014db4ae2640057ff146bf943f4a32ebcf83a04c..06e3dc1a12acd20974dba790080a535bffbef2df 100644 (file)
@@ -2,10 +2,13 @@ class Trace < ActiveRecord::Base
   set_table_name 'gpx_files'
 
   belongs_to :user
+  has_many :tags, :class_name => 'Tracetag', :foreign_key => 'gpx_id'
 
-  def tags=(bleh)
-  end
-
-  def mime_type=(bleh)
+  def tagstring=(s)
+    self.tags = s.split().collect {|tag|
+      tt = Tracetag.new
+      tt.tag = tag
+      tt
+    }
   end
 end
diff --git a/app/models/tracetag.rb b/app/models/tracetag.rb
new file mode 100644 (file)
index 0000000..d74a1e7
--- /dev/null
@@ -0,0 +1,6 @@
+class Tracetag < ActiveRecord::Base
+  set_table_name 'gpx_file_tags'
+
+  belongs_to :trace, :foreign_key => 'gpx_id'
+
+end
index d651d1e8b66bf80893ea51ff0ad46c0e1576a720..997e2c297821670353650da22154bf2e41cd05d7 100644 (file)
@@ -8,7 +8,7 @@
 <table>
 <tr><td align="right">upload GPX file:</td><td><%= file_field('trace', 'gpx_file', {:size => 50, :maxlength => 255}) %></td></tr>
 <tr><td align="right">description:</td><td><%= text_field('trace', 'description', {:size => 50, :maxlength => 255}) %></td></tr>
-<tr><td align="right">tags:</td><td><%= text_field('trace', 'tags', {:size => 50, :maxlength => 255}) %></td></tr>
+<tr><td align="right">tags:</td><td><%= text_field('trace', 'tagstring', {:size => 50, :maxlength => 255}) %></td></tr>
 <tr><td align="right">public?</td><td><%= check_box('trace', 'public', {:checked => 'checked'}) %></td></tr>
 <tr><td></td><td>
 <%= submit_tag 'Upload' %> | <a href="http://wiki.openstreetmap.org/index.php/Upload">help</a>
index 0bf3c3a909d770072386629fe730ee42fab6de5d..92ae6b1711a23f393e48940fd0d7e1948c886601 100644 (file)
@@ -18,3 +18,9 @@ alter table current_way_tags change v v varchar(255) not null default '';
 alter table gpx_files change private public boolean default 1 not null;
 update gpx_files set public = !public;
 
+alter table gpx_file_tags change sequence_id sequence_id int(11);
+alter table gpx_file_tags drop primary key;
+alter table gpx_file_tags drop column sequence_id;
+create index gpx_file_tags_gpxid_idx on gpx_file_tags(gpx_id);
+alter table gpx_file_tags add id int(20) auto_increment not null, add primary key(id);
+
diff --git a/db/migrate/016_create_tracetags.rb b/db/migrate/016_create_tracetags.rb
new file mode 100644 (file)
index 0000000..5ab5749
--- /dev/null
@@ -0,0 +1,11 @@
+class CreateTracetags < ActiveRecord::Migration
+  def self.up
+    create_table :tracetags do |t|
+      # t.column :name, :string
+    end
+  end
+
+  def self.down
+    drop_table :tracetags
+  end
+end