diff --git a/assets/scripts/app/models/job.coffee b/assets/scripts/app/models/job.coffee
index ec8d3b00..b1d20d25 100644
--- a/assets/scripts/app/models/job.coffee
+++ b/assets/scripts/app/models/job.coffee
@@ -132,10 +132,8 @@ require 'travis/model'
).property('finishedAt')
canRemoveLog: (->
- # This should somehow get the status of removed log, but unfortunately there is
- # no easy way to do that at the moment
- true
- ).property()
+ !@get('log.removed')
+ ).property('log.removed')
slug: (->
"#{@get('repo.slug')} ##{@get('number')}"
diff --git a/assets/scripts/app/models/log.coffee b/assets/scripts/app/models/log.coffee
index 6056731f..08fb1973 100644
--- a/assets/scripts/app/models/log.coffee
+++ b/assets/scripts/app/models/log.coffee
@@ -39,7 +39,10 @@ require 'travis/log_chunks'
console.log 'log model: fetching log' if Log.DEBUG
@clearParts()
handlers =
- json: (json) => @loadParts(json['log']['parts'])
+ json: (json) =>
+ if json['log']['removed_at']
+ @set('removed', true)
+ @loadParts(json['log']['parts'])
text: (text) => @loadText(text)
Travis.Log.Request.create(id: id, handlers: handlers).run() if id = @get('job.id')
diff --git a/assets/scripts/app/templates/remove_log.hbs b/assets/scripts/app/templates/remove_log.hbs
new file mode 100644
index 00000000..ad8e2fa7
--- /dev/null
+++ b/assets/scripts/app/templates/remove_log.hbs
@@ -0,0 +1,8 @@
+
+
This action will remove the log permanently!
+Do you want to continue?
+
+ Yes, please!
+ or
+ Cancel
+
diff --git a/assets/scripts/app/templates/repos/show/actions.hbs b/assets/scripts/app/templates/repos/show/actions.hbs
index 5f1232fd..504d70c2 100644
--- a/assets/scripts/app/templates/repos/show/actions.hbs
+++ b/assets/scripts/app/templates/repos/show/actions.hbs
@@ -32,16 +32,22 @@
{{/if}}
{{/if}}
- {{#if view.showDownloadLog}}
-
-
-
+ {{#if view.jobIdForLog}}
+ {{#if view.showDownloadLog}}
+
+
+
+ {{/if}}
{{/if}}
- {{#if view.displayRemoveLog}}
-
-
-
+ {{! the next if is a hack for refreshing displayRemoveLog when we change
+ views, it sometimes doesn't work properly }}
+ {{#if view.jobIdForLog}}
+ {{#if view.displayRemoveLog}}
+
+
+
+ {{/if}}
{{/if}}
{{#if view.displayCodeClimate}}
@@ -53,3 +59,14 @@
+
+
diff --git a/assets/scripts/app/views.coffee b/assets/scripts/app/views.coffee
index 6076bd2f..036c8c7a 100644
--- a/assets/scripts/app/views.coffee
+++ b/assets/scripts/app/views.coffee
@@ -20,7 +20,7 @@ Travis.NotFoundView = Ember.View.extend
name = event?.target?.name || name
$("##{name}").toggleClass('display')
popupClose: ->
- $(event.target).closest('.popup').removeClass('display')
+ $('.popup').removeClass('display')
popupCloseAll: ->
if view = Travis.View.currentPopupView
view.destroy()
diff --git a/assets/scripts/app/views/repo/show.coffee b/assets/scripts/app/views/repo/show.coffee
index 51a8a45d..9f02f081 100644
--- a/assets/scripts/app/views/repo/show.coffee
+++ b/assets/scripts/app/views/repo/show.coffee
@@ -19,12 +19,12 @@ Travis.reopen
).property('controller.repo.slug')
actions:
- statusImages: ->
+ statusImages: () ->
@popupCloseAll()
view = Travis.StatusImagesView.create(toolsView: this)
Travis.View.currentPopupView = view
view.appendTo($('body'))
- event.stopPropagation()
+ return false
ReposEmptyView: Travis.View.extend
template: (->
@@ -116,14 +116,14 @@ Travis.reopen
menu: ->
@popupCloseAll()
$('#tools .menu').toggleClass('display')
- event.stopPropagation()
+ return false
regenerateKeyPopup: ->
if @get('canRegenerateKey')
@set('active', true)
@closeMenu()
- @popup(event)
- event.stopPropagation()
+ @popup('regenerate-key-popup')
+ return false
regenerateKey: ->
@popupCloseAll()
@@ -181,7 +181,7 @@ Travis.reopen
requeueJob: ->
if @get('canRequeueJob')
- @requeue @get('job')
+ @requeue @get('_job')
cancelBuild: ->
if @get('canCancelBuild')
@@ -198,8 +198,9 @@ Travis.reopen
removeLog: ->
+ @popupCloseAll()
if @get('canRemoveLog')
- job = @get('job') || @get('build.jobs.firstObject')
+ job = @get('_job') || @get('build.jobs.firstObject')
job.removeLog().then ->
Travis.flash(success: 'Log has been successfully removed.')
, (xhr) ->
@@ -213,7 +214,7 @@ Travis.reopen
cancelJob: ->
if @get('canCancelJob')
Travis.flash(notice: 'Job cancellation has been scheduled.')
- @get('job').cancel().then ->
+ @get('_job').cancel().then ->
Travis.flash(success: 'Job has been successfully canceled.')
, (xhr) ->
if xhr.status == 422
@@ -226,7 +227,13 @@ Travis.reopen
codeClimatePopup: ->
@popupCloseAll()
@popup('code-climate')
- event.stopPropagation() if event?
+ return false
+
+ removeLogPopup: ->
+ if @get('canRemoveLog')
+ @set('active', true)
+ @popup('remove-log-popup')
+ return false
hasPermission: (->
if permissions = @get('currentUser.permissions')
@@ -258,16 +265,18 @@ Travis.reopen
@get('jobIdForLog')
).property('jobIdForLog')
- jobIdForLog: (->
- @get('job.id') ||
- (@get('build.jobs.length') == 1 && @get('build.jobs').objectAt(0).get?('id'))
- ).property('job.id', 'build.jobs.firstObject.id', 'build.jobs.length')
-
- job: (->
+ _job: (->
if id = @get('jobIdForLog')
Travis.Job.find(id)
).property('jobIdForLog')
+ jobIdForLog: (->
+ job = @get('job.id')
+ unless job
+ if @get('build.jobs.length') == 1
+ job = @get('build.jobs').objectAt?(0).get?('id')
+ job
+ ).property('job.id', 'build.jobs.firstObject.id', 'build.jobs.length')
plainTextLogUrl: (->
if id = @get('jobIdForLog')
@@ -279,14 +288,14 @@ Travis.reopen
).property('jobIdForLog', 'job.log.token', 'build.jobs.firstObject.log.token')
canRemoveLog: (->
- @get('displayRemoveLog') && @get('hasPermission')
- ).property('displayRemoveLog', 'hasPermission')
+ @get('displayRemoveLog')
+ ).property('displayRemoveLog')
displayRemoveLog: (->
- #(@get('isJobTab') || (@get('isBuildTab') && @get('build.jobs.length') == 1)) &&
- # @get('build.jobs').objectAt(0).get?('canRemoveLog')
- false
- ).property('isJobTab', 'isBuildTab', 'build.jobs.length', 'job.canRemoveLog')
+ if job = @get('_job')
+ (@get('isJobTab') || (@get('isBuildTab') && @get('build.jobs.length') == 1)) &&
+ job.get('canRemoveLog') && @get('hasPermission')
+ ).property('isJobTab', 'isBuildTab', 'build.jobs.length', '_job.canRemoveLog', 'jobIdForLog', 'canRemoveLog', 'hasPermission')
canCancelBuild: (->
@get('displayCancelBuild') && @get('hasPermission')
diff --git a/assets/styles/app/popup.sass b/assets/styles/app/popup.sass
index 26934957..1d8c86ca 100644
--- a/assets/styles/app/popup.sass
+++ b/assets/styles/app/popup.sass
@@ -72,7 +72,8 @@
p:last-child
margin-top: 10px
-#regenerate-key
+#regenerate-key,
+#remove-log-popup
.cancel
text-decoration: underline
p
@@ -84,6 +85,8 @@
margin-bottom: 5px
a.button
font-size: 13px
+ strong
+ color: $red
#status-images, #regenerate-key
input
@@ -108,3 +111,4 @@
padding-left: 15px
img#code-climate-logo
margin-right: 50px
+