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-json,
.format-xml { display: none; } .format-xml { display: none; }
.format-block { min-height: 200px; } .format-block { min-height: 200px; }
.format-block-sm { min-height: 50px; }
.format-block-lg { min-height: 350px; } .format-block-lg { min-height: 350px; }
.format-block-xl { min-height: 400px; } .format-block-xl { min-height: 400px; }
.format-block-xxl { min-height: 600px; } .format-block-xxl { min-height: 600px; }

View File

@ -531,7 +531,7 @@ class ChannelsController < ApplicationController
# only allow these params # only allow these params
def channel_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 end
# determine if the date can be parsed # determine if the date can be parsed

View File

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

View File

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

View File

@ -29,6 +29,10 @@
<td class="left"><%= t(:channel_description) %></td> <td class="left"><%= t(:channel_description) %></td>
<td><%= c.text_area :description, :cols => 30, :rows => 4 %></td> <td><%= c.text_area :description, :cols => 30, :rows => 4 %></td>
</tr> </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| %> <%= fields_for :tags do |t| %>
<tr> <tr>
<td class="left"><%= t(:tags) %></td> <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>field8</b> (string) - Field8 name (optional)</li>
<li><b>latitude</b> (decimal) - Latitude in degrees (optional)</li> <li><b>latitude</b> (decimal) - Latitude in degrees (optional)</li>
<li><b>longitude</b> (decimal) - Longitude 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>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>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> <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> <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. The response will be a webpage with your newly created Channel.
</div> </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: The response will be a JSON object of the new channel, for example:
<pre class="prettyprint"> <pre class="prettyprint">
@ -51,6 +52,7 @@ POST <span class="str"><%= @ssl_api_domain %>channels<span class="format format-
"id": 4, "id": 4,
"name": "My New Channel", "name": "My New Channel",
"description": null, "description": null,
"metadata": null,
"latitude": null, "latitude": null,
"longitude": null, "longitude": null,
"created_at": "2014-03-25T13:12:50-04:00", "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>
<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: The response will be an XML object of the new channel, for example:
<pre class="prettyprint"> <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;id type="integer">4&lt;/id>
&lt;name>My New Channel&lt;/name> &lt;name>My New Channel&lt;/name>
&lt;description nil="true" /> &lt;description nil="true" />
&lt;metadata nil="true" />
&lt;latitude type="decimal" nil="true" /> &lt;latitude type="decimal" nil="true" />
&lt;longitude 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> &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>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>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>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>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>min</b> (decimal) Minimum value to include in response (optional)</li>
<li><b>max</b> (decimal) Maximum 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>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>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>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>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>min</b> (decimal) Minimum value to include in response (optional)</li>
<li><b>max</b> (decimal) Maximum 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>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>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><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> <div class="format format-block-sm format-text">
<li class="format format-text"><b>append</b> (string) Text to add after the API response (optional)</li> <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> </ul>
<br> <br>

View File

@ -178,6 +178,7 @@ en:
member_since: "Member since" member_since: "Member since"
message: 'message' message: 'message'
message_field: "Message Field" message_field: "Message Field"
metadata: 'metadata'
myaccount: "My Account" myaccount: "My Account"
mychannels: "My Channels" mychannels: "My Channels"
new: "New" 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. # 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| create_table "active_admin_comments", force: true do |t|
t.string "namespace" t.string "namespace"
@ -104,6 +104,7 @@ ActiveRecord::Schema.define(version: 20140516162515) do
t.integer "ranking" t.integer "ranking"
t.string "user_agent" t.string "user_agent"
t.string "realtime_io_serial_number", limit: 36 t.string "realtime_io_serial_number", limit: 36
t.text "metadata"
end end
add_index "channels", ["public_flag", "last_entry_id", "updated_at"], name: "channels_public_viewable", using: :btree 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 # ranking :integer
# user_agent :string(255) # user_agent :string(255)
# realtime_io_serial_number :string(36) # realtime_io_serial_number :string(36)
# metadata :text
# #
require 'spec_helper' require 'spec_helper'