diff --git a/assets/scripts/app/helpers.coffee b/assets/scripts/app/helpers.coffee
index 02ed5eb8..19e42046 100644
--- a/assets/scripts/app/helpers.coffee
+++ b/assets/scripts/app/helpers.coffee
@@ -3,3 +3,48 @@ require 'helpers/helpers'
require 'helpers/urls'
require 'helpers/status_image_formats'
require 'helpers/github_url_properties'
+
+Travis.Handlebars = {}
+
+require 'helpers/label'
+require 'helpers/input'
+require 'helpers/tipsy'
+require 'helpers/capitalize'
+require 'helpers/github_commit_link'
+require 'helpers/format_time'
+require 'helpers/format_duration'
+require 'helpers/format_commit'
+require 'helpers/format_sha'
+require 'helpers/format_message'
+require 'helpers/format_config'
+require 'helpers/short_compare_shas'
+require 'helpers/mb'
+
+Ember.Handlebars.registerHelper('label', Travis.Handlebars.label)
+Ember.Handlebars.registerHelper('input', Travis.Handlebars.input)
+Ember.Handlebars.registerHelper('tipsy', Travis.Handlebars.tipsy)
+Ember.Handlebars.registerHelper('travis-errors', Travis.Handlebars.travisErrors)
+Ember.Handlebars.registerHelper('travis-field', Travis.Handlebars.travisField)
+
+Ember.Handlebars.registerBoundHelper('capitalize', Travis.Handlebars.capitalize)
+Ember.Handlebars.registerBoundHelper('githubCommitLink', Travis.Handlebars.githubCommitLink)
+Ember.Handlebars.registerBoundHelper('formatTime', Travis.Handlebars.formatTime)
+Ember.Handlebars.registerBoundHelper('formatDuration', Travis.Handlebars.formatDuration)
+Ember.Handlebars.registerBoundHelper('formatCommit', Travis.Handlebars.formatCommit, 'sha', 'branch')
+Ember.Handlebars.registerBoundHelper('formatSha', Travis.Handlebars.formatSha)
+Ember.Handlebars.registerBoundHelper('formatMessage', Travis.Handlebars.formatMessage)
+Ember.Handlebars.registerBoundHelper('formatConfig', Travis.Handlebars.formatConfig)
+Ember.Handlebars.registerBoundHelper('shortCompareShas', Travis.Handlebars.shortCompareShas)
+Ember.Handlebars.registerBoundHelper('mb', Travis.Handlebars.mb)
+
+Ember.LinkView.reopen
+ init: ->
+ @_super()
+ eventName = Ember.get(this, 'eventName')
+ if Ember.get(this, 'trackEvent')
+ @on(eventName, this, @_trackEvent)
+ @on(eventName, this, @_invoke)
+
+ _trackEvent: (event) ->
+ event.preventDefault()
+
diff --git a/assets/scripts/app/helpers/capitalize.coffee b/assets/scripts/app/helpers/capitalize.coffee
new file mode 100644
index 00000000..5793c349
--- /dev/null
+++ b/assets/scripts/app/helpers/capitalize.coffee
@@ -0,0 +1,9 @@
+safe = Travis.Helpers.safe
+
+capitalize = (value, options) ->
+ if value?
+ safe $.capitalize(value)
+ else
+ ''
+
+Travis.Handlebars.capitalize = capitalize
diff --git a/assets/scripts/app/helpers/format_commit.coffee b/assets/scripts/app/helpers/format_commit.coffee
new file mode 100644
index 00000000..1a74fe36
--- /dev/null
+++ b/assets/scripts/app/helpers/format_commit.coffee
@@ -0,0 +1,7 @@
+safe = Travis.Helpers.safe
+formatCommitHelper = Travis.Helpers.formatCommit
+
+formatCommit = (commit) ->
+ safe formatCommitHelper(commit.get('sha'), commit.get('branch')) if commit
+
+Travis.Handlebars.formatCommit = formatCommit
diff --git a/assets/scripts/app/helpers/format_config.coffee b/assets/scripts/app/helpers/format_config.coffee
new file mode 100644
index 00000000..1f79387e
--- /dev/null
+++ b/assets/scripts/app/helpers/format_config.coffee
@@ -0,0 +1,8 @@
+formatConfigHelper = Travis.Helpers.formatConfig
+safe = Travis.Helpers.safe
+
+formatConfig = (config, options) ->
+ safe formatConfigHelper(config)
+
+Travis.Handlebars.formatConfig = formatConfig
+
diff --git a/assets/scripts/app/helpers/format_duration.coffee b/assets/scripts/app/helpers/format_duration.coffee
new file mode 100644
index 00000000..b62c464e
--- /dev/null
+++ b/assets/scripts/app/helpers/format_duration.coffee
@@ -0,0 +1,7 @@
+timeInWords = Travis.Helpers.timeInWords
+safe = Travis.Helpers.safe
+
+formatDuration = (duration, options) ->
+ safe timeInWords(duration)
+
+Travis.Handlebars.formatDuration = formatDuration
diff --git a/assets/scripts/app/helpers/format_message.coffee b/assets/scripts/app/helpers/format_message.coffee
new file mode 100644
index 00000000..da1243ce
--- /dev/null
+++ b/assets/scripts/app/helpers/format_message.coffee
@@ -0,0 +1,7 @@
+formatMessageHelper = Travis.Helpers.formatMessageHelper
+safe = Travis.Helpers.safe
+
+formatMessage = (message, options) ->
+ safe formatMessageHelper(message, options.hash)
+
+Travis.Handlebars.formatMessage = formatMessage
diff --git a/assets/scripts/app/helpers/format_sha.coffee b/assets/scripts/app/helpers/format_sha.coffee
new file mode 100644
index 00000000..3427687f
--- /dev/null
+++ b/assets/scripts/app/helpers/format_sha.coffee
@@ -0,0 +1,7 @@
+formatShaHelper = Travis.Helpers.formatSha
+safe = Travis.Helpers.safe
+
+formatSha = (sha) ->
+ safe formatShaHelper(sha)
+
+Travis.Handlebars.formatSha = formatSha
diff --git a/assets/scripts/app/helpers/format_time.coffee b/assets/scripts/app/helpers/format_time.coffee
new file mode 100644
index 00000000..52c29a86
--- /dev/null
+++ b/assets/scripts/app/helpers/format_time.coffee
@@ -0,0 +1,7 @@
+timeAgoInWords = Travis.Helpers.timeAgoInWords
+safe = Travis.Helpers.safe
+
+formatTime = (value, options) ->
+ safe timeAgoInWords(value) || '-'
+
+Travis.Handlebars.formatTime = formatTime
diff --git a/assets/scripts/app/helpers/github_commit_link.coffee b/assets/scripts/app/helpers/github_commit_link.coffee
new file mode 100644
index 00000000..e7be3a33
--- /dev/null
+++ b/assets/scripts/app/helpers/github_commit_link.coffee
@@ -0,0 +1,13 @@
+formatConfig = Travis.Helpers.formatConfig
+githubCommitUrl = Travis.Urls.githubCommit
+safe = Travis.Helpers.safe
+
+githubCommitLink = (slug, commitSha) ->
+ return '' unless commitSha
+ sha = Handlebars.Utils.escapeExpression formatCommit(commitSha)
+ return sha unless slug
+ url = Handlebars.Utils.escapeExpression githubCommitUrl(slug, sha)
+
+ safe '' + sha + ''
+
+Travis.Handlebars.githubCommitLink = githubCommitLink
diff --git a/assets/scripts/app/helpers/handlebars.coffee b/assets/scripts/app/helpers/handlebars.coffee
index 5d120f99..8b137891 100644
--- a/assets/scripts/app/helpers/handlebars.coffee
+++ b/assets/scripts/app/helpers/handlebars.coffee
@@ -1,178 +1 @@
-safe = (string) ->
- new Handlebars.SafeString(string)
-
-Ember.Handlebars.helper('mb', (size) ->
- if size
- (size / 1024 / 1024).toFixed(2)
-, 'size')
-
-Ember.LinkView.reopen
- init: ->
- @_super()
- eventName = Ember.get(this, 'eventName')
- if Ember.get(this, 'trackEvent')
- @on(eventName, this, @_trackEvent)
- @on(eventName, this, @_invoke)
-
- _trackEvent: (event) ->
- event.preventDefault()
-
-FormFieldRowView = Ember.View.extend
- invalid: Ember.computed.notEmpty('errors.[]')
- classNameBindings: ['invalid']
- classNames: 'field'
-
-LabelView = Ember.View.extend(
- tagName: 'label'
-
- attributeBindings: ['for', 'accesskey', 'form']
- classNameBindings: ['class']
-)
-
-Ember.Handlebars.registerHelper('label', (options) ->
- view = LabelView
-
- name = options.hash.for
- if name
- labels = @get('_labels')
- unless labels
- labels = Ember.Object.create()
- @set('_labels', labels)
-
- # for now I support only label + input in their own context
- id = labels.get(name)
- unless id
- id = "#{name}-#{Math.round(Math.random() * 1000000)}"
- labels.set(name, id)
-
- options.hash.for = id
- options.hashTypes.for = 'STRING'
- options.hashContexts.for = this
- if options.hash.content
- options.fn = Ember.Handlebars.compile("{{view.content}}")
-
- Ember.Handlebars.helpers.view.call(this, view, options)
-)
-
-originalInputHelper = Ember.Handlebars.helpers.input
-
-Ember.Handlebars.registerHelper('input', (options) ->
- # for now I can match label only with the property name
- # passed here matches the label
- name = (options.hash.value || options.hash.checked)
- id = options.hash.id
-
- # generate id only if it's not given
- if name && !name.match(/\./) && !id
- labels = @get('_labels')
- unless labels
- labels = Ember.Object.create()
- @set('_labels', labels)
-
- # for now I support only label + input in their own context
- id = labels.get(name)
- unless id
- id = "#{name}-#{Math.round(Math.random() * 1000000)}"
- labels.set(name, id)
-
- options.hash.id = id
- options.hashTypes.id = 'STRING'
- options.hashContexts.id = this
-
- originalInputHelper.call(this, options)
-)
-
-Ember.Handlebars.registerHelper('travis-field', (name, options) ->
- errors = @get('errors').for(name)
- template = options.fn
- delete options.fn
-
- view = FormFieldRowView.create(
- controller: this
- template: template
- errors: errors
- name: name
- classNameBindings: ['name']
- )
-
- Ember.Handlebars.helpers.view.call(this, view, options)
-)
-
-Travis.ErrorsView = Ember.View.extend
- tagName: 'span'
- template: Ember.Handlebars.compile("{{#each view.errors}}{{message}}{{/each}}")
- classNames: ['error']
- classNameBindings: ['codes']
- attributeBindings: ['style']
- style: (->
- 'display: none' unless @get('show')
- ).property('show')
- codes: (->
- @get('errors').mapBy('code')
- ).property('@errors')
- show: Ember.computed.notEmpty('errors.[]')
-
-Ember.Handlebars.registerHelper('travis-errors', (name, options) ->
- errors = @get('errors').for(name)
- view = Travis.ErrorsView.create(
- controller: this
- errors: errors
- )
-
- Ember.Handlebars.helpers.view.call(this, view, options)
-)
-
-Handlebars.registerHelper 'tipsy', (text, tip) ->
- safe '' + text + ''
-
-Ember.Handlebars.registerBoundHelper 'capitalize', (value, options) ->
- if value?
- safe $.capitalize(value)
- else
- ''
-
-Ember.Handlebars.helper('githubCommitLink', (slug, commitSha) ->
- return '' unless commitSha
- sha = Handlebars.Utils.escapeExpression Travis.Helpers.formatCommit(commitSha)
- return sha unless slug
- url = Handlebars.Utils.escapeExpression Travis.Urls.githubCommit(slug, sha)
-
- safe '' + sha + ''
-)
-
-Ember.Handlebars.registerBoundHelper 'formatTime', (value, options) ->
- safe Travis.Helpers.timeAgoInWords(value) || '-'
-
-Ember.Handlebars.registerBoundHelper 'formatDuration', (duration, options) ->
- safe Travis.Helpers.timeInWords(duration)
-
-Ember.Handlebars.helper('formatCommit', (commit) ->
- safe Travis.Helpers.formatCommit(commit.get('sha'), commit.get('branch')) if commit
-, 'sha', 'branch')
-
-Ember.Handlebars.helper 'formatSha', (sha) ->
- safe Travis.Helpers.formatSha(sha)
-
-Ember.Handlebars.registerBoundHelper 'pathFrom', (url, options) ->
- safe Travis.Helpers.pathFrom(url)
-
-Ember.Handlebars.helper 'formatMessage', (message, options) ->
- safe Travis.Helpers.formatMessage(message, options.hash)
-
-Ember.Handlebars.registerBoundHelper 'formatConfig', (config, options) ->
- safe Travis.Helpers.formatConfig(config)
-
-Ember.Handlebars.registerBoundHelper 'shortCompareShas', (url, options) ->
- path = Travis.Helpers.pathFrom(url)
- if path.indexOf('...') >= 0
- shas = path.split('...')
- "#{shas[0][0..6]}..#{shas[1][0..6]}"
- else
- path
-
-Ember.Handlebars.registerBoundHelper 'formatLog', (log, options) ->
- parentView = @get 'parentView'
- repo = parentView.get(options.repo)
- item = parentView.get(options.item)
- Travis.Helpers.formatLog(log, repo, item) || ''
diff --git a/assets/scripts/app/helpers/helpers.coffee b/assets/scripts/app/helpers/helpers.coffee
index 8636bc0c..23214d03 100644
--- a/assets/scripts/app/helpers/helpers.coffee
+++ b/assets/scripts/app/helpers/helpers.coffee
@@ -53,9 +53,6 @@ formatMessage = (message, options) ->
message = message.replace /\n/g, '
'
message
-pathFrom = (url) ->
- (url || '').split('/').pop()
-
timeAgoInWords = (date) ->
timeago.distanceInWords date
@@ -140,13 +137,15 @@ configKeys = (config) ->
return [] unless config
intersect(Object.keys(config), Object.keys(config_keys_map))
+pathFrom = (url) ->
+ (url || '').split('/').pop()
+
Travis.Helpers =
configKeys: configKeys
githubify: githubify
timeInWords: timeInWords
durationFrom: durationFrom
timeAgoInWords: timeAgoInWords
- pathFrom: pathFrom
formatMessage: formatMessage
formatConfig: formatConfig
formatSha: formatSha
@@ -154,3 +153,4 @@ Travis.Helpers =
colorForState: colorForState
safe: safe
compact: compact
+ pathFrom: pathFrom
diff --git a/assets/scripts/app/helpers/input.coffee b/assets/scripts/app/helpers/input.coffee
new file mode 100644
index 00000000..96fceecc
--- /dev/null
+++ b/assets/scripts/app/helpers/input.coffee
@@ -0,0 +1,28 @@
+originalInputHelper = Ember.Handlebars.helpers.input
+
+input = (options) ->
+ # for now I can match label only with the property name
+ # passed here matches the label
+ name = (options.hash.value || options.hash.checked)
+ id = options.hash.id
+
+ # generate id only if it's not given
+ if name && !name.match(/\./) && !id
+ labels = @get('_labels')
+ unless labels
+ labels = Ember.Object.create()
+ @set('_labels', labels)
+
+ # for now I support only label + input in their own context
+ id = labels.get(name)
+ unless id
+ id = "#{name}-#{Math.round(Math.random() * 1000000)}"
+ labels.set(name, id)
+
+ options.hash.id = id
+ options.hashTypes.id = 'STRING'
+ options.hashContexts.id = this
+
+ originalInputHelper.call(this, options)
+
+Travis.Handlebars.input = input
diff --git a/assets/scripts/app/helpers/label.coffee b/assets/scripts/app/helpers/label.coffee
new file mode 100644
index 00000000..1a9ad3cd
--- /dev/null
+++ b/assets/scripts/app/helpers/label.coffee
@@ -0,0 +1,32 @@
+LabelView = Ember.View.extend(
+ tagName: 'label'
+
+ attributeBindings: ['for', 'accesskey', 'form']
+ classNameBindings: ['class']
+)
+
+label = (options) ->
+ view = LabelView
+
+ name = options.hash.for
+ if name
+ labels = @get('_labels')
+ unless labels
+ labels = Ember.Object.create()
+ @set('_labels', labels)
+
+ # for now I support only label + input in their own context
+ id = labels.get(name)
+ unless id
+ id = "#{name}-#{Math.round(Math.random() * 1000000)}"
+ labels.set(name, id)
+
+ options.hash.for = id
+ options.hashTypes.for = 'STRING'
+ options.hashContexts.for = this
+ if options.hash.content
+ options.fn = Ember.Handlebars.compile("{{view.content}}")
+
+ Ember.Handlebars.helpers.view.call(this, view, options)
+
+Travis.Handlebars.label = label
diff --git a/assets/scripts/app/helpers/mb.coffee b/assets/scripts/app/helpers/mb.coffee
new file mode 100644
index 00000000..4852fc75
--- /dev/null
+++ b/assets/scripts/app/helpers/mb.coffee
@@ -0,0 +1,5 @@
+fn = (size) ->
+ if size
+ (size / 1024 / 1024).toFixed(2)
+
+Travis.Handlebars.mb = fn
diff --git a/assets/scripts/app/helpers/short_compare_shas.coffee b/assets/scripts/app/helpers/short_compare_shas.coffee
new file mode 100644
index 00000000..81cd7441
--- /dev/null
+++ b/assets/scripts/app/helpers/short_compare_shas.coffee
@@ -0,0 +1,11 @@
+pathFrom = Travis.Helpers.pathFrom
+
+fn = (url, options) ->
+ path = pathFrom(url)
+ if path.indexOf('...') >= 0
+ shas = path.split('...')
+ "#{shas[0][0..6]}..#{shas[1][0..6]}"
+ else
+ path
+
+Travis.Handlebars.shortCompareShas = fn
diff --git a/assets/scripts/app/helpers/status_image_formats.coffee b/assets/scripts/app/helpers/status_image_formats.coffee
index 65aa31e4..1667d4e6 100644
--- a/assets/scripts/app/helpers/status_image_formats.coffee
+++ b/assets/scripts/app/helpers/status_image_formats.coffee
@@ -1,41 +1,41 @@
-require 'helper/urls'
+require 'helpers/urls'
ccXmlUrl = Travis.Urls.ccXml
statusImageUrl = Travis.Urls.statusImage
-urlRepo: ( (slug) ->
+urlRepo = ( (slug) ->
"https://#{location.host}/#{slug}"
)
-markdownStatusImage: ( (url, slug, branch) ->
+markdownStatusImage = ( (url, slug, branch) ->
"[})](#{url})"
)
-textileStatusImage: ( (url, slug, branch) ->
+textileStatusImage = ( (url, slug, branch) ->
"!#{statusImageUrl(slug, branch)}!:#{url}"
)
-rdocStatusImage: ( (url, slug, branch) ->
+rdocStatusImage = ( (url, slug, branch) ->
"{
}[#{url}]"
)
-asciidocStatusImage: ( (url, slug, branch) ->
+asciidocStatusImage = ( (url, slug, branch) ->
"image:#{statusImageUrl(slug, branch)}[\"Build Status\", link=\"#{url}\"]"
)
-rstStatusImage: ( (url, slug, branch) ->
+rstStatusImage = ( (url, slug, branch) ->
".. image:: #{statusImageUrl(slug, branch)}\n :target: #{url}"
)
-podStatusImage: ( (url, slug, branch) ->
+podStatusImage = ( (url, slug, branch) ->
"=for HTML
"
)
-ccxmlStatusUrl: ( (slug) ->
+ccxmlStatusUrl = ( (slug) ->
ccXmlUrl(slug)
)
-format: (version, slug, branch) ->
+format = (version, slug, branch) ->
url = urlRepo(slug)
switch version
diff --git a/assets/scripts/app/helpers/tipsy.coffee b/assets/scripts/app/helpers/tipsy.coffee
new file mode 100644
index 00000000..e328cfea
--- /dev/null
+++ b/assets/scripts/app/helpers/tipsy.coffee
@@ -0,0 +1,6 @@
+safe = Travis.Helpers.safe
+
+tipsy = (text, tip) ->
+ safe '' + text + ''
+
+Travis.Handlebars.tipsy = tipsy
diff --git a/assets/scripts/app/helpers/travis-errors.coffee b/assets/scripts/app/helpers/travis-errors.coffee
new file mode 100644
index 00000000..934dd279
--- /dev/null
+++ b/assets/scripts/app/helpers/travis-errors.coffee
@@ -0,0 +1,26 @@
+notEmpty = Ember.computed.notEmpty
+
+ErrorsView = Ember.View.extend
+ tagName: 'span'
+ template: Ember.Handlebars.compile("{{#each view.errors}}{{message}}{{/each}}")
+ classNames: ['error']
+ classNameBindings: ['codes']
+ attributeBindings: ['style']
+ style: (->
+ 'display: none' unless @get('show')
+ ).property('show')
+ codes: (->
+ @get('errors').mapBy('code')
+ ).property('@errors')
+ show: notEmpty('errors.[]')
+
+fn = (name, options) ->
+ errors = @get('errors').for(name)
+ view = ErrorsView.create(
+ controller: this
+ errors: errors
+ )
+
+ Ember.Handlebars.helpers.view.call(this, view, options)
+
+Travis.Handlebars.travisErrors = fn
diff --git a/assets/scripts/app/helpers/travis-field.coffee b/assets/scripts/app/helpers/travis-field.coffee
new file mode 100644
index 00000000..0efc4042
--- /dev/null
+++ b/assets/scripts/app/helpers/travis-field.coffee
@@ -0,0 +1,23 @@
+notEmpty = Ember.computed.notEmpty
+
+FormFieldRowView = Ember.View.extend
+ invalid: notEmpty('errors.[]')
+ classNameBindings: ['invalid']
+ classNames: 'field'
+
+fn = (name, options) ->
+ errors = @get('errors').for(name)
+ template = options.fn
+ delete options.fn
+
+ view = FormFieldRowView.create(
+ controller: this
+ template: template
+ errors: errors
+ name: name
+ classNameBindings: ['name']
+ )
+
+ Ember.Handlebars.helpers.view.call(this, view, options)
+
+Travis.Handlebars.travisField = fn
diff --git a/assets/scripts/app/routes.coffee b/assets/scripts/app/routes.coffee
index 5acecf51..66e0eb40 100644
--- a/assets/scripts/app/routes.coffee
+++ b/assets/scripts/app/routes.coffee
@@ -61,7 +61,6 @@ require 'routes/getting_started'
require 'routes/insufficient_oauth_permissions'
require 'routes/job'
require 'routes/main/index'
-require 'routes/main/error'
require 'routes/main/my_repositories'
require 'routes/main/recent'
require 'routes/main/repositories'