add metadata field to channels

This commit is contained in:
Lee Lawlor 2014-06-30 13:16:22 -04:00
parent 0cf413c724
commit 0f0ff33b54
22 changed files with 154 additions and 15 deletions

View File

@ -51,6 +51,7 @@ body { padding-top: 70px; }
.format-json,
.format-xml { display: none; }
.format-block { min-height: 200px; }
.format-block-sm { min-height: 50px; }
.format-block-lg { min-height: 350px; }
.format-block-xl { min-height: 400px; }
.format-block-xxl { min-height: 600px; }

View File

@ -531,7 +531,7 @@ class ChannelsController < ApplicationController
# only allow these params
def channel_params
params.require(:channel).permit(:name, :url, :description, :latitude, :longitude, :field1, :field2, :field3, :field4, :field5, :field6, :field7, :field8, :elevation, :public_flag, :status, :video_id, :video_type)
params.require(:channel).permit(:name, :url, :description, :metadata, :latitude, :longitude, :field1, :field2, :field3, :field4, :field5, :field6, :field7, :field8, :elevation, :public_flag, :status, :video_id, :video_type)
end
# determine if the date can be parsed

View File

@ -34,12 +34,12 @@ class FeedController < ApplicationController
# set output correctly
if params[:format] == 'xml'
@channel_output = channel.to_xml(channel.select_options).sub('</channel>', '').strip
@channel_output = channel.to_xml(channel.select_options(params)).sub('</channel>', '').strip
@feed_output = feeds.to_xml(:skip_instruct => true).gsub(/\n/, "\n ").chop.chop
elsif params[:format] == 'csv'
@feed_output = feeds
else
@channel_output = channel.to_json(channel.select_options).chop
@channel_output = channel.to_json(channel.select_options(params)).chop
@feed_output = feeds.to_json(:only => feed_factory.feed_select_options)
end
@ -246,7 +246,7 @@ class FeedController < ApplicationController
@time_after_sort = Time.now
@channel_output = channel.to_json(channel.select_options).chop
@channel_output = channel.to_json(channel.select_options(params)).chop
@feed_output = feeds.to_json
@time_after_json = Time.now

View File

