@@ -13,7 +13,7 @@ class PostsController < ApplicationController | |||||
layar_response = { | layar_response = { | ||||
:layer => @layer.layar_name, | :layer => @layer.layar_name, | ||||
:hotspots => @posts.collect { |p| post_to_poi(p) }, | |||||
:hotspots => @posts.collect { |p| post_to_poi(p, Subscription.where(:feed_id => p.feed_id, :layer_id => @layer.id).first) }, | |||||
:errorCode => 0, # OK | :errorCode => 0, # OK | ||||
:errorString => "OK", | :errorString => "OK", | ||||
:radius => params[:radius].to_f | :radius => params[:radius].to_f | ||||
@@ -33,6 +33,28 @@ class SubscriptionsController < ApplicationController | |||||
end | end | ||||
end | end | ||||
# GET /subscriptions/1/edit | |||||
def edit | |||||
@subscription = Subscription.find(params[:id]) | |||||
end | |||||
# PUT /subscriptions/1 | |||||
# PUT /subscriptions/1.json | |||||
def update | |||||
@subscription = Subscription.find(params[:id]) | |||||
respond_to do |format| | |||||
if @subscription.update_attributes(params[:subscription]) | |||||
format.html { redirect_to @subscription.layer, notice: 'Subscription updated OK' } | |||||
format.json { head :no_content } | |||||
else | |||||
format.html { render action: "edit" } | |||||
format.json { render json: @subscription.errors, status: :unprocessable_entity } | |||||
end | |||||
end | |||||
end | |||||
def destroy | def destroy | ||||
@subscription = Subscription.find(params[:id]) | @subscription = Subscription.find(params[:id]) | ||||
@layer = @subscription.layer | @layer = @subscription.layer | ||||
@@ -1,8 +1,8 @@ | |||||
module PostsHelper | module PostsHelper | ||||
def post_to_poi(post) | |||||
def post_to_poi(post, subscription) | |||||
# http://layar.com/documentation/browser/api/getpois-response/ | # http://layar.com/documentation/browser/api/getpois-response/ | ||||
{ | { | ||||
:id => post._id, | |||||
:id => post.id, | |||||
:imageURL => "%s%s/assets/layar-icons/tal-logo-100.png" % [ request.protocol, request.env['HTTP_HOST'] ], | :imageURL => "%s%s/assets/layar-icons/tal-logo-100.png" % [ request.protocol, request.env['HTTP_HOST'] ], | ||||
:anchor => { | :anchor => { | ||||
:geolocation => { | :geolocation => { | ||||
@@ -23,8 +23,14 @@ module PostsHelper | |||||
:contentType => "text/html", | :contentType => "text/html", | ||||
:method => "GET", | :method => "GET", | ||||
:activityType => 1 | :activityType => 1 | ||||
} | |||||
] | |||||
}, | |||||
], | |||||
:object => { | |||||
:contentType => "image/vnd.layar.generic", | |||||
:url => subscription.icon_url, | |||||
:reducedURL => subscription.icon_url, | |||||
:size => 120 | |||||
} | |||||
} | } | ||||
end | end | ||||
@@ -23,6 +23,7 @@ class Post < ActiveRecord::Base | |||||
p.lat, | p.lat, | ||||
p.lon, | p.lon, | ||||
p.published, | p.published, | ||||
p.feed_id, | |||||
f.title as feed_title, | f.title as feed_title, | ||||
( #{EARTH_RADIUS_METRES} | ( #{EARTH_RADIUS_METRES} | ||||
* acos( cos( radians('#{lat}') ) | * acos( cos( radians('#{lat}') ) | ||||
@@ -40,7 +40,12 @@ | |||||
%td= link_to "Fetch", fetch_feed_url(s.feed), :class => "button" | %td= link_to "Fetch", fetch_feed_url(s.feed), :class => "button" | ||||
%td= link_to 'Edit', edit_feed_path(s.feed), :class => "button" | %td= link_to 'Edit', edit_feed_path(s.feed), :class => "button" | ||||
%td= link_to 'Delete', s, :confirm => "Delete #{s.feed.title}?", :method => :delete, :class => "button" | %td= link_to 'Delete', s, :confirm => "Delete #{s.feed.title}?", :method => :delete, :class => "button" | ||||
%td= link_to 'Edit icon', edit_subscription_path(s), :class => "button" | |||||
%td | |||||
- unless s.icon_url.nil? | |||||
= image_tag s.icon_url | |||||
- else | |||||
| |||||
%tr | %tr | ||||
%td | %td | ||||
%td.right= @layer_posts | %td.right= @layer_posts | ||||
@@ -0,0 +1,21 @@ | |||||
%h1 Custom feed icon | |||||
%p | |||||
Layer: | |||||
= link_to @subscription.layer.name, @subscription.layer | |||||
%p Specify the URL for an icon (JPG or PNG image) and it'll display for all posts in this feed in Layar. | |||||
= form_for @subscription do |f| | |||||
-if @subscription.errors.any? | |||||
#error_explanation | |||||
%h2= "#{pluralize(@subscription.errors.count, "error")} prohibited this feed from being saved:" | |||||
%ul | |||||
- @subscription.errors.full_messages.each do |msg| | |||||
%li= msg | |||||
.field | |||||
= f.label "Icon URL" | |||||
= f.text_field :icon_url, :size => 120 | |||||
= f.submit 'Save', :id => 'submit' |
@@ -0,0 +1,3 @@ | |||||
= render 'icon_form' | |||||
= link_to 'Back', layer_path(@subscription.layer) |
@@ -0,0 +1,5 @@ | |||||
class AddIconUrlToSubscriptions < ActiveRecord::Migration | |||||
def change | |||||
add_column :subscriptions, :icon_url, :string | |||||
end | |||||
end |
@@ -11,7 +11,7 @@ | |||||
# | # | ||||
# It's strongly recommended to check this file into your version control system. | # It's strongly recommended to check this file into your version control system. | ||||
ActiveRecord::Schema.define(:version => 20130408142010) do | |||||
ActiveRecord::Schema.define(:version => 20130410153407) do | |||||
create_table "delayed_jobs", :force => true do |t| | create_table "delayed_jobs", :force => true do |t| | ||||
t.integer "priority", :default => 0 | t.integer "priority", :default => 0 | ||||
@@ -66,6 +66,7 @@ ActiveRecord::Schema.define(:version => 20130408142010) do | |||||
t.integer "layer_id" | t.integer "layer_id" | ||||
t.datetime "created_at" | t.datetime "created_at" | ||||
t.datetime "updated_at" | t.datetime "updated_at" | ||||
t.string "icon_url" | |||||
end | end | ||||
add_index "subscriptions", ["feed_id", "layer_id"], :name => "index_feeds_layers_on_feed_id_and_layer_id", :unique => true | add_index "subscriptions", ["feed_id", "layer_id"], :name => "index_feeds_layers_on_feed_id_and_layer_id", :unique => true | ||||