diff --git a/assets/scripts/app/helpers.coffee b/assets/scripts/app/helpers.coffee index bcbd98c1..98608e18 100644 --- a/assets/scripts/app/helpers.coffee +++ b/assets/scripts/app/helpers.coffee @@ -1,3 +1,4 @@ require 'helpers/handlebars' require 'helpers/helpers' require 'helpers/urls' +require 'helpers/status_image_formatter' diff --git a/assets/scripts/app/helpers/status_image_formatter.coffee b/assets/scripts/app/helpers/status_image_formatter.coffee new file mode 100644 index 00000000..376a1f01 --- /dev/null +++ b/assets/scripts/app/helpers/status_image_formatter.coffee @@ -0,0 +1,55 @@ +@Travis.StatusImageFormatter = + slug: null + url: null + branch: null + + format: (version, slug, branch) -> + @slug = slug + @branch = branch + @url = @urlRepo() + + switch version + when 'Image URL' then @statusImageUrl() + when 'Markdown' then @markdownStatusImage() + when 'Textile' then @textileStatusImage() + when 'RDOC' then @rdocStatusImage() + when 'AsciiDoc' then @asciidocStatusImage() + when 'Rst' then @rstStatusImage() + when 'POD' then @podStatusImage() + when 'cc.xml' then @ccxmlStatusUrl() + + urlRepo: (-> + "https://#{location.host}/#{@slug}" + ) + + statusImageUrl: (-> + Travis.Urls.statusImage(@slug, @branch) + ) + + markdownStatusImage: (-> + "[})](#{@url})" + ) + + textileStatusImage: (-> + "!#{@statusImageUrl()}!:#{@url}" + ) + + rdocStatusImage: (-> + "{<img src=\"#{@statusImageUrl()}\" alt=\"Build Status\" />}[#{@url}]" + ) + + asciidocStatusImage: (-> + "image:#{@statusImageUrl()}[\"Build Status\", link=\"#{@url}\"]" + ) + + rstStatusImage: (-> + ".. image:: #{@statusImageUrl()}\n :target: #{@url}" + ) + + podStatusImage: (-> + "=for HTML <a href=\"#{@url}\"><img src=\"#{@statusImageUrl()}\"></a>" + ) + + ccxmlStatusUrl: (-> + "#{Travis.config.api_endpoint}/repos/#{@slug}/cc.xml" + ) diff --git a/assets/scripts/app/templates/status_images.hbs b/assets/scripts/app/templates/status_images.hbs index 1b314730..2b103afe 100644 --- a/assets/scripts/app/templates/status_images.hbs +++ b/assets/scripts/app/templates/status_images.hbs @@ -7,31 +7,8 @@ <span class="loading"></span> {{/if}} </p> + <p> - <label>Image URL:</label> - <input type="text" class="url" {{bind-attr value="view.statusImageUrl"}}></input> -</p> -<p> - <label>Markdown:</label> - <input type="text" class="markdown" {{bind-attr value="view.markdownStatusImage"}}></input> -</p> -<p> - <label>Textile:</label> - <input type="text" class="textile" {{bind-attr value="view.textileStatusImage"}}></input> -</p> -<p> - <label>RDOC:</label> - <input type="text" class="rdoc" {{bind-attr value="view.rdocStatusImage"}}></input> -</p> -<p> - <label>AsciiDoc:</label> - <input type="text" class="asciidoc" {{bind-attr value="view.asciidocStatusImage"}}></input> -</p> -<p> - <label>Rst:</label> - <input type="text" class="rst" {{bind-attr value="view.rstStatusImage"}}></input> -</p> -<p> - <label>POD:</label> - <input type="text" class="pod" {{bind-attr value="view.podStatusImage"}}></input> + <label>{{view Ember.Select contentBinding="view.formats" selectionBinding="view.statusImageFormat"}}</label> + {{view Travis.StatusImageInput valueBinding="view.statusString" class="url" rows=3}} </p> diff --git a/assets/scripts/app/views.coffee b/assets/scripts/app/views.coffee index 4fa13d04..bc04546c 100644 --- a/assets/scripts/app/views.coffee +++ b/assets/scripts/app/views.coffee @@ -60,3 +60,4 @@ require 'views/stats' require 'views/signin' require 'views/top' require 'views/status_images' +require 'views/status_image_input' diff --git a/assets/scripts/app/views/status_image_input.coffee b/assets/scripts/app/views/status_image_input.coffee new file mode 100644 index 00000000..dd8c4530 --- /dev/null +++ b/assets/scripts/app/views/status_image_input.coffee @@ -0,0 +1,3 @@ +Travis.StatusImageInput = Em.TextArea.extend + click: -> + @get('element').select() diff --git a/assets/scripts/app/views/status_images.coffee b/assets/scripts/app/views/status_images.coffee index a9a9ea88..cf574cb5 100644 --- a/assets/scripts/app/views/status_images.coffee +++ b/assets/scripts/app/views/status_images.coffee @@ -9,10 +9,22 @@ Travis.StatusImagesView = Em.View.extend jobBinding: 'toolsView.job' branchesBinding: 'repo.branches' + formats: [ + 'Image URL', + 'Markdown', + 'Textile', + 'RDOC', + 'AsciiDoc', + 'Rst', + 'POD', + 'cc.xml' + ] + didInsertElement: -> @_super.apply(this, arguments) @setStatusImageBranch() + @setStatusImageFormat() @show() show: -> @@ -21,9 +33,9 @@ Travis.StatusImagesView = Em.View.extend close: -> @destroy() - urlRepo: (-> - "https://#{location.host}/#{@get('repo.slug')}" - ).property('repo.slug') + setStatusImageFormat: (-> + @set('statusImageFormat', @formats[0]) + ) setStatusImageBranch: (-> if @get('repo.branches.isLoaded') @@ -32,30 +44,7 @@ Travis.StatusImagesView = Em.View.extend @set('statusImageBranch', null) ).observes('repo.branches', 'repo.branches.isLoaded', 'build.commit.branch') - statusImageUrl: (-> - Travis.Urls.statusImage(@get('repo.slug'), @get('statusImageBranch.commit.branch')) - ).property('repo.slug', 'statusImageBranch') + statusString: (-> + Travis.StatusImageFormatter.format(@get('statusImageFormat'), @get('repo.slug'), @get('statusImageBranch.commit.branch')) + ).property('statusImageFormat', 'repo.slug', 'statusImageBranch.commit.branch') - markdownStatusImage: (-> - "[})](#{@get('urlRepo')})" - ).property('statusImageUrl') - - textileStatusImage: (-> - "!#{@get('statusImageUrl')}!:#{@get('urlRepo')}" - ).property('statusImageUrl') - - rdocStatusImage: (-> - "{<img src=\"#{@get('statusImageUrl')}\" alt=\"Build Status\" />}[#{@get('urlRepo')}]" - ).property('statusImageUrl') - - asciidocStatusImage: (-> - "image:#{@get('statusImageUrl')}[\"Build Status\", link=\"#{@get('urlRepo')}\"]" - ).property('statusImageUrl') - - rstStatusImage: (-> - ".. image:: #{@get('statusImageUrl')} :target: #{@get('urlRepo')}" - ).property('statusImageUrl') - - podStatusImage: (-> - "=for HTML <a href=\"#{@get('urlRepo')}\"><img src=\"#{@get('statusImageUrl')}\"></a>" - ).property('statusImageUrl') diff --git a/assets/styles/app/popup.sass b/assets/styles/app/popup.sass index c7308790..5a683036 100644 --- a/assets/styles/app/popup.sass +++ b/assets/styles/app/popup.sass @@ -49,12 +49,14 @@ p margin: 10px 0 label - width: 80px + width: 100px display: inline-block - input + vertical-align: top + textarea border: 1px solid $color-border-light - width: 505px + width: 485px padding: 4px + resize: vertical @include border-radius(3px) #regenerate-key