@ -47,6 +47,7 @@
# ranking :integer
# user_agent :string(255)
# realtime_io_serial_number :string(36)
# metadata :text
#
class Channel < ActiveRecord::Base
@ -98,9 +99,10 @@ class Channel < ActiveRecord::Base
end
# select options
def select_options
def select_options(options = nil)
only = [:name, :created_at, :updated_at, :id, :last_entry_id]
only += [:description] unless self.description.blank?
only += [:metadata] if options.present? && options[:metadata] == 'true'
only += [:latitude] unless self.latitude.blank?
only += [:longitude] unless self.longitude.blank?
only += [:elevation] unless self.elevation.blank?
@ -179,7 +181,7 @@ class Channel < ActiveRecord::Base
def self.private_options
{
:root => false,
:only => [:id, :name, :description, :latitude, :longitude, :last_entry_id, :elevation, :created_at, :ranking],
:only => [:id, :name, :description, :metadata, :latitude, :longitude, :last_entry_id, :elevation, :created_at, :ranking],
:methods => :username,
:include => {
:tags => {:only => [:id, :name]},

View File

@ -29,6 +29,10 @@
<td class="left"><%= t(:channel_description) %></td>
<td><%= c.text_area :description, :cols => 30, :rows => 4 %></td>
</tr>
<tr>
<td class="left"><%= t(:metadata).capitalize %></td>
<td><%= c.text_area :metadata, :cols => 30, :rows => 4 %></td>
</tr>
<%= fields_for :tags do |t| %>
<tr>
<td class="left"><%= t(:tags) %></td>

View File

@ -22,6 +22,7 @@ Valid parameters:
<li><b>field8</b> (string) - Field8 name (optional)</li>
<li><b>latitude</b> (decimal) - Latitude in degrees (optional)</li>
<li><b>longitude</b> (decimal) - Longitude in degrees (optional)</li>
<li><b>metadata</b> (text) - Metadata for the Channel, which can include JSON, XML, or any other data (optional)</li>
<li><b>name</b> (string) - Name of the Channel (optional)</li>
<li><b>public_flag</b> (true/false) - Whether the Channel should be public, default false (optional)</li>
<li><b>tags</b> (string) - Comma-separated list of tags (optional)</li>
@ -39,11 +40,11 @@ POST <span class="str"><%= @ssl_api_domain %>channels<span class="format format-
<br>
<div class="format format-block-xl format-text">
<div class="format format-block-xxl format-text">
The response will be a webpage with your newly created Channel.
</div>
<div class="format format-block-xl format-json">
<div class="format format-block-xxl format-json">
The response will be a JSON object of the new channel, for example:
<pre class="prettyprint">
@ -51,6 +52,7 @@ POST <span class="str"><%= @ssl_api_domain %>channels<span class="format format-
"id": 4,
"name": "My New Channel",
"description": null,
"metadata": null,
"latitude": null,
"longitude": null,
"created_at": "2014-03-25T13:12:50-04:00",
@ -71,7 +73,7 @@ POST <span class="str"><%= @ssl_api_domain %>channels<span class="format format-
</div>
<div class="format format-block-xl format-xml">
<div class="format format-block-xxl format-xml">
The response will be an XML object of the new channel, for example:
<pre class="prettyprint">
@ -80,6 +82,7 @@ POST <span class="str"><%= @ssl_api_domain %>channels<span class="format format-
&lt;id type="integer">4&lt;/id>
&lt;name>My New Channel&lt;/name>
&lt;description nil="true" />
&lt;metadata nil="true" />
&lt;latitude type="decimal" nil="true" />
&lt;longitude type="decimal" nil="true" />
&lt;created-at type="dateTime">2014-03-25T20:17:44-04:00&lt;/created-at>

View File

@ -18,6 +18,7 @@ Valid parameters:
<li><b>timezone</b> (string) <a href="/docs#timezones">Timezone identifier</a> for this request (optional)</li>
<li><b>offset</b> (integer) Timezone offset that results should be displayed in. Please use the <a href="/docs#timezones">timezone</a> parameter for greater accuracy. (optional)</li>
<li><b>status</b> (true/false) Include status updates in feed by setting "status=true" (optional)</li>
<li><b>metadata</b> (true/false) Include Channel's metadata by setting "metadata=true" (optional)</li>
<li><b>location</b> (true/false) Include latitude, longitude, and elevation in feed by setting "location=true" (optional)</li>
<li><b>min</b> (decimal) Minimum value to include in response (optional)</li>
<li><b>max</b> (decimal) Maximum value to include in response (optional)</li>

View File

@ -18,6 +18,7 @@ Valid parameters:
<li><b>timezone</b> (string) <a href="/docs#timezones">Timezone identifier</a> for this request (optional)</li>
<li><b>offset</b> (integer) Timezone offset that results should be displayed in. Please use the <a href="/docs#timezones">timezone</a> parameter for greater accuracy. (optional)</li>
<li><b>status</b> (true/false) Include status updates in feed by setting "status=true" (optional)</li>
<li><b>metadata</b> (true/false) Include Channel's metadata by setting "metadata=true" (optional)</li>
<li><b>location</b> (true/false) Include latitude, longitude, and elevation in feed by setting "location=true" (optional)</li>
<li><b>min</b> (decimal) Minimum value to include in response (optional)</li>
<li><b>max</b> (decimal) Maximum value to include in response (optional)</li>
@ -166,8 +167,12 @@ Valid parameters:
<li><b>status</b> (true/false) Include status updates in feed by setting "status=true" (optional)</li>
<li><b>location</b> (true/false) Include latitude, longitude, and elevation in feed by setting "location=true" (optional)</li>
<li><b>callback</b> (string) Function name to be used for JSONP cross-domain requests (optional)</li>
<li class="format format-text"><b>prepend</b> (string) Text to add before the API response (optional)</li>
<li class="format format-text"><b>append</b> (string) Text to add after the API response (optional)</li>
<div class="format format-block-sm format-text">
<li><b>prepend</b> (string) Text to add before the API response (optional)</li>
<li><b>append</b> (string) Text to add after the API response (optional)</li>
</div>
<div class="format format-block-sm format-json"></div>
<div class="format format-block-sm format-xml"></div>
</ul>
<br>

View File

@ -178,6 +178,7 @@ en:
member_since: "Member since"
message: 'message'
message_field: "Message Field"
metadata: 'metadata'
myaccount: "My Account"
mychannels: "My Channels"
new: "New"

View File

@ -0,0 +1,6 @@
class AddMetadataToChannels < ActiveRecord::Migration
def change
add_column :channels, :metadata, :text
end
end

View File

@ -11,7 +11,7 @@
#
# It's strongly recommended that you check this file into your version control system.
ActiveRecord::Schema.define(version: 20140516162515) do
ActiveRecord::Schema.define(version: 20140630153108) do
create_table "active_admin_comments", force: true do |t|
t.string "namespace"
@ -104,6 +104,7 @@ ActiveRecord::Schema.define(version: 20140516162515) do
t.integer "ranking"
t.string "user_agent"
t.string "realtime_io_serial_number", limit: 36
t.text "metadata"
end
add_index "channels", ["public_flag", "last_entry_id", "updated_at"], name: "channels_public_viewable", using: :btree

File diff suppressed because one or more lines are too long

Binary file not shown.

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Binary file not shown.

File diff suppressed because one or more lines are too long

View File

@ -48,6 +48,7 @@
# ranking :integer
# user_agent :string(255)
# realtime_io_serial_number :string(36)
# metadata :text
#
require 'spec_helper'