From 64cc6661ccc94f2db15d598e313d0d0b4b9ddba9 Mon Sep 17 00:00:00 2001 From: Stas Vilchik Date: Fri, 2 Oct 2015 10:18:07 +0200 Subject: [PATCH] SONAR-6556 clean up bulk deletion and provisioning stuff --- server/sonar-web/Gruntfile.coffee | 4 - .../js/apps/nav/settings/settings-nav.jsx | 7 +- .../src/main/js/apps/provisioning/app.js | 46 ------ .../js/apps/provisioning/bulk-delete-view.js | 30 ---- .../main/js/apps/provisioning/create-view.js | 29 ---- .../main/js/apps/provisioning/delete-view.js | 30 ---- .../main/js/apps/provisioning/form-view.js | 24 ---- .../main/js/apps/provisioning/header-view.js | 48 ------- .../src/main/js/apps/provisioning/layout.js | 15 -- .../js/apps/provisioning/list-footer-view.js | 34 ----- .../js/apps/provisioning/list-item-view.js | 51 ------- .../main/js/apps/provisioning/list-view.js | 10 -- .../src/main/js/apps/provisioning/project.js | 39 ------ .../src/main/js/apps/provisioning/projects.js | 49 ------- .../main/js/apps/provisioning/search-view.js | 101 -------------- .../templates/provisioning-bulk-delete.hbs | 13 -- .../templates/provisioning-delete.hbs | 13 -- .../templates/provisioning-form.hbs | 30 ---- .../templates/provisioning-header.hbs | 10 -- .../templates/provisioning-layout.hbs | 6 - .../templates/provisioning-list-footer.hbs | 6 - .../templates/provisioning-list-item.hbs | 16 --- .../templates/provisioning-search.hbs | 10 -- .../controllers/bulk_deletion_controller.rb | 124 ---------------- .../controllers/provisioning_controller.rb | 30 ---- .../_pending_deletions_screen.html.erb | 39 ------ .../app/views/bulk_deletion/ghosts.html.erb | 70 ---------- .../app/views/bulk_deletion/index.html.erb | 132 ------------------ .../bulk_deletion/pending_deletions.html.erb | 2 - .../app/views/provisioning/index.html.erb | 7 - 30 files changed, 2 insertions(+), 1023 deletions(-) delete mode 100644 server/sonar-web/src/main/js/apps/provisioning/app.js delete mode 100644 server/sonar-web/src/main/js/apps/provisioning/bulk-delete-view.js delete mode 100644 server/sonar-web/src/main/js/apps/provisioning/create-view.js delete mode 100644 server/sonar-web/src/main/js/apps/provisioning/delete-view.js delete mode 100644 server/sonar-web/src/main/js/apps/provisioning/form-view.js delete mode 100644 server/sonar-web/src/main/js/apps/provisioning/header-view.js delete mode 100644 server/sonar-web/src/main/js/apps/provisioning/layout.js delete mode 100644 server/sonar-web/src/main/js/apps/provisioning/list-footer-view.js delete mode 100644 server/sonar-web/src/main/js/apps/provisioning/list-item-view.js delete mode 100644 server/sonar-web/src/main/js/apps/provisioning/list-view.js delete mode 100644 server/sonar-web/src/main/js/apps/provisioning/project.js delete mode 100644 server/sonar-web/src/main/js/apps/provisioning/projects.js delete mode 100644 server/sonar-web/src/main/js/apps/provisioning/search-view.js delete mode 100644 server/sonar-web/src/main/js/apps/provisioning/templates/provisioning-bulk-delete.hbs delete mode 100644 server/sonar-web/src/main/js/apps/provisioning/templates/provisioning-delete.hbs delete mode 100644 server/sonar-web/src/main/js/apps/provisioning/templates/provisioning-form.hbs delete mode 100644 server/sonar-web/src/main/js/apps/provisioning/templates/provisioning-header.hbs delete mode 100644 server/sonar-web/src/main/js/apps/provisioning/templates/provisioning-layout.hbs delete mode 100644 server/sonar-web/src/main/js/apps/provisioning/templates/provisioning-list-footer.hbs delete mode 100644 server/sonar-web/src/main/js/apps/provisioning/templates/provisioning-list-item.hbs delete mode 100644 server/sonar-web/src/main/js/apps/provisioning/templates/provisioning-search.hbs delete mode 100644 server/sonar-web/src/main/webapp/WEB-INF/app/controllers/bulk_deletion_controller.rb delete mode 100644 server/sonar-web/src/main/webapp/WEB-INF/app/controllers/provisioning_controller.rb delete mode 100644 server/sonar-web/src/main/webapp/WEB-INF/app/views/bulk_deletion/_pending_deletions_screen.html.erb delete mode 100644 server/sonar-web/src/main/webapp/WEB-INF/app/views/bulk_deletion/ghosts.html.erb delete mode 100644 server/sonar-web/src/main/webapp/WEB-INF/app/views/bulk_deletion/index.html.erb delete mode 100644 server/sonar-web/src/main/webapp/WEB-INF/app/views/bulk_deletion/pending_deletions.html.erb delete mode 100644 server/sonar-web/src/main/webapp/WEB-INF/app/views/provisioning/index.html.erb diff --git a/server/sonar-web/Gruntfile.coffee b/server/sonar-web/Gruntfile.coffee index e87032768af..f18ddd4b0d4 100644 --- a/server/sonar-web/Gruntfile.coffee +++ b/server/sonar-web/Gruntfile.coffee @@ -158,7 +158,6 @@ module.exports = (grunt) -> 'build-app:permission-templates' 'build-app:projects' 'build-app:project-permissions' - 'build-app:provisioning' 'build-app:quality-gates' 'build-app:quality-profiles' 'build-app:source-viewer' @@ -229,9 +228,6 @@ module.exports = (grunt) -> '<%= BUILD_PATH %>/js/apps/groups/templates.js': [ '<%= SOURCE_PATH %>/js/apps/groups/templates/**/*.hbs' ] - '<%= BUILD_PATH %>/js/apps/provisioning/templates.js': [ - '<%= SOURCE_PATH %>/js/apps/provisioning/templates/**/*.hbs' - ] '<%= BUILD_PATH %>/js/apps/computation/templates.js': [ '<%= SOURCE_PATH %>/js/apps/computation/templates/**/*.hbs' ] diff --git a/server/sonar-web/src/main/js/apps/nav/settings/settings-nav.jsx b/server/sonar-web/src/main/js/apps/nav/settings/settings-nav.jsx index 66923b96cf7..b6f77e505fe 100644 --- a/server/sonar-web/src/main/js/apps/nav/settings/settings-nav.jsx +++ b/server/sonar-web/src/main/js/apps/nav/settings/settings-nav.jsx @@ -55,13 +55,10 @@ export default React.createClass({ {window.t('sidebar.projects')}  diff --git a/server/sonar-web/src/main/js/apps/provisioning/app.js b/server/sonar-web/src/main/js/apps/provisioning/app.js deleted file mode 100644 index 427179d6fec..00000000000 --- a/server/sonar-web/src/main/js/apps/provisioning/app.js +++ /dev/null @@ -1,46 +0,0 @@ -import Marionette from 'backbone.marionette'; -import Layout from './layout'; -import Projects from './projects'; -import HeaderView from './header-view'; -import SearchView from './search-view'; -import ListView from './list-view'; -import ListFooterView from './list-footer-view'; - -var App = new Marionette.Application(), - init = function (options) { - // Layout - this.layout = new Layout({ el: options.el }); - this.layout.render(); - - // Collection - this.projects = new Projects(); - - // Header View - this.headerView = new HeaderView({ collection: this.projects }); - this.layout.headerRegion.show(this.headerView); - - // Search View - this.searchView = new SearchView({ collection: this.projects }); - this.layout.searchRegion.show(this.searchView); - - // List View - this.listView = new ListView({ collection: this.projects }); - this.layout.listRegion.show(this.listView); - - // List Footer View - this.listFooterView = new ListFooterView({ collection: this.projects }); - this.layout.listFooterRegion.show(this.listFooterView); - - // Go! - this.projects.fetch(); - }; - -App.on('start', function (options) { - window.requestMessages().done(function () { - init.call(App, options); - }); -}); - -export default App; - - diff --git a/server/sonar-web/src/main/js/apps/provisioning/bulk-delete-view.js b/server/sonar-web/src/main/js/apps/provisioning/bulk-delete-view.js deleted file mode 100644 index 6e6abfd127e..00000000000 --- a/server/sonar-web/src/main/js/apps/provisioning/bulk-delete-view.js +++ /dev/null @@ -1,30 +0,0 @@ -import _ from 'underscore'; -import ModalForm from 'components/common/modal-form'; -import './templates'; - -export default ModalForm.extend({ - template: Templates['provisioning-bulk-delete'], - - onFormSubmit: function (e) { - this._super(e); - this.sendRequest(); - }, - - sendRequest: function () { - var that = this, - selected = _.pluck(this.collection.where({ selected: true }), 'id'); - return this.collection.bulkDelete(selected, { - statusCode: { - // do not show global error - 400: null - } - }).done(function () { - that.collection.refresh(); - that.destroy(); - }).fail(function (jqXHR) { - that.showErrors(jqXHR.responseJSON.errors, jqXHR.responseJSON.warnings); - }); - } -}); - - diff --git a/server/sonar-web/src/main/js/apps/provisioning/create-view.js b/server/sonar-web/src/main/js/apps/provisioning/create-view.js deleted file mode 100644 index 6c02f5a2281..00000000000 --- a/server/sonar-web/src/main/js/apps/provisioning/create-view.js +++ /dev/null @@ -1,29 +0,0 @@ -import Project from './project'; -import FormView from './form-view'; - -export default FormView.extend({ - - sendRequest: function () { - var that = this, - project = new Project({ - name: this.$('#create-project-name').val(), - branch: this.$('#create-project-branch').val(), - key: this.$('#create-project-key').val() - }); - this.disableForm(); - return project.save(null, { - statusCode: { - // do not show global error - 400: null - } - }).done(function () { - that.collection.refresh(); - that.destroy(); - }).fail(function (jqXHR) { - that.enableForm(); - that.showErrors([{ msg: jqXHR.responseJSON.err_msg }]); - }); - } -}); - - diff --git a/server/sonar-web/src/main/js/apps/provisioning/delete-view.js b/server/sonar-web/src/main/js/apps/provisioning/delete-view.js deleted file mode 100644 index d4176097d27..00000000000 --- a/server/sonar-web/src/main/js/apps/provisioning/delete-view.js +++ /dev/null @@ -1,30 +0,0 @@ -import ModalForm from 'components/common/modal-form'; -import './templates'; - -export default ModalForm.extend({ - template: Templates['provisioning-delete'], - - onFormSubmit: function (e) { - this._super(e); - this.sendRequest(); - }, - - sendRequest: function () { - var that = this, - collection = this.model.collection; - return this.model.destroy({ - wait: true, - statusCode: { - // do not show global error - 400: null - } - }).done(function () { - collection.refresh(); - that.destroy(); - }).fail(function (jqXHR) { - that.showErrors(jqXHR.responseJSON.errors, jqXHR.responseJSON.warnings); - }); - } -}); - - diff --git a/server/sonar-web/src/main/js/apps/provisioning/form-view.js b/server/sonar-web/src/main/js/apps/provisioning/form-view.js deleted file mode 100644 index 525be213f49..00000000000 --- a/server/sonar-web/src/main/js/apps/provisioning/form-view.js +++ /dev/null @@ -1,24 +0,0 @@ -import ModalForm from 'components/common/modal-form'; -import './templates'; - -export default ModalForm.extend({ - template: Templates['provisioning-form'], - - onRender: function () { - this._super(); - this.$('[data-toggle="tooltip"]').tooltip({ container: 'body', placement: 'bottom' }); - }, - - onDestroy: function () { - this._super(); - this.$('[data-toggle="tooltip"]').tooltip('destroy'); - }, - - onFormSubmit: function (e) { - this._super(e); - this.sendRequest(); - } - -}); - - diff --git a/server/sonar-web/src/main/js/apps/provisioning/header-view.js b/server/sonar-web/src/main/js/apps/provisioning/header-view.js deleted file mode 100644 index 8fd88483e9b..00000000000 --- a/server/sonar-web/src/main/js/apps/provisioning/header-view.js +++ /dev/null @@ -1,48 +0,0 @@ -import Marionette from 'backbone.marionette'; -import CreateView from './create-view'; -import BulkDeleteView from './bulk-delete-view'; -import './templates'; - -export default Marionette.ItemView.extend({ - template: Templates['provisioning-header'], - - collectionEvents: { - 'change:selected': 'toggleDeleteButton', - 'reset': 'toggleDeleteButton' - }, - - events: { - 'click #provisioning-create': 'onCreateClick', - 'click #provisioning-bulk-delete': 'onBulkDeleteClick' - }, - - onCreateClick: function (e) { - e.preventDefault(); - this.createProject(); - }, - - onBulkDeleteClick: function (e) { - e.preventDefault(); - this.bulkDelete(); - }, - - createProject: function () { - new CreateView({ - collection: this.collection - }).render(); - }, - - bulkDelete: function () { - new BulkDeleteView({ - collection: this.collection - }).render(); - }, - - toggleDeleteButton: function () { - var selectedCount = this.collection.where({ selected: true }).length, - someSelected = selectedCount > 0; - this.$('#provisioning-bulk-delete').prop('disabled', !someSelected); - } -}); - - diff --git a/server/sonar-web/src/main/js/apps/provisioning/layout.js b/server/sonar-web/src/main/js/apps/provisioning/layout.js deleted file mode 100644 index 60bf7f209ca..00000000000 --- a/server/sonar-web/src/main/js/apps/provisioning/layout.js +++ /dev/null @@ -1,15 +0,0 @@ -import Marionette from 'backbone.marionette'; -import './templates'; - -export default Marionette.LayoutView.extend({ - template: Templates['provisioning-layout'], - - regions: { - headerRegion: '#provisioning-header', - searchRegion: '#provisioning-search', - listRegion: '#provisioning-list', - listFooterRegion: '#provisioning-list-footer' - } -}); - - diff --git a/server/sonar-web/src/main/js/apps/provisioning/list-footer-view.js b/server/sonar-web/src/main/js/apps/provisioning/list-footer-view.js deleted file mode 100644 index 87fdbd793c9..00000000000 --- a/server/sonar-web/src/main/js/apps/provisioning/list-footer-view.js +++ /dev/null @@ -1,34 +0,0 @@ -import _ from 'underscore'; -import Marionette from 'backbone.marionette'; -import './templates'; - -export default Marionette.ItemView.extend({ - template: Templates['provisioning-list-footer'], - - collectionEvents: { - 'all': 'render' - }, - - events: { - 'click #provisioning-fetch-more': 'onMoreClick' - }, - - onMoreClick: function (e) { - e.preventDefault(); - this.fetchMore(); - }, - - fetchMore: function () { - this.collection.fetchMore(); - }, - - serializeData: function () { - return _.extend(this._super(), { - total: this.collection.total, - count: this.collection.length, - more: this.collection.hasMore() - }); - } -}); - - diff --git a/server/sonar-web/src/main/js/apps/provisioning/list-item-view.js b/server/sonar-web/src/main/js/apps/provisioning/list-item-view.js deleted file mode 100644 index 41959c7439d..00000000000 --- a/server/sonar-web/src/main/js/apps/provisioning/list-item-view.js +++ /dev/null @@ -1,51 +0,0 @@ -import Marionette from 'backbone.marionette'; -import DeleteView from './delete-view'; -import './templates'; - -export default Marionette.ItemView.extend({ - tagName: 'li', - className: 'panel panel-vertical', - template: Templates['provisioning-list-item'], - - modelEvents: { - 'change:selected': 'onSelectedChange' - }, - - events: { - 'click .js-toggle': 'onToggleClick', - 'click .js-project-delete': 'onDeleteClick' - }, - - onRender: function () { - this.$el.attr('data-id', this.model.id); - this.$('[data-toggle="tooltip"]').tooltip({ container: 'body', placement: 'bottom' }); - }, - - onDestroy: function () { - this.$('[data-toggle="tooltip"]').tooltip('destroy'); - }, - - onToggleClick: function (e) { - e.preventDefault(); - this.toggle(); - }, - - onDeleteClick: function (e) { - e.preventDefault(); - this.deleteProject(); - }, - - onSelectedChange: function () { - this.$('.js-toggle').toggleClass('icon-checkbox-checked', this.model.get('selected')); - }, - - toggle: function () { - this.model.toggle(); - }, - - deleteProject: function () { - new DeleteView({ model: this.model }).render(); - } -}); - - diff --git a/server/sonar-web/src/main/js/apps/provisioning/list-view.js b/server/sonar-web/src/main/js/apps/provisioning/list-view.js deleted file mode 100644 index 695bf2ac034..00000000000 --- a/server/sonar-web/src/main/js/apps/provisioning/list-view.js +++ /dev/null @@ -1,10 +0,0 @@ -import Marionette from 'backbone.marionette'; -import ListItemView from './list-item-view'; -import './templates'; - -export default Marionette.CollectionView.extend({ - tagName: 'ul', - childView: ListItemView -}); - - diff --git a/server/sonar-web/src/main/js/apps/provisioning/project.js b/server/sonar-web/src/main/js/apps/provisioning/project.js deleted file mode 100644 index b709f02695b..00000000000 --- a/server/sonar-web/src/main/js/apps/provisioning/project.js +++ /dev/null @@ -1,39 +0,0 @@ -import _ from 'underscore'; -import Backbone from 'backbone'; - -export default Backbone.Model.extend({ - idAttribute: 'uuid', - - defaults: { - selected: false - }, - - urlRoot: function () { - return baseUrl + '/api/projects'; - }, - - sync: function (method, model, options) { - var opts = options || {}; - if (method === 'create') { - _.defaults(opts, { - url: this.urlRoot() + '/create', - type: 'POST', - data: _.pick(model.toJSON(), 'key', 'name', 'branch') - }); - } - if (method === 'delete') { - _.defaults(opts, { - url: this.urlRoot() + '/bulk_delete', - type: 'POST', - data: { ids: this.id } - }); - } - return Backbone.ajax(opts); - }, - - toggle: function () { - this.set({ selected: !this.get('selected') }); - } -}); - - diff --git a/server/sonar-web/src/main/js/apps/provisioning/projects.js b/server/sonar-web/src/main/js/apps/provisioning/projects.js deleted file mode 100644 index 8e31d6a2a04..00000000000 --- a/server/sonar-web/src/main/js/apps/provisioning/projects.js +++ /dev/null @@ -1,49 +0,0 @@ -import _ from 'underscore'; -import Backbone from 'backbone'; -import Project from './project'; - -export default Backbone.Collection.extend({ - model: Project, - - url: function () { - return baseUrl + '/api/projects/provisioned'; - }, - - parse: function (r) { - this.total = r.total; - this.p = r.p; - this.ps = r.ps; - return r.projects; - }, - - fetch: function (options) { - var d = (options && options.data) || {}; - this.q = d.q; - return this._super(options); - }, - - fetchMore: function () { - var p = this.p + 1; - return this.fetch({ add: true, remove: false, data: { p: p, ps: this.ps, q: this.q } }); - }, - - refresh: function () { - return this.fetch({ reset: true, data: { q: this.q } }); - }, - - hasMore: function () { - return this.total > this.p * this.ps; - }, - - bulkDelete: function (ids, options) { - var opts = _.extend({}, options, { - type: 'POST', - url: baseUrl + '/api/projects/bulk_delete', - data: { ids: ids.join() } - }); - return Backbone.ajax(opts); - } - -}); - - diff --git a/server/sonar-web/src/main/js/apps/provisioning/search-view.js b/server/sonar-web/src/main/js/apps/provisioning/search-view.js deleted file mode 100644 index 2b926a05dbf..00000000000 --- a/server/sonar-web/src/main/js/apps/provisioning/search-view.js +++ /dev/null @@ -1,101 +0,0 @@ -import _ from 'underscore'; -import Marionette from 'backbone.marionette'; -import './templates'; - -export default Marionette.ItemView.extend({ - template: Templates['provisioning-search'], - - collectionEvents: { - 'change:selected': 'onSelectedChange', - 'reset': 'onSelectedChange' - }, - - events: { - 'click .js-toggle-selection': 'onToggleSelectionClick', - 'submit #provisioning-search-form': 'onFormSubmit', - 'search #provisioning-search-query': 'debouncedOnKeyUp', - 'keyup #provisioning-search-query': 'debouncedOnKeyUp' - }, - - initialize: function () { - this._bufferedValue = null; - this.debouncedOnKeyUp = _.debounce(this.onKeyUp, 400); - }, - - onRender: function () { - this.delegateEvents(); - }, - - onFormSubmit: function (e) { - e.preventDefault(); - this.debouncedOnKeyUp(); - }, - - onKeyUp: function () { - var q = this.getQuery(); - if (q === this._bufferedValue) { - return; - } - this._bufferedValue = this.getQuery(); - if (this.searchRequest != null) { - this.searchRequest.abort(); - } - this.searchRequest = this.search(q); - }, - - onSelectedChange: function () { - var projectsCount = this.collection.length, - selectedCount = this.collection.where({ selected: true }).length, - allSelected = projectsCount > 0 && projectsCount === selectedCount, - someSelected = !allSelected && selectedCount > 0; - this.$('.js-toggle-selection') - .toggleClass('icon-checkbox-checked', allSelected || someSelected) - .toggleClass('icon-checkbox-single', someSelected); - }, - - onToggleSelectionClick: function (e) { - e.preventDefault(); - this.toggleSelection(); - }, - - toggleSelection: function () { - var selectedCount = this.collection.where({ selected: true }).length, - someSelected = selectedCount > 0; - return someSelected ? this.selectNone() : this.selectAll(); - }, - - selectNone: function () { - this.collection.where({ selected: true }).forEach(function (project) { - project.set({ selected: false }); - }); - }, - - selectAll: function () { - this.collection.forEach(function (project) { - project.set({ selected: true }); - }); - }, - - getQuery: function () { - return this.$('#provisioning-search-query').val(); - }, - - search: function (q) { - this.selectNone(); - return this.collection.fetch({ reset: true, data: { q: q } }); - }, - - serializeData: function () { - var projectsCount = this.collection.length, - selectedCount = this.collection.where({ selected: true }).length, - allSelected = projectsCount > 0 && projectsCount === selectedCount, - someSelected = !allSelected && selectedCount > 0; - return _.extend(this._super(), { - selectedCount: selectedCount, - allSelected: allSelected, - someSelected: someSelected - }); - } -}); - - diff --git a/server/sonar-web/src/main/js/apps/provisioning/templates/provisioning-bulk-delete.hbs b/server/sonar-web/src/main/js/apps/provisioning/templates/provisioning-bulk-delete.hbs deleted file mode 100644 index 571faee78cf..00000000000 --- a/server/sonar-web/src/main/js/apps/provisioning/templates/provisioning-bulk-delete.hbs +++ /dev/null @@ -1,13 +0,0 @@ -
- - - -
diff --git a/server/sonar-web/src/main/js/apps/provisioning/templates/provisioning-delete.hbs b/server/sonar-web/src/main/js/apps/provisioning/templates/provisioning-delete.hbs deleted file mode 100644 index c1d2a469848..00000000000 --- a/server/sonar-web/src/main/js/apps/provisioning/templates/provisioning-delete.hbs +++ /dev/null @@ -1,13 +0,0 @@ -
- - - -
diff --git a/server/sonar-web/src/main/js/apps/provisioning/templates/provisioning-form.hbs b/server/sonar-web/src/main/js/apps/provisioning/templates/provisioning-form.hbs deleted file mode 100644 index e931b66efd7..00000000000 --- a/server/sonar-web/src/main/js/apps/provisioning/templates/provisioning-form.hbs +++ /dev/null @@ -1,30 +0,0 @@ -
- - - -
diff --git a/server/sonar-web/src/main/js/apps/provisioning/templates/provisioning-header.hbs b/server/sonar-web/src/main/js/apps/provisioning/templates/provisioning-header.hbs deleted file mode 100644 index bb4986cd9c0..00000000000 --- a/server/sonar-web/src/main/js/apps/provisioning/templates/provisioning-header.hbs +++ /dev/null @@ -1,10 +0,0 @@ - diff --git a/server/sonar-web/src/main/js/apps/provisioning/templates/provisioning-layout.hbs b/server/sonar-web/src/main/js/apps/provisioning/templates/provisioning-layout.hbs deleted file mode 100644 index 0f07a62acc6..00000000000 --- a/server/sonar-web/src/main/js/apps/provisioning/templates/provisioning-layout.hbs +++ /dev/null @@ -1,6 +0,0 @@ -
-
- -
- -
diff --git a/server/sonar-web/src/main/js/apps/provisioning/templates/provisioning-list-footer.hbs b/server/sonar-web/src/main/js/apps/provisioning/templates/provisioning-list-footer.hbs deleted file mode 100644 index 8d00837153f..00000000000 --- a/server/sonar-web/src/main/js/apps/provisioning/templates/provisioning-list-footer.hbs +++ /dev/null @@ -1,6 +0,0 @@ - diff --git a/server/sonar-web/src/main/js/apps/provisioning/templates/provisioning-list-item.hbs b/server/sonar-web/src/main/js/apps/provisioning/templates/provisioning-list-item.hbs deleted file mode 100644 index 9c852f2f0ff..00000000000 --- a/server/sonar-web/src/main/js/apps/provisioning/templates/provisioning-list-item.hbs +++ /dev/null @@ -1,16 +0,0 @@ -
- -
- -
- -
- -
- {{name}} - {{key}} -
- -
- Created at {{dt creationDate}} -
diff --git a/server/sonar-web/src/main/js/apps/provisioning/templates/provisioning-search.hbs b/server/sonar-web/src/main/js/apps/provisioning/templates/provisioning-search.hbs deleted file mode 100644 index d22c7c92f6d..00000000000 --- a/server/sonar-web/src/main/js/apps/provisioning/templates/provisioning-search.hbs +++ /dev/null @@ -1,10 +0,0 @@ -
- - - - - -
diff --git a/server/sonar-web/src/main/webapp/WEB-INF/app/controllers/bulk_deletion_controller.rb b/server/sonar-web/src/main/webapp/WEB-INF/app/controllers/bulk_deletion_controller.rb deleted file mode 100644 index 5eb44dd88e2..00000000000 --- a/server/sonar-web/src/main/webapp/WEB-INF/app/controllers/bulk_deletion_controller.rb +++ /dev/null @@ -1,124 +0,0 @@ -# -# SonarQube, open source software quality management tool. -# Copyright (C) 2008-2014 SonarSource -# mailto:contact AT sonarsource DOT com -# -# SonarQube is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 3 of the License, or (at your option) any later version. -# -# SonarQube is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public License -# along with this program; if not, write to the Free Software Foundation, -# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -# -class BulkDeletionController < ApplicationController - - SECTION=Navigation::SECTION_CONFIGURATION - - before_filter :admin_required - - def index - if pending_mass_deletion? - render :template => 'bulk_deletion/pending_deletions' - return - end - - init_tab - params['pageSize'] = 20 - params['qualifiers'] = @selected_tab - @query_result = Internal.component_api.find(params) - end - - def ghosts - if pending_mass_deletion? - render :template => 'bulk_deletion/pending_deletions' - return - end - - @tabs = deletable_qualifiers - - params['pageSize'] = -1 - params['qualifiers'] = @tabs - @query_result = Internal.component_api.findGhostsProjects(params) - - @ghosts = @query_result.components - - @ghosts_by_qualifier = {} - @ghosts.each do |p| - qualifier = p.qualifier - if @ghosts_by_qualifier[qualifier] - @ghosts_by_qualifier[qualifier] << p - else - @ghosts_by_qualifier[qualifier] = [p] - end - end - end - - def delete_resources - verify_post_request - - if params[:select_all] && params[:select_all] == 'true' - init_tab - # Load all matching components to delete when select_all params is present - params['pageSize'] = -1 - params['qualifiers'] = @selected_tab - query_result = Internal.component_api.find(params) - resource_to_delete = query_result.components.map {|component| component.id} - else - resource_to_delete = params[:resources] || [] - # Used by the ghost deletion - resource_to_delete = params[:all_resources].split(',') if params[:all_resources] && !params[:all_resources].blank? - end - - # Ask the resource deletion manager to start the migration - # => this is an asynchronous AJAX call - ResourceDeletionManager.instance.delete_resources(resource_to_delete) - - redirect_to :action => :pending_deletions - end - - def pending_deletions - deletion_manager = ResourceDeletionManager.instance - - if deletion_manager.currently_deleting_resources? || - (!deletion_manager.currently_deleting_resources? && deletion_manager.deletion_failures_occured?) - # display the same page again and again - # => implicit render "pending_deletions.html.erb" - else - redirect_to :action => 'index', :qualifiers => params[:qualifiers] - end - end - - def dismiss_message - # It is important to reinit the ResourceDeletionManager so that the deletion screens can be available again - ResourceDeletionManager.instance.reinit - - redirect_to :action => 'index', :qualifiers => params[:qualifiers] - end - - - private - - def init_tab - @tabs = deletable_qualifiers - @selected_tab = params[:qualifiers] - @selected_tab = 'TRK' unless @tabs.include?(@selected_tab) - end - - # Tells if a mass deletion is happening or if it has finished with errors - def pending_mass_deletion? - deletion_manager = ResourceDeletionManager.instance - deletion_manager.currently_deleting_resources? || (!deletion_manager.currently_deleting_resources? && deletion_manager.deletion_failures_occured?) - end - - def deletable_qualifiers - Java::OrgSonarServerUi::JRubyFacade.getInstance().getQualifiersWithProperty('deletable') - end - -end diff --git a/server/sonar-web/src/main/webapp/WEB-INF/app/controllers/provisioning_controller.rb b/server/sonar-web/src/main/webapp/WEB-INF/app/controllers/provisioning_controller.rb deleted file mode 100644 index e0ea0fdaa1d..00000000000 --- a/server/sonar-web/src/main/webapp/WEB-INF/app/controllers/provisioning_controller.rb +++ /dev/null @@ -1,30 +0,0 @@ -# -# SonarQube, open source software quality management tool. -# Copyright (C) 2008-2014 SonarSource -# mailto:contact AT sonarsource DOT com -# -# SonarQube is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 3 of the License, or (at your option) any later version. -# -# SonarQube is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public License -# along with this program; if not, write to the Free Software Foundation, -# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -# -class ProvisioningController < ApplicationController - - before_filter :admin_required - - SECTION=Navigation::SECTION_CONFIGURATION - - def index - access_denied unless has_role?("provisioning") - end - -end diff --git a/server/sonar-web/src/main/webapp/WEB-INF/app/views/bulk_deletion/_pending_deletions_screen.html.erb b/server/sonar-web/src/main/webapp/WEB-INF/app/views/bulk_deletion/_pending_deletions_screen.html.erb deleted file mode 100644 index ab311285ab1..00000000000 --- a/server/sonar-web/src/main/webapp/WEB-INF/app/views/bulk_deletion/_pending_deletions_screen.html.erb +++ /dev/null @@ -1,39 +0,0 @@ -<% - deletion_manager = ResourceDeletionManager.instance - pending_deletions = deletion_manager.currently_deleting_resources? - failed_deletions = deletion_manager.failed_deletions - start_time = deletion_manager.deletion_start_time -%> - -<% if pending_deletions %> - -<% end %> - -

<%= message('bulk_deletion.page') -%>

- -
- <% if pending_deletions %> - <%= image_tag 'loading.gif' -%> - <% end %> - - <%= deletion_manager.message -%> -
-
- <%= message('bulk_deletion.started_since_x', :params => distance_of_time_in_words(start_time, Time.now) ) -%> (<%= l start_time -%>) -
-
- - <% if !pending_deletions && !failed_deletions.empty? %> -

- <%= message('bulk_deletion.following_deletions_failed') -%> -

-

-

- <%= message('bulk_deletion.hide_message') -%> -

- <% end %> -
\ No newline at end of file diff --git a/server/sonar-web/src/main/webapp/WEB-INF/app/views/bulk_deletion/ghosts.html.erb b/server/sonar-web/src/main/webapp/WEB-INF/app/views/bulk_deletion/ghosts.html.erb deleted file mode 100644 index 095f736e675..00000000000 --- a/server/sonar-web/src/main/webapp/WEB-INF/app/views/bulk_deletion/ghosts.html.erb +++ /dev/null @@ -1,70 +0,0 @@ -
- - - - -
- -

- <%= message('bulk_deletion.ghosts.description') -%> -

- - <% unless @ghosts.size > 0 %> - - <%= message('bulk_deletion.no_ghosts') -%> - - <% else %> - -

- <%= message('bulk_deletion.following_ghosts_can_be_deleted') -%> -

- - - <% - @tabs.each do |qualifier| - ghosts = @ghosts_by_qualifier[qualifier] - if ghosts - %> - - -
- <%= message('qualifiers.' + qualifier) -%> : - -
    - <% - ghosts.sort { |x, y| x.name <=> y.name }.each do |resource| - %> -
  • <%= h resource.name -%> ( <%= h resource.key -%> )
  • - <% - end - %> -
- <% - end - end - %> -
- -

-

- - -
-

- - <% end %> - -
-
diff --git a/server/sonar-web/src/main/webapp/WEB-INF/app/views/bulk_deletion/index.html.erb b/server/sonar-web/src/main/webapp/WEB-INF/app/views/bulk_deletion/index.html.erb deleted file mode 100644 index a105ab7609d..00000000000 --- a/server/sonar-web/src/main/webapp/WEB-INF/app/views/bulk_deletion/index.html.erb +++ /dev/null @@ -1,132 +0,0 @@ -
- - - - -
- - <% - found_resources_count = @query_result.paging.total - found_resources_ids = @query_result.components.map {|r| r.id.to_s}.join(',') - %> - - <% form_tag( {:action => 'index'}, :method => :get ) do %> - <%= message('bulk_deletion.resource_name_filter_by_name') -%> - - <%= submit_tag message('bulk_deletion.filter'), :id => 'filter_resources' %> - <% end %> - - <% if @query_result.components.empty? %> -
- <%= message('no_results') -%> - <% else %> - -
- - - - - - - - - - - - - <% @query_result.components.each_with_index do |resource, index| %> - - - - - - - <% end %> - - - - - <%= paginate_java(@query_result.paging, :colspan => 3, :id => 'projects-bulk-deletion-foot', :include_loading_icon => true) { |label, page_id| - link_to(label, params.merge({:pageIndex => page_id})) - } - %> -
- « <%= message('bulk_deletion.select_all') -%> - <% if found_resources_count - @query_result.components.size > 0 %> - - <% end %> -
- - - <%= h resource.name -%> - - <%= h resource.key -%>
- -
-
- - - - <% end %> - -
-
diff --git a/server/sonar-web/src/main/webapp/WEB-INF/app/views/bulk_deletion/pending_deletions.html.erb b/server/sonar-web/src/main/webapp/WEB-INF/app/views/bulk_deletion/pending_deletions.html.erb deleted file mode 100644 index 505c243e48a..00000000000 --- a/server/sonar-web/src/main/webapp/WEB-INF/app/views/bulk_deletion/pending_deletions.html.erb +++ /dev/null @@ -1,2 +0,0 @@ -<%= render :partial => 'pending_deletions_screen', - :locals => {:url_after_dismiss => url_for(:action => 'dismiss_message')} -%> \ No newline at end of file diff --git a/server/sonar-web/src/main/webapp/WEB-INF/app/views/provisioning/index.html.erb b/server/sonar-web/src/main/webapp/WEB-INF/app/views/provisioning/index.html.erb deleted file mode 100644 index 1dba1c73ebe..00000000000 --- a/server/sonar-web/src/main/webapp/WEB-INF/app/views/provisioning/index.html.erb +++ /dev/null @@ -1,7 +0,0 @@ -<% content_for :extra_script do %> - -<% end %> -- 2.39.5