Compare commits

...

20 Commits

Author SHA1 Message Date
Curtis Ekstrom
1f5eb7f525 Revert to old container lookup behavior
This fixes a bug that affected only pro
2016-04-15 05:58:52 +02:00
lislis
812bf1a4f5 update org landing page, fix gigantic number 2016-04-14 17:00:55 +02:00
Justine
b9688352f4 Merge pull request #497 from jtangelder/ansi-contrast
Improve contrast of the highlight ansi colors
2016-04-14 10:24:40 -04:00
Lisa
2701581c12 Merge pull request #499 from travis-ci/lp-updates
Multiple smaller updates
2016-04-14 16:24:05 +02:00
Lisa
1ff47c63c4 Merge pull request #494 from travis-ci/modify_broadcast_copy
Shorten broadcast copy
2016-04-14 16:15:25 +02:00
lislis
dbedf34be1 add title attrs to team flags 2016-04-14 16:04:27 +02:00
lislis
5733d14ae4 fix layout issue with last synced message 2016-04-14 15:44:59 +02:00
lislis
4cb225d578 hide 'signup account' message if on enterprise 2016-04-14 15:29:30 +02:00
lislis
249deb0eff remove case sensitive notice from getting started 2016-04-14 15:24:12 +02:00
Piotr Sarnacki
446a9bc9b1 Merge pull request #498 from travis-ci/remove_moment_deprecation
Remove moment deprecation on builds page
2016-04-14 14:21:42 +02:00
Curtis Ekstrom
ee4b26a7d7
Remove moment deprecation on builds page
See https://github.com/moment/moment/issues/1407 for more details. All that was needed was to manually instantiate a new Date() object
2016-04-14 13:22:15 +02:00
Piotr Sarnacki
7601173aaa Merge pull request #495 from travis-ci/remove_2.2_deprecations
Upgrade Ember to 2.4.5 and remove all application deprecations
2016-04-14 13:09:53 +02:00
Curtis Ekstrom
e74b29c313
Remove getOwner polyfill 2016-04-14 12:25:24 +02:00
Jorik Tangelder
eb7a746549 Improve contrast of the highlight ansi colors
The contrast of the green, red and yellow highlight colors was too low.
2016-04-14 11:54:36 +02:00
Curtis Ekstrom
d85469c98e
Bump Ember to 2.4.5 2016-04-14 09:44:50 +02:00
Curtis Ekstrom
fe8a5a13e1
Remove Ember 2.3 deprecation warnings 2016-04-14 09:38:59 +02:00
Curtis Ekstrom
f8d05dea78
Remove all remaining app deprecations 2016-04-13 18:06:28 +02:00
Curtis Ekstrom
dc34ab38e7
Install polyfill addon until upgraded to Ember 2.3 2016-04-13 18:06:28 +02:00
Curtis Ekstrom
5c3d905424
Remove unnecessary deprecation handlers
These deprecations are no longer being triggered by the application (as
far as I can tell).
2016-04-13 18:05:52 +02:00
Curtis Ekstrom
f00a899e74
Shorten broadcast copy
This shortens the broadcast copy and makes more sense grammatically
2016-04-13 16:03:19 +02:00
30 changed files with 100 additions and 133 deletions

View File

