updates from Production
This commit is contained in:
1 parent
d67697acff
commit
1d7e9cd221
11 files changed
+78
-15
No files matched your search
@@ -37,6 +37,7 @@ gem 'tzinfo'
|
|||||||
gem 'tzinfo-data'
|
gem 'tzinfo-data'
|
||||||
gem 'turbolinks'
|
gem 'turbolinks'
|
||||||
gem 'geokit-rails'
|
gem 'geokit-rails'
|
||||||
|
gem 'clockwork'
|
||||||
|
|
||||||
# to use debugger
|
# to use debugger
|
||||||
# gem 'ruby-debug'
|
# gem 'ruby-debug'
|
||||||
|
|||||||
@@ -90,6 +90,9 @@ GEM
|
|||||||
net-ssh (>= 2.0.14)
|
net-ssh (>= 2.0.14)
|
||||||
net-ssh-gateway (>= 1.1.0)
|
net-ssh-gateway (>= 1.1.0)
|
||||||
chronic (0.10.2)
|
chronic (0.10.2)
|
||||||
|
clockwork (0.7.7)
|
||||||
|
activesupport
|
||||||
|
tzinfo
|
||||||
coffee-rails (4.0.1)
|
coffee-rails (4.0.1)
|
||||||
coffee-script (>= 2.2.0)
|
coffee-script (>= 2.2.0)
|
||||||
railties (>= 4.0.0, < 5.0)
|
railties (>= 4.0.0, < 5.0)
|
||||||
@@ -356,6 +359,7 @@ DEPENDENCIES
|
|||||||
autotest-rails
|
autotest-rails
|
||||||
capistrano (~> 2.15.4)
|
capistrano (~> 2.15.4)
|
||||||
chronic
|
chronic
|
||||||
|
clockwork
|
||||||
coffee-rails (~> 4.0)
|
coffee-rails (~> 4.0)
|
||||||
daemons
|
daemons
|
||||||
dalli
|
dalli
|
||||||
|
|||||||
@@ -40,6 +40,7 @@ class User < ActiveRecord::Base
|
|||||||
has_many :reacts, :dependent => :destroy
|
has_many :reacts, :dependent => :destroy
|
||||||
has_many :scheduled_thinghttps, :dependent => :destroy
|
has_many :scheduled_thinghttps, :dependent => :destroy
|
||||||
has_many :talkbacks, :dependent => :destroy
|
has_many :talkbacks, :dependent => :destroy
|
||||||
|
has_many :timecontrols, :dependent => :destroy
|
||||||
has_many :plugins, :dependent => :destroy
|
has_many :plugins, :dependent => :destroy
|
||||||
has_many :devices, :dependent => :destroy
|
has_many :devices, :dependent => :destroy
|
||||||
has_many :api_keys, :dependent => :destroy
|
has_many :api_keys, :dependent => :destroy
|
||||||
@@ -56,6 +57,11 @@ class User < ActiveRecord::Base
|
|||||||
cattr_reader :per_page
|
cattr_reader :per_page
|
||||||
@@per_page = 50
|
@@per_page = 50
|
||||||
|
|
||||||
|
# true if the user has used the maximum number of available timecontrols
|
||||||
|
def max_timecontrols?
|
||||||
|
self.timecontrols.roots.count >= Timecontrol::MAX_PER_USER
|
||||||
|
end
|
||||||
|
|
||||||
# allow login by login name also
|
# allow login by login name also
|
||||||
def self.find_first_by_auth_conditions(warden_conditions)
|
def self.find_first_by_auth_conditions(warden_conditions)
|
||||||
conditions = warden_conditions.dup
|
conditions = warden_conditions.dup
|
||||||
|
|||||||
@@ -46,13 +46,13 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<% if current_admin_user.present? %>
|
<% if current_admin_user.present? %>
|
||||||
<div class="apps">
|
<div class="apps">
|
||||||
<%= link_to scheduled_thinghttps_path do %>
|
<%= link_to timecontrols_path do %>
|
||||||
<%= image_tag 'scheduled_thinghttp.png', :size => '104x104' %>
|
<%= image_tag 'scheduled_thinghttp.png', :size => '104x104' %>
|
||||||
<br>
|
<br>
|
||||||
<%= t(:scheduled_thinghttp) %>
|
<%= t(:timecontrol) %>
|
||||||
<% end %>
|
<% end %>
|
||||||
</div>
|
</div>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
+20
-1
@@ -97,6 +97,7 @@ en:
|
|||||||
confirm_react_delete: "Are you sure you want to delete this React?"
|
confirm_react_delete: "Are you sure you want to delete this React?"
|
||||||
confirm_talkback_delete: "Are you sure you want to delete this TalkBack?"
|
confirm_talkback_delete: "Are you sure you want to delete this TalkBack?"
|
||||||
confirm_thinghttp_delete: "Are you sure you want to delete this ThingHTTP?"
|
confirm_thinghttp_delete: "Are you sure you want to delete this ThingHTTP?"
|
||||||
|
confirm_timecontrol_delete: "Are you sure you want to delete this TimeControl?"
|
||||||
confirm_tweetcontrol_delete: "Are you sure you want to delete this TweetControl?"
|
confirm_tweetcontrol_delete: "Are you sure you want to delete this TweetControl?"
|
||||||
confirm_twitter_delete: "Are you sure you want to unlink this Twitter account?"
|
confirm_twitter_delete: "Are you sure you want to unlink this Twitter account?"
|
||||||
contact_us: "Contact Us"
|
contact_us: "Contact Us"
|
||||||
@@ -146,11 +147,13 @@ en:
|
|||||||
forgot: "Forgot your password?"
|
forgot: "Forgot your password?"
|
||||||
forum: "Forum"
|
forum: "Forum"
|
||||||
for_more_information: "More Information"
|
for_more_information: "More Information"
|
||||||
|
frequency: 'frequency'
|
||||||
generate_thingtweet_arduino_code: "Generate ThingTweet Arduino Code"
|
generate_thingtweet_arduino_code: "Generate ThingTweet Arduino Code"
|
||||||
get_started: "Get Started Now"
|
get_started: "Get Started Now"
|
||||||
height: "Height"
|
height: "Height"
|
||||||
home_motto: "Billions and Billions."
|
home_motto: "Billions and Billions."
|
||||||
home_tagline: "The open data platform for the Internet of Things."
|
home_tagline: "The open data platform for the Internet of Things."
|
||||||
|
hour: 'hour'
|
||||||
import: "Import"
|
import: "Import"
|
||||||
latitude: "Latitude"
|
latitude: "Latitude"
|
||||||
longitude: "Longitude"
|
longitude: "Longitude"
|
||||||
@@ -159,10 +162,13 @@ en:
|
|||||||
message: 'message'
|
message: 'message'
|
||||||
message_field: "Message Field"
|
message_field: "Message Field"
|
||||||
metadata: 'metadata'
|
metadata: 'metadata'
|
||||||
|
minute: 'minute'
|
||||||
myaccount: "My Account"
|
myaccount: "My Account"
|
||||||
|
name: 'name'
|
||||||
new: "New"
|
new: "New"
|
||||||
note: "Note"
|
note: "Note"
|
||||||
note_save: "Save Note"
|
note_save: "Save Note"
|
||||||
|
one_time: 'one time'
|
||||||
password: "Password"
|
password: "Password"
|
||||||
password_change: "Change Password"
|
password_change: "Change Password"
|
||||||
password_confirmation: "Password Confirmation"
|
password_confirmation: "Password Confirmation"
|
||||||
@@ -263,6 +269,7 @@ en:
|
|||||||
react_option_run_every_time: "Run action each time condition is met"
|
react_option_run_every_time: "Run action each time condition is met"
|
||||||
react_create_button: "Create React"
|
react_create_button: "Create React"
|
||||||
react_save_button: "Create React"
|
react_save_button: "Create React"
|
||||||
|
recurring: 'recurring'
|
||||||
remember_me: "Remember my User ID"
|
remember_me: "Remember my User ID"
|
||||||
results: "Results"
|
results: "Results"
|
||||||
save: "Save"
|
save: "Save"
|
||||||
@@ -357,8 +364,19 @@ en:
|
|||||||
thingtweet: "ThingTweet"
|
thingtweet: "ThingTweet"
|
||||||
thingtweet_arduino_select_message: "Select Twitter account to use for this code"
|
thingtweet_arduino_select_message: "Select Twitter account to use for this code"
|
||||||
thingtweet_back: "Back to ThingTweet"
|
thingtweet_back: "Back to ThingTweet"
|
||||||
time_zone: "Time Zone"
|
timecontrol: "TimeControl"
|
||||||
|
timecontrols: "TimeControls"
|
||||||
|
timecontrol_date: 'date'
|
||||||
|
timecontrol_days: 'days'
|
||||||
|
timecontrol_delete: "Delete TimeControl"
|
||||||
|
timecontrol_delete_message: "Want to delete this TimeControl?"
|
||||||
|
timecontrol_error: "There were some problems creating your TimeControl:"
|
||||||
|
timecontrol_max_message: "You have reached the maximum number of TimeControls available per user. Please delete an existing TimeControl before adding a new one."
|
||||||
|
timecontrol_new: "New TimeControl"
|
||||||
|
timecontrol_run_at: 'run at'
|
||||||
|
timecontrol_time: 'time'
|
||||||
timescale: "Timescale"
|
timescale: "Timescale"
|
||||||
|
time_zone: "Time Zone"
|
||||||
title: "Title"
|
title: "Title"
|
||||||
tos: "Terms of Service"
|
tos: "Terms of Service"
|
||||||
tos_agree: "By signing up, you agree to the"
|
tos_agree: "By signing up, you agree to the"
|
||||||
@@ -450,6 +468,7 @@ en:
|
|||||||
help_thinghttp_example: "This will send your HTTP GET request to Google Finance and parse the response for an element having an ID of ref_626307_c, which corresponds to the S&P 500 current price change for the day."
|
help_thinghttp_example: "This will send your HTTP GET request to Google Finance and parse the response for an element having an ID of ref_626307_c, which corresponds to the S&P 500 current price change for the day."
|
||||||
help_thinghttp_show: "You can now send your ThingHTTP request and view the response using the following URL:"
|
help_thinghttp_show: "You can now send your ThingHTTP request and view the response using the following URL:"
|
||||||
help_thingtweet: "ThingTweet acts as a proxy to Twitter so that your devices can update Twitter statuses without having to implement Open Authentication (OAuth)."
|
help_thingtweet: "ThingTweet acts as a proxy to Twitter so that your devices can update Twitter statuses without having to implement Open Authentication (OAuth)."
|
||||||
|
help_timecontrol_index: "Create a TimeControl to automatically execute ThingHTTP requests at predetermined times."
|
||||||
help_tweetcontrol: "Use TweetControl to listen to specific trigger words from Twitter, and then process a ThingHTTP request."
|
help_tweetcontrol: "Use TweetControl to listen to specific trigger words from Twitter, and then process a ThingHTTP request."
|
||||||
help_tweetcontrol_edit: "Select Anonymous TweetControl to allow anyone to trigger your TweetControl or fill in a specfic Twitter Account (don't include the '@' sign)."
|
help_tweetcontrol_edit: "Select Anonymous TweetControl to allow anyone to trigger your TweetControl or fill in a specfic Twitter Account (don't include the '@' sign)."
|
||||||
help_tweetcontrol_hashtag: "To trigger a TweetControl, you need to send a Twitter Status Update with at least the hashtag #thingspeak and the trigger word, for example:"
|
help_tweetcontrol_hashtag: "To trigger a TweetControl, you need to send a Twitter Status Update with at least the hashtag #thingspeak and the trigger word, for example:"
|
||||||
|
|||||||
+3
-2
@@ -17,9 +17,9 @@ Thingspeak::Application.routes.draw do
|
|||||||
# for api: login and get token
|
# for api: login and get token
|
||||||
match 'users/api_login', :to => 'users#api_login', :via => [:get, :post]
|
match 'users/api_login', :to => 'users#api_login', :via => [:get, :post]
|
||||||
|
|
||||||
# devise for authentication
|
# devise for authentication (but don't use devise if $skip_devise == true, necessary for clockworkd to run)
|
||||||
# override devise controllers and use custom sessions_controller and registrations_controller
|
# override devise controllers and use custom sessions_controller and registrations_controller
|
||||||
devise_for :users, :controllers => {:sessions => 'sessions', :registrations => 'registrations'}
|
devise_for :users, :controllers => {:sessions => 'sessions', :registrations => 'registrations'} if $skip_devise != true
|
||||||
|
|
||||||
resource :pages do
|
resource :pages do
|
||||||
collection do
|
collection do
|
||||||
@@ -172,6 +172,7 @@ Thingspeak::Application.routes.draw do
|
|||||||
end
|
end
|
||||||
resources :tweetcontrol
|
resources :tweetcontrol
|
||||||
resources :reacts
|
resources :reacts
|
||||||
|
resources :timecontrols
|
||||||
resources :scheduled_thinghttps
|
resources :scheduled_thinghttps
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
+35
-3
@@ -11,13 +11,13 @@
|
|||||||
#
|
#
|
||||||
# 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: 20140804223739) do
|
ActiveRecord::Schema.define(version: 20140903095213) 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"
|
||||||
t.text "body"
|
t.text "body"
|
||||||
t.string "resource_id", limit: 50, null: false
|
t.string "resource_id", null: false
|
||||||
t.string "resource_type", limit: 50, null: false
|
t.string "resource_type", null: false
|
||||||
t.integer "author_id"
|
t.integer "author_id"
|
||||||
t.string "author_type"
|
t.string "author_type"
|
||||||
t.datetime "created_at"
|
t.datetime "created_at"
|
||||||
@@ -166,6 +166,15 @@ ActiveRecord::Schema.define(version: 20140804223739) do
|
|||||||
add_index "devices", ["mac_address"], name: "index_devices_on_mac_address", using: :btree
|
add_index "devices", ["mac_address"], name: "index_devices_on_mac_address", using: :btree
|
||||||
add_index "devices", ["user_id"], name: "index_devices_on_user_id", using: :btree
|
add_index "devices", ["user_id"], name: "index_devices_on_user_id", using: :btree
|
||||||
|
|
||||||
|
create_table "events", force: true do |t|
|
||||||
|
t.integer "timecontrol_id"
|
||||||
|
t.datetime "run_at"
|
||||||
|
t.datetime "created_at"
|
||||||
|
t.datetime "updated_at"
|
||||||
|
end
|
||||||
|
|
||||||
|
add_index "events", ["run_at"], name: "index_events_on_run_at", using: :btree
|
||||||
|
|
||||||
create_table "failedlogins", force: true do |t|
|
create_table "failedlogins", force: true do |t|
|
||||||
t.string "login"
|
t.string "login"
|
||||||
t.string "password"
|
t.string "password"
|
||||||
@@ -329,6 +338,29 @@ ActiveRecord::Schema.define(version: 20140804223739) do
|
|||||||
add_index "thinghttps", ["api_key"], name: "index_thinghttps_on_api_key", using: :btree
|
add_index "thinghttps", ["api_key"], name: "index_thinghttps_on_api_key", using: :btree
|
||||||
add_index "thinghttps", ["user_id"], name: "index_thinghttps_on_user_id", using: :btree
|
add_index "thinghttps", ["user_id"], name: "index_thinghttps_on_user_id", using: :btree
|
||||||
|
|
||||||
|
create_table "timecontrols", force: true do |t|
|
||||||
|
t.integer "user_id"
|
||||||
|
t.integer "schedulable_id"
|
||||||
|
t.string "schedulable_type", limit: 50
|
||||||
|
t.string "frequency", limit: 20
|
||||||
|
t.integer "day", limit: 1
|
||||||
|
t.integer "hour", limit: 1
|
||||||
|
t.integer "minute", limit: 1
|
||||||
|
t.integer "parent_id"
|
||||||
|
t.datetime "last_event_at"
|
||||||
|
t.text "last_response"
|
||||||
|
t.datetime "created_at"
|
||||||
|
t.datetime "updated_at"
|
||||||
|
t.string "name"
|
||||||
|
t.datetime "run_at"
|
||||||
|
end
|
||||||
|
|
||||||
|
add_index "timecontrols", ["frequency", "minute", "hour", "day"], name: "index_timecontrols_on_frequency_and_minute_and_hour_and_day", using: :btree
|
||||||
|
add_index "timecontrols", ["parent_id"], name: "index_timecontrols_on_parent_id", using: :btree
|
||||||
|
add_index "timecontrols", ["run_at"], name: "index_timecontrols_on_run_at", using: :btree
|
||||||
|
add_index "timecontrols", ["schedulable_id", "schedulable_type"], name: "index_timecontrols_on_schedulable_id_and_schedulable_type", using: :btree
|
||||||
|
add_index "timecontrols", ["user_id"], name: "index_timecontrols_on_user_id", using: :btree
|
||||||
|
|
||||||
create_table "tweetcontrols", force: true do |t|
|
create_table "tweetcontrols", force: true do |t|
|
||||||
t.string "screen_name"
|
t.string "screen_name"
|
||||||
t.string "trigger"
|
t.string "trigger"
|
||||||
|
|||||||
Binary file not shown.
@@ -1 +1 @@
|
|||||||
span.icon{vertical-align:middle;display:inline-block}span.icon svg{vertical-align:baseline}span.icon{width:0.8em;height:0.8em}html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,font,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td{margin:0;padding:0;border:0;outline:0;font-weight:inherit;font-style:inherit;font-size:100%;font-family:inherit;vertical-align:baseline}body{line-height:1;color:black;background:white}ol,ul{list-style:none}table{border-collapse:separate;border-spacing:0;vertical-align:middle}caption,th,td{text-align:left;font-weight:normal;vertical-align:middle}q,blockquote{quotes:"" ""}q:before,q:after,blockquote:before,blockquote:after{content:""}a img{border:none}html{font-size:100.01%}body{font-size:75%;font-family:"Helvetica Neue", Arial, Helvetica, sans-serif}h1,h2,h3,h4,h5,h6{font-weight:normal;color:#5e6469}h1 img,h2 img,h3 img,h4 img,h5 img,h6 img{margin:0}h1{font-size:3em;line-height:1;margin-bottom:0.5em}h2{font-size:2em;margin-bottom:0.75em}h3{font-size:1.5em;line-height:1;margin-bottom:1em}h4{font-size:1.2em;line-height:1.25;margin-bottom:1.25em}h5{font-size:1em;font-weight:bold;margin-bottom:1.5em}h6{font-size:1em;font-weight:bold}p{margin:0 0 1.5em}p .left{margin:1.5em 1.5em 1.5em 0;padding:0}p .right{margin:1.5em 0 1.5em 1.5em;padding:0}.left{float:left !important}.right{float:right !important}blockquote{margin:1.5em;color:#666;font-style:italic}strong,dfn{font-weight:bold}em,dfn{font-style:italic}sup,sub{line-height:0}abbr,acronym{border-bottom:1px dotted #666}address{margin:0 0 1.5em;font-style:italic}del{color:#666}pre{margin:1.5em 0;white-space:pre}pre,code,tt{font:1em 'andale mono', 'lucida console', monospace;line-height:1.5}li ul,li ol{margin:0}ul,ol{margin:0 1.5em 1.5em 0;padding-left:1.5em}ul{list-style-type:disc}ol{list-style-type:decimal}dl{margin:0 0 1.5em 0}dl dt{font-weight:bold}dd{margin-left:1.5em}table{margin-bottom:1.4em;width:100%}th{font-weight:bold}thead th{background:#c3d9ff}th,td,caption{padding:4px 10px 4px 5px}.small{font-size:.8em;margin-bottom:1.875em;line-height:1.875em}.large{font-size:1.2em;line-height:2.5em;margin-bottom:1.25em}.hide{display:none}.quiet{color:#666}.loud{color:#000}.highlight{background:#ff0}.added{background:#060;color:#fff}.removed{background:#900;color:#fff}.first{margin-left:0;padding-left:0}.last{margin-right:0;padding-right:0}.top{margin-top:0;padding-top:0}.bottom{margin-bottom:0;padding-bottom:0}#header{background:#6a7176;background:-webkit-linear-gradient(-90deg, #6a7176, #4d5256);background:-moz-linear-gradient(-90deg, #6a7176, #4d5256);background:linear, -90deg, #6a7176, #4d5256;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FF6A7176', endColorstr='#FF4D5256');-ms-filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FF6A7176', endColorstr='#FF4D5256');border-bottom:1px solid #44484b;box-shadow:0 1px 2px rgba(0,0,0,0.37);-moz-box-shadow:0 1px 2px rgba(0,0,0,0.37);-webkit-box-shadow:0 1px 2px rgba(0,0,0,0.37);text-shadow:black 0 1px 0;display:table;height:20px;width:100%;overflow:visible;position:inherit;padding:5px 0;z-index:900}#header h1{display:table-cell;vertical-align:middle;white-space:nowrap;color:#cdcdcd;margin-right:20px;margin-bottom:0px;padding:3px 30px 0 30px;font-size:1.3em;font-weight:normal;line-height:1.2}#header h1 a{text-decoration:none}#header h1 a:hover{color:#fff}#header h1 img{position:relative;top:-2px}#header a,#header a:link{color:#cdcdcd}#header .header-item{top:2px;position:relative;height:20px}#header ul.tabs{display:table-cell;vertical-align:middle;height:100%;margin:0;padding:0}#header ul.tabs>li{display:inline-block;margin-right:4px;margin-top:5px;margin-bottom:5px;font-size:1.0em;position:relative}#header ul.tabs>li a{text-decoration:none;padding:6px 10px 4px 10px;position:relative;-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px}#header ul.tabs>li.current>a{background:#7b8389;color:#fff}#header ul.tabs>li.has_nested>a{background:url(/assets/active_admin/nested_menu_arrow-94d9c4f73e81d377f80ae8dbcc71128b.gif) no-repeat calc(100% - 7px) 50%;padding-right:20px}#header ul.tabs>li.has_nested.current>a{background:#7b8389 url(/assets/active_admin/nested_menu_arrow_dark-b40a488b4f4b7d25cce531a15db4037b.gif) no-repeat calc(100% - 7px) 50%;padding-right:20px}#header ul.tabs>li:hover>a{background:#7b8389;color:#fff}#header ul.tabs>li.has_nested:hover>a{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;border-top-right-radius:10px;border-top-left-radius:10px;-moz-border-radius-topright:10px;-moz-border-radius-topleft:10px;-webkit-border-top-right-radius:10px;-webkit-border-top-left-radius:10px;border-bottom:5px solid #7b8389;background:#7b8389 url(/assets/active_admin/nested_menu_arrow_dark-b40a488b4f4b7d25cce531a15db4037b.gif) no-repeat calc(100% - 7px) 50%;z-index:1020}#header Line truncated
|
span.icon{vertical-align:middle;display:inline-block}span.icon svg{vertical-align:baseline}span.icon{width:0.8em;height:0.8em}html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,font,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td{margin:0;padding:0;border:0;outline:0;font-weight:inherit;font-style:inherit;font-size:100%;font-family:inherit;vertical-align:baseline}body{line-height:1;color:black;background:white}ol,ul{list-style:none}table{border-collapse:separate;border-spacing:0;vertical-align:middle}caption,th,td{text-align:left;font-weight:normal;vertical-align:middle}q,blockquote{quotes:"" ""}q:before,q:after,blockquote:before,blockquote:after{content:""}a img{border:none}html{font-size:100.01%}body{font-size:75%;font-family:"Helvetica Neue", Arial, Helvetica, sans-serif}h1,h2,h3,h4,h5,h6{font-weight:normal;color:#5e6469}h1 img,h2 img,h3 img,h4 img,h5 img,h6 img{margin:0}h1{font-size:3em;line-height:1;margin-bottom:0.5em}h2{font-size:2em;margin-bottom:0.75em}h3{font-size:1.5em;line-height:1;margin-bottom:1em}h4{font-size:1.2em;line-height:1.25;margin-bottom:1.25em}h5{font-size:1em;font-weight:bold;margin-bottom:1.5em}h6{font-size:1em;font-weight:bold}p{margin:0 0 1.5em}p .left{margin:1.5em 1.5em 1.5em 0;padding:0}p .right{margin:1.5em 0 1.5em 1.5em;padding:0}.left{float:left !important}.right{float:right !important}blockquote{margin:1.5em;color:#666;font-style:italic}strong,dfn{font-weight:bold}em,dfn{font-style:italic}sup,sub{line-height:0}abbr,acronym{border-bottom:1px dotted #666}address{margin:0 0 1.5em;font-style:italic}del{color:#666}pre{margin:1.5em 0;white-space:pre}pre,code,tt{font:1em 'andale mono', 'lucida console', monospace;line-height:1.5}li ul,li ol{margin:0}ul,ol{margin:0 1.5em 1.5em 0;padding-left:1.5em}ul{list-style-type:disc}ol{list-style-type:decimal}dl{margin:0 0 1.5em 0}dl dt{font-weight:bold}dd{margin-left:1.5em}table{margin-bottom:1.4em;width:100%}th{font-weight:bold}thead th{background:#c3d9ff}th,td,caption{padding:4px 10px 4px 5px}.small{font-size:.8em;margin-bottom:1.875em;line-height:1.875em}.large{font-size:1.2em;line-height:2.5em;margin-bottom:1.25em}.hide{display:none}.quiet{color:#666}.loud{color:#000}.highlight{background:#ff0}.added{background:#060;color:#fff}.removed{background:#900;color:#fff}.first{margin-left:0;padding-left:0}.last{margin-right:0;padding-right:0}.top{margin-top:0;padding-top:0}.bottom{margin-bottom:0;padding-bottom:0}#header{background:#6a7176;background:-webkit-linear-gradient(-90deg, #6a7176, #4d5256);background:-moz-linear-gradient(-90deg, #6a7176, #4d5256);background:linear, -90deg, #6a7176, #4d5256;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FF6A7176', endColorstr='#FF4D5256');-ms-filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FF6A7176', endColorstr='#FF4D5256');border-bottom:1px solid #44484b;box-shadow:0 1px 2px rgba(0,0,0,0.37);-moz-box-shadow:0 1px 2px rgba(0,0,0,0.37);-webkit-box-shadow:0 1px 2px rgba(0,0,0,0.37);text-shadow:black 0 1px 0;display:table;height:20px;width:100%;overflow:visible;position:inherit;padding:5px 0;z-index:900}#header h1{display:table-cell;vertical-align:middle;white-space:nowrap;color:#cdcdcd;margin-right:20px;margin-bottom:0px;padding:3px 30px 0 30px;font-size:1.3em;font-weight:normal;line-height:1.2}#header h1 a{text-decoration:none}#header h1 a:hover{color:#fff}#header h1 img{position:relative;top:-2px}#header a,#header a:link{color:#cdcdcd}#header .header-item{top:2px;position:relative;height:20px}#header ul.tabs{display:table-cell;vertical-align:middle;height:100%;margin:0;padding:0}#header ul.tabs>li{display:inline-block;margin-right:4px;margin-top:5px;margin-bottom:5px;font-size:1.0em;position:relative}#header ul.tabs>li a{text-decoration:none;padding:6px 10px 4px 10px;position:relative;-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px}#header ul.tabs>li.current>a{background:#7b8389;color:#fff}#header ul.tabs>li.has_nested>a{background:url(/assets/active_admin/nested_menu_arrow-94d9c4f73e81d377f80ae8dbcc71128b.gif) no-repeat calc(100% - 7px) 50%;padding-right:20px}#header ul.tabs>li.has_nested.current>a{background:#7b8389 url(/assets/active_admin/nested_menu_arrow_dark-b40a488b4f4b7d25cce531a15db4037b.gif) no-repeat calc(100% - 7px) 50%;padding-right:20px}#header ul.tabs>li:hover>a{background:#7b8389;color:#fff}#header ul.tabs>li.has_nested:hover>a{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;border-top-right-radius:10px;border-top-left-radius:10px;-moz-border-radius-topright:10px;-moz-border-radius-topleft:10px;-webkit-border-top-right-radius:10px;-webkit-border-top-left-radius:10px;border-bottom:5px solid #7b8389;background:#7b8389 url(/assets/active_admin/nested_menu_arrow_dark-b40a488b4f4b7d25cce531a15db4037b.gif) no-repeat calc(100% - 7px) 50%;z-index:1020}#header Line truncated
|
||||||
Binary file not shown.
@@ -1 +1 @@
|
|||||||
{"files":{"GitHub_ThingSpeak_API-f39bba3caddbf4af63e208b8552a98ac.jpg":{"logical_path":"GitHub_ThingSpeak_API.jpg","mtime":"2014-02-08T20:02:14-05:00","size":26303,"digest":"f39bba3caddbf4af63e208b8552a98ac"},"ThingSpeak_Logo-3139b15204b5af565fca3a5f342ef19c.png":{"logical_path":"ThingSpeak_Logo.png","mtime":"2014-02-08T20:02:14-05:00","size":9258,"digest":"3139b15204b5af565fca3a5f342ef19c"},"eye-b67d3d940541ae7d0b469ed20ee92fe3.png":{"logical_path":"eye.png","mtime":"2014-02-08T20:02:14-05:00","size":3294,"digest":"b67d3d940541ae7d0b469ed20ee92fe3"},"flag_gray-319110a59d1d75cad2d8f29af88fdb23.gif":{"logical_path":"flag_gray.gif","mtime":"2014-02-08T20:02:14-05:00","size":983,"digest":"319110a59d1d75cad2d8f29af88fdb23"},"flag_red-16607fd54284010c4e95d5e9a3935b40.gif":{"logical_path":"flag_red.gif","mtime":"2014-02-08T20:02:14-05:00","size":987,"digest":"16607fd54284010c4e95d5e9a3935b40"},"front-b28e4f9d550ff0101a0140b1fb1ec1da.png":{"logical_path":"front.png","mtime":"2014-02-08T20:02:14-05:00","size":17717,"digest":"b28e4f9d550ff0101a0140b1fb1ec1da"},"icon_location_24-40aef0eb9d6824f7538c1056c90a2156.png":{"logical_path":"icon_location_24.png","mtime":"2014-02-08T20:01:43-05:00","size":618,"digest":"40aef0eb9d6824f7538c1056c90a2156"},"icon_rss-3ce0d86e00a9e937993988e73720950e.gif":{"logical_path":"icon_rss.gif","mtime":"2014-02-08T20:02:14-05:00","size":1008,"digest":"3ce0d86e00a9e937993988e73720950e"},"icons/InfoBox-54072dd9794a709a9fee5ab80d4be545.png":{"logical_path":"icons/InfoBox.png","mtime":"2014-02-08T20:02:14-05:00","size":837,"digest":"54072dd9794a709a9fee5ab80d4be545"},"icons/Locked-84572b6d8c7a390e424483b16f28410f.png":{"logical_path":"icons/Locked.png","mtime":"2014-02-08T20:02:14-05:00","size":1882,"digest":"84572b6d8c7a390e424483b16f28410f"},"icons/Public_32-2bcfb892862a4396e3a5593a5e1df202.png":{"logical_path":"icons/Public_32.png","mtime":"2014-02-08T20:02:14-05:00","size":4788,"digest":"2bcfb892862a4396e3a5593a5e1df202"},"icons/Unlocked-226c08041c55d88ecf7898dffe6568aa.png":{"logical_path":"icons/Unlocked.png","mtime":"2014-02-08T20:02:14-05:00","size":1652,"digest":"226c08041c55d88ecf7898dffe6568aa"},"icons/delete-9a7fbc7ba573f4ab735f66bc17466a84.png":{"logical_path":"icons/delete.png","mtime":"2014-02-08T20:02:14-05:00","size":715,"digest":"9a7fbc7ba573f4ab735f66bc17466a84"},"my_house_status_update-526a896242134f12bf2882dfad48fe24.png":{"logical_path":"my_house_status_update.png","mtime":"2014-02-08T20:02:14-05:00","size":13437,"digest":"526a896242134f12bf2882dfad48fe24"},"rails-6a9a73b3eeba7d35c79c3de6fc98b6f1.png":{"logical_path":"rails.png","mtime":"2014-02-08T20:02:14-05:00","size":6646,"digest":"6a9a73b3eeba7d35c79c3de6fc98b6f1"},"react-99715cc1aac81b13fdc4384378c9cf0e.png":{"logical_path":"react.png","mtime":"2014-02-08T20:02:14-05:00","size":2996,"digest":"99715cc1aac81b13fdc4384378c9cf0e"},"scheduled_thinghttp-b525411c648770d5252475ab92925006.png":{"logical_path":"scheduled_thinghttp.png","mtime":"2014-02-08T20:02:14-05:00","size":8677,"digest":"b525411c648770d5252475ab92925006"},"shading-4c8cafd8b85355f46eedb553ece6a663.png":{"logical_path":"shading.png","mtime":"2014-02-08T20:02:14-05:00","size":565,"digest":"4c8cafd8b85355f46eedb553ece6a663"},"social_sensor_network_logo-2cc4b27d8115a3efcf38c0c6539d06fe.png":{"logical_path":"social_sensor_network_logo.png","mtime":"2014-02-08T20:02:14-05:00","size":15370,"digest":"2cc4b27d8115a3efcf38c0c6539d06fe"},"social_sensor_network_main-f2114a6f96a027de3c3b39aefd11a34b.png":{"logical_path":"social_sensor_network_main.png","mtime":"2014-02-08T20:02:14-05:00","size":132931,"digest":"f2114a6f96a027de3c3b39aefd11a34b"},"talkback-a8f0046a06cddead53bfe73e0a1b11b1.png":{"logical_path":"talkback.png","mtime":"2014-02-08T20:02:14-05:00","size":5183,"digest":"a8f0046a06cddead53bfe73e0a1b11b1"},"thinghttp-b22d0641869d4b49e8fdc1441d19bd9d.png":{"logical_path":"thinghttp.png","mtime":"2014-02-08T20:02:14-05:00","size":5918,"digest":"b22d0641869d4b49e8fdc1441d19bd9d"},"thingtweet-2f829197927298b1eb724a072adb072a.png":{"logical_path":"thingtweet.png","mtime":"2014-02-08T20:02:14-05:00","size":4075,"digest":"2f829197927298b1eb724a072adb072a"},"tweetcontrol-5fa1225bb39f188b215d5897b37c2c18.png":{"logical_path":"tweetcontrol.png","mtime":"2014-02-08T20:02:14-05:00","size":13429,"digest":"5fa1225bb39f188b215d5897b37c2c18"},"images/ui-bg_diagonals-thick_18_b81900_40x40-7cff5779324125bfa623755a21cb7d08.png":{"logical_path":"images/ui-bg_diagonals-thick_18_b81900_40x40.png","mtime":"2014-02-08T20:01:44-05:00","size":260,"digest":"7cff5779324125bfa623755a21cb7d08"},"images/ui-bg_diagonals-thick_20_666666_40x40-e3476d26e53f4b2bdba1cbd4216bd169.png":{"logical_path":"images/ui-bg_diagonals-thick_20_666666_40x40.png","mtime":"2014-02-08T20:01:44-05:00","size":251,"digest":"e3476d26e53f4b2bdba1cbd4216bd169"},"images/ui-bg_flat_10_000000_40x100-b4d9562e67d66d83845d2edeaae222d7.png":{"logical_path":"images/ui-bg_flat_10_000000_40x100.png","mtime":"2014-02-08T20:02:1Line truncated
|
{"files":{"GitHub_ThingSpeak_API-f39bba3caddbf4af63e208b8552a98ac.jpg":{"logical_path":"GitHub_ThingSpeak_API.jpg","mtime":"2014-02-08T20:02:14-05:00","size":26303,"digest":"f39bba3caddbf4af63e208b8552a98ac"},"ThingSpeak_Logo-3139b15204b5af565fca3a5f342ef19c.png":{"logical_path":"ThingSpeak_Logo.png","mtime":"2014-02-08T20:02:14-05:00","size":9258,"digest":"3139b15204b5af565fca3a5f342ef19c"},"eye-b67d3d940541ae7d0b469ed20ee92fe3.png":{"logical_path":"eye.png","mtime":"2014-02-08T20:02:14-05:00","size":3294,"digest":"b67d3d940541ae7d0b469ed20ee92fe3"},"flag_gray-319110a59d1d75cad2d8f29af88fdb23.gif":{"logical_path":"flag_gray.gif","mtime":"2014-02-08T20:02:14-05:00","size":983,"digest":"319110a59d1d75cad2d8f29af88fdb23"},"flag_red-16607fd54284010c4e95d5e9a3935b40.gif":{"logical_path":"flag_red.gif","mtime":"2014-02-08T20:02:14-05:00","size":987,"digest":"16607fd54284010c4e95d5e9a3935b40"},"front-b28e4f9d550ff0101a0140b1fb1ec1da.png":{"logical_path":"front.png","mtime":"2014-02-08T20:02:14-05:00","size":17717,"digest":"b28e4f9d550ff0101a0140b1fb1ec1da"},"icon_location_24-40aef0eb9d6824f7538c1056c90a2156.png":{"logical_path":"icon_location_24.png","mtime":"2014-02-08T20:01:43-05:00","size":618,"digest":"40aef0eb9d6824f7538c1056c90a2156"},"icon_rss-3ce0d86e00a9e937993988e73720950e.gif":{"logical_path":"icon_rss.gif","mtime":"2014-02-08T20:02:14-05:00","size":1008,"digest":"3ce0d86e00a9e937993988e73720950e"},"icons/InfoBox-54072dd9794a709a9fee5ab80d4be545.png":{"logical_path":"icons/InfoBox.png","mtime":"2014-02-08T20:02:14-05:00","size":837,"digest":"54072dd9794a709a9fee5ab80d4be545"},"icons/Locked-84572b6d8c7a390e424483b16f28410f.png":{"logical_path":"icons/Locked.png","mtime":"2014-02-08T20:02:14-05:00","size":1882,"digest":"84572b6d8c7a390e424483b16f28410f"},"icons/Public_32-2bcfb892862a4396e3a5593a5e1df202.png":{"logical_path":"icons/Public_32.png","mtime":"2014-02-08T20:02:14-05:00","size":4788,"digest":"2bcfb892862a4396e3a5593a5e1df202"},"icons/Unlocked-226c08041c55d88ecf7898dffe6568aa.png":{"logical_path":"icons/Unlocked.png","mtime":"2014-02-08T20:02:14-05:00","size":1652,"digest":"226c08041c55d88ecf7898dffe6568aa"},"icons/delete-9a7fbc7ba573f4ab735f66bc17466a84.png":{"logical_path":"icons/delete.png","mtime":"2014-02-08T20:02:14-05:00","size":715,"digest":"9a7fbc7ba573f4ab735f66bc17466a84"},"my_house_status_update-526a896242134f12bf2882dfad48fe24.png":{"logical_path":"my_house_status_update.png","mtime":"2014-02-08T20:02:14-05:00","size":13437,"digest":"526a896242134f12bf2882dfad48fe24"},"rails-6a9a73b3eeba7d35c79c3de6fc98b6f1.png":{"logical_path":"rails.png","mtime":"2014-02-08T20:02:14-05:00","size":6646,"digest":"6a9a73b3eeba7d35c79c3de6fc98b6f1"},"react-99715cc1aac81b13fdc4384378c9cf0e.png":{"logical_path":"react.png","mtime":"2014-02-08T20:02:14-05:00","size":2996,"digest":"99715cc1aac81b13fdc4384378c9cf0e"},"scheduled_thinghttp-b525411c648770d5252475ab92925006.png":{"logical_path":"scheduled_thinghttp.png","mtime":"2014-02-08T20:02:14-05:00","size":8677,"digest":"b525411c648770d5252475ab92925006"},"shading-4c8cafd8b85355f46eedb553ece6a663.png":{"logical_path":"shading.png","mtime":"2014-02-08T20:02:14-05:00","size":565,"digest":"4c8cafd8b85355f46eedb553ece6a663"},"social_sensor_network_logo-2cc4b27d8115a3efcf38c0c6539d06fe.png":{"logical_path":"social_sensor_network_logo.png","mtime":"2014-02-08T20:02:14-05:00","size":15370,"digest":"2cc4b27d8115a3efcf38c0c6539d06fe"},"social_sensor_network_main-f2114a6f96a027de3c3b39aefd11a34b.png":{"logical_path":"social_sensor_network_main.png","mtime":"2014-02-08T20:02:14-05:00","size":132931,"digest":"f2114a6f96a027de3c3b39aefd11a34b"},"talkback-a8f0046a06cddead53bfe73e0a1b11b1.png":{"logical_path":"talkback.png","mtime":"2014-02-08T20:02:14-05:00","size":5183,"digest":"a8f0046a06cddead53bfe73e0a1b11b1"},"thinghttp-b22d0641869d4b49e8fdc1441d19bd9d.png":{"logical_path":"thinghttp.png","mtime":"2014-02-08T20:02:14-05:00","size":5918,"digest":"b22d0641869d4b49e8fdc1441d19bd9d"},"thingtweet-2f829197927298b1eb724a072adb072a.png":{"logical_path":"thingtweet.png","mtime":"2014-02-08T20:02:14-05:00","size":4075,"digest":"2f829197927298b1eb724a072adb072a"},"tweetcontrol-5fa1225bb39f188b215d5897b37c2c18.png":{"logical_path":"tweetcontrol.png","mtime":"2014-02-08T20:02:14-05:00","size":13429,"digest":"5fa1225bb39f188b215d5897b37c2c18"},"images/ui-bg_diagonals-thick_18_b81900_40x40-7cff5779324125bfa623755a21cb7d08.png":{"logical_path":"images/ui-bg_diagonals-thick_18_b81900_40x40.png","mtime":"2014-02-08T20:01:44-05:00","size":260,"digest":"7cff5779324125bfa623755a21cb7d08"},"images/ui-bg_diagonals-thick_20_666666_40x40-e3476d26e53f4b2bdba1cbd4216bd169.png":{"logical_path":"images/ui-bg_diagonals-thick_20_666666_40x40.png","mtime":"2014-02-08T20:01:44-05:00","size":251,"digest":"e3476d26e53f4b2bdba1cbd4216bd169"},"images/ui-bg_flat_10_000000_40x100-b4d9562e67d66d83845d2edeaae222d7.png":{"logical_path":"images/ui-bg_flat_10_000000_40x100.png","mtime":"2014-02-08T20:02:1Line truncated
|
||||||
Reference in new issue
Block a user