diff options
author | Stas Vilchik <vilchiks@gmail.com> | 2015-10-02 10:18:07 +0200 |
---|---|---|
committer | Stas Vilchik <vilchiks@gmail.com> | 2015-10-02 10:18:07 +0200 |
commit | 64cc6661ccc94f2db15d598e313d0d0b4b9ddba9 (patch) | |
tree | 5c33dc174a0d6258640b1af937775cca18e3f3ea /server/sonar-web/src/main/js | |
parent | 3aa4e0789f603f3c579a5f0184fa024afd3792fa (diff) | |
download | sonarqube-64cc6661ccc94f2db15d598e313d0d0b4b9ddba9.tar.gz sonarqube-64cc6661ccc94f2db15d598e313d0d0b4b9ddba9.zip |
SONAR-6556 clean up bulk deletion and provisioning stuff
Diffstat (limited to 'server/sonar-web/src/main/js')
22 files changed, 2 insertions, 615 deletions
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')} <i className="icon-dropdown"></i> </a> <ul className="dropdown-menu"> - {this.renderNewLink('/projects', 'Management')} - {this.renderNewLink('/background_tasks', 'Background Tasks')} + {this.renderLink('/projects', 'Management')} + {this.renderLink('/background_tasks', 'Background Tasks')} <li className="divider"/> - {this.state.showProvisioning ? this.renderLink('/provisioning', window.t('provisioning.page')) : null} - {this.renderLink('/bulk_deletion', window.t('bulk_deletion.page'))} {this.renderLink('/computation', window.t('analysis_reports.page'))} - </ul> </li> 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 @@ -<form id="bulk-delete-projects-form"> - <div class="modal-head"> - <h2>Delete Projects</h2> - </div> - <div class="modal-body"> - <div class="js-modal-messages"></div> - Are you sure you want to delete selected projects? - </div> - <div class="modal-foot"> - <button id="bulk-delete-projects-submit" class="button-red">Delete</button> - <a href="#" class="js-modal-close" id="bulk-delete-projects-cancel">Cancel</a> - </div> -</form> 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 @@ -<form id="delete-project-form"> - <div class="modal-head"> - <h2>Delete Project</h2> - </div> - <div class="modal-body"> - <div class="js-modal-messages"></div> - Are you sure you want to delete project "{{name}}"? - </div> - <div class="modal-foot"> - <button id="delete-project-submit" class="button-red">Delete</button> - <a href="#" class="js-modal-close" id="delete-project-cancel">Cancel</a> - </div> -</form> 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 @@ -<form id="create-project-form" autocomplete="off"> - <div class="modal-head"> - <h2>Create Project</h2> - </div> - <div class="modal-body"> - <div class="js-modal-messages"></div> - <div class="modal-field"> - <label for="create-project-name">Name<em class="mandatory">*</em></label> - {{! keep this fake field to hack browser autofill }} - <input id="create-project-name-fake" name="name-fake" type="text" class="hidden"> - <input id="create-project-name" name="name" type="text" size="50" maxlength="200" required> - </div> - <div class="modal-field"> - <label for="create-project-branch">Branch</label> - {{! keep this fake field to hack browser autofill }} - <input id="create-project-branch-fake" name="branch-fake" type="text" class="hidden"> - <input id="create-project-branch" name="branch" type="text" size="50" maxlength="200"> - </div> - <div class="modal-field"> - <label for="create-project-key">Key<em class="mandatory">*</em></label> - {{! keep this fake field to hack browser autofill }} - <input id="create-project-key-fake" name="key-fake" type="text" class="hidden"> - <input id="create-project-key" name="key" type="text" size="50" maxlength="50" required> - </div> - </div> - <div class="modal-foot"> - <button id="create-project-submit">Create</button> - <a href="#" class="js-modal-close" id="create-project-cancel">Cancel</a> - </div> -</form> 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 @@ -<header class="page-header"> - <h1 class="page-title">{{t 'provisioning.page'}}</h1> - <div class="page-actions"> - <div class="button-group"> - <button id="provisioning-create">Create Project</button> - <button class="button-red" id="provisioning-bulk-delete" disabled>Delete Projects</button> - </div> - </div> - <p class="page-description">{{t 'provisioning.page.description'}}</p> -</header> 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 @@ -<div class="page"> - <div id="provisioning-header"></div> - <div id="provisioning-search"></div> - <div id="provisioning-list"></div> - <div id="provisioning-list-footer"></div> -</div> 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 @@ -<footer class="spacer-top note text-center"> - {{count}}/{{total}} shown - {{#if more}} - <a id="provisioning-fetch-more" class="spacer-left" href="#">show more</a> - {{/if}} -</footer> 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 @@ -<div class="pull-right big-spacer-left nowrap"> - <a class="js-project-delete icon-delete" title="Delete" data-toggle="tooltip" href="#"></a> -</div> - -<div class="pull-left big-spacer-right"> - <a class="js-toggle icon-checkbox {{#if selected}}icon-checkbox-checked{{/if}}" href="#"></a> -</div> - -<div class="display-inline-block text-top width-30"> - <a class="js-project-name" href="{{dashboardUrl key}}">{{name}}</a> - <span class="js-project-key note little-spacer-left">{{key}}</span> -</div> - -<div class="display-inline-block text-top width-30"> - Created at {{dt creationDate}} -</div> 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 @@ -<div class="panel panel-vertical bordered-bottom spacer-bottom"> - <span class="big-spacer-right text-middle"> - <a class="js-toggle-selection icon-checkbox {{#if allSelected}}icon-checkbox-checked{{/if}} {{#if someSelected}}icon-checkbox-checked icon-checkbox-single{{/if}}" href="#"></a> - </span> - - <form id="provisioning-search-form" class="search-box display-inline-block text-middle"> - <button id="provisioning-search-submit" class="search-box-submit button-clean"><i class="icon-search"></i></button> - <input id="provisioning-search-query" class="search-box-input" type="search" name="q" placeholder="Search" maxlength="100"> - </form> -</div> |