123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252 |
- "use strict";
- /**
- * Licensed Materials - Property of IBM
- * IBM Cognos Products: Cognos Analytics
- * Copyright IBM Corp. 2015, 2018
- * US Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
- */
- define(['underscore', 'doT', 'q', 'bi/commons/utils/BidiUtil', 'bi/commons/ui/AccessibleView', 'bi/admin/common/ui/MagicWand', 'bi/admin/nls/StringResource', 'bi/admin/common/utils/AJAXUtils', 'ba-react-admin/ba-react-admin.min'], function (_, doT, Q, BidiUtil, ContentView, MagicWand, StringResource, AJAXUtils, AdminReact) {
- //NOSONAR: needed for amd
- 'use strict'; //NOSONAR: meant to be strict
- var ConfirmDeleteContentView = ContentView.extend({
- /**
- @paran options.el {node} - container dom node
- **/
- init: function init(options) {
- ConfirmDeleteContentView.inherited('init', this, arguments);
- _.extend(this, options);
- },
- render: function render() {
- this.$entryHeader.attr("tabindex", "-1");
- var deleteMsg = !this.deleteUserProfile ? StringResource.get('confirmDeleteMessage') : StringResource.get('confirmDeleteUserProfileMessage');
- var sHtml = $('<div id="confirmDeleteView"><div class="messageBox">' + deleteMsg + '</div></div>');
- this.$el.attr("tabindex", "-1");
- this.$el.append(sHtml);
- if (this.showCheckbox) {
- var $confirmCheckbox = this._createCheckbox('confirmDeleteCheckbox', StringResource.get('deleteUserContent'), true);
- this.$el.find('#confirmDeleteView').append($confirmCheckbox);
- MagicWand.checkBox(this.$el);
- }
- },
- setFocus: function setFocus() {
- this.$el.closest("*[role='dialog']").find(".dialogButton.primary").focus();
- },
- postCreateRender: function postCreateRender() {
- this.$el.closest("*[role='dialog']").attr("aria-describedby", "confirmDeleteView");
- },
- //Called by the dialog when it asks the view for the button spec
- getButtonSpec: function getButtonSpec() {
- return [{
- 'text': StringResource.get('ok'),
- 'handler': this._confirmDelete.bind(this),
- 'type': 'primary'
- }, 'cancel'];
- },
- /*
- * Temporarily using the content_apps objects api to handle namespaceFolders,
- * presently the admin api does not handle them, and needs to be updated, along
- * with all calls to namespaceFolders in the new release
- */
- _remove: function _remove(type, id) {
- var deleteURL;
- switch (type) {
- case 'group':
- deleteURL = AJAXUtils.getPath('deleteGroup', id);
- break;
- case 'namespaceFolder':
- deleteURL = AJAXUtils.getPath('deleteNamespaceFolder', id);
- break;
- case 'role':
- deleteURL = AJAXUtils.getPath('deleteRole', id);
- break;
- default:
- deleteURL = "";
- break;
- }
- var options = {
- method: 'DELETE',
- contentType: 'application/json; charset=utf-8',
- dataType: 'json',
- url: deleteURL
- };
- return this.glassContext.services.ajax.ajax(options);
- },
- _removeUser: function _removeUser(id) {
- var deleteURL;
- if (!this.deleteUserProfile) {
- deleteURL = AJAXUtils.getPath('deleteUser', id);
- } else {
- deleteURL = AJAXUtils.getPath('deleteUserProfile', id);
- }
- return this.glassContext.services.fetch.delete(deleteURL);
- },
- _confirmDelete: function _confirmDelete() {
- this.dialog.hide();
- var self = this;
- var selectedNum = this.accountObj.length;
- if (selectedNum > 1) {
- var aPromises = [];
- _.each(this.accountObj, function (item) {
- var innerDeferred = Q.defer();
- switch (item.type) {
- case 'account':
- var currentSigninUser = _.find(self.accountExplorer.authAccounts, function (account) {
- return account.id === item.id;
- });
- if (!currentSigninUser) {
- this._removeUser(item.id).done(function (data) {
- innerDeferred.resolve(data);
- }, function (err) {
- innerDeferred.reject(err);
- });
- } else {
- selectedNum = selectedNum - 1;
- self.glassContext.appController.showToast(StringResource.get('cannotDeleteSignOnUserMsg'), {
- type: 'error'
- });
- innerDeferred.resolve();
- }
- break;
- case 'group':
- case 'role':
- case 'namespaceFolder':
- this._remove(item.type, item.id).done(function (data) {
- innerDeferred.resolve(data);
- }, function (err) {
- innerDeferred.reject(err);
- });
- break;
- default:
- innerDeferred.reject();
- break;
- }
- aPromises.push(innerDeferred.promise);
- }.bind(this));
- Q.all(aPromises).then(function (results) {
- var sText = StringResource.get('multiDeleteMsg', {
- 'num': selectedNum
- });
- self.glassContext.appController.showToast(sText, {
- type: 'success'
- });
- self.accountAdaptor.sortChanged = true;
- self.listView.reload(false);
- return deferred.resolve(results);
- }.bind(this), function () {
- self.accountAdaptor.sortChanged = true;
- self.listView.reload(false);
- });
- } else {
- var sText = '';
- var typeToToastMessage = {
- group: StringResource.get('groupToastDeleteMsg', {
- 'name': BidiUtil.enforceTextDirection(self.accountObj[0].defaultName)
- }),
- role: StringResource.get('roleToastDeleteMsg', {
- 'name': BidiUtil.enforceTextDirection(self.accountObj[0].defaultName)
- }),
- namespaceFolder: StringResource.get('folderToastDeleteMsg', {
- 'name': BidiUtil.enforceTextDirection(self.accountObj[0].defaultName)
- })
- };
- switch (self.accountObj[0].type) {
- case 'account':
- var currentSigninUser = _.find(self.accountExplorer.authAccounts, function (account) {
- return account.id === self.accountObj[0].id;
- });
- if (!currentSigninUser) {
- this._removeUser(self.accountObj[0].id).done(function () {
- var deleteToastMsgKey = !this.deleteUserProfile ? 'userToastDeleteMsg' : 'userProfileToastDeleteMsg';
- sText = StringResource.get(deleteToastMsgKey, {
- 'name': BidiUtil.enforceTextDirection(self.accountObj[0].defaultName)
- });
- self.glassContext.appController.showToast(sText, {
- type: 'success'
- });
- self._reloadListView();
- }.bind(this), function () {
- if (!self.accountExplorer.pagingEnabled) {
- self.accountAdaptor.sortChanged = true;
- self.listView.reload(false);
- }
- });
- } else {
- self.glassContext.appController.showToast(StringResource.get('cannotDeleteSignOnUserMsg'), {
- type: 'error'
- });
- }
- break;
- case 'group':
- case 'role':
- case 'namespaceFolder':
- default:
- sText = typeToToastMessage[self.accountObj[0].type];
- this._remove(self.accountObj[0].type, self.accountObj[0].id).done(function () {
- self.glassContext.appController.showToast(sText, {
- type: 'success'
- });
- self._reloadListView();
- }, function () {
- if (!self.accountExplorer.pagingEnabled) {
- self.accountAdaptor.sortChanged = true;
- self.listView.reload(false);
- }
- });
- break;
- }
- }
- },
- _reloadListView: function _reloadListView() {
- if (this.accountExplorer.pagingEnabled) {
- this.accountAdaptor.sortChanged = false;
- AdminReact.PaginationHelper.reloadListViewinPagingContext(this.glassContext, this.accountExplorer, this.listView, this.listAdaptor);
- } else {
- this.accountAdaptor.sortChanged = true;
- this.listView.reload(false);
- }
- },
- _createCheckbox: function _createCheckbox(id, text, checked) {
- var $item = $('<div class="bi-admin-checkbox"></div>');
- $item.attr('id', id);
- var $checkBox = $('<input type="checkbox"></input>');
- $checkBox.prop('checked', checked);
- var $label = $('<span/>');
- $label.text(text);
- $item.append($checkBox);
- $item.append($label);
- return $item;
- }
- });
- return ConfirmDeleteContentView;
- });
|