diff --git a/lib/osf-components/addon/components/osf-layout/registries-side-nav/component.ts b/lib/osf-components/addon/components/osf-layout/registries-side-nav/component.ts index df41797a6f9..328a8c22104 100644 --- a/lib/osf-components/addon/components/osf-layout/registries-side-nav/component.ts +++ b/lib/osf-components/addon/components/osf-layout/registries-side-nav/component.ts @@ -10,6 +10,7 @@ import { layout } from 'ember-osf-web/decorators/component'; import styles from './styles'; import template from './template'; + @tagName('') @layout(template, styles) export default class RegistriesSideNav extends Component { diff --git a/lib/registries/addon/edit-revision/controller.ts b/lib/registries/addon/edit-revision/controller.ts index 82e5c15249f..e6d1c5876c4 100644 --- a/lib/registries/addon/edit-revision/controller.ts +++ b/lib/registries/addon/edit-revision/controller.ts @@ -1,21 +1,39 @@ import Controller from '@ember/controller'; +import { assert } from '@ember/debug'; import { alias, not } from '@ember/object/computed'; import RouterService from '@ember/routing/router-service'; import { inject as service } from '@ember/service'; -import BrandModel from 'ember-osf-web/models/brand'; +import { waitFor } from '@ember/test-waiters'; +import { task } from 'ember-concurrency'; +import IntlService from 'ember-intl/services/intl'; import RegistrationModel from 'ember-osf-web/models/registration'; -import RegistrationProviderModel from 'ember-osf-web/models/registration-provider'; import SchemaResponseModel from 'ember-osf-web/models/schema-response'; +import captureException, { getApiErrorMessage } from 'ember-osf-web/utils/capture-exception'; import Media from 'ember-responsive'; export default class EditRevisionController extends Controller { @service media!: Media; @service router!: RouterService; + @service intl!: IntlService; + @service toast!: Toastr; @not('media.isDesktop') showMobileView!: boolean; - @alias('model.revision') revision?: SchemaResponseModel; - @alias('model.registration') registration?: RegistrationModel; - @alias('model.provider') provider?: RegistrationProviderModel; - @alias('model.provider.brand') brand?: BrandModel; + @alias('model.revisionManager.revision') revision?: SchemaResponseModel; + @alias('model.revisionManager.registration') registration?: RegistrationModel; + + @task + @waitFor + async deleteRevision() { + assert('this.revision is required to delete a revision', this.revision); + assert('this.registration is required to redirect after deleting a revision', this.registration); + try { + await this.revision.destroyRecord(); + this.router.transitionTo('registries.overview.index', this.registration.id); + } catch (e) { + const errorMessage = this.intl.t('move_to_project.could_not_create_project'); + captureException(e, { errorMessage }); + this.toast.error(getApiErrorMessage(e), errorMessage); + } + } } diff --git a/lib/registries/addon/edit-revision/template.hbs b/lib/registries/addon/edit-revision/template.hbs index 57a75a6d597..c3ba9c79644 100644 --- a/lib/registries/addon/edit-revision/template.hbs +++ b/lib/registries/addon/edit-revision/template.hbs @@ -76,6 +76,18 @@ @label='{{t 'registries.drafts.draft.review.page_label'}}' @navMode={{leftNav.leftGutterMode}} /> + + + + {{outlet}} diff --git a/translations/en-us.yml b/translations/en-us.yml index f2daf2c2057..35eddd9fe8b 100644 --- a/translations/en-us.yml +++ b/translations/en-us.yml @@ -579,11 +579,11 @@ node_card: private_tooltip: 'This registration is private' timestamp_label: 'Registered:' statuses: - pending_registration_approval: 'Pending registration approval' revision_pending_moderation: 'Pending moderation' revision_in_progress: 'Revision in progress' revision_unapproved: 'Revision unapproved' revision_approved: 'Latest Update' + pending_registration_approval: 'Pending registration approval' pending_embargo_approval: 'Pending embargo' pending: 'Pending moderation' embargo: Embargoed @@ -591,8 +591,8 @@ node_card: pending_embargo_termination: 'Pending embargo termination' pending_withdraw_request: 'Pending withdrawal' pending_withdraw: 'Pending withdrawal moderation' - withdrawn: Withdrawn - archiving: Archiving + withdrawn: 'Withdrawn' + archiving: 'Archiving' tags: 'Tags:' registration_template: 'Registration template:' contributors: 'Contributors:' @@ -1106,6 +1106,8 @@ registries: uploadSuccess: 'Successfully uploaded csv file.' overview: title: 'Moderated Overview' + delete_update: 'Delete update' + confirm_delete: 'Please confirm deletion of update.' new: provider_info: 'You are submitting to {provider}. Click here to learn more about other hosted registries.' required: 'required' @@ -1214,6 +1216,10 @@ registries: warning: 'This will cancel any approvals from other admin contributors and return the registration back to its draft form for additional changes.' reason: 'What additional changes need to be made and why?' submit: 'Submit' + delete_modal: + title: 'Delete this update' + body: 'Are you sure to delete this update?' + button: 'Cancel update' index: @@ -1601,6 +1607,7 @@ registries: modalBodyNoUpdates: 'The {registryName} does not allow updates for this registration template.
Contact their registy if you have any questions.' learnMore: 'Click here to learn more' next: Next + cancel_update: 'Cancel update' meetings: index: meetings-list: