| @@ -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 | ||||