import _ from 'lodash'; import {gettext} from 'core/utils'; ArchivedItemKill.$inject = ['authoring', 'api', 'notify', 'content']; export function ArchivedItemKill(authoring, api, notify, content) { return { templateUrl: 'scripts/apps/archive/views/archived-kill.html', scope: { item: '=', action: '=', }, link: function(scope, elem, attr) { scope._editable = true; var itemToDelete = {_id: scope.item._id, _etag: scope.item._etag}; api.remove(itemToDelete, {}, 'archived').then( (response) => { var fields = _.union(_.keys(authoring.getContentFieldDefaults()), ['_id', 'versioncreated']); let itemForTemplate: any = {template_name: scope.action, item: _.pick(scope.item, fields)}; api.save('content_templates_apply', {}, itemForTemplate, {}).then((result) => { itemForTemplate = _.pick(result, _.keys(authoring.getContentFieldDefaults())); scope.item = _.create(scope.item); _.each(itemForTemplate, (value, key) => { if (!_.isUndefined(value) && !_.isEmpty(value)) { scope.item[key] = value; } }); scope.item['operation'] = scope.action; }, (err) => { notify.error(gettext('Failed to apply kill template to the item.')); }); }, (response) => { if (response.data._message) { notify.error(response.data._message); } else { notify.error(gettext('Unknown Error: Cannot kill the item')); } }, ); scope.kill = function() { api.save('archived', scope.item, _.pick(scope.item, ['headline', 'abstract', 'body_html', 'operation'])) .then((response) => { notify.success(gettext('Item has been killed.')); scope.cancel(); }); }; scope.cancel = function() { scope.item = null; }; scope.$watch('item.profile', (profile) => { content.setupAuthoring(profile, scope, scope.item) .then(() => { authoring.schema = scope.schema; authoring.editor = scope.editor; }); }); }, }; }