add sponsors
27
AssetFile
|
@ -21,7 +21,7 @@ input 'assets/javascripts' do
|
|||
concat files, 'vendor.js'
|
||||
end
|
||||
|
||||
match '{app,config,lib}/**/*.coffee' do
|
||||
match '{app,config,data,lib}/**/*.coffee' do
|
||||
coffee_script
|
||||
end
|
||||
|
||||
|
@ -34,12 +34,12 @@ input 'assets/javascripts' do
|
|||
concat 'app/templates.js'
|
||||
end
|
||||
|
||||
match '{app,config,lib}/**/*.js' do
|
||||
match '{app,config,data,lib}/**/*.js' do
|
||||
minispade(
|
||||
string: true,
|
||||
rewrite_requires: true,
|
||||
module_id_generator: proc { |input|
|
||||
input.path.sub(%r(^(app|config|lib)/), '').sub(/\.js$/, '')
|
||||
input.path.sub(%r(^(app|lib)/), '').sub(/\.js$/, '')
|
||||
}
|
||||
)
|
||||
concat 'application.js'
|
||||
|
@ -77,9 +77,18 @@ input 'assets/stylesheets' do
|
|||
end
|
||||
end
|
||||
|
||||
# output 'public'
|
||||
# input 'assets', 'index.html.erb' do
|
||||
# filter(Rake::Pipeline::Web::Filters::TiltFilter) do |input|
|
||||
# input.sub /\\.erb$/, ''
|
||||
# end
|
||||
# end
|
||||
output 'public/images'
|
||||
input 'assets/images' do
|
||||
match '**/*' do
|
||||
copy
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
output 'public'
|
||||
input 'assets/static' do
|
||||
match '**/*' do
|
||||
copy
|
||||
end
|
||||
end
|
||||
|
||||
|
|
Before Width: | Height: | Size: 6.5 KiB |
BIN
assets/images/sponsors/5apps-205x60.png
Normal file
After Width: | Height: | Size: 4.6 KiB |
BIN
assets/images/sponsors/8thlight-205x60.jpg
Normal file
After Width: | Height: | Size: 24 KiB |
BIN
assets/images/sponsors/agileanimal-205x60.png
Normal file
After Width: | Height: | Size: 7.8 KiB |
BIN
assets/images/sponsors/amen-205x60.jpg
Normal file
After Width: | Height: | Size: 5.3 KiB |
BIN
assets/images/sponsors/atomicobject-205x60.png
Normal file
After Width: | Height: | Size: 2.6 KiB |
BIN
assets/images/sponsors/avarteq-140x40.png
Normal file
After Width: | Height: | Size: 13 KiB |
BIN
assets/images/sponsors/basho-205x60.png
Normal file
After Width: | Height: | Size: 8.8 KiB |
BIN
assets/images/sponsors/bendyworks-100x60.png
Normal file
After Width: | Height: | Size: 1.8 KiB |
BIN
assets/images/sponsors/bendyworks-205x130.png
Normal file
After Width: | Height: | Size: 6.1 KiB |
BIN
assets/images/sponsors/bendyworks-210x210.png
Normal file
After Width: | Height: | Size: 33 KiB |
BIN
assets/images/sponsors/cloudcontrol-100x60.png
Normal file
After Width: | Height: | Size: 2.0 KiB |
BIN
assets/images/sponsors/cloudcontrol-205x130.png
Normal file
After Width: | Height: | Size: 2.6 KiB |
BIN
assets/images/sponsors/cloudcontrol-210x210.png
Normal file
After Width: | Height: | Size: 9.6 KiB |
BIN
assets/images/sponsors/cobotme-205x60.png
Normal file
After Width: | Height: | Size: 11 KiB |
BIN
assets/images/sponsors/codeminer-205x60.png
Normal file
After Width: | Height: | Size: 2.5 KiB |
BIN
assets/images/sponsors/crowdinteractive-205x60.png
Normal file
After Width: | Height: | Size: 3.5 KiB |
BIN
assets/images/sponsors/engineyard-140x40.png
Normal file
After Width: | Height: | Size: 3.8 KiB |
BIN
assets/images/sponsors/enterprise-rails-140x40.png
Normal file
After Width: | Height: | Size: 11 KiB |
BIN
assets/images/sponsors/esm-205x60.png
Normal file
After Width: | Height: | Size: 4.7 KiB |
BIN
assets/images/sponsors/evilmartians-205x60.png
Normal file
After Width: | Height: | Size: 4.8 KiB |
BIN
assets/images/sponsors/fingertips-205x60.png
Normal file
After Width: | Height: | Size: 2.0 KiB |
BIN
assets/images/sponsors/gidsy.png
Normal file
After Width: | Height: | Size: 9.0 KiB |
BIN
assets/images/sponsors/github.png
Normal file
After Width: | Height: | Size: 4.5 KiB |
BIN
assets/images/sponsors/heroku-100x60.png
Normal file
After Width: | Height: | Size: 1.8 KiB |
BIN
assets/images/sponsors/heroku-140x40.png
Normal file
After Width: | Height: | Size: 4.2 KiB |
BIN
assets/images/sponsors/heroku-205x130.png
Normal file
After Width: | Height: | Size: 2.3 KiB |
BIN
assets/images/sponsors/heroku-205x60.png
Normal file
After Width: | Height: | Size: 2.5 KiB |
BIN
assets/images/sponsors/iriscouch-140x40.png
Normal file
After Width: | Height: | Size: 6.0 KiB |
BIN
assets/images/sponsors/jumpstartlab-140x40.png
Normal file
After Width: | Height: | Size: 3.3 KiB |
BIN
assets/images/sponsors/jumpstartlab-205x60.png
Normal file
After Width: | Height: | Size: 4.2 KiB |
BIN
assets/images/sponsors/kanbanery-100x60.png
Normal file
After Width: | Height: | Size: 2.5 KiB |
BIN
assets/images/sponsors/kanbanery-205x130.png
Normal file
After Width: | Height: | Size: 4.2 KiB |
BIN
assets/images/sponsors/kanbanery-205x60.png
Normal file
After Width: | Height: | Size: 12 KiB |
BIN
assets/images/sponsors/librato-metrics-140x40.png
Normal file
After Width: | Height: | Size: 3.6 KiB |
BIN
assets/images/sponsors/medidata-205x60.png
Normal file
After Width: | Height: | Size: 10 KiB |
BIN
assets/images/sponsors/meltmedia-205x60.png
Normal file
After Width: | Height: | Size: 4.4 KiB |
BIN
assets/images/sponsors/mindmatters-205x60.png
Normal file
After Width: | Height: | Size: 1.7 KiB |
BIN
assets/images/sponsors/mongohq-100x60.png
Normal file
After Width: | Height: | Size: 1.9 KiB |
BIN
assets/images/sponsors/mongohq-205x130.png
Normal file
After Width: | Height: | Size: 5.7 KiB |
BIN
assets/images/sponsors/mongohq-205x60.png
Normal file
After Width: | Height: | Size: 3.4 KiB |
BIN
assets/images/sponsors/nedap-100x60.png
Normal file
After Width: | Height: | Size: 1.6 KiB |
BIN
assets/images/sponsors/nedap-205x130.png
Normal file
After Width: | Height: | Size: 7.7 KiB |
BIN
assets/images/sponsors/nedap-205x60.png
Normal file
After Width: | Height: | Size: 7.4 KiB |
BIN
assets/images/sponsors/nedap-430x130.png
Normal file
After Width: | Height: | Size: 12 KiB |
BIN
assets/images/sponsors/papertrail-140x40.png
Normal file
After Width: | Height: | Size: 11 KiB |
BIN
assets/images/sponsors/planio-100x60.png
Normal file
After Width: | Height: | Size: 4.4 KiB |
BIN
assets/images/sponsors/planio-205x130.png
Normal file
After Width: | Height: | Size: 14 KiB |
BIN
assets/images/sponsors/planio-205x60.png
Normal file
After Width: | Height: | Size: 5.2 KiB |
BIN
assets/images/sponsors/postmark-140x40.png
Normal file
After Width: | Height: | Size: 5.3 KiB |
BIN
assets/images/sponsors/pusher-140x40.png
Normal file
After Width: | Height: | Size: 8.1 KiB |
BIN
assets/images/sponsors/railslove-140x40.png
Normal file
After Width: | Height: | Size: 9.0 KiB |
BIN
assets/images/sponsors/railslove.png
Normal file
After Width: | Height: | Size: 9.0 KiB |
BIN
assets/images/sponsors/servergrove-140x40.png
Normal file
After Width: | Height: | Size: 5.3 KiB |
BIN
assets/images/sponsors/shopify-140x40.png
Normal file
After Width: | Height: | Size: 8.5 KiB |
BIN
assets/images/sponsors/shopify.png
Normal file
After Width: | Height: | Size: 10 KiB |
BIN
assets/images/sponsors/site5-205x60.png
Normal file
After Width: | Height: | Size: 2.6 KiB |
BIN
assets/images/sponsors/soundcloud-100x60.png
Normal file
After Width: | Height: | Size: 2.0 KiB |
BIN
assets/images/sponsors/soundcloud-205x130.png
Normal file
After Width: | Height: | Size: 7.3 KiB |
BIN
assets/images/sponsors/soundcloud-205x60.png
Normal file
After Width: | Height: | Size: 4.8 KiB |
BIN
assets/images/sponsors/soundcloud.png
Normal file
After Width: | Height: | Size: 19 KiB |
BIN
assets/images/sponsors/stickermule-140x40.png
Normal file
After Width: | Height: | Size: 6.7 KiB |
BIN
assets/images/sponsors/stripe-140x40.png
Normal file
After Width: | Height: | Size: 4.3 KiB |
BIN
assets/images/sponsors/stripe-205x60.png
Normal file
After Width: | Height: | Size: 13 KiB |
BIN
assets/images/sponsors/stripe-stamp-111x103.png
Normal file
After Width: | Height: | Size: 18 KiB |
BIN
assets/images/sponsors/thinkrelevance-205x60.png
Normal file
After Width: | Height: | Size: 3.6 KiB |
BIN
assets/images/sponsors/thoughtbot-140x40.png
Normal file
After Width: | Height: | Size: 5.1 KiB |
BIN
assets/images/sponsors/ticketevolution-100x60.png
Normal file
After Width: | Height: | Size: 2.1 KiB |
BIN
assets/images/sponsors/ticketevolution-205x130.jpg
Normal file
After Width: | Height: | Size: 34 KiB |
BIN
assets/images/sponsors/ticketevolution-205x60.jpg
Normal file
After Width: | Height: | Size: 29 KiB |
BIN
assets/images/sponsors/tupalo-205x60.png
Normal file
After Width: | Height: | Size: 7.5 KiB |
BIN
assets/images/sponsors/twitter-205x60.png
Normal file
After Width: | Height: | Size: 1.6 KiB |
BIN
assets/images/sponsors/wooga-100x60.png
Normal file
After Width: | Height: | Size: 3.4 KiB |
BIN
assets/images/sponsors/wooga-205x130.png
Normal file
After Width: | Height: | Size: 7.9 KiB |
BIN
assets/images/sponsors/wooga-210x210.png
Normal file
After Width: | Height: | Size: 25 KiB |
BIN
assets/images/sponsors/xing-100x60.png
Normal file
After Width: | Height: | Size: 1.6 KiB |
BIN
assets/images/sponsors/xing-205x130.png
Normal file
After Width: | Height: | Size: 6.4 KiB |
BIN
assets/images/sponsors/xing-210x210.png
Normal file
After Width: | Height: | Size: 17 KiB |
BIN
assets/images/sponsors/zendesk-205x60.png
Normal file
After Width: | Height: | Size: 4.2 KiB |
BIN
assets/images/sponsors/zweitag-100x60.png
Normal file
After Width: | Height: | Size: 1.8 KiB |
BIN
assets/images/sponsors/zweitag-205x130.png
Normal file
After Width: | Height: | Size: 4.4 KiB |
BIN
assets/images/sponsors/zweitag-205x60.png
Normal file
After Width: | Height: | Size: 4.3 KiB |
|
@ -7,6 +7,8 @@ require 'ext/jquery'
|
|||
@Travis = Em.Namespace.create
|
||||
CONFIG_KEYS: ['rvm', 'gemfile', 'env', 'otp_release', 'php', 'node_js', 'perl', 'python', 'scala']
|
||||
|
||||
INTERVALS: { sponsors: -1, times: -1 }
|
||||
|
||||
# QUEUES: [
|
||||
# { name: 'common', display: 'Common' },
|
||||
# { name: 'php', display: 'PHP, Perl and Python' },
|
||||
|
@ -27,6 +29,7 @@ require 'ext/jquery'
|
|||
App: Em.Application.extend
|
||||
initialize: (router) ->
|
||||
@store = Travis.Store.create()
|
||||
@store.loadMany(Travis.Sponsor, Travis.SPONSORS)
|
||||
@routes = Travis.Router.create(app: this)
|
||||
@_super(Em.Object.create())
|
||||
@routes.start()
|
||||
|
@ -39,4 +42,7 @@ require 'router'
|
|||
require 'store'
|
||||
require 'templates'
|
||||
require 'views'
|
||||
require 'locales'
|
||||
|
||||
require 'config/locales'
|
||||
require 'data/sponsors'
|
||||
|
||||
|
|
|
@ -1,16 +1,47 @@
|
|||
require 'helpers'
|
||||
require 'travis/ticker'
|
||||
|
||||
Travis.Controllers = Em.Namespace.create
|
||||
AppController: Em.Controller.extend()
|
||||
|
||||
RepositoriesController: Em.ArrayController.extend()
|
||||
RepositoryController: Em.ObjectController.extend(Travis.Urls.Repository)
|
||||
TabsController: Em.Controller.extend()
|
||||
BuildsController: Em.ArrayController.extend()
|
||||
BuildController: Em.ObjectController.extend(Travis.Urls.Commit)
|
||||
JobController: Em.ObjectController.extend(Travis.Urls.Commit)
|
||||
|
||||
SidebarController: Em.Controller.extend()
|
||||
QueuesController: Em.ArrayController.extend()
|
||||
|
||||
SponsorsController: Em.ArrayController.extend
|
||||
page: 0
|
||||
|
||||
arrangedContent: (->
|
||||
@get('shuffled').slice(@start(), @end())
|
||||
).property('shuffled.length', 'page')
|
||||
|
||||
shuffled: (->
|
||||
if content = @get('content') then $.shuffle(content) else []
|
||||
).property('content.length')
|
||||
|
||||
next: ->
|
||||
@set('page', if @isLast() then 0 else @get('page') + 1)
|
||||
|
||||
pages: (->
|
||||
length = @getPath('content.length')
|
||||
if length then parseInt(length / @get('perPage') + 1) else 1
|
||||
).property('length')
|
||||
|
||||
isLast: ->
|
||||
@get('page') == @get('pages') - 1
|
||||
|
||||
start: ->
|
||||
@get('page') * @get('perPage')
|
||||
|
||||
end: ->
|
||||
@start() + @get('perPage')
|
||||
|
||||
WorkersController: Em.ArrayController.extend
|
||||
groups: (->
|
||||
groups = {}
|
||||
|
|
|
@ -8,7 +8,7 @@ Travis.Layout.Base = Em.Object.extend
|
|||
$.extend this, Travis.Views
|
||||
|
||||
for name in controllers
|
||||
key = "#{name}Controller"
|
||||
key = "#{$.camelize(name, false)}Controller"
|
||||
name = $.camelize(key)
|
||||
this[key] = Travis.Controllers[name].create(namespace: this, controllers: this)
|
||||
|
||||
|
|
|
@ -2,14 +2,28 @@ require 'layout/base'
|
|||
|
||||
Travis.Layout.Sidebar = Travis.Layout.Base.extend
|
||||
init: ->
|
||||
@_super('sidebar', 'workers', 'queues')
|
||||
@_super('sidebar', 'sponsors', 'workers', 'queues')
|
||||
@appController = @get('appController')
|
||||
|
||||
@connectSponsors(Travis.Sponsor.decks(), Travis.Sponsor.links())
|
||||
@connectWorkers(Travis.Worker.find())
|
||||
@connectQueues(Travis.QUEUES)
|
||||
|
||||
Travis.Ticker.create(target: this, interval: Travis.INTERVALS.sponsors)
|
||||
|
||||
connect: ->
|
||||
@appController.connectOutlet(outletName: 'right', name: 'sidebar')
|
||||
|
||||
connectSponsors: (decks, links) ->
|
||||
@sponsorsController = Em.Controller.create
|
||||
decks: Travis.Controllers.SponsorsController.create(perPage: 1, content: decks)
|
||||
links: Travis.Controllers.SponsorsController.create(perPage: 6, content: links)
|
||||
@appController.set 'sponsors', @sponsorsController
|
||||
|
||||
tick: ->
|
||||
@sponsorsController.get('decks').next()
|
||||
@sponsorsController.get('links').next()
|
||||
|
||||
connectWorkers: (workers) ->
|
||||
@workersController.set('content', workers)
|
||||
@appController.set('workers', @workersController)
|
||||
|
|
|
@ -3,5 +3,6 @@ require 'models/build'
|
|||
require 'models/commit'
|
||||
require 'models/job'
|
||||
require 'models/repository'
|
||||
require 'models/sponsor'
|
||||
require 'models/worker'
|
||||
|
||||
|
|
30
assets/javascripts/app/models/sponsor.coffee
Normal file
|
@ -0,0 +1,30 @@
|
|||
require 'travis/model'
|
||||
|
||||
@Travis.Sponsor = Travis.Model.extend
|
||||
type: DS.attr('string')
|
||||
url: DS.attr('string')
|
||||
link: DS.attr('string')
|
||||
|
||||
image: (->
|
||||
"images/sponsors/#{@getPath('data.image')}"
|
||||
).property('data.image')
|
||||
|
||||
Travis.Sponsor.reopenClass
|
||||
decks: ->
|
||||
@platinum().concat @gold()
|
||||
|
||||
platinum: ->
|
||||
platinum = @byType('platinum').toArray()
|
||||
[sponsor] for sponsor in platinum
|
||||
|
||||
gold: ->
|
||||
gold = @byType('gold').toArray()
|
||||
gold.splice(0, 2) while gold.length > 0
|
||||
|
||||
links: ->
|
||||
@byType('silver')
|
||||
|
||||
byType: ->
|
||||
types = Array.prototype.slice.apply(arguments)
|
||||
Travis.Sponsor.filter (sponsor) -> types.indexOf(sponsor.get('type')) != -1
|
||||
|
|
@ -1,20 +1,11 @@
|
|||
<div id="right" class="maximized">
|
||||
<div class="slider"><div class='icon'></div> </div>
|
||||
<div class="inner"><div class='wrapper'>
|
||||
<!--
|
||||
<h4>{{t layouts.application.sponsers}}</h4>
|
||||
<div class="sponsors top"></div>
|
||||
<p class="hint"><a href="https://love.travis-ci.org/sponsors">{{{t layouts.application.sponsors_link}}}</a></p>
|
||||
-->
|
||||
|
||||
{{view Travis.Views.WorkersView groupsBinding="controller.workers" id="workers"}}
|
||||
{{view Travis.Views.QueuesView queuesBinding="controller.queues" id="queues"}}
|
||||
|
||||
<!--
|
||||
<div class="box">
|
||||
<h4>{{t layouts.application.sponsers}}</h4>
|
||||
<div class="sponsors bottom"></div>
|
||||
</div>
|
||||
{{view templateName="sponsors/decks"}}
|
||||
{{view templateName="workers/list" id="workers"}}
|
||||
{{view templateName="queues/list" id="queues"}}
|
||||
{{view templateName="sponsors/links"}}
|
||||
|
||||
<div id="alpha_warning" class="box">
|
||||
<h4>{{t layouts.about.alpha}}</h4>
|
||||
|
@ -29,12 +20,9 @@
|
|||
<li><a href="irc://irc.freenode.net#travis">irc.freenode.net#travis</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
-->
|
||||
</div></div>
|
||||
</div>
|
||||
|
||||
<!--
|
||||
<div id="github">
|
||||
<a href="https://github.com/travis-ci" title="Fork me on GitHub">{{t layouts.application.fork_me}}</a>
|
||||
</div>
|
||||
-->
|
||||
|
|
13
assets/javascripts/app/templates/sponsors/decks.hbs
Normal file
|
@ -0,0 +1,13 @@
|
|||
<h4>{{t layouts.application.sponsers}}</h4>
|
||||
<ul class="sponsors top">
|
||||
{{#each deck in sponsors.decks}}
|
||||
{{#each deck}}
|
||||
<li>
|
||||
<a {{bindAttr href="url"}}>
|
||||
<img {{bindAttr src="image"}}>
|
||||
</a>
|
||||
</li>
|
||||
{{/each}}
|
||||
{{/each}}
|
||||
</ul>
|
||||
<p class="hint"><a href="https://love.travis-ci.org/sponsors">{{{t layouts.application.sponsors_link}}}</a></p>
|
11
assets/javascripts/app/templates/sponsors/links.hbs
Normal file
|
@ -0,0 +1,11 @@
|
|||
<div class="box">
|
||||
<h4>{{t layouts.application.sponsers}}</h4>
|
||||
<ul class="sponsors bottom">
|
||||
{{#each sponsors.links}}
|
||||
<li>
|
||||
{{{link}}}
|
||||
</li>
|
||||
{{/each}}
|
||||
</ul>
|
||||
</div>
|
||||
|
|
@ -1,9 +1,7 @@
|
|||
require 'ext/ember/namespace'
|
||||
|
||||
@Travis.Views = Em.Namespace.create
|
||||
SidebarView: Em.View.extend(templateName: 'layouts/sidebar')
|
||||
QueuesView: Em.View.extend(templateName: 'queues/list')
|
||||
WorkersView: Em.View.extend(templateName: 'workers/list')
|
||||
SidebarView: Em.View.extend(templateName: 'layouts/sidebar')
|
||||
|
||||
require 'views/build'
|
||||
require 'views/job'
|
||||
|
|
44
assets/javascripts/data/sponsors.coffee
Normal file
|
@ -0,0 +1,44 @@
|
|||
@Travis.SPONSORS = [
|
||||
{ type: 'platinum', url: "http://www.wooga.com", image: "wooga-205x130.png" }
|
||||
{ type: 'platinum', url: "http://bendyworks.com", image: "bendyworks-205x130.png" }
|
||||
{ type: 'platinum', url: "http://cloudcontrol.com", image: "cloudcontrol-205x130.png" }
|
||||
{ type: 'platinum', url: "http://xing.de", image: "xing-205x130.png" }
|
||||
|
||||
{ type: 'gold', url: "http://heroku.com", image: "heroku-205x60.png" }
|
||||
{ type: 'gold', url: "http://soundcloud.com", image: "soundcloud-205x60.png" }
|
||||
{ type: 'gold', url: "http://nedap.com", image: "nedap-205x60.png" }
|
||||
{ type: 'gold', url: "http://mongohq.com", image: "mongohq-205x60.png" }
|
||||
{ type: 'gold', url: "http://zweitag.de", image: "zweitag-205x60.png" }
|
||||
{ type: 'gold', url: "http://kanbanery.com", image: "kanbanery-205x60.png" }
|
||||
{ type: 'gold', url: "http://ticketevolution.com", image: "ticketevolution-205x60.jpg" }
|
||||
{ type: 'gold', url: "http://plan.io/travis", image: "planio-205x60.png" }
|
||||
|
||||
{ type: 'silver', link: "<a href=\"http://cobot.me\">Cobot</a><span>: The one tool to run your coworking space</span>" }
|
||||
{ type: 'silver', link: "<a href=\"http://jumpstartlab.com\">JumpstartLab</a><span>: We build developers</span>" }
|
||||
{ type: 'silver', link: "<a href=\"http://evilmartians.com\">Evil Martians</a><span>: Agile Ruby on Rails development</span>" }
|
||||
{ type: 'silver', link: "<a href=\"http://zendesk.com\">Zendesk</a><span>: Love your helpdesk</span>" }
|
||||
{ type: 'silver', link: "<a href=\"http://stripe.com\">Stripe</a><span>: Payments for developers</span>" }
|
||||
{ type: 'silver', link: "<a href=\"http://basho.com\">Basho</a><span>: We make Riak!</span>" }
|
||||
{ type: 'silver', link: "<a href=\"http://thinkrelevance.com\">Relevance</a><span>: We deliver software solutions</span>" }
|
||||
{ type: 'silver', link: "<a href=\"http://mindmatters.de\">Mindmatters</a><span>: Software für Menschen</span>" }
|
||||
{ type: 'silver', link: "<a href=\"http://amenhq.com\">Amen</a><span>: The best and worst of everything</span>" }
|
||||
{ type: 'silver', link: "<a href=\"http://site5.com\">Site5</a><span>: Premium Web Hosting Solutions</span>" }
|
||||
{ type: 'silver', link: "<a href=\"http://www.crowdint.com\">Crowd Interactive</a><span>: Leading Rails consultancy in Mexico</span>" }
|
||||
{ type: 'silver', link: "<a href=\"http://www.atomicobject.com/detroit\">Atomic Object</a><span>: Work with really smart people</span>" }
|
||||
{ type: 'silver', link: "<a href=\"http://codeminer.com.br\">Codeminer</a><span>: smart services for your startup</span>" }
|
||||
{ type: 'silver', link: "<a href=\"http://cloudant.com\">Cloudant</a><span>: grow into your data layer, not out of it</span>" }
|
||||
{ type: 'silver', link: "<a href=\"http://gidsy.com\">Gidsy</a><span>: Explore, organize & book unique things to do!</span>" }
|
||||
{ type: 'silver', link: "<a href=\"http://5apps.com\">5apps</a><span>: Package & deploy HTML5 apps automatically</span>" }
|
||||
{ type: 'silver', link: "<a href=\"http://meltmedia.com\">Meltmedia</a><span>: We are Interactive Superheroes</span>" }
|
||||
{ type: 'silver', link: "<a href=\"http://www.fngtps.com\">Fingertips</a><span> offers design and development services</span>" }
|
||||
{ type: 'silver', link: "<a href=\"http://www.engineyard.com\">Engine Yard</a><span>: Build epic apps, let us handle the rest</span>" }
|
||||
{ type: 'silver', link: "<a href=\"http://malwarebytes.org\">Malwarebytes</a><span>: Defeat Malware once and for all.</span>" }
|
||||
{ type: 'silver', link: "<a href=\"http://readmill.com\">Readmill</a><span>: The best reading app on the iPad.</span>" }
|
||||
{ type: 'silver', link: "<a href=\"http://www.mdsol.com\">Medidata</a><span>: clinical tech improving quality of life</span>" }
|
||||
{ type: 'silver', link: "<a href=\"http://coderwall.com/teams/4f27194e973bf000040005f0\">ESM</a><span>: Japan's best agile Ruby/Rails consultancy</span>" }
|
||||
{ type: 'silver', link: "<a href=\"http://twitter.com\">Twitter</a><span>: instantly connects people everywhere</span>" }
|
||||
{ type: 'silver', link: "<a href=\"http://agileanimal.com\">AGiLE ANiMAL</a><span>: we <3 Travis CI.</span>" }
|
||||
{ type: 'silver', link: "<a href=\"http://tupalo.com\">Tupalo</a><span>: Discover, review & share local businesses.</span>" }
|
||||
]
|
||||
|
||||
|
|
@ -143,5 +143,15 @@ $.extend
|
|||
ret[ret.length] = value if value?
|
||||
ret.concat.apply [], ret
|
||||
|
||||
shuffle: (array) ->
|
||||
array = array.slice()
|
||||
top = array.length
|
||||
while top && --top
|
||||
current = Math.floor(Math.random() * (top + 1))
|
||||
tmp = array[current]
|
||||
array[current] = array[top]
|
||||
array[top] = tmp
|
||||
array
|
||||
|
||||
truncate: (string, length) ->
|
||||
if string.length > length then string.trim().substring(0, length) + '...' else string
|
||||
|
|
|
@ -1,18 +1,16 @@
|
|||
@Travis.Ticker = Ember.Object.extend
|
||||
init: ->
|
||||
@_super()
|
||||
@schedule()
|
||||
@schedule() unless @get('interval') == -1
|
||||
|
||||
tick: ->
|
||||
context = @get('context')
|
||||
@get('targets').forEach (target) =>
|
||||
target = context.get(target)
|
||||
return unless target
|
||||
if target.forEach
|
||||
target.forEach (target) -> target.tick()
|
||||
else
|
||||
target.tick()
|
||||
targets = @get('targets') || [@get('target')]
|
||||
for target in targets
|
||||
target = context.get(target) if context
|
||||
target.tick() if target
|
||||
@schedule()
|
||||
|
||||
schedule: ->
|
||||
Ember.run.later((=> @tick()), Travis.app.TICK_INTERVAL)
|
||||
Ember.run.later((=> @tick()), @get('interval') || Travis.app.TICK_INTERVAL)
|
||||
|
||||
|
||||
|
|
135
assets/static/sponsors.json
Normal file
|
@ -0,0 +1,135 @@
|
|||
{
|
||||
"platinum": [
|
||||
{
|
||||
"url": "http://www.wooga.com",
|
||||
"image": "wooga-205x130.png"
|
||||
},
|
||||
{
|
||||
"url": "http://bendyworks.com",
|
||||
"image": "bendyworks-205x130.png"
|
||||
},
|
||||
{
|
||||
"url": "http://cloudcontrol.com",
|
||||
"image": "cloudcontrol-205x130.png"
|
||||
},
|
||||
{
|
||||
"url": "http://xing.de",
|
||||
"image": "xing-205x130.png"
|
||||
}
|
||||
],
|
||||
"gold": [
|
||||
{
|
||||
"url": "http://heroku.com",
|
||||
"image": "heroku-205x60.png"
|
||||
},
|
||||
{
|
||||
"url": "http://soundcloud.com",
|
||||
"image": "soundcloud-205x60.png"
|
||||
},
|
||||
{
|
||||
"url": "http://nedap.com",
|
||||
"image": "nedap-205x60.png"
|
||||
},
|
||||
{
|
||||
"url": "http://mongohq.com",
|
||||
"image": "mongohq-205x60.png"
|
||||
},
|
||||
{
|
||||
"url": "http://zweitag.de",
|
||||
"image": "zweitag-205x60.png"
|
||||
},
|
||||
{
|
||||
"url": "http://kanbanery.com",
|
||||
"image": "kanbanery-205x60.png"
|
||||
},
|
||||
{
|
||||
"url": "http://ticketevolution.com",
|
||||
"image": "ticketevolution-205x60.jpg"
|
||||
},
|
||||
{
|
||||
"url": "http://plan.io/travis",
|
||||
"image": "planio-205x60.png"
|
||||
}
|
||||
],
|
||||
"silver": [
|
||||
{
|
||||
"link": "<a href=\"http://cobot.me\">Cobot</a><span>: The one tool to run your coworking space</span>"
|
||||
},
|
||||
{
|
||||
"link": "<a href=\"http://jumpstartlab.com\">JumpstartLab</a><span>: We build developers</span>"
|
||||
},
|
||||
{
|
||||
"link": "<a href=\"http://evilmartians.com\">Evil Martians</a><span>: Agile Ruby on Rails development</span>"
|
||||
},
|
||||
{
|
||||
"link": "<a href=\"http://zendesk.com\">Zendesk</a><span>: Love your helpdesk</span>"
|
||||
},
|
||||
{
|
||||
"link": "<a href=\"http://stripe.com\">Stripe</a><span>: Payments for developers</span>"
|
||||
},
|
||||
{
|
||||
"link": "<a href=\"http://basho.com\">Basho</a><span>: We make Riak!</span>"
|
||||
},
|
||||
{
|
||||
"link": "<a href=\"http://thinkrelevance.com\">Relevance</a><span>: We deliver software solutions</span>"
|
||||
},
|
||||
{
|
||||
"link": "<a href=\"http://mindmatters.de\">Mindmatters</a><span>: Software für Menschen</span>"
|
||||
},
|
||||
{
|
||||
"link": "<a href=\"http://amenhq.com\">Amen</a><span>: The best and worst of everything</span>"
|
||||
},
|
||||
{
|
||||
"link": "<a href=\"http://site5.com\">Site5</a><span>: Premium Web Hosting Solutions</span>"
|
||||
},
|
||||
{
|
||||
"link": "<a href=\"http://www.crowdint.com\">Crowd Interactive</a><span>: Leading Rails consultancy in Mexico</span>"
|
||||
},
|
||||
{
|
||||
"link": "<a href=\"http://www.atomicobject.com/detroit\">Atomic Object</a><span>: Work with really smart people</span>"
|
||||
},
|
||||
{
|
||||
"link": "<a href=\"http://codeminer.com.br\">Codeminer</a><span>: smart services for your startup</span>"
|
||||
},
|
||||
{
|
||||
"link": "<a href=\"http://cloudant.com\">Cloudant</a><span>: grow into your data layer, not out of it</span>"
|
||||
},
|
||||
{
|
||||
"link": "<a href=\"http://gidsy.com\">Gidsy</a><span>: Explore, organize & book unique things to do!</span>"
|
||||
},
|
||||
{
|
||||
"link": "<a href=\"http://5apps.com\">5apps</a><span>: Package & deploy HTML5 apps automatically</span>"
|
||||
},
|
||||
{
|
||||
"link": "<a href=\"http://meltmedia.com\">Meltmedia</a><span>: We are Interactive Superheroes</span>"
|
||||
},
|
||||
{
|
||||
"link": "<a href=\"http://www.fngtps.com\">Fingertips</a><span> offers design and development services</span>"
|
||||
},
|
||||
{
|
||||
"link": "<a href=\"http://www.fngtps.com\">Engine Yard</a><span>: Build epic apps, let us handle the rest</span>"
|
||||
},
|
||||
{
|
||||
"link": "<a href=\"http://malwarebytes.org\">Malwarebytes</a><span>: Defeat Malware once and for all.</span>"
|
||||
},
|
||||
{
|
||||
"link": "<a href=\"http://readmill.com\">Readmill</a><span>: The best reading app on the iPad.</span>"
|
||||
},
|
||||
{
|
||||
"link": "<a href=\"http://www.mdsol.com\">Medidata</a><span>: clinical tech improving quality of life</span>"
|
||||
},
|
||||
{
|
||||
"link": "<a href=\"http://coderwall.com/teams/4f27194e973bf000040005f0\">ESM</a><span>: Japan's best agile Ruby/Rails consultancy</span>"
|
||||
},
|
||||
{
|
||||
"link": "<a href=\"http://twitter.com\">Twitter</a><span>: instantly connects people everywhere</span>"
|
||||
},
|
||||
{
|
||||
"link": "<a href=\"http://agileanimal.com\">AGiLE ANiMAL</a><span>: we <3 Travis CI.</span>"
|
||||
},
|
||||
{
|
||||
"link": "<a href=\"http://tupalo.com\">Tupalo</a><span>: Discover, review & share local businesses.</span>"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -23,7 +23,7 @@ body {
|
|||
font-weight: bold;
|
||||
}
|
||||
|
||||
#left, #main {
|
||||
#left, #main, #right {
|
||||
float: left;
|
||||
}
|
||||
|
||||
|
|
79
assets/stylesheets/jasmine.css
Normal file
|
@ -0,0 +1,79 @@
|
|||
#HTMLReporter { font-size: 11px; font-family: Monaco, "Lucida Console", monospace; line-height: 14px; color: #333333; }
|
||||
#HTMLReporter a { text-decoration: none; }
|
||||
#HTMLReporter a:hover { text-decoration: underline; }
|
||||
#HTMLReporter p, #HTMLReporter h1, #HTMLReporter h2, #HTMLReporter h3, #HTMLReporter h4, #HTMLReporter h5, #HTMLReporter h6 { margin: 0; line-height: 14px; }
|
||||
#HTMLReporter .banner, #HTMLReporter .symbolSummary, #HTMLReporter .summary, #HTMLReporter .resultMessage, #HTMLReporter .specDetail .description, #HTMLReporter .alert .bar, #HTMLReporter .stackTrace { padding-left: 9px; padding-right: 9px; }
|
||||
#HTMLReporter #jasmine_content { position: fixed; right: 100%; }
|
||||
#HTMLReporter .version { color: #aaaaaa; }
|
||||
#HTMLReporter .banner { margin-top: 14px; }
|
||||
#HTMLReporter .duration { color: #aaaaaa; float: right; }
|
||||
#HTMLReporter .symbolSummary { overflow: hidden; *zoom: 1; margin: 14px 0; }
|
||||
#HTMLReporter .symbolSummary li { display: block; float: left; height: 7px; width: 14px; margin-bottom: 7px; font-size: 16px; }
|
||||
#HTMLReporter .symbolSummary li.passed { font-size: 14px; }
|
||||
#HTMLReporter .symbolSummary li.passed:before { color: #5e7d00; content: "\02022"; }
|
||||
#HTMLReporter .symbolSummary li.failed { line-height: 9px; }
|
||||
#HTMLReporter .symbolSummary li.failed:before { color: #b03911; content: "x"; font-weight: bold; margin-left: -1px; }
|
||||
#HTMLReporter .symbolSummary li.skipped { font-size: 14px; }
|
||||
#HTMLReporter .symbolSummary li.skipped:before { color: #bababa; content: "\02022"; }
|
||||
#HTMLReporter .symbolSummary li.pending { line-height: 11px; }
|
||||
#HTMLReporter .symbolSummary li.pending:before { color: #aaaaaa; content: "-"; }
|
||||
#HTMLReporter .bar { line-height: 28px; font-size: 14px; display: block; color: #eee; }
|
||||
#HTMLReporter .runningAlert { background-color: #666666; }
|
||||
#HTMLReporter .skippedAlert { background-color: #aaaaaa; }
|
||||
#HTMLReporter .skippedAlert:first-child { background-color: #333333; }
|
||||
#HTMLReporter .skippedAlert:hover { text-decoration: none; color: white; text-decoration: underline; }
|
||||
#HTMLReporter .passingAlert { background-color: #a6b779; }
|
||||
#HTMLReporter .passingAlert:first-child { background-color: #5e7d00; }
|
||||
#HTMLReporter .failingAlert { background-color: #cf867e; }
|
||||
#HTMLReporter .failingAlert:first-child { background-color: #b03911; }
|
||||
#HTMLReporter .results { margin-top: 14px; }
|
||||
#HTMLReporter #details { display: none; }
|
||||
#HTMLReporter .resultsMenu, #HTMLReporter .resultsMenu a { background-color: #fff; color: #333333; }
|
||||
#HTMLReporter.showDetails .summaryMenuItem { font-weight: normal; text-decoration: inherit; }
|
||||
#HTMLReporter.showDetails .summaryMenuItem:hover { text-decoration: underline; }
|
||||
#HTMLReporter.showDetails .detailsMenuItem { font-weight: bold; text-decoration: underline; }
|
||||
#HTMLReporter.showDetails .summary { display: none; }
|
||||
#HTMLReporter.showDetails #details { display: block; }
|
||||
#HTMLReporter .summaryMenuItem { font-weight: bold; text-decoration: underline; }
|
||||
#HTMLReporter .summary { margin-top: 14px; }
|
||||
#HTMLReporter .summary .suite .suite, #HTMLReporter .summary .specSummary { margin-left: 14px; }
|
||||
#HTMLReporter .summary .specSummary.passed a { color: #5e7d00; }
|
||||
#HTMLReporter .summary .specSummary.failed a { color: #b03911; }
|
||||
#HTMLReporter .description + .suite { margin-top: 0; }
|
||||
#HTMLReporter .suite { margin-top: 14px; }
|
||||
#HTMLReporter .suite a { color: #333333; }
|
||||
#HTMLReporter #details .specDetail { margin-bottom: 28px; }
|
||||
#HTMLReporter #details .specDetail .description { display: block; color: white; background-color: #b03911; }
|
||||
#HTMLReporter .resultMessage { padding-top: 14px; color: #333333; }
|
||||
#HTMLReporter .resultMessage span.result { display: block; }
|
||||
#HTMLReporter .stackTrace { margin: 5px 0 0 0; max-height: 224px; overflow: auto; line-height: 18px; color: #666666; border: 1px solid #ddd; background: white; white-space: pre; }
|
||||
|
||||
#TrivialReporter { padding: 8px 13px; clear: both; overflow-y: scroll; background-color: white; font-family: "Helvetica Neue Light", "Lucida Grande", "Calibri", "Arial", sans-serif; /*.resultMessage {*/ /*white-space: pre;*/ /*}*/ }
|
||||
#TrivialReporter a:visited, #TrivialReporter a { color: #303; }
|
||||
#TrivialReporter a:hover, #TrivialReporter a:active { color: blue; }
|
||||
#TrivialReporter .run_spec { float: right; padding-right: 5px; font-size: .8em; text-decoration: none; }
|
||||
#TrivialReporter .banner { color: #303; background-color: #fef; padding: 5px; }
|
||||
#TrivialReporter .logo { float: left; font-size: 1.1em; padding-left: 5px; }
|
||||
#TrivialReporter .logo .version { font-size: .6em; padding-left: 1em; }
|
||||
#TrivialReporter .runner.running { background-color: yellow; }
|
||||
#TrivialReporter .options { text-align: right; font-size: .8em; }
|
||||
#TrivialReporter .suite { border: 1px outset gray; margin: 5px 0; padding-left: 1em; }
|
||||
#TrivialReporter .suite .suite { margin: 5px; }
|
||||
#TrivialReporter .suite.passed { background-color: #dfd; }
|
||||
#TrivialReporter .suite.failed { background-color: #fdd; }
|
||||
#TrivialReporter .spec { margin: 5px; padding-left: 1em; clear: both; }
|
||||
#TrivialReporter .spec.failed, #TrivialReporter .spec.passed, #TrivialReporter .spec.skipped { padding-bottom: 5px; border: 1px solid gray; }
|
||||
#TrivialReporter .spec.failed { background-color: #fbb; border-color: red; }
|
||||
#TrivialReporter .spec.passed { background-color: #bfb; border-color: green; }
|
||||
#TrivialReporter .spec.skipped { background-color: #bbb; }
|
||||
#TrivialReporter .messages { border-left: 1px dashed gray; padding-left: 1em; padding-right: 1em; }
|
||||
#TrivialReporter .passed { background-color: #cfc; display: none; }
|
||||
#TrivialReporter .failed { background-color: #fbb; }
|
||||
#TrivialReporter .skipped { color: #777; background-color: #eee; display: none; }
|
||||
#TrivialReporter .resultMessage span.result { display: block; line-height: 2em; color: black; }
|
||||
#TrivialReporter .resultMessage .mismatch { color: black; }
|
||||
#TrivialReporter .stackTrace { white-space: pre; font-size: .8em; margin-left: 10px; max-height: 5em; overflow: auto; border: 1px inset red; padding: 1em; background: #eef; }
|
||||
#TrivialReporter .finished-at { padding-left: 1em; font-size: .6em; }
|
||||
#TrivialReporter.show-passed .passed, #TrivialReporter.show-skipped .skipped { display: block; }
|
||||
#TrivialReporter #jasmine_content { position: fixed; right: 100%; }
|
||||
#TrivialReporter .runner { border: 1px solid gray; display: block; margin: 5px 0; padding: 2px 0 2px 10px; }
|
BIN
public/images/sponsors/5apps-205x60.png
Normal file
After Width: | Height: | Size: 4.6 KiB |