@ -19,12 +19,8 @@ var App = Ember.Application.extend(Ember.Evented, {
podModulePrefix: config.podModulePrefix, podModulePrefix: config.podModulePrefix,
Resolver: Resolver, Resolver: Resolver,
lookup() {
return this.__container__.lookup.apply(this.__container__, arguments);
},
flash(options) { flash(options) {
return Travis.lookup('controller:flash').loadFlashes([options]); return Ember.getOwner(Travis).lookup('controller:flash').loadFlashes([options]);
}, },
toggleSidebar() { toggleSidebar() {

View File

@ -11,7 +11,7 @@ export default Ember.Controller.extend({
var user; var user;
if ((user = this.get('model')) && user.get('isSyncing') && !user.get('syncedAt')) { if ((user = this.get('model')) && user.get('isSyncing') && !user.get('syncedAt')) {
return Ember.run.scheduleOnce('routerTransitions', this, function() { return Ember.run.scheduleOnce('routerTransitions', this, function() {
return this.container.lookup('router:main').send('renderFirstSync'); return Ember.getOwner(this).lookup('router:main').send('renderFirstSync');
}); });
} }
}.observes('isSyncing', 'auth.currentUser') }.observes('isSyncing', 'auth.currentUser')

View File

@ -76,7 +76,7 @@ var Controller = Ember.Controller.extend({
possiblyRedirectToGettingStartedPage() { possiblyRedirectToGettingStartedPage() {
return Ember.run.scheduleOnce('routerTransitions', this, function() { return Ember.run.scheduleOnce('routerTransitions', this, function() {
if (this.get('tab') === 'owned' && this.get('isLoaded') && this.get('repos.length') === 0) { if (this.get('tab') === 'owned' && this.get('isLoaded') && this.get('repos.length') === 0) {
return this.container.lookup('router:main').send('redirectToGettingStarted'); return Ember.getOwner(this).lookup('router:main').send('redirectToGettingStarted');
} }
}); });
}, },

View File

@ -2,5 +2,6 @@ import { timeAgoInWords, safe } from 'travis/utils/helpers';
import Ember from "ember"; import Ember from "ember";
export default Ember.Helper.helper(function(params) { export default Ember.Helper.helper(function(params) {
return safe(moment(params[0]).format('MMMM D, YYYY H:mm:ss') || '-'); let date = new Date(params[0]);
return safe(moment(date).format('MMMM D, YYYY H:mm:ss') || '-');
}); });

View File

@ -2,16 +2,15 @@ import config from 'travis/config/environment';
import TravisPusher from 'travis/utils/pusher'; import TravisPusher from 'travis/utils/pusher';
var PusherInitializer, initialize; var PusherInitializer, initialize;
initialize = function(data) { initialize = function(applicationInstance) {
var application; const app = applicationInstance.application;
application = data.application;
if (config.pusher.key) { if (config.pusher.key) {
application.pusher = new TravisPusher(config.pusher, data.container.lookup('service:ajax')); app.pusher = new TravisPusher(config.pusher, applicationInstance.lookup('service:ajax'));
application.register('pusher:main', application.pusher, { app.register('pusher:main', app.pusher, {
instantiate: false instantiate: false
}); });
application.inject('route', 'pusher', 'pusher:main'); app.inject('route', 'pusher', 'pusher:main');
return application.pusher.store = data.container.lookup('service:store'); return app.pusher.store = applicationInstance.lookup('service:store');
} }
}; };

View File

@ -30,7 +30,7 @@ var Broadcast = Model.extend({
Broadcast.reopenClass({ Broadcast.reopenClass({
seen: function() { seen: function() {
var seenBroadcasts; var seenBroadcasts;
seenBroadcasts = Travis.lookup('service:storage').getItem('travis.seen_broadcasts'); seenBroadcasts = Ember.getOwner(Travis).lookup('service:storage').getItem('travis.seen_broadcasts');
if (seenBroadcasts != null) { if (seenBroadcasts != null) {
seenBroadcasts = JSON.parse(seenBroadcasts); seenBroadcasts = JSON.parse(seenBroadcasts);
} }

View File

@ -14,7 +14,7 @@ var Router = Ember.Router.extend({
// we should probably think about a more general way to // we should probably think about a more general way to
// do this, location should not know about auth status // do this, location should not know about auth status
return Location.create({ return Location.create({
auth: this.container.lookup('service:auth') auth: Ember.getOwner(this).lookup('service:auth')
}); });
} }
}.property(), }.property(),

View File

@ -1,6 +1,7 @@
import TravisRoute from 'travis/routes/basic'; import TravisRoute from 'travis/routes/basic';
import config from 'travis/config/environment'; import config from 'travis/config/environment';
import BuildFaviconMixin from 'travis/mixins/build-favicon'; import BuildFaviconMixin from 'travis/mixins/build-favicon';
import Ember from 'ember';
export default TravisRoute.extend(BuildFaviconMixin, { export default TravisRoute.extend(BuildFaviconMixin, {
needsAuth: false, needsAuth: false,
@ -99,7 +100,7 @@ export default TravisRoute.extend(BuildFaviconMixin, {
error(error) { error(error) {
var authController; var authController;
if (error === 'needs-auth') { if (error === 'needs-auth') {
authController = this.container.lookup('controller:auth'); authController = Ember.getOwner(this).lookup('controller:auth');
authController.set('redirected', true); authController.set('redirected', true);
return this.transitionTo('auth'); return this.transitionTo('auth');
} else { } else {

View File

@ -1,7 +1,8 @@
import TravisRoute from 'travis/routes/basic'; import TravisRoute from 'travis/routes/basic';
import Ember from 'ember';
export default TravisRoute.extend({ export default TravisRoute.extend({
setupController(controller) { setupController(controller) {
return this.container.lookup('controller:repos').activate('owned'); return Ember.getOwner(this).lookup('controller:repos').activate('owned');
} }
}); });

View File

@ -17,7 +17,7 @@ export default TravisRoute.extend(ScrollResetMixin, {
}, },
setupController(controller, model) { setupController(controller, model) {
this.container.lookup('controller:repos').activate('owned'); this.controllerFor('repos').activate('owned');
if (model && !model.get) { if (model && !model.get) {
model = this.get('store').find('repo', model.id); model = this.get('store').find('repo', model.id);
} }

View File

@ -3,7 +3,7 @@ import TravisRoute from 'travis/routes/basic';
export default TravisRoute.extend({ export default TravisRoute.extend({
setupController: function() { setupController: function() {
$('body').attr('id', 'simple'); $('body').attr('id', 'simple');
this.container.lookup('controller:repos').activate('owned'); this.controllerFor('repos').activate('owned');
return this._super.apply(this, arguments); return this._super.apply(this, arguments);
}, },
renderTemplate: function() { renderTemplate: function() {

View File

@ -64,7 +64,7 @@ export default Ember.Service.extend({
success = options.success || (function() {}); success = options.success || (function() {});
options.success = (data, status, xhr) => { options.success = (data, status, xhr) => {
if (data != null ? data.flash : void 0) { if (data != null ? data.flash : void 0) {
Travis.lookup('controller:flash').loadFlashes(data.flash); Ember.getOwner(Travis).lookup('controller:flash').loadFlashes(data.flash);
} }
if (data != null) { if (data != null) {
delete data.flash; delete data.flash;
@ -75,7 +75,7 @@ export default Ember.Service.extend({
options.error = (data, status, xhr) => { options.error = (data, status, xhr) => {
console.log("[ERROR] API responded with an error (" + status + "): " + (JSON.stringify(data))); console.log("[ERROR] API responded with an error (" + status + "): " + (JSON.stringify(data)));
if (data != null ? data.flash : void 0) { if (data != null ? data.flash : void 0) {
Travis.lookup('controller:flash').pushObject(data.flash); Ember.getOwner(Travis).lookup('controller:flash').pushObject(data.flash);
} }
if (data != null) { if (data != null) {
delete data.flash; delete data.flash;

View File

@ -214,7 +214,7 @@ export default Ember.Service.extend({
// as a direct response to either manual sign in or autoSignIn (right now // as a direct response to either manual sign in or autoSignIn (right now
// we treat both cases behave the same in terms of sent events which I think // we treat both cases behave the same in terms of sent events which I think
// makes it more complicated than it should be). // makes it more complicated than it should be).
router = this.container.lookup('router:main'); router = Ember.getOwner(this).lookup('router:main');
try { try {
return router.send(name); return router.send(name);
} catch (error1) { } catch (error1) {

View File

@ -16,8 +16,9 @@
background-color: $oxide-blue background-color: $oxide-blue
.sync-last .sync-last
position: absolute position: absolute
left: -15em right: 9em
top: 0 top: 0
width: 170%
z-index: -1 z-index: -1
transition: transform 150ms ease, opacity 250ms ease transition: transform 150ms ease, opacity 250ms ease
transform: translateX(80%) transform: translateX(80%)

View File

@ -3,18 +3,17 @@
max-width: 900px max-width: 900px
margin: auto margin: auto
h1 h1
color: #808080 color: $cement-grey
font-size: 36px font-size: 36px
margin-bottom: 1em margin-bottom: 1em
font-weight: 300 font-weight: 300
line-height: 1.1 line-height: 1.1
h2 h2
color: #35a764 color: $turf-green
font-size: 22px font-size: 22px
margin-bottom: 1em margin-bottom: 1em
font-weight: 300 font-weight: 300
p, li p, li
color: #666
font-size: $font-size-m font-size: $font-size-m
line-height: 25px line-height: 25px
@ -76,10 +75,3 @@
strong strong
text-transform: uppercase text-transform: uppercase
font-style: normal font-style: normal
.note--info
background-color: #e7eeee
color: #3e8987
code
color: #267c8d
background-color: white

View File

@ -11,14 +11,14 @@
background-color: #ffffff background-color: #ffffff
background-image: inline-image('landing-page/signingithub.svg') background-image: inline-image('landing-page/signingithub.svg')
background-size: 16px 16px background-size: 16px 16px
border: 2px solid #e4e7e7 border: 2px solid rgba($cement-grey, .4)
color: #a0a8a8 color: $cement-grey
.button--signingin .button--signingin
border: 2px solid #3FA75F border: 2px solid $turf-green
.button--signin:hover .button--signin:hover
background-color: #73c78d background-color: $turf-green
background-image: inline-image('landing-page/signingithub-hover.svg') background-image: inline-image('landing-page/signingithub-hover.svg')
border: 2px solid #73c78d border: 2px solid $turf-green
color: #fff color: #fff
.landing-centered-wrapper .landing-centered-wrapper
@ -37,7 +37,7 @@
font-size: 5em font-size: 5em
line-height: 1em line-height: 1em
font-weight: 300 font-weight: 300
color: #8f9294 color: $cement-grey
margin-bottom: 0 margin-bottom: 0
.hero, .oss-testing, .customers, .recent-builds, .free-for-oss, .private-repos, .features-list, .build-flows, .user-testimonials .hero, .oss-testing, .customers, .recent-builds, .free-for-oss, .private-repos, .features-list, .build-flows, .user-testimonials
@ -52,7 +52,7 @@
font-size: 3.3em font-size: 3.3em
line-height: 1.15em line-height: 1.15em
font-weight: 300 font-weight: 300
color: #39a85b color: $turf-green
p p
line-height: 1.5em line-height: 1.5em
@ -129,7 +129,11 @@
br.mobile-break br.mobile-break
display: none display: none
.os-numbers
width: 80%
@media #{$medium-up}
width: 60%
.customers .customers
text-align: center text-align: center

View File

@ -43,11 +43,11 @@ $color-bg-log-fold-highlight: #777
$ansi-black: #4E4E4E $ansi-black: #4E4E4E
$ansi-black-bold: #7C7C7C $ansi-black-bold: #7C7C7C
$ansi-red: #FF6C60 $ansi-red: #FF6C60
$ansi-red-bold: #FFB6B0 $ansi-red-bold: #FF9B93
$ansi-green: #00AA00 $ansi-green: #00AA00
$ansi-green-bold: #CEFFAB $ansi-green-bold: #B1FD79
$ansi-yellow: #FFFFB6 $ansi-yellow: #FFFFB6
$ansi-yellow-bold: #FFFFCB $ansi-yellow-bold: #FFFF91
$ansi-blue: #96CBFE $ansi-blue: #96CBFE
$ansi-blue-bold: #B5DCFE $ansi-blue-bold: #B5DCFE
$ansi-magenta: #FF73FD $ansi-magenta: #FF73FD

View File

@ -1,6 +1,7 @@
{{#if allHooks.isLoaded}} {{#if allHooks.isLoaded}}
<header> <header>
{{#unless config.enterprise}}
{{#if config.billingEndpoint}} {{#if config.billingEndpoint}}
<div class="cta-btn"> <div class="cta-btn">
{{#if subscribeButtonInfo.subscribed}} {{#if subscribeButtonInfo.subscribed}}
@ -14,6 +15,7 @@
{{/if}} {{/if}}
</div> </div>
{{/if}} {{/if}}
{{/unless}}
<div class="profile-header"> <div class="profile-header">
<h1>{{accountName}}</h1> <h1>{{accountName}}</h1>

View File

@ -1,6 +1,6 @@
<figure class="team-image"> <figure class="team-image">
<img class="front" src="../images/team/team-{{member.image}}.png" alt=""> <img class="front" src="../images/team/team-{{member.image}}.png" alt="{{member.name}}">
<img class="back" src="../images/team/{{member.image}}-animated.gif" alt=""> <img class="back" src="../images/team/{{member.image}}-animated.gif" alt="{{member.name}} gif">
</figure> </figure>
<h3 class="team-name">{{member.name}}</h3> <h3 class="team-name">{{member.name}}</h3>
<p class="team-title">{{member.title}}</p> <p class="team-title">{{member.title}}</p>
@ -8,7 +8,7 @@
<p class="team-handle"><a href="https://twitter.com/{{member.handle}}" title="{{member.name}} on Twitter">@{{member.handle}}</a></p> <p class="team-handle"><a href="https://twitter.com/{{member.handle}}" title="{{member.name}} on Twitter">@{{member.handle}}</a></p>
{{/if}} {{/if}}
<div class="team-flags"> <div class="team-flags">
<img src="../images/pro-landing/flag-{{member.nationality}}.svg" alt="flag {{member.nationality}}"> <img src="../images/pro-landing/flag-{{member.nationality}}.svg" alt="flag {{member.nationality}}" title="is from {{member.nationality}}">
<span class="flag-divider">/</span> <span class="flag-divider">/</span>
<img src="../images/pro-landing/flag-{{member.country}}.svg" alt="flag {{member.country}}"> <img src="../images/pro-landing/flag-{{member.country}}.svg" alt="flag {{member.country}}" title="lives in {{member.country}}">
</div> </div>

View File

@ -22,9 +22,6 @@
<h2>Add .travis.yml file to your repository</h2> <h2>Add .travis.yml file to your repository</h2>
<p>In order for Travis CI to build your project, you need to tell the systems a little bit about it. You'll need to add a file named .travis.yml to the root of your repository.</p> <p>In order for Travis CI to build your project, you need to tell the systems a little bit about it. You'll need to add a file named .travis.yml to the root of your repository.</p>
<p>If .travis.yml is not in the repository, is misspelled or is not valid YAML, Travis CI will ignore it.</p> <p>If .travis.yml is not in the repository, is misspelled or is not valid YAML, Travis CI will ignore it.</p>
<p class="note note--info">
<strong>Note:</strong> The <code>language</code> value is case-sensitive. If you set <code>language: C</code>, for example, your project will be considered a Ruby project.
</p>
<p>Here you can find some of our basic <a href="http://docs.travis-ci.com/user/language-specific/" title="">language examples</a>.</p> <p>Here you can find some of our basic <a href="http://docs.travis-ci.com/user/language-specific/" title="">language examples</a>.</p>
</div> </div>
</li> </li>

View File

@ -1,7 +1,7 @@
{{#travis-layout layoutName="layouts/landing-page"}} {{#travis-layout layoutName="layouts/landing-page"}}
<div id="landing" class="landing"> <div id="landing" class="landing">
<div class="row hero z-1"> <div class="row hero z-1">
<div class="landing-centered-wrapper"> <section class="landing-centered-wrapper">
<div class="large-12 columns" id="hero-copy"> <div class="large-12 columns" id="hero-copy">
<h1>Test and Deploy with Confidence</h1> <h1>Test and Deploy with Confidence</h1>
<p>Easily sync your GitHub projects with Travis CI<br class="mobile-break"> and youll be testing your code in minutes!</p> <p>Easily sync your GitHub projects with Travis CI<br class="mobile-break"> and youll be testing your code in minutes!</p>
@ -16,25 +16,26 @@
</div> </div>
<div class="large-12 columns laptop-wrapper"> <div class="large-12 columns laptop-wrapper">
<div id="laptop"> <div id="laptop">
<img src="../images/landing-page/laptop.png"> <img src="../images/landing-page/laptop.png" alt="Travis CI screenshot">
</div> </div>
</div> </div>
</div> </section>
</div> </div>
<div class="row oss-testing"> <div class="row oss-testing">
<div class="landing-centered-wrapper"> <section class="landing-centered-wrapper">
<div class="large-12 columns"> <div class="large-12 columns">
<h2>The home of<br class="mobile-break"> open source testing</h2> <h2>The home of<br class="mobile-break"> open source testing</h2>
<p>Over 320k open source projects<br class="mobile-break"> and 235k users are testing on Travis CI.</p> <p>Over 300k open source projects<br class="mobile-break"> and 235k users are testing on Travis CI.</p>
<img src="../images/landing-page/customer-numbers.svg"> <img src="../images/landing-page/customer-numbers.svg" alt="Open source project numbers" class="os-numbers">
</div>
</div> </div>
</section>
</div>
<div class="row customers"> <div class="row customers">
<div class="landing-centered-wrapper"> <div class="landing-centered-wrapper">
<div class="medium-6 columns"> <div class="medium-6 columns">
<img src="../images/landing-page/customers-temp-together.svg"> <img src="../images/landing-page/customers-temp-together.svg" alt="customer logos">
</div> </div>
<div class="medium-6 columns"> <div class="medium-6 columns">
<p class="left">Some pretty awesome companies<br> and projects are using us.</p> <p class="left">Some pretty awesome companies<br> and projects are using us.</p>
@ -43,16 +44,16 @@
</div> </div>
<div class="row free-for-oss"> <div class="row free-for-oss">
<div class="landing-centered-wrapper"> <section class="landing-centered-wrapper">
<div class="large-12 columns"> <div class="large-12 columns">
<h1>Testing your open source<br class="mobile-no-break"> project is 10000% free</h1> <h1>Testing your open source<br class="mobile-no-break"> project is 10000% free</h1>
<p><span class="bold-italic">Seriously. Always.</span> We like to think of it as our way of giving<br>back to a community that gives us so much as well.</p> <p><span class="bold-italic">Seriously. Always.</span> We like to think of it as our way of giving<br>back to a community that gives us so much as well.</p>
</div> </div>
</div> </section>
</div> </div>
<div class="row private-repos"> <div class="row private-repos">
<div class="landing-centered-wrapper"> <section class="landing-centered-wrapper">
<div class="medium-6 columns mobile-envelope"> <div class="medium-6 columns mobile-envelope">
<img src="../images/landing-page/envelope.svg"> <img src="../images/landing-page/envelope.svg">
</div> </div>
@ -64,13 +65,13 @@
</div> </div>
</div> </div>
<div class="medium-6 columns desktop-envelope"> <div class="medium-6 columns desktop-envelope">
<img src="../images/landing-page/envelope.svg"> <img src="../images/landing-page/envelope.svg" alt="envelope">
</div> </div>
</div> </section>
</div> </div>
<div class="row features-list"> <div class="row features-list">
<div class="landing-centered-wrapper"> <section class="landing-centered-wrapper">
<div class="large-6 columns features-callouts"> <div class="large-6 columns features-callouts">
<div class="landing-vert-center-s"> <div class="landing-vert-center-s">
<div class="medium-6 columns"> <div class="medium-6 columns">
@ -104,16 +105,16 @@
<li>Did we say free for Open Source already?</li> <li>Did we say free for Open Source already?</li>
</ul> </ul>
</div> </div>
</div> </section>
</div> </div>
<div class="row build-flows"> <div class="row build-flows">
<div class="landing-centered-wrapper"> <section class="landing-centered-wrapper">
<div class="large-12 columns"> <div class="large-12 columns">
<h2>Branch build flow</h2> <h2>Branch build flow</h2>
<div class="branch-bf"> <div class="branch-bf">
<div class="bf"> <div class="bf">
<img src="../images/landing-page/push-icon-1.svg"> <img src="../images/landing-page/push-icon-1.svg" alt="GitHub logo">
<p>You push your<br>code to GitHub</p> <p>You push your<br>code to GitHub</p>
</div> </div>
<div class="divider-line-horizontal"> <div class="divider-line-horizontal">
@ -121,7 +122,7 @@
<div class="divider-line-vertical"> <div class="divider-line-vertical">
</div> </div>
<div class="bf"> <div class="bf">
<img src="../images/landing-page/push-icon-2.svg"> <img src="../images/landing-page/push-icon-2.svg" alt="Trigger build">
<p>GitHub triggers<br>Travis CI to build</p> <p>GitHub triggers<br>Travis CI to build</p>
</div> </div>
<div class="divider-line-horizontal"> <div class="divider-line-horizontal">
@ -129,7 +130,7 @@
<div class="divider-line-vertical"> <div class="divider-line-vertical">
</div> </div>
<div class="bf"> <div class="bf">
<img src="../images/landing-page/push-icon-3.svg"> <img src="../images/landing-page/push-icon-3.svg" alt="Travis logo">
<p>Hooray!<br>Your build passes!</p> <p>Hooray!<br>Your build passes!</p>
</div> </div>
<div class="divider-line-horizontal"> <div class="divider-line-horizontal">
@ -137,7 +138,7 @@
<div class="divider-line-vertical"> <div class="divider-line-vertical">
</div> </div>
<div class="bf"> <div class="bf">
<img src="../images/landing-page/push-icon-4.svg"> <img src="../images/landing-page/push-icon-4.svg" alt="Heroku logo">
<p>Travis CI deploys<br>to Heroku</p> <p>Travis CI deploys<br>to Heroku</p>
</div> </div>
<div class="divider-line-horizontal"> <div class="divider-line-horizontal">
@ -145,14 +146,14 @@
<div class="divider-line-vertical"> <div class="divider-line-vertical">
</div> </div>
<div class="bf"> <div class="bf">
<img src="../images/landing-page/push-icon-5.svg"> <img src="../images/landing-page/push-icon-5.svg" alt="Slack logo">
<p>Travis CI tells the<br>team all is well</p> <p>Travis CI tells the<br>team all is well</p>
</div> </div>
</div> </div>
<h2 id="pr-bf-margin">Pull request build flow</h2> <h2 id="pr-bf-margin">Pull request build flow</h2>
<div class="branch-bf"> <div class="branch-bf">
<div class="bf"> <div class="bf">
<img src="../images/landing-page/pull-icon-1.svg"> <img src="../images/landing-page/pull-icon-1.svg" alt="PR icon">
<p>A pull request<br>is created</p> <p>A pull request<br>is created</p>
</div> </div>
<div class="divider-line-horizontal"> <div class="divider-line-horizontal">
@ -160,7 +161,7 @@
<div class="divider-line-vertical"> <div class="divider-line-vertical">
</div> </div>
<div class="bf"> <div class="bf">
<img src="../images/landing-page/pull-icon-2.svg"> <img src="../images/landing-page/pull-icon-2.svg" alt="Check test">
<p>GitHub tells Travis CI the build is mergeable</p> <p>GitHub tells Travis CI the build is mergeable</p>
</div> </div>
<div class="divider-line-horizontal"> <div class="divider-line-horizontal">
@ -168,7 +169,7 @@
<div class="divider-line-vertical"> <div class="divider-line-vertical">
</div> </div>
<div class="bf"> <div class="bf">
<img src="../images/landing-page/push-icon-3.svg"> <img src="../images/landing-page/push-icon-3.svg" alt="Tavis logo">
<p>Hooray!<br>Your build passes!</p> <p>Hooray!<br>Your build passes!</p>
</div> </div>
<div class="divider-line-horizontal"> <div class="divider-line-horizontal">
@ -176,7 +177,7 @@
<div class="divider-line-vertical"> <div class="divider-line-vertical">
</div> </div>
<div class="bf"> <div class="bf">
<img src="../images/landing-page/pull-icon-4.svg"> <img src="../images/landing-page/pull-icon-4.svg" alt="Build status">
<p>Travis CI updates the PR that it passed</p> <p>Travis CI updates the PR that it passed</p>
</div> </div>
<div class="divider-line-horizontal"> <div class="divider-line-horizontal">
@ -184,22 +185,22 @@
<div class="divider-line-vertical"> <div class="divider-line-vertical">
</div> </div>
<div class="bf"> <div class="bf">
<img src="../images/landing-page/pull-icon-5.svg"> <img src="../images/landing-page/pull-icon-5.svg" alt="Merge icon">
<p>You merge in<br>the PR goodness</p> <p>You merge in<br>the PR goodness</p>
</div> </div>
</div> </div>
</div> </div>
</div> </section>
</div> </div>
<div class="row user-testimonials"> <div class="row user-testimonials">
<div class="landing-centered-wrapper"> <section class="landing-centered-wrapper">
<div class="medium-6 columns"> <div class="medium-6 columns">
<h2>Some people have said some pretty nice things about us</h2> <h2>Some people have said some pretty nice things about us</h2>
</div> </div>
<div class="medium-6 columns"> <div class="medium-6 columns">
<div class="small-3 columns"> <div class="small-3 columns">
<img src="../images/landing-page/dhh.png" class="home-avatar"> <img src="../images/landing-page/dhh.png" class="home-avatar" alt="image DHH">
</div> </div>
<div class="small-9 columns"> <div class="small-9 columns">
<p>Travis CI makes it so much easier for us to coordinate the thousands of commits and contributors that flow through the Rails code base. The test suite for such a large project is vast, and we wouldnt be catching issues as quickly or smoothly without the help of Travis.</p> <p>Travis CI makes it so much easier for us to coordinate the thousands of commits and contributors that flow through the Rails code base. The test suite for such a large project is vast, and we wouldnt be catching issues as quickly or smoothly without the help of Travis.</p>
@ -208,7 +209,7 @@
</div> </div>
<div class="small-3 columns"> <div class="small-3 columns">
<img src="../images/landing-page/chris.png" class="home-avatar"> <img src="../images/landing-page/chris.png" class="home-avatar" alt="image Chris Aniszczyk">
</div> </div>
<div class="small-9 columns"> <div class="small-9 columns">
<p>We love Travis CI at @TwitterOSS and use it for the majority of our open source projects on GitHub. Travis CI is simple to use, we love their API to build tooling and adore the new container infrastructure for speedier builds.</p> <p>We love Travis CI at @TwitterOSS and use it for the majority of our open source projects on GitHub. Travis CI is simple to use, we love their API to build tooling and adore the new container infrastructure for speedier builds.</p>
@ -217,7 +218,7 @@
</div> </div>
<div class="small-3 columns"> <div class="small-3 columns">
<img src="../images/landing-page/alex.png" class="home-avatar"> <img src="../images/landing-page/alex.png" class="home-avatar" alt="Alex Gaynor">
</div> </div>
<div class="small-9 columns"> <div class="small-9 columns">
<p>Not only is Travis CI the best way to test your software, it is the right way. rm -rf jenkins &amp;&amp; touch .travis.yml</p> <p>Not only is Travis CI the best way to test your software, it is the right way. rm -rf jenkins &amp;&amp; touch .travis.yml</p>
@ -225,8 +226,7 @@
<p class="title">PyPy and Python Core Team Member</p> <p class="title">PyPy and Python Core Team Member</p>
</div> </div>
</div> </div>
</div> </section>
</div> </div>
</div> </div>
</div>
{{/travis-layout}} {{/travis-layout}}

View File

@ -14,7 +14,7 @@
{{#each broadcasts.content as |broadcast|}} {{#each broadcasts.content as |broadcast|}}
<li><p><span class="broadcast-status {{broadcast.category}}" title="Transmitted on {{broadcast.updated_at}}"></span> {{{broadcast.message}}} <a {{action 'markBroadcastAsSeen' broadcast}} class="icon-close"></a></p></li> <li><p><span class="broadcast-status {{broadcast.category}}" title="Transmitted on {{broadcast.updated_at}}"></span> {{{broadcast.message}}} <a {{action 'markBroadcastAsSeen' broadcast}} class="icon-close"></a></p></li>
{{else}} {{else}}
<li><p>There are no broadcasts transmitted</p></li> <li><p>There are no broadcasts</p></li>
{{/each}} {{/each}}
</ul> </ul>
{{/if}} {{/if}}

View File

@ -1,4 +1,6 @@
import config from 'travis/config/environment'; import config from 'travis/config/environment';
import Ember from 'ember';
var ccXml, email, githubAdmin, githubCommit, githubNetwork, githubPullRequest, var ccXml, email, githubAdmin, githubCommit, githubNetwork, githubPullRequest,
githubRepo, githubWatchers, gravatarImage, plainTextLog, statusImage; githubRepo, githubWatchers, gravatarImage, plainTextLog, statusImage;

View File

@ -1,7 +1,7 @@
{ {
"name": "travis", "name": "travis",
"dependencies": { "dependencies": {
"ember": "2.2.1", "ember": "2.4.5",
"ember-cli-shims": "0.1.1", "ember-cli-shims": "0.1.1",
"ember-cli-test-loader": "0.2.2", "ember-cli-test-loader": "0.2.2",
"ember-load-initializers": "0.1.7", "ember-load-initializers": "0.1.7",
@ -22,7 +22,6 @@
"ceibo": "1.0.0" "ceibo": "1.0.0"
}, },
"resolutions": { "resolutions": {
"ember": "2.2.1", "ember": "2.4.5"
"ember-qunit-notifications": "0.1.0"
} }
} }

View File

@ -1,30 +1,4 @@
window.deprecationWorkflow = window.deprecationWorkflow || {}; window.deprecationWorkflow = window.deprecationWorkflow || {};
window.deprecationWorkflow.config = { window.deprecationWorkflow.config = {
workflow: [ workflow: []
// DONE
{ handler: "log", matchMessage: "Ember.LinkView is deprecated. Please use Ember.LinkComponent." },
{ handler: "log", matchMessage: "Calling store.find() with a query object is deprecated. Use store.query() instead." },
{ handler: "log", matchMessage: new RegExp("A property of .*? was modified inside the didInsertElement hook. You should never change properties on components, services or models during didInsertElement because it causes significant performance degradation.") },
{ handler: "log", matchMessage: "Ember.arrayComputed is deprecated. Replace it with plain array methods" },
// this will still emit deprecations, because we use state property in
// request-icon compoenent, that makes Ember.js think that we're using
// internal component's state
{ handler: "log", matchMessage: "Usage of `state` is deprecated, use `_state` instead." },
{ handler: "log", matchMessage: "RestAdapter#find has been deprecated and renamed to `findRecord`." },
{ handler: "log", matchMessage: "Usage of `typeKey` has been deprecated and will be removed in Ember Data 2.0. It has been replaced by `modelName` on the model class." },
{ handler: "log", matchMessage: "Using store.dematerializeRecord() has been deprecated since it was intended for private use only. You should use store.unloadRecord() instead." },
{ handler: "log", matchMessage: "Using the same function as getter and setter is deprecated." },
{ handler: "log", matchMessage: "`Ember.ArrayController` is deprecated." },
{ handler: "log", matchMessage: "The default behavior of `shouldBackgroundReloadRecord` will change in Ember Data 2.0 to always return true. If you would like to preserve the current behavior please override `shouldBackgroundReloadRecord` in your adapter:application and return false." },
{ handler: "log", matchMessage: "Function#observesBefore is deprecated and will be removed in the near future." },
{ handler: "log", matchMessage: "Ember.addBeforeObserver is deprecated and will be removed in the near future." },
{ handler: "log", matchMessage: "Ember.removeBeforeObserver is deprecated and will be removed in the near future." },
{ handler: "log", matchMessage: "Using DS.Snapshot.get() is deprecated. Use .attr(), .belongsTo() or .hasMany() instead." },
{ handler: "log", matchMessage: "The filter API will be moved into a plugin soon. To enable store.filter using an environment flag, or to use an alternative, you can visit the ember-data-filter addon page" },
{ handler: "log", matchMessage: "Ember.View is deprecated. Consult the Deprecations Guide for a migration strategy." },
// TODO
{ handler: "silence", matchMessage: "Using `ApplicationInstance.container.lookup` is deprecated. Please use `ApplicationInstance.lookup` instead." },
{ handler: "silence", matchMessage: new RegExp("the component:.*? test module is implicitly running in unit test mode, which will change to integration test mode by default in an upcoming version of ember-test-helpers. Add `unit: true` or a `needs:[]` list to explicitly opt in to unit test mode.") },
]
}; };

View File

@ -29,7 +29,7 @@
"ember-cli-babel": "^5.1.6", "ember-cli-babel": "^5.1.6",
"ember-cli-dependency-checker": "^1.2.0", "ember-cli-dependency-checker": "^1.2.0",
"ember-cli-deprecation-workflow": "0.1.6", "ember-cli-deprecation-workflow": "0.1.6",
"ember-cli-document-title": "0.2.0", "ember-cli-document-title": "0.3.1",
"ember-cli-htmlbars": "^1.0.3", "ember-cli-htmlbars": "^1.0.3",
"ember-cli-htmlbars-inline-precompile": "^0.3.1", "ember-cli-htmlbars-inline-precompile": "^0.3.1",
"ember-cli-inject-live-reload": "^1.4.0", "ember-cli-inject-live-reload": "^1.4.0",
@ -48,6 +48,7 @@
"ember-disable-proxy-controllers": "^1.0.1", "ember-disable-proxy-controllers": "^1.0.1",
"ember-export-application-global": "^1.0.5", "ember-export-application-global": "^1.0.5",
"ember-load-initializers": "^0.5.1", "ember-load-initializers": "^0.5.1",
"ember-getowner-polyfill": "1.0.1",
"ember-resolver": "^2.0.3", "ember-resolver": "^2.0.3",
"ember-try": "0.0.7", "ember-try": "0.0.7",
"emberx-select": "2.0.2", "emberx-select": "2.0.2",

View File

@ -4,7 +4,6 @@ import hbs from 'htmlbars-inline-precompile';
import fillIn from '../../helpers/fill-in'; import fillIn from '../../helpers/fill-in';
import DS from 'ember-data'; import DS from 'ember-data';
moduleForComponent('add-env-var', 'Integration | Component | add env-var', { moduleForComponent('add-env-var', 'Integration | Component | add env-var', {
integration: true integration: true
}); });
@ -14,7 +13,7 @@ test('it adds an env var on submit', function(assert) {
// this shouldn't be needed, probably some bug in tests setup with new ember-data // this shouldn't be needed, probably some bug in tests setup with new ember-data
this.registry.register('transform:boolean', DS.BooleanTransform); this.registry.register('transform:boolean', DS.BooleanTransform);
var store = this.container.lookup('service:store'); var store = Ember.getOwner(this).lookup('service:store');
assert.equal(store.peekAll('envVar').get('length'), 0, 'precond: store should be empty'); assert.equal(store.peekAll('envVar').get('length'), 0, 'precond: store should be empty');
var repo; var repo;
@ -66,7 +65,7 @@ test('it adds a public env var on submit', function(assert) {
assert.expect(6); assert.expect(6);
this.registry.register('transform:boolean', DS.BooleanTransform); this.registry.register('transform:boolean', DS.BooleanTransform);
var store = this.container.lookup('service:store'); var store = Ember.getOwner(this).lookup('service:store');
assert.equal(store.peekAll('envVar').get('length'), 0, 'precond: store should be empty'); assert.equal(store.peekAll('envVar').get('length'), 0, 'precond: store should be empty');
var repo; var repo;

View File

@ -12,7 +12,7 @@ test('it adds an ssh key on submit', function(assert) {
assert.expect(6); assert.expect(6);
this.registry.register('transform:boolean', DS.BooleanTransform); this.registry.register('transform:boolean', DS.BooleanTransform);
var store = this.container.lookup('service:store'); var store = Ember.getOwner(this).lookup('service:store');
var repo; var repo;
Ember.run(function() { Ember.run(function() {
@ -47,7 +47,7 @@ test('it throws an error if value for ssh key is blank', function(assert) {
assert.expect(5); assert.expect(5);
this.registry.register('transform:boolean', DS.BooleanTransform); this.registry.register('transform:boolean', DS.BooleanTransform);
var store = this.container.lookup('service:store'); var store = Ember.getOwner(this).lookup('service:store');
var repo; var repo;
Ember.run(function() { Ember.run(function() {

View File

@ -4,7 +4,6 @@ import hbs from 'htmlbars-inline-precompile';
import fillIn from '../../helpers/fill-in'; import fillIn from '../../helpers/fill-in';
import DS from 'ember-data'; import DS from 'ember-data';
moduleForComponent('env-var', 'Integration | Component | env-var', { moduleForComponent('env-var', 'Integration | Component | env-var', {
integration: true integration: true
}); });
@ -13,7 +12,7 @@ test('it renders an env-var with private value', function(assert) {
assert.expect(2); assert.expect(2);
this.registry.register('transform:boolean', DS.BooleanTransform); this.registry.register('transform:boolean', DS.BooleanTransform);
var store = this.container.lookup('service:store'); var store = Ember.getOwner(this).lookup('service:store');
Ember.run(() => { Ember.run(() => {
var envVar = store.push({data: { id: 1, type: 'env-var', attributes: { name: 'foo', value: 'bar', public: false}}}); var envVar = store.push({data: { id: 1, type: 'env-var', attributes: { name: 'foo', value: 'bar', public: false}}});
this.set('envVar', envVar); this.set('envVar', envVar);
@ -30,7 +29,7 @@ test('it renders an env-var with public value', function(assert) {
assert.expect(2); assert.expect(2);
this.registry.register('transform:boolean', DS.BooleanTransform); this.registry.register('transform:boolean', DS.BooleanTransform);
var store = this.container.lookup('service:store'); var store = Ember.getOwner(this).lookup('service:store');
Ember.run(() => { Ember.run(() => {
var envVar = store.push({data: { id: 1, type: 'env-var', attributes: { name: 'foo', value: 'bar', public: true}}}); var envVar = store.push({data: { id: 1, type: 'env-var', attributes: { name: 'foo', value: 'bar', public: true}}});
this.set('envVar', envVar); this.set('envVar', envVar);

View File

@ -3,7 +3,6 @@ import { moduleForComponent, test } from 'ember-qunit';
import hbs from 'htmlbars-inline-precompile'; import hbs from 'htmlbars-inline-precompile';
import fillIn from '../../helpers/fill-in'; import fillIn from '../../helpers/fill-in';
moduleForComponent('ssh-key', 'Integration | Component | ssh-key', { moduleForComponent('ssh-key', 'Integration | Component | ssh-key', {
integration: true integration: true
}); });
@ -11,7 +10,7 @@ moduleForComponent('ssh-key', 'Integration | Component | ssh-key', {
test('it renders the default ssh key if no custom key is set', function(assert) { test('it renders the default ssh key if no custom key is set', function(assert) {
assert.expect(2); assert.expect(2);
var store = this.container.lookup('service:store'); var store = Ember.getOwner(this).lookup('service:store');
var key = Ember.Object.create({fingerprint: 'fingerprint'}); var key = Ember.Object.create({fingerprint: 'fingerprint'});
this.set('key', key); this.set('key', key);
@ -25,7 +24,7 @@ test('it renders the default ssh key if no custom key is set', function(assert)
test('it renders the custom ssh key if custom key is set', function(assert) { test('it renders the custom ssh key if custom key is set', function(assert) {
assert.expect(2); assert.expect(2);
var store = this.container.lookup('service:store'); var store = Ember.getOwner(this).lookup('service:store');
var key; var key;
Ember.run(function() { Ember.run(function() {
@ -44,7 +43,7 @@ test('it renders the custom ssh key if custom key is set', function(assert) {
test('it deletes a custom key if permissions are right', function(assert) { test('it deletes a custom key if permissions are right', function(assert) {
assert.expect(1); assert.expect(1);
var store = this.container.lookup('service:store'); var store = Ember.getOwner(this).lookup('service:store');
var key; var key;
Ember.run(function() { Ember.run(function() {
@ -67,7 +66,7 @@ test('it deletes a custom key if permissions are right', function(assert) {
test('it does not delete the custom key if permissions are insufficient', function(assert) { test('it does not delete the custom key if permissions are insufficient', function(assert) {
assert.expect(1); assert.expect(1);
var store = this.container.lookup('service:store'); var store = Ember.getOwner(this).lookup('service:store');
var key; var key;
Ember.run(function() { Ember.run(function() {