Revert setting panel deploy
This seems to have caused issues with enabling the hooks for repositories.
This commit is contained in:
parent
3426a8b95f
commit
db2d38a7af
|
@ -71,7 +71,7 @@
|
||||||
try
|
try
|
||||||
router.send('afterSignIn')
|
router.send('afterSignIn')
|
||||||
catch e
|
catch e
|
||||||
throw e unless e =~ /There are no active handlers/ || e =~ /Can't trigger action "afterSignIn/
|
throw e unless e =~ /There are no active handlers/
|
||||||
@refreshUserData(data.user)
|
@refreshUserData(data.user)
|
||||||
|
|
||||||
refreshUserData: (user) ->
|
refreshUserData: (user) ->
|
||||||
|
|
|
@ -1,19 +1,9 @@
|
||||||
Travis.TravisSwitchComponent = Ember.Component.extend
|
Travis.TravisSwitchComponent = Ember.Component.extend
|
||||||
tagName: 'a'
|
tagName: 'a'
|
||||||
classNames: ['travis-switch']
|
classNames: ['travis-switch']
|
||||||
classNameBindings: ['_active:active']
|
classNameBindings: ['active']
|
||||||
|
|
||||||
# TODO: how to handle overriding properties to
|
activeBinding: 'target.active'
|
||||||
# avoid naming it _action?
|
|
||||||
_active: (->
|
|
||||||
@get('target.active') || @get('active')
|
|
||||||
).property('target.active', 'active')
|
|
||||||
|
|
||||||
click: ->
|
click: ->
|
||||||
if target = @get('target')
|
@sendAction('action', @get('target'))
|
||||||
@set('target.active', !@get('target.active'))
|
|
||||||
else
|
|
||||||
@set('active', !@get('active'))
|
|
||||||
# allow for bindings to propagate
|
|
||||||
Ember.run.next this, ->
|
|
||||||
@sendAction('action', target)
|
|
||||||
|
|
|
@ -48,18 +48,6 @@ Travis.FirstSyncController = Em.Controller.extend
|
||||||
|
|
||||||
isSyncing: Ember.computed.alias('user.isSyncing')
|
isSyncing: Ember.computed.alias('user.isSyncing')
|
||||||
|
|
||||||
Travis.IndexErrorController = Em.Controller.extend()
|
|
||||||
|
|
||||||
Travis.RepoSettingsTabController = Em.ObjectController.extend()
|
|
||||||
Travis.RepoSettingsController = Em.ObjectController.extend
|
|
||||||
needs: ['repoSettingsTab']
|
|
||||||
tab: Ember.computed.alias('controllers.repoSettingsTab.model.tab')
|
|
||||||
settings: Ember.computed.alias('model.settings')
|
|
||||||
|
|
||||||
save: ->
|
|
||||||
@get('model').saveSettings(@get('settings')).then null, ->
|
|
||||||
Travis.flash(error: 'There was an error while saving settings. Please try again.')
|
|
||||||
|
|
||||||
require 'controllers/accounts'
|
require 'controllers/accounts'
|
||||||
require 'controllers/build'
|
require 'controllers/build'
|
||||||
require 'controllers/builds'
|
require 'controllers/builds'
|
||||||
|
|
|
@ -3,293 +3,6 @@ require 'ext/ember/bound_helper'
|
||||||
safe = (string) ->
|
safe = (string) ->
|
||||||
new Handlebars.SafeString(string)
|
new Handlebars.SafeString(string)
|
||||||
|
|
||||||
Travis.Tab = Ember.Object.extend
|
|
||||||
show: ->
|
|
||||||
@get('tabs').forEach( (t) -> t.hide() )
|
|
||||||
@set('visible', true)
|
|
||||||
|
|
||||||
hide: ->
|
|
||||||
@set('visible', false)
|
|
||||||
|
|
||||||
Travis.TabsView = Ember.View.extend
|
|
||||||
tabBinding: 'controller.tab'
|
|
||||||
tabsBinding: 'controller.tabs'
|
|
||||||
|
|
||||||
tabDidChange: (->
|
|
||||||
@activateTab(@get('tab'))
|
|
||||||
).observes('tab')
|
|
||||||
|
|
||||||
tabsDidChange: (->
|
|
||||||
tab = @get('tab')
|
|
||||||
if tab
|
|
||||||
@activateTab(tab)
|
|
||||||
else if @get('tabs.length')
|
|
||||||
@activateTab(@get('tabs.firstObject.id'))
|
|
||||||
).observes('tabs.length', 'tabs')
|
|
||||||
|
|
||||||
activateTab: (tabId) ->
|
|
||||||
tab = @get('tabs').findBy('id', tabId)
|
|
||||||
|
|
||||||
return unless tab
|
|
||||||
|
|
||||||
tab.show() unless tab.get('visible')
|
|
||||||
|
|
||||||
# TODO: remove hardcoded link
|
|
||||||
layout: Ember.Handlebars.compile(
|
|
||||||
'<ul class="tabs">' +
|
|
||||||
' {{#each tab in tabs}}' +
|
|
||||||
' <li {{bindAttr class="tab.visible:active"}}>' +
|
|
||||||
' <h5>{{#linkTo "repo.settings.tab" tab.id}}{{tab.name}}{{/linkTo}}</h5>' +
|
|
||||||
' </li>' +
|
|
||||||
' {{/each}}' +
|
|
||||||
'</ul>' +
|
|
||||||
'{{yield}}')
|
|
||||||
|
|
||||||
Travis.TabView = Ember.View.extend
|
|
||||||
attributeBindings: ['style']
|
|
||||||
|
|
||||||
style: (->
|
|
||||||
if !@get('tab.visible')
|
|
||||||
'display: none'
|
|
||||||
).property('tab.visible')
|
|
||||||
|
|
||||||
Ember.Handlebars.registerHelper('travis-tab', (id, name, options) ->
|
|
||||||
controller = this
|
|
||||||
controller.set('tabs', []) unless controller.get('tabs')
|
|
||||||
|
|
||||||
tab = Travis.Tab.create(id: id, name: name, tabs: controller.get('tabs'))
|
|
||||||
|
|
||||||
view = Travis.TabView.create(
|
|
||||||
controller: this
|
|
||||||
tab: tab
|
|
||||||
)
|
|
||||||
|
|
||||||
controller = this
|
|
||||||
Ember.run.schedule('afterRender', ->
|
|
||||||
if controller.get('tabs.length') == 0
|
|
||||||
tab.show()
|
|
||||||
controller.get('tabs').pushObject(tab)
|
|
||||||
)
|
|
||||||
|
|
||||||
Ember.Handlebars.helpers.view.call(this, view, options)
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
Ember.Handlebars.registerHelper('travis-tabs', (options) ->
|
|
||||||
template = options.fn
|
|
||||||
delete options.fn
|
|
||||||
|
|
||||||
@set('tabs', [])
|
|
||||||
|
|
||||||
view = Travis.TabsView.create(
|
|
||||||
controller: this
|
|
||||||
template: template
|
|
||||||
)
|
|
||||||
|
|
||||||
Ember.Handlebars.helpers.view.call(this, view, options)
|
|
||||||
)
|
|
||||||
|
|
||||||
Travis.SettingsMultiplierView = Ember.CollectionView.extend()
|
|
||||||
|
|
||||||
createObjects = (path, offset) ->
|
|
||||||
segments = path.split('.')
|
|
||||||
if segments.length > offset
|
|
||||||
for i in [1..(segments.length - offset)]
|
|
||||||
path = segments.slice(0, i).join('.')
|
|
||||||
if Ember.isNone(Ember.get(this, path))
|
|
||||||
Ember.set(this, path, {})
|
|
||||||
|
|
||||||
return segments
|
|
||||||
|
|
||||||
Ember.Handlebars.registerHelper('settings-multiplier', (path, options) ->
|
|
||||||
template = options.fn
|
|
||||||
delete options.fn
|
|
||||||
|
|
||||||
parentsPath = getSettingsPath(options.data.view)
|
|
||||||
if parentsPath && parentsPath != ''
|
|
||||||
path = parentsPath + '.' + path
|
|
||||||
|
|
||||||
createObjects.call(this, path, 1)
|
|
||||||
|
|
||||||
if Ember.isNone(@get(path))
|
|
||||||
collection = [{}]
|
|
||||||
@set(path, collection)
|
|
||||||
|
|
||||||
|
|
||||||
itemViewClass = Ember.View.extend(
|
|
||||||
template: template,
|
|
||||||
controller: this,
|
|
||||||
tagName: 'li',
|
|
||||||
multiplier: true
|
|
||||||
)
|
|
||||||
|
|
||||||
view = Travis.SettingsMultiplierView.create(
|
|
||||||
contentBinding: 'controller.' + path
|
|
||||||
controller: this
|
|
||||||
tagName: 'ul'
|
|
||||||
itemViewClass: itemViewClass
|
|
||||||
fields: []
|
|
||||||
settingsPath: path
|
|
||||||
)
|
|
||||||
|
|
||||||
view.addObserver('content.length', ->
|
|
||||||
if @get('content.length') == 0
|
|
||||||
@get('content').pushObject({})
|
|
||||||
)
|
|
||||||
|
|
||||||
Ember.Handlebars.helpers.view.call(this, view, options)
|
|
||||||
)
|
|
||||||
|
|
||||||
Travis.FormSettingsView = Ember.View.extend Ember.TargetActionSupport,
|
|
||||||
target: Ember.computed.alias('controller')
|
|
||||||
actionContext: Ember.computed.alias('context'),
|
|
||||||
action: 'submit'
|
|
||||||
tagName: 'form'
|
|
||||||
submit: (event) ->
|
|
||||||
event.preventDefault()
|
|
||||||
@triggerAction()
|
|
||||||
|
|
||||||
|
|
||||||
Ember.Handlebars.registerHelper('settings-form', (path, options) ->
|
|
||||||
if arguments.length == 1
|
|
||||||
options = path
|
|
||||||
path = 'settings'
|
|
||||||
|
|
||||||
view = Travis.FormSettingsView.create(
|
|
||||||
template: options.fn
|
|
||||||
controller: this
|
|
||||||
settingsPath: path
|
|
||||||
)
|
|
||||||
|
|
||||||
delete options.fn
|
|
||||||
|
|
||||||
Ember.Handlebars.helpers.view.call(this, view, options)
|
|
||||||
)
|
|
||||||
|
|
||||||
Ember.Handlebars.helper('settings-select', (options) ->
|
|
||||||
view = options.data.view
|
|
||||||
optionValues = options.hash.options
|
|
||||||
delete options.hash.options
|
|
||||||
|
|
||||||
originalPath = options.hash.value
|
|
||||||
|
|
||||||
parentsPath = getSettingsPath(view)
|
|
||||||
#TODO: such checks should also check parents, not only current context view
|
|
||||||
if !view.get('multiplier') && parentsPath && parentsPath != ''
|
|
||||||
originalPath = parentsPath + '.' + originalPath
|
|
||||||
|
|
||||||
fullPath = originalPath
|
|
||||||
|
|
||||||
if view.get('multiplier')
|
|
||||||
fullPath = 'view.content.' + fullPath
|
|
||||||
|
|
||||||
createObjects.call(this, fullPath, 1)
|
|
||||||
|
|
||||||
# TODO: setting a value here does not work and we still need
|
|
||||||
# a valueBinding in the view, I'm not sure why
|
|
||||||
options.hash.value = fullPath
|
|
||||||
|
|
||||||
selectView = Ember.Select.create(
|
|
||||||
content: [''].pushObjects(optionValues.split(','))
|
|
||||||
controller: this
|
|
||||||
valueBinding: 'controller.' + fullPath
|
|
||||||
)
|
|
||||||
|
|
||||||
Ember.Handlebars.helpers.view.call(this, selectView, options)
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Ember.Handlebars.helper('settings-remove-link', (options) ->
|
|
||||||
view = Ember.View.extend(
|
|
||||||
tagName: 'a'
|
|
||||||
attributeBindings: ['href', 'style']
|
|
||||||
href: '#'
|
|
||||||
style: (->
|
|
||||||
# TODO: do not assume that we're direct child
|
|
||||||
if @get('parentView.parentView.content.length') == 1
|
|
||||||
'display: none'
|
|
||||||
).property('parentView.parentView.content.length')
|
|
||||||
template: Ember.Handlebars.compile('remove')
|
|
||||||
controller: this
|
|
||||||
click: (event) ->
|
|
||||||
event.preventDefault()
|
|
||||||
|
|
||||||
if content = @get('parentView.content')
|
|
||||||
@get('parentView.parentView.content').removeObject(content)
|
|
||||||
).create()
|
|
||||||
|
|
||||||
Ember.Handlebars.helpers.view.call(this, view, options)
|
|
||||||
)
|
|
||||||
|
|
||||||
Ember.Handlebars.registerHelper('settings-add-link', (path, options) ->
|
|
||||||
parentsPath = getSettingsPath(options.data.view)
|
|
||||||
if parentsPath && parentsPath != ''
|
|
||||||
path = parentsPath + '.' + path
|
|
||||||
|
|
||||||
view = Ember.View.create(
|
|
||||||
tagName: 'a'
|
|
||||||
attributeBindings: ['href']
|
|
||||||
href: '#'
|
|
||||||
template: options.fn
|
|
||||||
controller: this
|
|
||||||
click: (event) ->
|
|
||||||
event.preventDefault()
|
|
||||||
|
|
||||||
if collection = @get('controller.' + path)
|
|
||||||
collection.pushObject({})
|
|
||||||
)
|
|
||||||
|
|
||||||
Ember.Handlebars.helpers.view.call(this, view, options)
|
|
||||||
)
|
|
||||||
|
|
||||||
getSettingsPath = (view) ->
|
|
||||||
settingsPaths = []
|
|
||||||
if settingsPath = view.get('settingsPath')
|
|
||||||
settingsPaths.pushObject settingsPath
|
|
||||||
|
|
||||||
parent = view
|
|
||||||
while parent = parent.get('parentView')
|
|
||||||
if settingsPath = parent.get('settingsPath')
|
|
||||||
settingsPaths.pushObject settingsPath
|
|
||||||
|
|
||||||
return settingsPaths.reverse().join('.')
|
|
||||||
|
|
||||||
Ember.Handlebars.helper('settings-input', (options) ->
|
|
||||||
view = options.data.view
|
|
||||||
|
|
||||||
if options.hash.type == 'checkbox'
|
|
||||||
originalPath = options.hash.checked
|
|
||||||
else
|
|
||||||
originalPath = options.hash.value
|
|
||||||
|
|
||||||
parentsPath = getSettingsPath(view)
|
|
||||||
#TODO: such checks should also check parents, not only current context view
|
|
||||||
if !view.get('multiplier') && parentsPath && parentsPath != ''
|
|
||||||
originalPath = parentsPath + '.' + originalPath
|
|
||||||
|
|
||||||
fullPath = originalPath
|
|
||||||
|
|
||||||
if view.get('multiplier')
|
|
||||||
fullPath = 'view.content.' + fullPath
|
|
||||||
|
|
||||||
if options.hash.type != 'password'
|
|
||||||
createObjects.call(this, fullPath, 1)
|
|
||||||
else
|
|
||||||
createObjects.call(view, fullPath, 2)
|
|
||||||
content = view.get('content')
|
|
||||||
fullPath += ".value"
|
|
||||||
if Ember.isNone(Ember.get(content, originalPath))
|
|
||||||
Ember.set(content, originalPath, {})
|
|
||||||
Ember.set(content, originalPath + ".type", 'password')
|
|
||||||
|
|
||||||
if options.hash.type == 'checkbox'
|
|
||||||
options.hash.checked = fullPath
|
|
||||||
else
|
|
||||||
options.hash.value = fullPath
|
|
||||||
Ember.Handlebars.helpers.input.call(this, options)
|
|
||||||
)
|
|
||||||
|
|
||||||
Handlebars.registerHelper 'tipsy', (text, tip) ->
|
Handlebars.registerHelper 'tipsy', (text, tip) ->
|
||||||
safe '<span class="tool-tip" original-title="' + tip + '">' + text + '</span>'
|
safe '<span class="tool-tip" original-title="' + tip + '">' + text + '</span>'
|
||||||
|
|
||||||
|
|
|
@ -27,13 +27,3 @@ require 'travis/model'
|
||||||
return if @get('isSaving')
|
return if @get('isSaving')
|
||||||
@set 'active', !@get('active')
|
@set 'active', !@get('active')
|
||||||
@save()
|
@save()
|
||||||
|
|
||||||
repo: (->
|
|
||||||
# I don't want to make an ajax request for each repository showed in profile,
|
|
||||||
# especially, because most of them does not have any builds anyway. That's why
|
|
||||||
# I add an info which we have here to the store - this will allow to display
|
|
||||||
# a link to the repo and if more info is needed, it will be requested when the
|
|
||||||
# link is used
|
|
||||||
Travis.loadOrMerge(Travis.Repo, @getProperties('id', 'slug', 'name', 'ownerName'), skipIfExists: true)
|
|
||||||
Travis.Repo.find(@get('id'))
|
|
||||||
).property('id')
|
|
||||||
|
|
|
@ -105,13 +105,6 @@ require 'travis/model'
|
||||||
regenerateKey: (options) ->
|
regenerateKey: (options) ->
|
||||||
Travis.ajax.ajax '/repos/' + @get('id') + '/key', 'post', options
|
Travis.ajax.ajax '/repos/' + @get('id') + '/key', 'post', options
|
||||||
|
|
||||||
fetchSettings: ->
|
|
||||||
Travis.ajax.ajax('/repos/' + @get('id') + '/settings', 'get', forceAuth: true).then (data) ->
|
|
||||||
data['settings']
|
|
||||||
|
|
||||||
saveSettings: (settings) ->
|
|
||||||
Travis.ajax.ajax('/repos/' + @get('id') + '/settings', 'patch', data: { settings: settings })
|
|
||||||
|
|
||||||
@Travis.Repo.reopenClass
|
@Travis.Repo.reopenClass
|
||||||
recent: ->
|
recent: ->
|
||||||
@find()
|
@find()
|
||||||
|
@ -147,10 +140,7 @@ require 'travis/model'
|
||||||
if repos.length > 0
|
if repos.length > 0
|
||||||
repos[0]
|
repos[0]
|
||||||
else
|
else
|
||||||
@fetch(slug: slug).then (repos) ->
|
@fetch(slug: slug).then (repos) -> Ember.get(repos, 'firstObject')
|
||||||
error = new Error('repo not found')
|
|
||||||
error.slug = slug
|
|
||||||
Ember.get(repos, 'firstObject') || throw(error)
|
|
||||||
|
|
||||||
# buildURL: (slug) ->
|
# buildURL: (slug) ->
|
||||||
# if slug then slug else 'repos'
|
# if slug then slug else 'repos'
|
||||||
|
|
|
@ -5,9 +5,41 @@ Ember.Router.reopen
|
||||||
|
|
||||||
handleURL: (url) ->
|
handleURL: (url) ->
|
||||||
url = url.replace(/#.*?$/, '')
|
url = url.replace(/#.*?$/, '')
|
||||||
|
try
|
||||||
@_super(url)
|
@_super(url)
|
||||||
|
catch error
|
||||||
|
if error.message.match(/No route matched the URL/)
|
||||||
|
@_super('/not-found')
|
||||||
|
else
|
||||||
|
throw(error)
|
||||||
|
|
||||||
|
# TODO: don't reopen Ember.Route to add events, there should be
|
||||||
|
# a better way (like "parent" resource for everything inside map)
|
||||||
|
Ember.Route.reopen
|
||||||
|
_actions:
|
||||||
|
renderDefaultTemplate: ->
|
||||||
|
@renderDefaultTemplate() if @renderDefaultTemplate
|
||||||
|
|
||||||
|
error: (error) ->
|
||||||
|
if error == 'needs-auth'
|
||||||
|
authController = @container.lookup('controller:auth') || @generateController('auth')
|
||||||
|
authController.set('redirected', true)
|
||||||
|
@transitionTo('auth')
|
||||||
|
else
|
||||||
|
throw(error)
|
||||||
|
|
||||||
|
renderNoOwnedRepos: ->
|
||||||
|
@render('no_owned_repos', outlet: 'main')
|
||||||
|
|
||||||
|
renderFirstSync: ->
|
||||||
|
@renderFirstSync()
|
||||||
|
|
||||||
|
afterSignIn: (path) ->
|
||||||
|
@afterSignIn(path)
|
||||||
|
|
||||||
|
afterSignOut: ->
|
||||||
|
@afterSignOut()
|
||||||
|
|
||||||
Travis.Route = Ember.Route.extend
|
|
||||||
afterSignIn: ->
|
afterSignIn: ->
|
||||||
if transition = Travis.auth.get('afterSignInTransition')
|
if transition = Travis.auth.get('afterSignInTransition')
|
||||||
Travis.auth.set('afterSignInTransition', null)
|
Travis.auth.set('afterSignInTransition', null)
|
||||||
|
@ -46,37 +78,6 @@ Travis.Route = Ember.Route.extend
|
||||||
Travis.storeAfterSignInPath(path)
|
Travis.storeAfterSignInPath(path)
|
||||||
@transitionTo('auth')
|
@transitionTo('auth')
|
||||||
|
|
||||||
Travis.ApplicationRoute = Travis.Route.extend
|
|
||||||
actions:
|
|
||||||
renderDefaultTemplate: ->
|
|
||||||
@renderDefaultTemplate() if @renderDefaultTemplate
|
|
||||||
|
|
||||||
error: (error) ->
|
|
||||||
if error == 'needs-auth'
|
|
||||||
authController = @container.lookup('controller:auth') || @generateController('auth')
|
|
||||||
authController.set('redirected', true)
|
|
||||||
@transitionTo('auth')
|
|
||||||
else
|
|
||||||
return true
|
|
||||||
|
|
||||||
renderNoOwnedRepos: ->
|
|
||||||
@render('no_owned_repos', outlet: 'main')
|
|
||||||
|
|
||||||
renderFirstSync: ->
|
|
||||||
@renderFirstSync()
|
|
||||||
|
|
||||||
afterSignIn: (path) ->
|
|
||||||
@afterSignIn(path)
|
|
||||||
|
|
||||||
afterSignOut: ->
|
|
||||||
@afterSignOut()
|
|
||||||
|
|
||||||
Travis.Router.reopen
|
|
||||||
transitionTo: ->
|
|
||||||
this.container.lookup('controller:repo').set('lineNumber', null)
|
|
||||||
|
|
||||||
@_super.apply this, arguments
|
|
||||||
|
|
||||||
Travis.Router.map ->
|
Travis.Router.map ->
|
||||||
@resource 'index', path: '/', ->
|
@resource 'index', path: '/', ->
|
||||||
@route 'current', path: '/'
|
@route 'current', path: '/'
|
||||||
|
@ -88,15 +89,11 @@ Travis.Router.map ->
|
||||||
@resource 'pullRequests', path: '/pull_requests'
|
@resource 'pullRequests', path: '/pull_requests'
|
||||||
@resource 'branches', path: '/branches'
|
@resource 'branches', path: '/branches'
|
||||||
|
|
||||||
# this can't be nested in repo, because we want a set of different
|
|
||||||
# templates rendered for settings (for example no "current", "builds", ... tabs)
|
|
||||||
@resource 'repo.settings', path: '/:owner/:name/settings', ->
|
|
||||||
@route 'tab', path: ':tab'
|
|
||||||
|
|
||||||
@route 'getting_started'
|
@route 'getting_started'
|
||||||
@route 'first_sync'
|
@route 'first_sync'
|
||||||
@route 'stats', path: '/stats'
|
@route 'stats', path: '/stats'
|
||||||
@route 'auth', path: '/auth'
|
@route 'auth', path: '/auth'
|
||||||
|
@route 'notFound', path: '/not-found'
|
||||||
|
|
||||||
@resource 'profile', path: '/profile', ->
|
@resource 'profile', path: '/profile', ->
|
||||||
@route 'index', path: '/'
|
@route 'index', path: '/'
|
||||||
|
@ -104,8 +101,6 @@ Travis.Router.map ->
|
||||||
@route 'index', path: '/'
|
@route 'index', path: '/'
|
||||||
@route 'profile', path: '/profile'
|
@route 'profile', path: '/profile'
|
||||||
|
|
||||||
@route 'notFound', path: "/*path"
|
|
||||||
|
|
||||||
Travis.SetupLastBuild = Ember.Mixin.create
|
Travis.SetupLastBuild = Ember.Mixin.create
|
||||||
setupController: ->
|
setupController: ->
|
||||||
@repoDidLoad()
|
@repoDidLoad()
|
||||||
|
@ -116,9 +111,9 @@ Travis.SetupLastBuild = Ember.Mixin.create
|
||||||
repo = @controllerFor('repo').get('repo')
|
repo = @controllerFor('repo').get('repo')
|
||||||
if repo && repo.get('isLoaded') && !repo.get('lastBuildId')
|
if repo && repo.get('isLoaded') && !repo.get('lastBuildId')
|
||||||
Ember.run.next =>
|
Ember.run.next =>
|
||||||
@render('builds/not_found', into: 'repo', outlet: 'pane')
|
@render('builds/not_found', outlet: 'pane', into: 'repo')
|
||||||
|
|
||||||
Travis.GettingStartedRoute = Travis.Route.extend
|
Travis.GettingStartedRoute = Ember.Route.extend
|
||||||
setupController: ->
|
setupController: ->
|
||||||
$('body').attr('id', 'home')
|
$('body').attr('id', 'home')
|
||||||
@container.lookup('controller:repos').activate()
|
@container.lookup('controller:repos').activate()
|
||||||
|
@ -130,8 +125,8 @@ Travis.GettingStartedRoute = Travis.Route.extend
|
||||||
@render 'repos', outlet: 'left'
|
@render 'repos', outlet: 'left'
|
||||||
@_super.apply(this, arguments)
|
@_super.apply(this, arguments)
|
||||||
|
|
||||||
Travis.FirstSyncRoute = Travis.Route.extend
|
Travis.FirstSyncRoute = Ember.Route.extend
|
||||||
actions:
|
_actions:
|
||||||
renderNoOwnedRepos: (->)
|
renderNoOwnedRepos: (->)
|
||||||
# do nothing, we are showing first sync, so it's normal that there is
|
# do nothing, we are showing first sync, so it's normal that there is
|
||||||
# no owned repos
|
# no owned repos
|
||||||
|
@ -146,10 +141,10 @@ Travis.FirstSyncRoute = Travis.Route.extend
|
||||||
@render 'top', outlet: 'top'
|
@render 'top', outlet: 'top'
|
||||||
@_super.apply(this, arguments)
|
@_super.apply(this, arguments)
|
||||||
|
|
||||||
Travis.IndexCurrentRoute = Travis.Route.extend Travis.SetupLastBuild,
|
Travis.IndexCurrentRoute = Ember.Route.extend Travis.SetupLastBuild,
|
||||||
renderTemplate: ->
|
renderTemplate: ->
|
||||||
@render 'repo'
|
@render 'repo'
|
||||||
@render 'build', into: 'repo', outlet: 'pane'
|
@render 'build', outlet: 'pane', into: 'repo'
|
||||||
|
|
||||||
setupController: ->
|
setupController: ->
|
||||||
@_super.apply this, arguments
|
@_super.apply this, arguments
|
||||||
|
@ -164,9 +159,9 @@ Travis.IndexCurrentRoute = Travis.Route.extend Travis.SetupLastBuild,
|
||||||
currentRepoDidChange: ->
|
currentRepoDidChange: ->
|
||||||
@controllerFor('repo').set('repo', @controllerFor('repos').get('firstObject'))
|
@controllerFor('repo').set('repo', @controllerFor('repos').get('firstObject'))
|
||||||
|
|
||||||
Travis.AbstractBuildsRoute = Travis.Route.extend
|
Travis.AbstractBuildsRoute = Ember.Route.extend
|
||||||
renderTemplate: ->
|
renderTemplate: ->
|
||||||
@render 'builds', into: 'repo', outlet: 'pane'
|
@render 'builds', outlet: 'pane', into: 'repo'
|
||||||
|
|
||||||
setupController: ->
|
setupController: ->
|
||||||
@controllerFor('repo').activate(@get('contentType'))
|
@controllerFor('repo').activate(@get('contentType'))
|
||||||
|
@ -189,9 +184,9 @@ Travis.BuildsRoute = Travis.AbstractBuildsRoute.extend(contentType: 'builds')
|
||||||
Travis.PullRequestsRoute = Travis.AbstractBuildsRoute.extend(contentType: 'pull_requests')
|
Travis.PullRequestsRoute = Travis.AbstractBuildsRoute.extend(contentType: 'pull_requests')
|
||||||
Travis.BranchesRoute = Travis.AbstractBuildsRoute.extend(contentType: 'branches')
|
Travis.BranchesRoute = Travis.AbstractBuildsRoute.extend(contentType: 'branches')
|
||||||
|
|
||||||
Travis.BuildRoute = Travis.Route.extend
|
Travis.BuildRoute = Ember.Route.extend
|
||||||
renderTemplate: ->
|
renderTemplate: ->
|
||||||
@render 'build', into: 'repo', outlet: 'pane'
|
@render 'build', outlet: 'pane', into: 'repo'
|
||||||
|
|
||||||
serialize: (model, params) ->
|
serialize: (model, params) ->
|
||||||
id = if model.get then model.get('id') else model
|
id = if model.get then model.get('id') else model
|
||||||
|
@ -210,9 +205,9 @@ Travis.BuildRoute = Travis.Route.extend
|
||||||
model: (params) ->
|
model: (params) ->
|
||||||
Travis.Build.fetch(params.build_id)
|
Travis.Build.fetch(params.build_id)
|
||||||
|
|
||||||
Travis.JobRoute = Travis.Route.extend
|
Travis.JobRoute = Ember.Route.extend
|
||||||
renderTemplate: ->
|
renderTemplate: ->
|
||||||
@render 'job', into: 'repo', outlet: 'pane'
|
@render 'job', outlet: 'pane', into: 'repo'
|
||||||
|
|
||||||
serialize: (model, params) ->
|
serialize: (model, params) ->
|
||||||
id = if model.get then model.get('id') else model
|
id = if model.get then model.get('id') else model
|
||||||
|
@ -233,15 +228,15 @@ Travis.JobRoute = Travis.Route.extend
|
||||||
model: (params) ->
|
model: (params) ->
|
||||||
Travis.Job.fetch(params.job_id)
|
Travis.Job.fetch(params.job_id)
|
||||||
|
|
||||||
Travis.RepoIndexRoute = Travis.Route.extend Travis.SetupLastBuild,
|
Travis.RepoIndexRoute = Ember.Route.extend Travis.SetupLastBuild,
|
||||||
setupController: (controller, model) ->
|
setupController: (controller, model) ->
|
||||||
@_super.apply this, arguments
|
@_super.apply this, arguments
|
||||||
@controllerFor('repo').activate('current')
|
@controllerFor('repo').activate('current')
|
||||||
|
|
||||||
renderTemplate: ->
|
renderTemplate: ->
|
||||||
@render 'build', into: 'repo', outlet: 'pane'
|
@render 'build', outlet: 'pane', into: 'repo'
|
||||||
|
|
||||||
Travis.RepoRoute = Travis.Route.extend
|
Travis.RepoRoute = Ember.Route.extend
|
||||||
renderTemplate: ->
|
renderTemplate: ->
|
||||||
@render 'repo'
|
@render 'repo'
|
||||||
|
|
||||||
|
@ -258,20 +253,15 @@ Travis.RepoRoute = Travis.Route.extend
|
||||||
|
|
||||||
model: (params) ->
|
model: (params) ->
|
||||||
slug = "#{params.owner}/#{params.name}"
|
slug = "#{params.owner}/#{params.name}"
|
||||||
|
|
||||||
Travis.Repo.fetchBySlug(slug)
|
Travis.Repo.fetchBySlug(slug)
|
||||||
|
|
||||||
actions:
|
actions:
|
||||||
error: (error) ->
|
error: ->
|
||||||
# if error throwed has a slug (ie. it was probably repo not found)
|
Ember.run.next this, ->
|
||||||
# set the slug on index.error controller to allow to properly
|
@render('repos/not_found', outlet: 'main')
|
||||||
# display the repo information
|
|
||||||
if error.slug
|
|
||||||
this.controllerFor('index.error').set('slug', error.slug)
|
|
||||||
|
|
||||||
# bubble to the top
|
Travis.IndexRoute = Ember.Route.extend
|
||||||
return true
|
|
||||||
|
|
||||||
Travis.IndexRoute = Travis.Route.extend
|
|
||||||
renderTemplate: ->
|
renderTemplate: ->
|
||||||
$('body').attr('id', 'home')
|
$('body').attr('id', 'home')
|
||||||
|
|
||||||
|
@ -283,7 +273,11 @@ Travis.IndexRoute = Travis.Route.extend
|
||||||
@container.lookup('controller:repos').activate()
|
@container.lookup('controller:repos').activate()
|
||||||
@container.lookup('controller:application').connectLayout 'home'
|
@container.lookup('controller:application').connectLayout 'home'
|
||||||
|
|
||||||
Travis.StatsRoute = Travis.Route.extend
|
Travis.IndexLoadingRoute = Ember.Route.extend
|
||||||
|
renderTemplate: ->
|
||||||
|
@render('index_loading')
|
||||||
|
|
||||||
|
Travis.StatsRoute = Ember.Route.extend
|
||||||
renderTemplate: ->
|
renderTemplate: ->
|
||||||
$('body').attr('id', 'stats')
|
$('body').attr('id', 'stats')
|
||||||
|
|
||||||
|
@ -293,7 +287,7 @@ Travis.StatsRoute = Travis.Route.extend
|
||||||
setupController: ->
|
setupController: ->
|
||||||
@container.lookup('controller:application').connectLayout('simple')
|
@container.lookup('controller:application').connectLayout('simple')
|
||||||
|
|
||||||
Travis.NotFoundRoute = Travis.Route.extend
|
Travis.NotFoundRoute = Ember.Route.extend
|
||||||
renderTemplate: ->
|
renderTemplate: ->
|
||||||
$('body').attr('id', 'not-found')
|
$('body').attr('id', 'not-found')
|
||||||
|
|
||||||
|
@ -303,7 +297,7 @@ Travis.NotFoundRoute = Travis.Route.extend
|
||||||
setupController: ->
|
setupController: ->
|
||||||
@container.lookup('controller:application').connectLayout('simple')
|
@container.lookup('controller:application').connectLayout('simple')
|
||||||
|
|
||||||
Travis.ProfileRoute = Travis.Route.extend
|
Travis.ProfileRoute = Ember.Route.extend
|
||||||
needsAuth: true
|
needsAuth: true
|
||||||
|
|
||||||
setupController: ->
|
setupController: ->
|
||||||
|
@ -316,16 +310,16 @@ Travis.ProfileRoute = Travis.Route.extend
|
||||||
@render 'top', outlet: 'top'
|
@render 'top', outlet: 'top'
|
||||||
@render 'accounts', outlet: 'left'
|
@render 'accounts', outlet: 'left'
|
||||||
@render 'flash', outlet: 'flash'
|
@render 'flash', outlet: 'flash'
|
||||||
@_super.apply(this, arguments)
|
@render 'profile'
|
||||||
|
|
||||||
Travis.ProfileIndexRoute = Travis.Route.extend
|
Travis.ProfileIndexRoute = Ember.Route.extend
|
||||||
setupController: ->
|
setupController: ->
|
||||||
@container.lookup('controller:profile').activate 'hooks'
|
@container.lookup('controller:profile').activate 'hooks'
|
||||||
|
|
||||||
renderTemplate: ->
|
renderTemplate: ->
|
||||||
@render 'hooks', outlet: 'pane', into: 'profile', controller: 'profile'
|
@render 'hooks', outlet: 'pane', into: 'profile', controller: 'profile'
|
||||||
|
|
||||||
Travis.AccountRoute = Travis.Route.extend
|
Travis.AccountRoute = Ember.Route.extend
|
||||||
setupController: (controller, account) ->
|
setupController: (controller, account) ->
|
||||||
profileController = @container.lookup('controller:profile')
|
profileController = @container.lookup('controller:profile')
|
||||||
profileController.activate 'hooks'
|
profileController.activate 'hooks'
|
||||||
|
@ -358,21 +352,21 @@ Travis.AccountRoute = Travis.Route.extend
|
||||||
else
|
else
|
||||||
{}
|
{}
|
||||||
|
|
||||||
Travis.AccountIndexRoute = Travis.Route.extend
|
Travis.AccountIndexRoute = Ember.Route.extend
|
||||||
setupController: ->
|
setupController: ->
|
||||||
@container.lookup('controller:profile').activate 'hooks'
|
@container.lookup('controller:profile').activate 'hooks'
|
||||||
|
|
||||||
renderTemplate: ->
|
renderTemplate: ->
|
||||||
@render 'hooks', outlet: 'pane', into: 'profile'
|
@render 'hooks', outlet: 'pane', into: 'profile'
|
||||||
|
|
||||||
Travis.AccountProfileRoute = Travis.Route.extend
|
Travis.AccountProfileRoute = Ember.Route.extend
|
||||||
setupController: ->
|
setupController: ->
|
||||||
@container.lookup('controller:profile').activate 'user'
|
@container.lookup('controller:profile').activate 'user'
|
||||||
|
|
||||||
renderTemplate: ->
|
renderTemplate: ->
|
||||||
@render 'user', outlet: 'pane', into: 'profile'
|
@render 'user', outlet: 'pane', into: 'profile'
|
||||||
|
|
||||||
Travis.AuthRoute = Travis.Route.extend
|
Travis.AuthRoute = Ember.Route.extend
|
||||||
renderTemplate: ->
|
renderTemplate: ->
|
||||||
$('body').attr('id', 'auth')
|
$('body').attr('id', 'auth')
|
||||||
|
|
||||||
|
@ -384,25 +378,3 @@ Travis.AuthRoute = Travis.Route.extend
|
||||||
|
|
||||||
deactivate: ->
|
deactivate: ->
|
||||||
@controllerFor('auth').set('redirected', false)
|
@controllerFor('auth').set('redirected', false)
|
||||||
|
|
||||||
Travis.RepoSettingsRoute = Travis.Route.extend
|
|
||||||
setupController: (controller, model) ->
|
|
||||||
# TODO: if repo is just a data hash with id and slug load it
|
|
||||||
# as incomplete record
|
|
||||||
model = Travis.Repo.find(model.id) if model && !model.get
|
|
||||||
@_super(controller, model)
|
|
||||||
|
|
||||||
serialize: (repo) ->
|
|
||||||
slug = if repo.get then repo.get('slug') else repo.slug
|
|
||||||
[owner, name] = slug.split('/')
|
|
||||||
{ owner: owner, name: name }
|
|
||||||
|
|
||||||
model: (params) ->
|
|
||||||
slug = "#{params.owner}/#{params.name}"
|
|
||||||
Travis.Repo.fetchBySlug(slug)
|
|
||||||
|
|
||||||
afterModel: (repo) ->
|
|
||||||
# I'm using afterModel to fetch settings, because model is not always called.
|
|
||||||
# If link-to already provides a model, it will be just set as a route context.
|
|
||||||
repo.fetchSettings().then (settings) ->
|
|
||||||
repo.set('settings', settings)
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
{{#if _active}}
|
{{#if active}}
|
||||||
ON
|
ON
|
||||||
{{else}}
|
{{else}}
|
||||||
OFF
|
OFF
|
||||||
|
|
1
assets/scripts/app/templates/index_loading.hbs
Normal file
1
assets/scripts/app/templates/index_loading.hbs
Normal file
|
@ -0,0 +1 @@
|
||||||
|
<div class="loading"><span>Loading</span></div>
|
|
@ -23,7 +23,7 @@
|
||||||
<p class="description">{{hook.description}}</p>
|
<p class="description">{{hook.description}}</p>
|
||||||
|
|
||||||
<div class="controls">
|
<div class="controls">
|
||||||
{{#link-to "repo.settings" hook.repo class="repo-settings-icon tool-tip" title="Repository settings"}}{{/link-to}}
|
<a {{bind-attr href="hook.urlGithubAdmin"}} class="github-admin tool-tip" title="Github service hooks admin page"></a>
|
||||||
{{travis-switch action="toggle" target=hook}}
|
{{travis-switch action="toggle" target=hook}}
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
|
|
3
assets/scripts/app/templates/repos/not_found.hbs
Normal file
3
assets/scripts/app/templates/repos/not_found.hbs
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
<div id="repo">
|
||||||
|
<span class="not-found">The repository at {{slug}} was not found.</span>
|
||||||
|
</div>
|
|
@ -24,3 +24,4 @@
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{/if}}
|
{{/if}}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
@ -11,12 +11,6 @@
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{#if view.displaySettingsLink}}
|
|
||||||
<li>
|
|
||||||
{{#linkTo "repo.settings" view.repo}}Settings{{/linkTo}}
|
|
||||||
</li>
|
|
||||||
{{/if}}
|
|
||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
<a href="#" id="status-image-popup" name="status-images" class="open-popup" {{action "statusImages" target="view"}}>
|
<a href="#" id="status-image-popup" name="status-images" class="open-popup" {{action "statusImages" target="view"}}>
|
||||||
<img {{bind-attr src="view.statusImageUrl"}} title="Build Status Images"/>
|
<img {{bind-attr src="view.statusImageUrl"}} title="Build Status Images"/>
|
||||||
|
|
|
@ -45,7 +45,6 @@ Travis.FirstSyncView = Travis.View.extend
|
||||||
)
|
)
|
||||||
, Travis.config.syncingPageRedirectionTime
|
, Travis.config.syncingPageRedirectionTime
|
||||||
|
|
||||||
|
|
||||||
require 'views/accounts'
|
require 'views/accounts'
|
||||||
require 'views/annotation'
|
require 'views/annotation'
|
||||||
require 'views/application'
|
require 'views/application'
|
||||||
|
|
|
@ -115,11 +115,6 @@ Travis.reopen
|
||||||
permissions.contains parseInt(@get('repo.id'))
|
permissions.contains parseInt(@get('repo.id'))
|
||||||
).property('currentUser.permissions.length', 'repo.id')
|
).property('currentUser.permissions.length', 'repo.id')
|
||||||
|
|
||||||
hasPushPermission: (->
|
|
||||||
if permissions = @get('currentUser.pushPermissions')
|
|
||||||
permissions.contains parseInt(@get('repo.id'))
|
|
||||||
).property('currentUser.pushPermissions.length', 'repo.id')
|
|
||||||
|
|
||||||
hasAdminPermission: (->
|
hasAdminPermission: (->
|
||||||
if permissions = @get('currentUser.adminPermissions')
|
if permissions = @get('currentUser.adminPermissions')
|
||||||
permissions.contains parseInt(@get('repo.id'))
|
permissions.contains parseInt(@get('repo.id'))
|
||||||
|
@ -129,14 +124,6 @@ Travis.reopen
|
||||||
Travis.Urls.statusImage(@get('slug'))
|
Travis.Urls.statusImage(@get('slug'))
|
||||||
).property('slug')
|
).property('slug')
|
||||||
|
|
||||||
displaySettingsLink: (->
|
|
||||||
@get('hasPushPermission')
|
|
||||||
).property('hasPushPermission')
|
|
||||||
|
|
||||||
displayStatusImages: (->
|
|
||||||
@get('hasPermission')
|
|
||||||
).property('hasPermission')
|
|
||||||
|
|
||||||
statusImages: ->
|
statusImages: ->
|
||||||
@popupCloseAll()
|
@popupCloseAll()
|
||||||
view = Travis.StatusImagesView.create(toolsView: this)
|
view = Travis.StatusImagesView.create(toolsView: this)
|
||||||
|
|
|
@ -23,14 +23,13 @@ Travis.ajax = Em.Object.create
|
||||||
!result
|
!result
|
||||||
|
|
||||||
ajax: (url, method, options) ->
|
ajax: (url, method, options) ->
|
||||||
method = method || "GET"
|
|
||||||
method = method.toUpperCase()
|
method = method.toUpperCase()
|
||||||
|
|
||||||
endpoint = Travis.config.api_endpoint || ''
|
endpoint = Travis.config.api_endpoint || ''
|
||||||
options = options || {}
|
options = options || {}
|
||||||
|
|
||||||
token = Travis.sessionStorage.getItem('travis.token')
|
token = Travis.sessionStorage.getItem('travis.token')
|
||||||
if token && (Travis.ajax.needsAuth(method, url) || options.forceAuth)
|
if token && Travis.ajax.needsAuth(method, url)
|
||||||
options.headers ||= {}
|
options.headers ||= {}
|
||||||
options.headers['Authorization'] ||= "token #{token}"
|
options.headers['Authorization'] ||= "token #{token}"
|
||||||
|
|
||||||
|
|
|
@ -1,13 +1,9 @@
|
||||||
module "Router",
|
#module "Router",
|
||||||
setup: ->
|
# setup: ->
|
||||||
Ember.run -> Travis.advanceReadiness()
|
# Ember.run -> Travis.advanceReadiness()
|
||||||
teardown: ->
|
# teardown: ->
|
||||||
Ember.run -> Travis.reset()
|
# Ember.run -> Travis.reset()
|
||||||
|
#
|
||||||
test 'renders notFound template when URL can\t be found', ->
|
#test 'renders notFound template when URL can\t be found', ->
|
||||||
visit('/somehing/something/something/.../dark/side/..../something/something/something/.../complete').then ->
|
# visit('/somehing/something/something/.../dark/side/..../something/something/something/.../complete').then ->
|
||||||
equal($('#main').text().trim(), 'The requested page was not found.')
|
# equal('The requested page was not found.', $('#main').text().trim())
|
||||||
|
|
||||||
test 'renders repo not found information when repo can\'t be found', ->
|
|
||||||
visit('/what-is-this/i-dont-even').then ->
|
|
||||||
equal($('#main').text().trim(), 'The repository at what-is-this/i-dont-even was not found.')
|
|
||||||
|
|
|
@ -77,8 +77,7 @@ $.mockjax
|
||||||
if !settings.data
|
if !settings.data
|
||||||
this.responseText = { repos: repos }
|
this.responseText = { repos: repos }
|
||||||
else if slug = settings.data.slug
|
else if slug = settings.data.slug
|
||||||
reposForResponse = $.select(repos, (repository) -> repository.slug == slug)
|
this.responseText = { repos: [$.detect(repos, (repository) -> repository.slug == slug)] }
|
||||||
this.responseText = { repos: reposForResponse }
|
|
||||||
else if search = settings.data.search
|
else if search = settings.data.search
|
||||||
this.responseText = { repos: $.select(repos, (repository) -> repository.slug.indexOf(search) > -1).toArray() }
|
this.responseText = { repos: $.select(repos, (repository) -> repository.slug.indexOf(search) > -1).toArray() }
|
||||||
else if settings.data.member
|
else if settings.data.member
|
||||||
|
|
|
@ -11,7 +11,7 @@
|
||||||
.loading
|
.loading
|
||||||
display: none
|
display: none
|
||||||
|
|
||||||
span.loading, span.saving
|
span.loading
|
||||||
padding: 0 25px 0 0
|
padding: 0 25px 0 0
|
||||||
font-size: $font-size-small
|
font-size: $font-size-small
|
||||||
color: $color-text-lighter
|
color: $color-text-lighter
|
||||||
|
|
|
@ -1,10 +1,6 @@
|
||||||
.settings-row
|
|
||||||
margin-top: 20px
|
|
||||||
|
|
||||||
.travis-switch
|
.travis-switch
|
||||||
position: relative
|
position: relative
|
||||||
display: inline-block
|
display: block
|
||||||
float: left
|
|
||||||
width: 60px
|
width: 60px
|
||||||
height: 18px
|
height: 18px
|
||||||
margin: 0 10px 0 15px
|
margin: 0 10px 0 15px
|
||||||
|
|
|
@ -57,14 +57,14 @@
|
||||||
float: left
|
float: left
|
||||||
display: block
|
display: block
|
||||||
|
|
||||||
.repo-settings-icon
|
.github-admin
|
||||||
// Overriding an earlier definition above, which is probably
|
// Overriding an earlier definition above, which is probably
|
||||||
// obsolete. TODO: Remove if so.
|
// obsolete. TODO: Remove if so.
|
||||||
position: relative
|
position: relative
|
||||||
height: 20px
|
height: 20px
|
||||||
width: 20px
|
width: 20px
|
||||||
padding-right: 0
|
padding-right: 0
|
||||||
background: inline-image('ui/repo-settings.png') no-repeat 3px 4px
|
background: inline-image('ui/github-admin.png') no-repeat 3px 4px
|
||||||
|
|
||||||
&:hover
|
&:hover
|
||||||
> a
|
> a
|
||||||
|
|
Loading…
Reference in New Issue
Block a user