diff --git a/app/components/forms/add-tag-form.hbs b/app/components/forms/add-tag-form.hbs
new file mode 100644
index 00000000000..2e8cbb7151e
--- /dev/null
+++ b/app/components/forms/add-tag-form.hbs
@@ -0,0 +1,46 @@
+
+
+
+
diff --git a/app/components/forms/add-tag-form.js b/app/components/forms/add-tag-form.js
new file mode 100644
index 00000000000..33dd4058e50
--- /dev/null
+++ b/app/components/forms/add-tag-form.js
@@ -0,0 +1,69 @@
+import classic from 'ember-classic-decorator';
+import Component from '@ember/component';
+import { action, computed } from '@ember/object';
+import FormMixin from 'open-event-frontend/mixins/form';
+import { inject as service } from '@ember/service';
+import { tracked } from '@glimmer/tracking';
+
+@classic
+export default class AddTagForm extends Component.extend(FormMixin) {
+ @service errorHandler;
+ @tracked tagsDeleted = [];
+
+ @computed('data.tags.@each.isDeleted', 'tagsDeleted.@each')
+ get tagList() {
+ return this.data.tags.filter(tag => !this.tagsDeleted.includes(tag));
+ }
+
+ willDestroyElement() {
+ const tagsNeedRemove = [];
+ this.data.tags.forEach(tag => {
+ if (!tag.id) {
+ tagsNeedRemove.pushObject(tag);
+ } else {
+ if (tag?.changedAttributes()) {
+ tag.rollbackAttributes();
+ }
+ }
+ });
+ if (tagsNeedRemove.length > 0) {
+ this.data.tags.removeObjects(tagsNeedRemove);
+ }
+ this._super(...arguments);
+ }
+
+ @action
+ addItem() {
+ this.data.tags.pushObject(this.store.createRecord('tag'));
+ }
+
+ @action
+ removeItem(tag) {
+ if (tag.id) {
+ this.tagsDeleted.pushObject(tag);
+ } else {
+ this.data.tags.removeObject(tag);
+ }
+ }
+
+ @action
+ async submit() {
+ try {
+ this.data.tags.forEach(tag => {
+ if (this.tagsDeleted.includes(tag)) {
+ tag.deleteRecord();
+ }
+ tag.save();
+ });
+ this.notify.success(
+ this.l10n.t('Your tag has been saved.'),
+ { id: 'tag_save' }
+ );
+ } catch (error) {
+ this.notify.error(
+ this.l10n.t('Tag failed.'),
+ { id: 'tag_save' }
+ );
+ }
+ }
+}
diff --git a/app/components/nav-bar.js b/app/components/nav-bar.js
index 5764d4d4a31..1a736fd2fd3 100644
--- a/app/components/nav-bar.js
+++ b/app/components/nav-bar.js
@@ -86,6 +86,23 @@ export default class NavBar extends Component {
return !(String(this.session.currentRouteName).includes('events.view'));
}
+ @computed('isNotPublicPageRoute')
+ get checkShowClassCssPublic() {
+ if (this.session.isAuthenticated) {
+ if (this.isNotPublicPageRoute) {
+ return 'au-home-page';
+ } else {
+ return 'au-public-page';
+ }
+ } else {
+ if (this.isNotPublicPageRoute) {
+ return 'un-home-page';
+ } else {
+ return 'un-public-page';
+ }
+ }
+ }
+
@action
handleKeyPress() {
if (event.keyCode === 13 || event.which === 13) {
@@ -120,6 +137,7 @@ export default class NavBar extends Component {
});
}
+
@action
handleClick() {
this.router.replaceWith('public.index', this.globalData.idEvent);
diff --git a/app/components/public/stream/join-video.ts b/app/components/public/stream/join-video.ts
index cf57e04816c..bef2b557f39 100644
--- a/app/components/public/stream/join-video.ts
+++ b/app/components/public/stream/join-video.ts
@@ -26,6 +26,7 @@ export default class JoinVideo extends Component {
openPanel(): void {
if (this.args.canAccess) {
this.args.showSidePanel?.();
+ this.eventCheckIn(this.args.event.identifier)
this.router.transitionTo({ queryParams: { side_panel: true } });
} else {
if (this.session.isAuthenticated) {
@@ -35,4 +36,16 @@ export default class JoinVideo extends Component {
}
}
}
+
+ async eventCheckIn(event_identifier: string) {
+ try {
+ const data:any = {
+ 'check_in_type' : 'event',
+ 'is_check_in' : true
+ };
+ await this.loader.post(`events/${event_identifier}/virtual/check-in`, data);
+ } catch (e) {
+ // Ignore error to prevent stackoverflow
+ }
+ }
}
diff --git a/app/components/public/stream/side-panel.hbs b/app/components/public/stream/side-panel.hbs
index 4f69d01352e..670ecba4882 100644
--- a/app/components/public/stream/side-panel.hbs
+++ b/app/components/public/stream/side-panel.hbs
@@ -60,40 +60,38 @@