├── vendor └── .gitkeep ├── translations └── excluded.pot ├── tests ├── acceptance │ └── acceptance-test.js ├── unit │ ├── routes │ │ ├── events │ │ │ └── view │ │ │ │ ├── team-test.ts │ │ │ │ └── team │ │ │ │ ├── index-test.ts │ │ │ │ └── permissions-test.ts │ │ └── public │ │ │ ├── speaker │ │ │ └── view-test.js │ │ │ └── stream │ │ │ └── view-test.ts │ ├── services │ │ ├── cache-test.ts │ │ └── bug-tracker-test.ts │ └── utils │ │ └── text-test.ts ├── helpers │ └── stubs │ │ └── services │ │ └── -routing.js └── test-helper.js ├── app ├── templates │ ├── orders.hbs │ ├── public │ │ ├── role-invites.hbs │ │ ├── cfs │ │ │ └── index.hbs │ │ ├── stream │ │ │ └── view.hbs │ │ └── coc.hbs │ ├── admin │ │ ├── reports │ │ │ ├── index.hbs │ │ │ ├── system-logs │ │ │ │ ├── index.hbs │ │ │ │ ├── mail-logs.hbs │ │ │ │ ├── activity-logs.hbs │ │ │ │ └── notification-logs.hbs │ │ │ └── kubernetes-server-logs.hbs │ │ ├── users │ │ │ ├── view.hbs │ │ │ └── view │ │ │ │ ├── index.hbs │ │ │ │ ├── events │ │ │ │ └── index.hbs │ │ │ │ ├── account │ │ │ │ ├── applications.hbs │ │ │ │ ├── email-preferences.hbs │ │ │ │ └── profile.hbs │ │ │ │ ├── sessions │ │ │ │ └── list.hbs │ │ │ │ └── tickets │ │ │ │ └── list.hbs │ │ ├── permissions │ │ │ └── index.hbs │ │ ├── settings │ │ │ ├── images.hbs │ │ │ ├── index.hbs │ │ │ ├── analytics.hbs │ │ │ ├── payment-gateway.hbs │ │ │ ├── ticket-fees.hbs │ │ │ ├── microservices.hbs │ │ │ └── billing.hbs │ │ ├── content │ │ │ └── index.hbs │ │ ├── events │ │ │ └── import.hbs │ │ └── permissions.hbs │ ├── components │ │ ├── paypal-button.hbs │ │ ├── modals │ │ │ └── modal-base.hbs │ │ ├── widgets │ │ │ ├── forms │ │ │ │ ├── places-autocomplete.hbs │ │ │ │ ├── date-picker.hbs │ │ │ │ ├── color-picker.hbs │ │ │ │ └── time-picker.hbs │ │ │ └── twitter-timeline.hbs │ │ ├── currency-amount.hbs │ │ ├── smart-overflow.hbs │ │ ├── ui-table │ │ │ ├── cell │ │ │ │ ├── cell-event-state.hbs │ │ │ │ ├── cell-link.hbs │ │ │ │ ├── admin │ │ │ │ │ ├── reports │ │ │ │ │ │ └── system-logs │ │ │ │ │ │ │ ├── activity-logs │ │ │ │ │ │ │ └── cell-time.hbs │ │ │ │ │ │ │ ├── notification-logs │ │ │ │ │ │ │ ├── cell-time.hbs │ │ │ │ │ │ │ ├── cell-sanitize.hbs │ │ │ │ │ │ │ └── cell-for.hbs │ │ │ │ │ │ │ └── mail-logs │ │ │ │ │ │ │ └── cell-mail-message.hbs │ │ │ │ │ ├── sales │ │ │ │ │ │ ├── status │ │ │ │ │ │ │ └── cell-amount.hbs │ │ │ │ │ │ ├── cell-amount.hbs │ │ │ │ │ │ └── cell-action.hbs │ │ │ │ │ ├── users │ │ │ │ │ │ ├── cell-created-at.hbs │ │ │ │ │ │ └── cell-status.hbs │ │ │ │ │ └── events │ │ │ │ │ │ ├── event-no-front.hbs │ │ │ │ │ │ ├── event-is-featured.hbs │ │ │ │ │ │ └── event-is-promoted.hbs │ │ │ │ ├── cell-sponsor-sanitize.hbs │ │ │ │ ├── events │ │ │ │ │ ├── cell-amount.hbs │ │ │ │ │ ├── view │ │ │ │ │ │ ├── tickets │ │ │ │ │ │ │ ├── access-codes │ │ │ │ │ │ │ │ └── cell-url.hbs │ │ │ │ │ │ │ ├── discount-codes │ │ │ │ │ │ │ │ ├── cell-validity.hbs │ │ │ │ │ │ │ │ ├── cell-url.hbs │ │ │ │ │ │ │ │ ├── cell-value.hbs │ │ │ │ │ │ │ │ └── cell-status.hbs │ │ │ │ │ │ │ ├── attendees │ │ │ │ │ │ │ │ ├── cell-date.hbs │ │ │ │ │ │ │ │ └── cell-price.hbs │ │ │ │ │ │ │ └── orders │ │ │ │ │ │ │ │ ├── cell-date.hbs │ │ │ │ │ │ │ │ └── cell-amount.hbs │ │ │ │ │ │ ├── speakers │ │ │ │ │ │ │ ├── speaker-mobile.hbs │ │ │ │ │ │ │ ├── cell-is-featured.hbs │ │ │ │ │ │ │ ├── speaker-logo.hbs │ │ │ │ │ │ │ └── cell-simple-sessions.hbs │ │ │ │ │ │ ├── sessions │ │ │ │ │ │ │ ├── cell-session-state.hbs │ │ │ │ │ │ │ └── cell-is-mail-sent.hbs │ │ │ │ │ │ └── videoroom │ │ │ │ │ │ │ └── cell-video-url.hbs │ │ │ │ │ ├── cell-download-invoice.hbs │ │ │ │ │ └── cell-action.hbs │ │ │ │ ├── cell-input-number.hbs │ │ │ │ ├── cell-image.hbs │ │ │ │ ├── cell-sponsor-image.hbs │ │ │ │ ├── cell-validity.hbs │ │ │ │ ├── cell-speakers.hbs │ │ │ │ ├── cell-label.hbs │ │ │ │ └── cell-simple-date.hbs │ │ │ ├── header-sorting-icons.hbs │ │ │ ├── header-rows-grouped.hbs │ │ │ └── expand-row-cell.hbs │ │ ├── n-times.hbs │ │ ├── orders │ │ │ ├── ticket-price.hbs │ │ │ └── organizer-info.hbs │ │ ├── public │ │ │ ├── speaker-list.hbs │ │ │ ├── sponsor-item.hbs │ │ │ ├── featured-speaker-list.hbs │ │ │ ├── copyright-item.hbs │ │ │ └── session-filter.hbs │ │ ├── welcome-header.hbs │ │ ├── tables │ │ │ ├── headers │ │ │ │ └── sort.hbs │ │ │ └── utilities │ │ │ │ └── search-box.hbs │ │ ├── scheduler │ │ │ └── unscheduled-session.hbs │ │ ├── account │ │ │ └── application-section.hbs │ │ └── create-session-message.hbs │ ├── events │ │ ├── view │ │ │ ├── videoroom.hbs │ │ │ ├── team │ │ │ │ └── index.hbs │ │ │ ├── edit │ │ │ │ ├── attendee.hbs │ │ │ │ ├── sponsors.hbs │ │ │ │ ├── basic-details.hbs │ │ │ │ ├── other-details.hbs │ │ │ │ └── sessions-speakers.hbs │ │ │ ├── videoroom │ │ │ │ ├── create.hbs │ │ │ │ └── edit.hbs │ │ │ ├── tickets │ │ │ │ ├── access-codes │ │ │ │ │ ├── edit.hbs │ │ │ │ │ └── create.hbs │ │ │ │ ├── add-order.hbs │ │ │ │ └── discount-codes │ │ │ │ │ ├── edit.hbs │ │ │ │ │ └── create.hbs │ │ │ └── edit.hbs │ │ └── list.hbs │ ├── account │ │ ├── danger-zone.hbs │ │ ├── applications.hbs │ │ ├── email-preferences.hbs │ │ ├── billing │ │ │ └── payment-info.hbs │ │ ├── profile.hbs │ │ └── password.hbs │ ├── notifications.hbs │ ├── not-found.hbs │ ├── loading.hbs │ ├── login.hbs │ ├── reset-password.hbs │ ├── register.hbs │ └── error.hbs ├── resolver.js ├── styles │ ├── partials │ │ ├── errors.scss │ │ ├── fullcalendar.scss │ │ ├── buttons.scss │ │ ├── uploader.scss │ │ └── text.scss │ ├── pages │ │ ├── all.scss │ │ └── public.scss │ ├── components │ │ ├── forms │ │ │ ├── login-form.scss │ │ │ ├── register-form.scss │ │ │ ├── ticket-input.scss │ │ │ ├── user-profile-form.scss │ │ │ ├── forgot-password-form.scss │ │ │ └── basic-details-step.scss │ │ ├── order-summary.scss │ │ ├── events │ │ │ └── view │ │ │ │ └── tickets │ │ │ │ └── add-order.scss │ │ ├── infinity-loader.scss │ │ ├── tabbed-navigation.scss │ │ ├── ticket-list.scss │ │ ├── ui-table.scss │ │ └── all.scss │ └── app.scss ├── components │ ├── ui-table │ │ ├── cell │ │ │ ├── cell-date.hbs │ │ │ ├── cell-date.js │ │ │ ├── cell-link.js │ │ │ ├── cell-event.js │ │ │ ├── cell-image.js │ │ │ ├── cell-label.js │ │ │ ├── cell-roles.js │ │ │ ├── cell-buttons.js │ │ │ ├── cell-tickets.js │ │ │ ├── cell-validity.js │ │ │ ├── cell-code-buttons.js │ │ │ ├── cell-event-date.js │ │ │ ├── cell-sessions.js │ │ │ ├── cell-speakers.js │ │ │ ├── events │ │ │ │ ├── cell-action.js │ │ │ │ ├── cell-amount.js │ │ │ │ └── view │ │ │ │ │ ├── sessions │ │ │ │ │ ├── cell-rating.js │ │ │ │ │ ├── cell-is-mail-sent.js │ │ │ │ │ ├── cell-lock-session.js │ │ │ │ │ ├── cell-session-title.js │ │ │ │ │ ├── cell-notify.hbs │ │ │ │ │ └── cell-notify.js │ │ │ │ │ ├── speakers │ │ │ │ │ ├── cell-buttons.js │ │ │ │ │ ├── speaker-logo.js │ │ │ │ │ ├── speaker-mobile.js │ │ │ │ │ ├── cell-is-featured.js │ │ │ │ │ └── cell-simple-sessions.js │ │ │ │ │ ├── tickets │ │ │ │ │ ├── orders │ │ │ │ │ │ ├── cell-date.js │ │ │ │ │ │ ├── cell-action.js │ │ │ │ │ │ ├── cell-amount.js │ │ │ │ │ │ ├── cell-order.js │ │ │ │ │ │ └── cell-actions.js │ │ │ │ │ ├── access-codes │ │ │ │ │ │ ├── cell-url.js │ │ │ │ │ │ └── cell-actions.js │ │ │ │ │ ├── attendees │ │ │ │ │ │ ├── cell-order.js │ │ │ │ │ │ ├── cell-price.js │ │ │ │ │ │ └── cell-action.js │ │ │ │ │ ├── discount-codes │ │ │ │ │ │ ├── cell-url.js │ │ │ │ │ │ ├── cell-value.js │ │ │ │ │ │ ├── cell-actions.js │ │ │ │ │ │ ├── cell-status.js │ │ │ │ │ │ └── cell-validity.js │ │ │ │ │ ├── cell-add-order-price.js │ │ │ │ │ ├── cell-add-order-total.js │ │ │ │ │ └── cell-add-order-quantity.js │ │ │ │ │ └── videoroom │ │ │ │ │ └── cell-additional-info.js │ │ │ ├── admin │ │ │ │ ├── sales │ │ │ │ │ ├── cell-action.js │ │ │ │ │ ├── status │ │ │ │ │ │ ├── cell-dated.js │ │ │ │ │ │ └── cell-amount.js │ │ │ │ │ └── invoice-user.hbs │ │ │ │ ├── users │ │ │ │ │ ├── cell-status.js │ │ │ │ │ ├── cell-actions.js │ │ │ │ │ ├── cell-created-at.js │ │ │ │ │ ├── cell-event-roles.js │ │ │ │ │ ├── cell-first-name.js │ │ │ │ │ ├── cell-system-roles.js │ │ │ │ │ ├── cell-user-links.js │ │ │ │ │ └── cell-last-accessed-at.js │ │ │ │ ├── messages │ │ │ │ │ └── cell-options.js │ │ │ │ ├── events │ │ │ │ │ ├── event-is-featured.js │ │ │ │ │ └── event-is-promoted.js │ │ │ │ └── reports │ │ │ │ │ └── system-logs │ │ │ │ │ ├── activity-logs │ │ │ │ │ └── cell-time.js │ │ │ │ │ ├── notification-logs │ │ │ │ │ ├── cell-for.js │ │ │ │ │ ├── cell-time.js │ │ │ │ │ └── cell-sanitize.js │ │ │ │ │ └── mail-logs │ │ │ │ │ └── cell-mail-message.js │ │ │ ├── cell-event-general.js │ │ │ ├── cell-event-state.js │ │ │ ├── cell-input-number.js │ │ │ ├── cell-simple-date.js │ │ │ ├── cell-sponsor-image.js │ │ │ ├── cell-title-message.js │ │ │ ├── cell-simple-buttons.js │ │ │ ├── cell-sponsor-options.js │ │ │ ├── cell-sessions-dashboard.js │ │ │ ├── cell-speakers-dashboard.js │ │ │ └── cell-sponsor-sanitize.js │ │ ├── expand-row-cell.js │ │ ├── header-rows-grouped.js │ │ └── header-sorting-icons.js │ ├── range-slider.js │ ├── public │ │ ├── stream │ │ │ ├── jitsi-stream.hbs │ │ │ └── join-video.hbs │ │ ├── speaker-list.js │ │ ├── featured-speaker-list.js │ │ ├── social-links.js │ │ ├── sponsor-item.hbs │ │ ├── copyright-item.js │ │ ├── session-filter.js │ │ ├── sponsor-list.hbs │ │ └── event-venue.hbs │ ├── errors │ │ ├── not-found.js │ │ ├── generic-error.js │ │ ├── server-error.js │ │ └── forbidden-error.js │ ├── event-invoice │ │ ├── event-info.js │ │ ├── payee-info.js │ │ ├── billing-info.js │ │ └── invoice-summary.js │ ├── tables │ │ ├── default.js │ │ └── utilities │ │ │ └── page-size-input.js │ ├── orders │ │ ├── organizer-info.js │ │ ├── event-info.js │ │ └── ticket-holder.js │ ├── forms │ │ ├── admin │ │ │ └── settings │ │ │ │ ├── system │ │ │ │ ├── mail-settings.js │ │ │ │ ├── captcha-form.js │ │ │ │ ├── social-media-token.js │ │ │ │ └── order-expiry-form.js │ │ │ │ └── analytics-form.js │ │ ├── events │ │ │ └── view │ │ │ │ └── edit-session.js │ │ ├── session-section.js │ │ ├── wizard │ │ │ └── custom-forms │ │ │ │ └── table.ts │ │ └── speaker-section.js │ ├── modals │ │ ├── confirm-user-delete-modal.js │ │ ├── event-revision.js │ │ ├── event-share-modal.js │ │ ├── proposal-withdraw-modal.js │ │ ├── login-signup-modal.js │ │ ├── simple-modal.js │ │ ├── publish-unpublish-modal.js │ │ ├── room-info-modal.js │ │ ├── event-delete-modal.js │ │ └── user-delete-modal.js │ ├── n-times.js │ ├── session-card.js │ ├── events │ │ ├── view │ │ │ └── overview │ │ │ │ ├── event-sponsors.js │ │ │ │ ├── speaker-session.js │ │ │ │ ├── event-setup-checklist.js │ │ │ │ └── general-info.js │ │ └── imports-history-section.js │ ├── welcome-header.js │ └── widgets │ │ └── forms │ │ └── billing-info.js ├── controllers │ ├── events │ │ └── view │ │ │ ├── videoroom.js │ │ │ └── videoroom │ │ │ ├── create.js │ │ │ └── edit.js │ ├── account │ │ └── billing │ │ │ └── invoices.js │ ├── events.js │ ├── public │ │ ├── schedule.js │ │ └── speakers.js │ ├── reset-password.js │ ├── admin │ │ └── sales │ │ │ ├── locations.js │ │ │ ├── organizers.js │ │ │ └── discounted-events.js │ └── my-tickets │ │ ├── past.js │ │ └── upcoming.js ├── session-stores │ └── application.js ├── utils │ ├── testing.js │ ├── form.js │ ├── dictionary │ │ ├── genders.ts │ │ ├── age-groups.ts │ │ ├── date-time.ts │ │ ├── sessions.ts │ │ └── amazon-s3-regions.ts │ ├── string.js │ ├── patches │ │ └── fullcalendar.js │ └── sort.ts ├── extensions │ └── ember-table │ │ ├── component.js │ │ └── template.hbs ├── initializers │ ├── accounting.js │ └── extensions.js ├── models │ ├── service.js │ ├── panel-permission.js │ ├── admin-sales-by-location.js │ ├── order-statistics-ticket.js │ ├── admin-sales-by-marketer.js │ ├── admin-statistics-event.js │ ├── order-statistics-event.js │ ├── admin-sales-by-organizer.js │ ├── ticket-fee.js │ ├── admin-statistics-mail.js │ ├── custom-form-option.js │ ├── custom-system-role.js │ ├── event-type.js │ ├── event-location.js │ ├── user-permission.js │ ├── import-job.js │ ├── role.js │ ├── mail.js │ ├── stripe-authorization.js │ ├── admin-sales-by-event.js │ ├── admin-sales-discounted.js │ ├── event-topic.js │ ├── admin-statistics-session.js │ ├── base.js │ ├── activity.js │ ├── session-type.js │ ├── admin-sales-invoice.js │ ├── page.js │ ├── event-sub-topic.js │ ├── admin-sales-fee.js │ ├── feedback.js │ ├── event-copyright.js │ └── sponsor.js ├── routes │ ├── account │ │ ├── billing │ │ │ ├── invoices.js │ │ │ ├── payment-info.js │ │ │ ├── invoices │ │ │ │ └── index.js │ │ │ └── index.js │ │ ├── index.js │ │ ├── password.js │ │ ├── billing.js │ │ └── applications.js │ ├── admin │ │ ├── users │ │ │ ├── view.js │ │ │ ├── view │ │ │ │ ├── index.js │ │ │ │ ├── account │ │ │ │ │ ├── profile.js │ │ │ │ │ └── applications.js │ │ │ │ ├── events │ │ │ │ │ └── index.js │ │ │ │ ├── events.js │ │ │ │ ├── tickets.js │ │ │ │ ├── sessions.js │ │ │ │ ├── tickets │ │ │ │ │ └── index.js │ │ │ │ └── account.js │ │ │ └── index.js │ │ ├── events.js │ │ ├── sales.js │ │ ├── users.js │ │ ├── content.js │ │ ├── reports.js │ │ ├── events │ │ │ ├── import.js │ │ │ └── index.js │ │ ├── permissions.js │ │ ├── settings │ │ │ ├── billing.js │ │ │ ├── index.js │ │ │ ├── analytics.js │ │ │ ├── microservices.js │ │ │ └── payment-gateway.js │ │ ├── reports │ │ │ ├── system-logs.js │ │ │ ├── kubernetes-server-logs.js │ │ │ ├── index.js │ │ │ └── system-logs │ │ │ │ └── index.js │ │ ├── permissions │ │ │ └── index.js │ │ ├── content │ │ │ ├── pages.js │ │ │ ├── translations.js │ │ │ └── system-images │ │ │ │ └── list.js │ │ ├── sales │ │ │ ├── revenue.js │ │ │ ├── locations.js │ │ │ ├── marketer.js │ │ │ ├── organizers.js │ │ │ └── discounted-events.js │ │ ├── settings.js │ │ ├── sessions │ │ │ └── index.js │ │ └── sessions.js │ ├── account.js │ ├── public │ │ ├── cfs.js │ │ ├── coc.js │ │ ├── speaker │ │ │ └── view.js │ │ ├── sessions-index.js │ │ └── session │ │ │ └── view.js │ ├── events │ │ ├── view │ │ │ ├── tickets.js │ │ │ ├── settings.js │ │ │ ├── settings │ │ │ │ ├── export.js │ │ │ │ └── index.js │ │ │ ├── team.ts │ │ │ ├── tickets │ │ │ │ ├── attendees.js │ │ │ │ ├── access-codes.js │ │ │ │ ├── discount-codes.js │ │ │ │ ├── orders.js │ │ │ │ ├── orders │ │ │ │ │ └── index.js │ │ │ │ ├── attendees │ │ │ │ │ └── index.js │ │ │ │ ├── discount-codes │ │ │ │ │ └── index.js │ │ │ │ └── access-codes │ │ │ │ │ └── index.js │ │ │ ├── sessions │ │ │ │ └── index.js │ │ │ ├── videoroom │ │ │ │ └── index.js │ │ │ ├── sessions.js │ │ │ ├── speakers.js │ │ │ ├── videoroom.js │ │ │ ├── speakers │ │ │ │ └── index.js │ │ │ └── edit │ │ │ │ └── basic-details.js │ │ └── index.js │ ├── my-tickets │ │ ├── upcoming.js │ │ ├── index.js │ │ └── upcoming │ │ │ └── index.js │ ├── not-found.js │ ├── notifications │ │ └── index.js │ ├── events.js │ ├── oauth.js │ ├── orders.js │ ├── login.js │ ├── my-sessions.js │ ├── my-tickets.js │ ├── notifications.js │ ├── logout.js │ └── register.js ├── serializers │ ├── event-topic.js │ └── event-sub-topic.js ├── helpers │ ├── is-input-field.js │ ├── random.ts │ ├── custom-related-field.js │ ├── includes.js │ ├── not-includes.js │ ├── currency-name.js │ ├── url-encode.js │ ├── sanitize.js │ ├── session-color.js │ ├── currency-symbol.js │ ├── text-color.ts │ ├── payment-icon.js │ ├── ticket-attendees.js │ └── can-modify-order.js ├── adapters │ ├── admin-sales-fee.js │ ├── admin-sales-by-event.js │ ├── admin-sales-invoice.js │ ├── admin-statistics-mail.js │ ├── admin-statistics-user.js │ ├── admin-sales-discounted.js │ ├── admin-statistics-event.js │ ├── admin-sales-by-location.js │ ├── admin-sales-by-marketer.js │ ├── admin-sales-by-organizer.js │ ├── admin-statistics-session.js │ ├── user.js │ ├── access-code.js │ └── discount-code.js ├── transforms │ └── moment.js └── app.js ├── .eslintignore ├── .watchmanconfig ├── public ├── robots.txt ├── favicon.ico ├── images │ ├── fdroid.png │ ├── landing.jpg │ ├── android-img.jpg │ ├── attendee-app.jpg │ ├── google-play.png │ ├── copyright │ │ ├── pdd.png │ │ ├── pdw.png │ │ ├── pdd-logo.png │ │ ├── pdw-logo.png │ │ ├── attribution.png │ │ ├── attribution-nc.png │ │ ├── attribution-nd.png │ │ ├── attribution-sa.png │ │ ├── attribution-logo.png │ │ ├── attribution-nc-nd.png │ │ ├── attribution-nc-sa.png │ │ ├── attribution-nc-logo.png │ │ ├── attribution-nd-logo.png │ │ ├── attribution-sa-logo.png │ │ ├── attribution-nc-nd-logo.png │ │ └── attribution-nc-sa-logo.png │ ├── organizer-app.jpg │ ├── pricing-header.jpg │ ├── organizer-android.jpg │ ├── app-landing-header.jpg │ ├── payment-logos │ │ ├── alipay.png │ │ ├── omise.png │ │ ├── paypal.png │ │ ├── paytm.png │ │ └── stripe.png │ └── placeholders │ │ ├── Other.jpg │ │ └── avatar.png └── fonts │ ├── lato-v17-latin-100.woff │ ├── lato-v17-latin-100.woff2 │ ├── lato-v17-latin-300.woff │ ├── lato-v17-latin-300.woff2 │ ├── lato-v17-latin-700.woff │ ├── lato-v17-latin-700.woff2 │ ├── lato-v17-latin-900.woff │ ├── lato-v17-latin-900.woff2 │ ├── lato-v17-latin-regular.woff │ └── lato-v17-latin-regular.woff2 ├── config ├── l10n-convert.js ├── optional-features.json ├── l10n-extract.js ├── nginx.conf └── targets.js ├── crowdin.yml ├── lib ├── cache-updater │ └── package.json └── start-title │ ├── package.json │ └── index.js ├── docs └── images │ └── Frontend_Branding.png ├── .env.example ├── kubernetes ├── travis │ └── eventyay-b3ebbd09f2d2.json.enc ├── yamls │ └── frontend │ │ ├── frontend-service.yml │ │ └── ingress-notls.yml └── deploy.sh ├── types ├── ember-data │ └── types │ │ └── registries │ │ └── model.d.ts ├── open-event-frontend │ └── index.d.ts └── global.d.ts ├── hooks └── build ├── scripts ├── container_start.sh └── test_fastboot.sh ├── netlify.toml ├── fastboot └── initializers │ └── ajax.js ├── .ember-cli ├── docker-compose.yml ├── app.json └── .editorconfig /vendor/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /translations/excluded.pot: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/acceptance/acceptance-test.js: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/templates/orders.hbs: -------------------------------------------------------------------------------- 1 | {{outlet}} 2 | -------------------------------------------------------------------------------- /app/templates/public/role-invites.hbs: -------------------------------------------------------------------------------- 1 | {{outlet}} -------------------------------------------------------------------------------- /app/templates/admin/reports/index.hbs: -------------------------------------------------------------------------------- 1 | {{outlet}} 2 | -------------------------------------------------------------------------------- /app/templates/admin/users/view.hbs: -------------------------------------------------------------------------------- 1 | {{outlet}} 2 | -------------------------------------------------------------------------------- /app/templates/admin/users/view/index.hbs: -------------------------------------------------------------------------------- 1 | {{outlet}} -------------------------------------------------------------------------------- /app/templates/components/paypal-button.hbs: -------------------------------------------------------------------------------- 1 | {{yield}} -------------------------------------------------------------------------------- /app/templates/admin/permissions/index.hbs: -------------------------------------------------------------------------------- 1 | {{outlet}} 2 | -------------------------------------------------------------------------------- /app/templates/admin/users/view/events/index.hbs: -------------------------------------------------------------------------------- 1 | {{outlet}} -------------------------------------------------------------------------------- /app/templates/events/view/videoroom.hbs: -------------------------------------------------------------------------------- 1 | {{outlet}} 2 | -------------------------------------------------------------------------------- /.eslintignore: -------------------------------------------------------------------------------- 1 | vendor 2 | app/utils/l10n-fingerprint-map.js 3 | -------------------------------------------------------------------------------- /app/templates/components/modals/modal-base.hbs: -------------------------------------------------------------------------------- 1 | {{yield}} 2 | -------------------------------------------------------------------------------- /app/templates/components/widgets/forms/places-autocomplete.hbs: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.watchmanconfig: -------------------------------------------------------------------------------- 1 | { 2 | "ignore_dirs": ["tmp", "dist"] 3 | } 4 | -------------------------------------------------------------------------------- /app/templates/admin/reports/system-logs/index.hbs: -------------------------------------------------------------------------------- 1 | {{outlet}} 2 | -------------------------------------------------------------------------------- /app/templates/components/currency-amount.hbs: -------------------------------------------------------------------------------- 1 | {{this.modifiedAmount}} 2 | -------------------------------------------------------------------------------- /app/templates/components/smart-overflow.hbs: -------------------------------------------------------------------------------- 1 | {{yield}} 2 | -------------------------------------------------------------------------------- /public/robots.txt: -------------------------------------------------------------------------------- 1 | # http://www.robotstxt.org 2 | User-agent: * 3 | Disallow: 4 | -------------------------------------------------------------------------------- /app/templates/account/danger-zone.hbs: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/templates/notifications.hbs: -------------------------------------------------------------------------------- 1 | {{! template-lint-disable simple-unless }} 2 | {{outlet}} -------------------------------------------------------------------------------- /app/templates/public/cfs/index.hbs: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/resolver.js: -------------------------------------------------------------------------------- 1 | import Resolver from 'ember-resolver'; 2 | 3 | export default Resolver; 4 | -------------------------------------------------------------------------------- /app/styles/partials/errors.scss: -------------------------------------------------------------------------------- 1 | .weight-300.description { 2 | font-size: 3.5em; 3 | } 4 | -------------------------------------------------------------------------------- /app/templates/account/applications.hbs: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/templates/admin/users/view/account/applications.hbs: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /config/l10n-convert.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | 'convert-from': 'translations' 3 | }; 4 | -------------------------------------------------------------------------------- /app/styles/pages/all.scss: -------------------------------------------------------------------------------- 1 | @import 'public-event'; 2 | @import 'events'; 3 | @import 'public'; 4 | -------------------------------------------------------------------------------- /app/styles/partials/fullcalendar.scss: -------------------------------------------------------------------------------- 1 | .fc-view-container { 2 | overflow-x: scroll; 3 | } 4 | -------------------------------------------------------------------------------- /app/templates/not-found.hbs: -------------------------------------------------------------------------------- 1 |
2 | 3 |
4 | -------------------------------------------------------------------------------- /app/styles/components/forms/login-form.scss: -------------------------------------------------------------------------------- 1 | .login-with-fb { 2 | height: 30px !important; 3 | } 4 | -------------------------------------------------------------------------------- /app/styles/components/order-summary.scss: -------------------------------------------------------------------------------- 1 | .order-summary { 2 | padding: 10px !important; 3 | } 4 | -------------------------------------------------------------------------------- /app/templates/components/ui-table/cell/cell-event-state.hbs: -------------------------------------------------------------------------------- 1 | {{get this.record this.column.propertyName}} -------------------------------------------------------------------------------- /app/styles/components/forms/register-form.scss: -------------------------------------------------------------------------------- 1 | .register { 2 | margin-bottom: 10px !important; 3 | } 4 | -------------------------------------------------------------------------------- /app/styles/components/forms/ticket-input.scss: -------------------------------------------------------------------------------- 1 | .text.ticket-input { 2 | line-height: 35px !important; 3 | } 4 | -------------------------------------------------------------------------------- /app/templates/account/email-preferences.hbs: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/serverwentdown/open-event-frontend/development/public/favicon.ico -------------------------------------------------------------------------------- /app/styles/components/events/view/tickets/add-order.scss: -------------------------------------------------------------------------------- 1 | .add-order { 2 | padding-top: 20px !important; 3 | } 4 | -------------------------------------------------------------------------------- /app/styles/components/forms/user-profile-form.scss: -------------------------------------------------------------------------------- 1 | .update-changes { 2 | margin-bottom: 10px !important; 3 | } 4 | -------------------------------------------------------------------------------- /app/templates/components/ui-table/cell/cell-link.hbs: -------------------------------------------------------------------------------- 1 | 2 | {{this.record}} 3 | 4 | -------------------------------------------------------------------------------- /crowdin.yml: -------------------------------------------------------------------------------- 1 | files: 2 | - source: /translations/en.po 3 | translation: /translations/%two_letters_code%.po 4 | -------------------------------------------------------------------------------- /app/styles/components/forms/forgot-password-form.scss: -------------------------------------------------------------------------------- 1 | .reset-password { 2 | margin-bottom: 10px !important; 3 | } 4 | -------------------------------------------------------------------------------- /app/templates/components/n-times.hbs: -------------------------------------------------------------------------------- 1 | {{#each (range 0 this.times) as |number|}} 2 | {{yield number}} 3 | {{/each}} 4 | -------------------------------------------------------------------------------- /lib/cache-updater/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "cache-updater", 3 | "keywords": [ 4 | "ember-addon" 5 | ] 6 | } 7 | -------------------------------------------------------------------------------- /lib/start-title/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "start-title", 3 | "keywords": [ 4 | "ember-addon" 5 | ] 6 | } 7 | -------------------------------------------------------------------------------- /app/components/ui-table/cell/cell-date.hbs: -------------------------------------------------------------------------------- 1 | {{general-date @record @props.options.dateFormat tz=@props.options.timezone}} 2 | -------------------------------------------------------------------------------- /app/templates/components/ui-table/cell/admin/reports/system-logs/activity-logs/cell-time.hbs: -------------------------------------------------------------------------------- 1 | {{moment-from-now this.record}} 2 | -------------------------------------------------------------------------------- /app/templates/components/ui-table/cell/admin/reports/system-logs/notification-logs/cell-time.hbs: -------------------------------------------------------------------------------- 1 | {{moment-from-now this.record}} -------------------------------------------------------------------------------- /app/templates/components/ui-table/cell/cell-sponsor-sanitize.hbs: -------------------------------------------------------------------------------- 1 | {{#if this.record}} 2 | {{sanitize this.record}} 3 | {{/if}} -------------------------------------------------------------------------------- /app/templates/events/view/team/index.hbs: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /public/images/fdroid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/serverwentdown/open-event-frontend/development/public/images/fdroid.png -------------------------------------------------------------------------------- /public/images/landing.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/serverwentdown/open-event-frontend/development/public/images/landing.jpg -------------------------------------------------------------------------------- /app/styles/components/infinity-loader.scss: -------------------------------------------------------------------------------- 1 | .infinity-loader { 2 | &.reached-infinity { 3 | display: none; 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /app/templates/admin/users/view/account/email-preferences.hbs: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/templates/components/ui-table/cell/admin/reports/system-logs/notification-logs/cell-sanitize.hbs: -------------------------------------------------------------------------------- 1 | {{sanitize this.record}} 2 | -------------------------------------------------------------------------------- /app/templates/admin/reports/kubernetes-server-logs.hbs: -------------------------------------------------------------------------------- 1 |
2 | {{t 'Coming Soon'}} 3 |
4 | {{outlet}} 5 | -------------------------------------------------------------------------------- /app/templates/components/ui-table/cell/admin/sales/status/cell-amount.hbs: -------------------------------------------------------------------------------- 1 | 2 | US$ {{format-money this.record}} 3 | 4 | -------------------------------------------------------------------------------- /app/templates/public/stream/view.hbs: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /public/images/android-img.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/serverwentdown/open-event-frontend/development/public/images/android-img.jpg -------------------------------------------------------------------------------- /public/images/attendee-app.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/serverwentdown/open-event-frontend/development/public/images/attendee-app.jpg -------------------------------------------------------------------------------- /public/images/google-play.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/serverwentdown/open-event-frontend/development/public/images/google-play.png -------------------------------------------------------------------------------- /app/controllers/events/view/videoroom.js: -------------------------------------------------------------------------------- 1 | import Controller from '@ember/controller'; 2 | 3 | export default class extends Controller {} 4 | -------------------------------------------------------------------------------- /app/templates/components/ui-table/cell/admin/sales/cell-amount.hbs: -------------------------------------------------------------------------------- 1 | {{currency-symbol @extraRecords.paymentCurrency}} {{format-money @record}} -------------------------------------------------------------------------------- /docs/images/Frontend_Branding.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/serverwentdown/open-event-frontend/development/docs/images/Frontend_Branding.png -------------------------------------------------------------------------------- /public/images/copyright/pdd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/serverwentdown/open-event-frontend/development/public/images/copyright/pdd.png -------------------------------------------------------------------------------- /public/images/copyright/pdw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/serverwentdown/open-event-frontend/development/public/images/copyright/pdw.png -------------------------------------------------------------------------------- /public/images/organizer-app.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/serverwentdown/open-event-frontend/development/public/images/organizer-app.jpg -------------------------------------------------------------------------------- /public/images/pricing-header.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/serverwentdown/open-event-frontend/development/public/images/pricing-header.jpg -------------------------------------------------------------------------------- /app/components/range-slider.js: -------------------------------------------------------------------------------- 1 | import nouislider from 'ember-cli-nouislider/components/range-slider'; 2 | 3 | export default nouislider; 4 | 5 | -------------------------------------------------------------------------------- /app/controllers/account/billing/invoices.js: -------------------------------------------------------------------------------- 1 | import Controller from '@ember/controller'; 2 | 3 | export default class extends Controller { 4 | } 5 | -------------------------------------------------------------------------------- /app/controllers/events/view/videoroom/create.js: -------------------------------------------------------------------------------- 1 | import Controller from '@ember/controller'; 2 | 3 | export default class extends Controller {} 4 | -------------------------------------------------------------------------------- /app/controllers/events/view/videoroom/edit.js: -------------------------------------------------------------------------------- 1 | import Controller from '@ember/controller'; 2 | 3 | export default class extends Controller {} 4 | -------------------------------------------------------------------------------- /public/images/organizer-android.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/serverwentdown/open-event-frontend/development/public/images/organizer-android.jpg -------------------------------------------------------------------------------- /app/session-stores/application.js: -------------------------------------------------------------------------------- 1 | import CookieStore from 'ember-simple-auth/session-stores/cookie'; 2 | 3 | export default CookieStore.extend(); 4 | -------------------------------------------------------------------------------- /app/templates/admin/settings/images.hbs: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/templates/components/ui-table/cell/events/cell-amount.hbs: -------------------------------------------------------------------------------- 1 | {{currency-symbol this.extraRecords.event.paymentCurrency}} {{format-money this.record}} -------------------------------------------------------------------------------- /app/templates/loading.hbs: -------------------------------------------------------------------------------- 1 | {{! This will be automatically rendered while a page is loading }} 2 |
3 | -------------------------------------------------------------------------------- /app/utils/testing.js: -------------------------------------------------------------------------------- 1 | import config from 'open-event-frontend/config/environment'; 2 | 3 | export const isTesting = config.environment === 'test'; 4 | -------------------------------------------------------------------------------- /public/fonts/lato-v17-latin-100.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/serverwentdown/open-event-frontend/development/public/fonts/lato-v17-latin-100.woff -------------------------------------------------------------------------------- /public/fonts/lato-v17-latin-100.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/serverwentdown/open-event-frontend/development/public/fonts/lato-v17-latin-100.woff2 -------------------------------------------------------------------------------- /public/fonts/lato-v17-latin-300.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/serverwentdown/open-event-frontend/development/public/fonts/lato-v17-latin-300.woff -------------------------------------------------------------------------------- /public/fonts/lato-v17-latin-300.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/serverwentdown/open-event-frontend/development/public/fonts/lato-v17-latin-300.woff2 -------------------------------------------------------------------------------- /public/fonts/lato-v17-latin-700.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/serverwentdown/open-event-frontend/development/public/fonts/lato-v17-latin-700.woff -------------------------------------------------------------------------------- /public/fonts/lato-v17-latin-700.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/serverwentdown/open-event-frontend/development/public/fonts/lato-v17-latin-700.woff2 -------------------------------------------------------------------------------- /public/fonts/lato-v17-latin-900.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/serverwentdown/open-event-frontend/development/public/fonts/lato-v17-latin-900.woff -------------------------------------------------------------------------------- /public/fonts/lato-v17-latin-900.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/serverwentdown/open-event-frontend/development/public/fonts/lato-v17-latin-900.woff2 -------------------------------------------------------------------------------- /public/images/app-landing-header.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/serverwentdown/open-event-frontend/development/public/images/app-landing-header.jpg -------------------------------------------------------------------------------- /public/images/copyright/pdd-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/serverwentdown/open-event-frontend/development/public/images/copyright/pdd-logo.png -------------------------------------------------------------------------------- /public/images/copyright/pdw-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/serverwentdown/open-event-frontend/development/public/images/copyright/pdw-logo.png -------------------------------------------------------------------------------- /public/images/payment-logos/alipay.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/serverwentdown/open-event-frontend/development/public/images/payment-logos/alipay.png -------------------------------------------------------------------------------- /public/images/payment-logos/omise.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/serverwentdown/open-event-frontend/development/public/images/payment-logos/omise.png -------------------------------------------------------------------------------- /public/images/payment-logos/paypal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/serverwentdown/open-event-frontend/development/public/images/payment-logos/paypal.png -------------------------------------------------------------------------------- /public/images/payment-logos/paytm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/serverwentdown/open-event-frontend/development/public/images/payment-logos/paytm.png -------------------------------------------------------------------------------- /public/images/payment-logos/stripe.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/serverwentdown/open-event-frontend/development/public/images/payment-logos/stripe.png -------------------------------------------------------------------------------- /public/images/placeholders/Other.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/serverwentdown/open-event-frontend/development/public/images/placeholders/Other.jpg -------------------------------------------------------------------------------- /public/images/placeholders/avatar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/serverwentdown/open-event-frontend/development/public/images/placeholders/avatar.png -------------------------------------------------------------------------------- /app/templates/admin/content/index.hbs: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/templates/events/view/edit/attendee.hbs: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/templates/events/view/edit/sponsors.hbs: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /public/fonts/lato-v17-latin-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/serverwentdown/open-event-frontend/development/public/fonts/lato-v17-latin-regular.woff -------------------------------------------------------------------------------- /public/images/copyright/attribution.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/serverwentdown/open-event-frontend/development/public/images/copyright/attribution.png -------------------------------------------------------------------------------- /app/templates/account/billing/payment-info.hbs: -------------------------------------------------------------------------------- 1 |
2 | 3 |
-------------------------------------------------------------------------------- /app/templates/admin/events/import.hbs: -------------------------------------------------------------------------------- 1 |
2 | 3 | 4 |
5 | -------------------------------------------------------------------------------- /app/templates/components/ui-table/cell/admin/users/cell-created-at.hbs: -------------------------------------------------------------------------------- 1 | 2 | {{moment-from-now this.record}} 3 | 4 | -------------------------------------------------------------------------------- /public/fonts/lato-v17-latin-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/serverwentdown/open-event-frontend/development/public/fonts/lato-v17-latin-regular.woff2 -------------------------------------------------------------------------------- /public/images/copyright/attribution-nc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/serverwentdown/open-event-frontend/development/public/images/copyright/attribution-nc.png -------------------------------------------------------------------------------- /public/images/copyright/attribution-nd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/serverwentdown/open-event-frontend/development/public/images/copyright/attribution-nd.png -------------------------------------------------------------------------------- /public/images/copyright/attribution-sa.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/serverwentdown/open-event-frontend/development/public/images/copyright/attribution-sa.png -------------------------------------------------------------------------------- /app/templates/account/profile.hbs: -------------------------------------------------------------------------------- 1 |
2 | 3 |
4 | -------------------------------------------------------------------------------- /app/templates/components/ui-table/cell/events/view/tickets/access-codes/cell-url.hbs: -------------------------------------------------------------------------------- 1 | {{this.record}} 2 | -------------------------------------------------------------------------------- /app/templates/components/ui-table/cell/events/view/tickets/discount-codes/cell-validity.hbs: -------------------------------------------------------------------------------- 1 | 2 | {{general-date this.record 'date-time-short'}} 3 | 4 | -------------------------------------------------------------------------------- /app/templates/components/ui-table/header-sorting-icons.hbs: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/templates/events/view/edit/basic-details.hbs: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/templates/events/view/edit/other-details.hbs: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /config/optional-features.json: -------------------------------------------------------------------------------- 1 | { 2 | "application-template-wrapper": false, 3 | "jquery-integration": true, 4 | "template-only-glimmer-components": true 5 | } 6 | -------------------------------------------------------------------------------- /public/images/copyright/attribution-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/serverwentdown/open-event-frontend/development/public/images/copyright/attribution-logo.png -------------------------------------------------------------------------------- /public/images/copyright/attribution-nc-nd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/serverwentdown/open-event-frontend/development/public/images/copyright/attribution-nc-nd.png -------------------------------------------------------------------------------- /public/images/copyright/attribution-nc-sa.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/serverwentdown/open-event-frontend/development/public/images/copyright/attribution-nc-sa.png -------------------------------------------------------------------------------- /.env.example: -------------------------------------------------------------------------------- 1 | GOOGLE_API_KEY="Sample Key" 2 | API_HOST=https://open-event.dokku.fossasia.org 3 | MAP_DISPLAY=embed 4 | FASTBOOT_DISABLED=true 5 | #HCAPTCHA_SITE_KEY="" 6 | -------------------------------------------------------------------------------- /app/styles/components/tabbed-navigation.scss: -------------------------------------------------------------------------------- 1 | .tabbed-navigation { 2 | .vertical-item { 3 | display: block !important; 4 | text-align: center; 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /app/templates/components/ui-table/cell/events/view/speakers/speaker-mobile.hbs: -------------------------------------------------------------------------------- 1 | {{#if this.record}} 2 | {{this.record}} 3 | {{else}} 4 | {{t 'Not Provided'}} 5 | {{/if}} -------------------------------------------------------------------------------- /app/templates/components/ui-table/cell/events/view/tickets/discount-codes/cell-url.hbs: -------------------------------------------------------------------------------- 1 | {{this.record}} 2 | -------------------------------------------------------------------------------- /app/templates/events/view/edit/sessions-speakers.hbs: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/templates/login.hbs: -------------------------------------------------------------------------------- 1 |
2 |
3 | 4 |
5 |
-------------------------------------------------------------------------------- /app/templates/public/coc.hbs: -------------------------------------------------------------------------------- 1 |

2 | {{t 'Code of Conduct'}} 3 |

4 |
5 | {{sanitize this.model.codeOfConduct}} 6 | -------------------------------------------------------------------------------- /kubernetes/travis/eventyay-b3ebbd09f2d2.json.enc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/serverwentdown/open-event-frontend/development/kubernetes/travis/eventyay-b3ebbd09f2d2.json.enc -------------------------------------------------------------------------------- /public/images/copyright/attribution-nc-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/serverwentdown/open-event-frontend/development/public/images/copyright/attribution-nc-logo.png -------------------------------------------------------------------------------- /public/images/copyright/attribution-nd-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/serverwentdown/open-event-frontend/development/public/images/copyright/attribution-nd-logo.png -------------------------------------------------------------------------------- /public/images/copyright/attribution-sa-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/serverwentdown/open-event-frontend/development/public/images/copyright/attribution-sa-logo.png -------------------------------------------------------------------------------- /types/ember-data/types/registries/model.d.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Catch-all for ember-data. 3 | */ 4 | export default interface ModelRegistry { 5 | [key: string]: any; 6 | } 7 | -------------------------------------------------------------------------------- /app/templates/admin/users/view/account/profile.hbs: -------------------------------------------------------------------------------- 1 |
2 | 3 |
-------------------------------------------------------------------------------- /app/templates/components/ui-table/cell/cell-input-number.hbs: -------------------------------------------------------------------------------- 1 |
2 | 3 |
4 | -------------------------------------------------------------------------------- /hooks/build: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | docker build \ 3 | --build-arg api_host=$API_HOST \ 4 | --build-arg google_api_key=$GOOGLE_API_KEY \ 5 | -t $IMAGE_NAME \ 6 | --no-cache . 7 | 8 | -------------------------------------------------------------------------------- /public/images/copyright/attribution-nc-nd-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/serverwentdown/open-event-frontend/development/public/images/copyright/attribution-nc-nd-logo.png -------------------------------------------------------------------------------- /public/images/copyright/attribution-nc-sa-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/serverwentdown/open-event-frontend/development/public/images/copyright/attribution-nc-sa-logo.png -------------------------------------------------------------------------------- /scripts/container_start.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | node ./scripts/fastboot-server.js 4 | 5 | if [ "$FASTBOOT_DISABLED" == "true" ] 6 | then 7 | nginx -g 'daemon off;' 8 | fi 9 | -------------------------------------------------------------------------------- /app/components/public/stream/jitsi-stream.hbs: -------------------------------------------------------------------------------- 1 |
2 | -------------------------------------------------------------------------------- /app/templates/components/ui-table/cell/cell-image.hbs: -------------------------------------------------------------------------------- 1 | Event logo 2 | -------------------------------------------------------------------------------- /app/templates/components/ui-table/cell/events/cell-download-invoice.hbs: -------------------------------------------------------------------------------- 1 | 2 | {{@record}} 3 | 4 | -------------------------------------------------------------------------------- /app/templates/components/ui-table/cell/events/view/sessions/cell-session-state.hbs: -------------------------------------------------------------------------------- 1 | 2 |
{{t-var (capitalize this.record)}}
3 |
4 | -------------------------------------------------------------------------------- /app/utils/form.js: -------------------------------------------------------------------------------- 1 | import $ from 'jquery'; 2 | 3 | export const resetFormElement = e => { 4 | e = $(e); 5 | e.wrap('
').closest('form').get(0).reset(); 6 | e.unwrap(); 7 | }; 8 | -------------------------------------------------------------------------------- /app/templates/components/ui-table/cell/admin/sales/cell-action.hbs: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /app/templates/components/ui-table/cell/events/view/sessions/cell-is-mail-sent.hbs: -------------------------------------------------------------------------------- 1 | 2 | {{#if this.record}} 3 | {{t 'Yes'}} 4 | {{else}} 5 | {{t 'No'}} 6 | {{/if}} 7 | 8 | -------------------------------------------------------------------------------- /app/utils/dictionary/genders.ts: -------------------------------------------------------------------------------- 1 | export const genders = [ 2 | { 3 | name: 'Female' 4 | }, 5 | { 6 | name: 'Male' 7 | }, 8 | { 9 | name: 'Other' 10 | } 11 | ]; 12 | -------------------------------------------------------------------------------- /app/controllers/events.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Controller from '@ember/controller'; 3 | @classic 4 | export default class EventsController extends Controller {} 5 | -------------------------------------------------------------------------------- /app/extensions/ember-table/component.js: -------------------------------------------------------------------------------- 1 | import component from 'ember-table/components/ember-table/component'; 2 | import layout from './template'; 3 | 4 | component.reopen({ 5 | layout 6 | }); 7 | -------------------------------------------------------------------------------- /app/initializers/accounting.js: -------------------------------------------------------------------------------- 1 | import { currency } from 'accounting/settings'; 2 | 3 | export default { 4 | name: 'accounting.js', 5 | initialize() { 6 | currency.symbol = ''; 7 | } 8 | }; 9 | -------------------------------------------------------------------------------- /app/models/service.js: -------------------------------------------------------------------------------- 1 | import attr from 'ember-data/attr'; 2 | import ModelBase from 'open-event-frontend/models/base'; 3 | 4 | export default ModelBase.extend({ 5 | name: attr('string') 6 | }); 7 | -------------------------------------------------------------------------------- /app/templates/components/orders/ticket-price.hbs: -------------------------------------------------------------------------------- 1 | {{#if (eq @ticket.type 'free')}} 2 | {{t "Free"}} 3 | {{else}} 4 | 5 | {{/if}} 6 | -------------------------------------------------------------------------------- /app/templates/components/ui-table/cell/admin/events/event-no-front.hbs: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/components/errors/not-found.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Component from '@ember/component'; 3 | 4 | @classic 5 | export default class NotFound extends Component {} 6 | -------------------------------------------------------------------------------- /app/components/ui-table/cell/cell-date.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Component from '@ember/component'; 3 | @classic 4 | export default class CellDate extends Component {} 5 | -------------------------------------------------------------------------------- /app/components/ui-table/cell/cell-link.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Component from '@ember/component'; 3 | @classic 4 | export default class CellLink extends Component {} 5 | -------------------------------------------------------------------------------- /app/routes/account/billing/invoices.js: -------------------------------------------------------------------------------- 1 | import Route from '@ember/routing/route'; 2 | 3 | export default class extends Route { 4 | titleToken() { 5 | return this.l10n.t('Invoices'); 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /app/templates/admin/settings/index.hbs: -------------------------------------------------------------------------------- 1 |
2 | 3 |
-------------------------------------------------------------------------------- /app/components/errors/generic-error.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Component from '@ember/component'; 3 | 4 | @classic 5 | export default class GenericError extends Component {} 6 | -------------------------------------------------------------------------------- /app/components/errors/server-error.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Component from '@ember/component'; 3 | 4 | @classic 5 | export default class ServerError extends Component {} 6 | -------------------------------------------------------------------------------- /app/components/event-invoice/event-info.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Component from '@ember/component'; 3 | 4 | @classic 5 | export default class EventInfo extends Component {} 6 | -------------------------------------------------------------------------------- /app/components/event-invoice/payee-info.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Component from '@ember/component'; 3 | 4 | @classic 5 | export default class PayeeInfo extends Component {} 6 | -------------------------------------------------------------------------------- /app/components/public/speaker-list.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Component from '@ember/component'; 3 | 4 | @classic 5 | export default class SpeakerList extends Component {} 6 | -------------------------------------------------------------------------------- /app/components/tables/default.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Component from '@ember/component'; 3 | 4 | @classic 5 | export default class Tables extends Component { 6 | 7 | } 8 | -------------------------------------------------------------------------------- /app/components/ui-table/cell/cell-event.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Component from '@ember/component'; 3 | 4 | @classic 5 | export default class CellEvent extends Component {} 6 | -------------------------------------------------------------------------------- /app/components/ui-table/cell/cell-image.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Component from '@ember/component'; 3 | 4 | @classic 5 | export default class CellImage extends Component {} 6 | -------------------------------------------------------------------------------- /app/components/ui-table/cell/cell-label.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Component from '@ember/component'; 3 | 4 | @classic 5 | export default class CellLabel extends Component {} 6 | -------------------------------------------------------------------------------- /app/components/ui-table/cell/cell-roles.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Component from '@ember/component'; 3 | 4 | @classic 5 | export default class CellRoles extends Component {} 6 | -------------------------------------------------------------------------------- /app/templates/reset-password.hbs: -------------------------------------------------------------------------------- 1 |
2 |
3 | 4 |
5 |
-------------------------------------------------------------------------------- /app/utils/string.js: -------------------------------------------------------------------------------- 1 | import { camelCase } from 'lodash-es'; 2 | 3 | export const pascalCase = string => { 4 | string = camelCase(string); 5 | return string.charAt(0).toUpperCase() + string.slice(1); 6 | }; 7 | -------------------------------------------------------------------------------- /app/components/errors/forbidden-error.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Component from '@ember/component'; 3 | 4 | @classic 5 | export default class ForbiddenError extends Component {} 6 | -------------------------------------------------------------------------------- /app/components/event-invoice/billing-info.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Component from '@ember/component'; 3 | 4 | @classic 5 | export default class BillingInfo extends Component {} 6 | -------------------------------------------------------------------------------- /app/components/orders/organizer-info.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Component from '@ember/component'; 3 | 4 | @classic 5 | export default class OrganizerInfo extends Component {} 6 | -------------------------------------------------------------------------------- /app/components/ui-table/cell/cell-buttons.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Component from '@ember/component'; 3 | 4 | @classic 5 | export default class CellButtons extends Component {} 6 | -------------------------------------------------------------------------------- /app/components/ui-table/cell/cell-tickets.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Component from '@ember/component'; 3 | 4 | @classic 5 | export default class CellTickets extends Component {} 6 | -------------------------------------------------------------------------------- /app/components/ui-table/cell/cell-validity.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Component from '@ember/component'; 3 | @classic 4 | export default class CellValidity extends Component {} 5 | -------------------------------------------------------------------------------- /app/components/ui-table/expand-row-cell.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Component from '@ember/component'; 3 | 4 | @classic 5 | export default class ExpandRowCell extends Component {} 6 | -------------------------------------------------------------------------------- /app/controllers/public/schedule.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Controller from '@ember/controller'; 3 | 4 | @classic 5 | export default class ScheduleController extends Controller {} 6 | -------------------------------------------------------------------------------- /app/controllers/public/speakers.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Controller from '@ember/controller'; 3 | 4 | @classic 5 | export default class SpeakersController extends Controller {} 6 | -------------------------------------------------------------------------------- /app/initializers/extensions.js: -------------------------------------------------------------------------------- 1 | import 'open-event-frontend/extensions/ember-table/component'; 2 | 3 | export function initialize() {} 4 | 5 | export default { 6 | name: 'extensions', 7 | initialize 8 | }; 9 | -------------------------------------------------------------------------------- /app/templates/admin/settings/analytics.hbs: -------------------------------------------------------------------------------- 1 |
2 | 3 |
-------------------------------------------------------------------------------- /app/templates/components/ui-table/cell/admin/events/event-is-featured.hbs: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/templates/components/ui-table/cell/admin/events/event-is-promoted.hbs: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/templates/components/ui-table/cell/cell-sponsor-image.hbs: -------------------------------------------------------------------------------- 1 | Event logo 2 | -------------------------------------------------------------------------------- /app/templates/components/ui-table/cell/cell-validity.hbs: -------------------------------------------------------------------------------- 1 | 2 | {{general-date this.record 'date-time-short'}} 3 |
To
4 | {{general-date this.extraRecords.validTill 'date-time-short'}} 5 |
6 | -------------------------------------------------------------------------------- /app/components/event-invoice/invoice-summary.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Component from '@ember/component'; 3 | 4 | @classic 5 | export default class InvoiceSummary extends Component {} 6 | -------------------------------------------------------------------------------- /app/components/ui-table/cell/cell-code-buttons.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Component from '@ember/component'; 3 | @classic 4 | export default class CellCodeButtons extends Component {} 5 | -------------------------------------------------------------------------------- /app/components/ui-table/cell/cell-event-date.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Component from '@ember/component'; 3 | 4 | @classic 5 | export default class CellEventDate extends Component {} 6 | -------------------------------------------------------------------------------- /app/components/ui-table/cell/cell-sessions.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Component from '@ember/component'; 3 | 4 | @classic 5 | export default class CellSessions extends Component {} 6 | -------------------------------------------------------------------------------- /app/components/ui-table/cell/cell-speakers.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Component from '@ember/component'; 3 | 4 | @classic 5 | export default class CellSpeakers extends Component {} 6 | -------------------------------------------------------------------------------- /app/components/ui-table/cell/events/cell-action.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Component from '@ember/component'; 3 | 4 | @classic 5 | export default class CellAction extends Component {} 6 | -------------------------------------------------------------------------------- /app/components/ui-table/cell/events/cell-amount.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Component from '@ember/component'; 3 | 4 | @classic 5 | export default class CellAmount extends Component {} 6 | -------------------------------------------------------------------------------- /app/templates/components/ui-table/cell/admin/reports/system-logs/mail-logs/cell-mail-message.hbs: -------------------------------------------------------------------------------- 1 |
2 | {{this.extraRecords.subject}} 3 |
4 | 5 | {{sanitize this.record}} 6 | 7 | -------------------------------------------------------------------------------- /app/templates/components/ui-table/cell/cell-speakers.hbs: -------------------------------------------------------------------------------- 1 |
2 | {{#each this.record as |speaker|}} 3 |
4 | {{speaker.name}} 5 |
6 | {{/each}} 7 |
8 | -------------------------------------------------------------------------------- /app/templates/components/ui-table/cell/events/view/speakers/cell-is-featured.hbs: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/components/public/featured-speaker-list.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Component from '@ember/component'; 3 | 4 | @classic 5 | export default class FeaturedSpeakerList extends Component {} 6 | -------------------------------------------------------------------------------- /app/components/ui-table/cell/admin/sales/cell-action.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Component from '@ember/component'; 3 | 4 | @classic 5 | export default class CellAction extends Component {} 6 | -------------------------------------------------------------------------------- /app/components/ui-table/cell/admin/users/cell-status.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Component from '@ember/component'; 3 | 4 | @classic 5 | export default class CellStatus extends Component {} 6 | -------------------------------------------------------------------------------- /app/components/ui-table/cell/cell-event-general.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Component from '@ember/component'; 3 | 4 | @classic 5 | export default class CellEventGeneral extends Component {} 6 | -------------------------------------------------------------------------------- /app/components/ui-table/cell/cell-event-state.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Component from '@ember/component'; 3 | 4 | @classic 5 | export default class CellEventState extends Component {} 6 | -------------------------------------------------------------------------------- /app/components/ui-table/cell/cell-input-number.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Component from '@ember/component'; 3 | 4 | @classic 5 | export default class CellInputNumber extends Component {} 6 | -------------------------------------------------------------------------------- /app/components/ui-table/cell/cell-simple-date.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Component from '@ember/component'; 3 | 4 | @classic 5 | export default class CellSimpleDate extends Component {} 6 | -------------------------------------------------------------------------------- /app/components/ui-table/cell/cell-sponsor-image.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Component from '@ember/component'; 3 | 4 | @classic 5 | export default class CellSponsorImage extends Component {} 6 | -------------------------------------------------------------------------------- /app/components/ui-table/cell/cell-title-message.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Component from '@ember/component'; 3 | 4 | @classic 5 | export default class CellTitleMessage extends Component {} 6 | -------------------------------------------------------------------------------- /app/components/ui-table/header-rows-grouped.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Component from '@ember/component'; 3 | 4 | @classic 5 | export default class HeaderRowsGrouped extends Component {} 6 | -------------------------------------------------------------------------------- /app/components/ui-table/header-sorting-icons.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Component from '@ember/component'; 3 | 4 | @classic 5 | export default class HeaderSortingIcons extends Component {} 6 | -------------------------------------------------------------------------------- /app/templates/admin/settings/payment-gateway.hbs: -------------------------------------------------------------------------------- 1 |
2 | 3 |
-------------------------------------------------------------------------------- /app/templates/admin/settings/ticket-fees.hbs: -------------------------------------------------------------------------------- 1 |
2 | 3 |
-------------------------------------------------------------------------------- /app/templates/events/view/videoroom/create.hbs: -------------------------------------------------------------------------------- 1 | 6 | -------------------------------------------------------------------------------- /app/templates/events/view/videoroom/edit.hbs: -------------------------------------------------------------------------------- 1 | 6 | -------------------------------------------------------------------------------- /app/components/forms/admin/settings/system/mail-settings.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Component from '@ember/component'; 3 | 4 | @classic 5 | export default class MailSettings extends Component {} 6 | -------------------------------------------------------------------------------- /app/components/ui-table/cell/admin/messages/cell-options.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Component from '@ember/component'; 3 | 4 | @classic 5 | export default class CellOptions extends Component {} 6 | -------------------------------------------------------------------------------- /app/components/ui-table/cell/admin/sales/status/cell-dated.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Component from '@ember/component'; 3 | 4 | @classic 5 | export default class CellDated extends Component {} 6 | -------------------------------------------------------------------------------- /app/components/ui-table/cell/admin/users/cell-actions.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Component from '@ember/component'; 3 | 4 | @classic 5 | export default class CellActions extends Component {} 6 | -------------------------------------------------------------------------------- /app/components/ui-table/cell/cell-simple-buttons.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Component from '@ember/component'; 3 | 4 | @classic 5 | export default class CellSimpleButtons extends Component {} 6 | -------------------------------------------------------------------------------- /app/components/ui-table/cell/cell-sponsor-options.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Component from '@ember/component'; 3 | 4 | @classic 5 | export default class CellSponsorOptions extends Component {} 6 | -------------------------------------------------------------------------------- /app/styles/components/ticket-list.scss: -------------------------------------------------------------------------------- 1 | .ticket-list { 2 | .payment.icons { 3 | font-size: 26px; 4 | line-height: 36px; 5 | padding-right: 12px !important; 6 | vertical-align: middle !important; 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /app/components/orders/event-info.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Component from '@ember/component'; 3 | 4 | @classic 5 | export default class EventInfo extends Component { 6 | showBanner = true; 7 | } 8 | -------------------------------------------------------------------------------- /app/components/ui-table/cell/admin/sales/status/cell-amount.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Component from '@ember/component'; 3 | 4 | @classic 5 | export default class CellAmount extends Component {} 6 | -------------------------------------------------------------------------------- /app/components/ui-table/cell/admin/users/cell-created-at.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Component from '@ember/component'; 3 | 4 | @classic 5 | export default class CellCreatedAt extends Component {} 6 | -------------------------------------------------------------------------------- /app/components/ui-table/cell/admin/users/cell-event-roles.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Component from '@ember/component'; 3 | 4 | @classic 5 | export default class CellEventRoles extends Component {} 6 | -------------------------------------------------------------------------------- /app/components/ui-table/cell/admin/users/cell-first-name.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Component from '@ember/component'; 3 | 4 | @classic 5 | export default class CellFirstName extends Component {} 6 | -------------------------------------------------------------------------------- /app/components/ui-table/cell/admin/users/cell-system-roles.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Component from '@ember/component'; 3 | 4 | @classic 5 | export default class CellSystemRoles extends Component {} 6 | -------------------------------------------------------------------------------- /app/components/ui-table/cell/admin/users/cell-user-links.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Component from '@ember/component'; 3 | 4 | @classic 5 | export default class CellUserLinks extends Component {} 6 | -------------------------------------------------------------------------------- /app/components/ui-table/cell/cell-sessions-dashboard.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Component from '@ember/component'; 3 | 4 | @classic 5 | export default class CellSessionsDashboard extends Component {} 6 | -------------------------------------------------------------------------------- /app/components/ui-table/cell/cell-speakers-dashboard.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Component from '@ember/component'; 3 | 4 | @classic 5 | export default class CellSpeakersDashboard extends Component {} 6 | -------------------------------------------------------------------------------- /app/components/ui-table/cell/cell-sponsor-sanitize.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Component from '@ember/component'; 3 | 4 | @classic 5 | export default class CellSponsorSanitize extends Component {} 6 | -------------------------------------------------------------------------------- /app/components/ui-table/cell/events/view/sessions/cell-rating.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Component from '@ember/component'; 3 | 4 | @classic 5 | export default class CellRating extends Component {} 6 | -------------------------------------------------------------------------------- /app/components/ui-table/cell/events/view/speakers/cell-buttons.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Component from '@ember/component'; 3 | 4 | @classic 5 | export default class CellButtons extends Component {} 6 | -------------------------------------------------------------------------------- /app/components/ui-table/cell/events/view/speakers/speaker-logo.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Component from '@ember/component'; 3 | 4 | @classic 5 | export default class SpeakerLogo extends Component {} 6 | -------------------------------------------------------------------------------- /app/components/ui-table/cell/events/view/tickets/orders/cell-date.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Component from '@ember/component'; 3 | 4 | @classic 5 | export default class CellDate extends Component {} 6 | -------------------------------------------------------------------------------- /app/templates/admin/settings/microservices.hbs: -------------------------------------------------------------------------------- 1 |
2 | 3 |
4 | -------------------------------------------------------------------------------- /app/components/forms/admin/settings/system/captcha-form.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Component from '@ember/component'; 3 | 4 | @classic 5 | export default class CaptchaForm extends Component { 6 | 7 | } 8 | -------------------------------------------------------------------------------- /app/components/forms/admin/settings/system/social-media-token.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Component from '@ember/component'; 3 | 4 | @classic 5 | export default class SocialMediaToken extends Component {} 6 | -------------------------------------------------------------------------------- /app/components/ui-table/cell/admin/events/event-is-featured.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Component from '@ember/component'; 3 | 4 | @classic 5 | export default class EventIsFeatured extends Component {} 6 | -------------------------------------------------------------------------------- /app/components/ui-table/cell/admin/events/event-is-promoted.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Component from '@ember/component'; 3 | 4 | @classic 5 | export default class EventIsPromoted extends Component {} 6 | -------------------------------------------------------------------------------- /app/components/ui-table/cell/events/view/speakers/speaker-mobile.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Component from '@ember/component'; 3 | 4 | @classic 5 | export default class SpeakerMobile extends Component {} 6 | -------------------------------------------------------------------------------- /app/components/ui-table/cell/events/view/tickets/access-codes/cell-url.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Component from '@ember/component'; 3 | 4 | @classic 5 | export default class CellUrl extends Component {} 6 | -------------------------------------------------------------------------------- /app/components/ui-table/cell/events/view/tickets/attendees/cell-order.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Component from '@ember/component'; 3 | 4 | @classic 5 | export default class CellOrder extends Component {} 6 | -------------------------------------------------------------------------------- /app/components/ui-table/cell/events/view/tickets/attendees/cell-price.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Component from '@ember/component'; 3 | 4 | @classic 5 | export default class CellPrice extends Component {} 6 | -------------------------------------------------------------------------------- /app/components/ui-table/cell/events/view/tickets/orders/cell-action.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Component from '@ember/component'; 3 | 4 | @classic 5 | export default class CellAction extends Component {} 6 | -------------------------------------------------------------------------------- /app/components/ui-table/cell/events/view/tickets/orders/cell-amount.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Component from '@ember/component'; 3 | 4 | @classic 5 | export default class CellAmount extends Component {} 6 | -------------------------------------------------------------------------------- /app/components/ui-table/cell/events/view/tickets/orders/cell-order.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Component from '@ember/component'; 3 | 4 | @classic 5 | export default class CellOrder extends Component {} 6 | -------------------------------------------------------------------------------- /app/routes/admin/users/view.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Route from '@ember/routing/route'; 3 | 4 | @classic 5 | export default class ViewRoute extends Route { 6 | templateName = 'admin/users/view'; 7 | } 8 | -------------------------------------------------------------------------------- /app/serializers/event-topic.js: -------------------------------------------------------------------------------- 1 | import ApplicationSerializer from 'open-event-frontend/serializers/application'; 2 | 3 | export default ApplicationSerializer.extend({ 4 | attrs: { 5 | subTopics: 'event-sub-topics' 6 | } 7 | }); 8 | -------------------------------------------------------------------------------- /app/styles/app.scss: -------------------------------------------------------------------------------- 1 | @import 'font'; 2 | @import 'vars'; 3 | @import 'libs/helpers'; 4 | @import 'libs/stripe_connect'; 5 | @import 'partials/all'; 6 | @import 'pages/all'; 7 | @import 'components/all'; 8 | @import 'ember-power-select'; 9 | -------------------------------------------------------------------------------- /app/components/ui-table/cell/admin/users/cell-last-accessed-at.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Component from '@ember/component'; 3 | 4 | @classic 5 | export default class CellLastAccessedAt extends Component {} 6 | -------------------------------------------------------------------------------- /app/components/ui-table/cell/events/view/sessions/cell-is-mail-sent.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Component from '@ember/component'; 3 | 4 | @classic 5 | export default class CellIsMailSent extends Component {} 6 | -------------------------------------------------------------------------------- /app/components/ui-table/cell/events/view/sessions/cell-lock-session.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Component from '@ember/component'; 3 | 4 | @classic 5 | export default class CellLockSession extends Component {} 6 | -------------------------------------------------------------------------------- /app/components/ui-table/cell/events/view/speakers/cell-is-featured.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Component from '@ember/component'; 3 | 4 | @classic 5 | export default class CellIsFeatured extends Component {} 6 | -------------------------------------------------------------------------------- /app/components/ui-table/cell/events/view/tickets/attendees/cell-action.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Component from '@ember/component'; 3 | 4 | @classic 5 | export default class CellAction extends Component {} 6 | -------------------------------------------------------------------------------- /app/components/ui-table/cell/events/view/tickets/discount-codes/cell-url.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Component from '@ember/component'; 3 | 4 | @classic 5 | export default class CellUrl extends Component {} 6 | -------------------------------------------------------------------------------- /app/components/ui-table/cell/events/view/tickets/discount-codes/cell-value.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Component from '@ember/component'; 3 | 4 | @classic 5 | export default class CellValue extends Component {} 6 | -------------------------------------------------------------------------------- /app/components/ui-table/cell/events/view/tickets/orders/cell-actions.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Component from '@ember/component'; 3 | 4 | @classic 5 | export default class CellActions extends Component {} 6 | -------------------------------------------------------------------------------- /app/serializers/event-sub-topic.js: -------------------------------------------------------------------------------- 1 | import ApplicationSerializer from 'open-event-frontend/serializers/application'; 2 | 3 | export default ApplicationSerializer.extend({ 4 | attrs: { 5 | placeholder: 'custom-placeholder' 6 | } 7 | }); 8 | -------------------------------------------------------------------------------- /app/components/forms/admin/settings/analytics-form.js: -------------------------------------------------------------------------------- 1 | import Component from '@ember/component'; 2 | 3 | export default Component.extend({ 4 | actions: { 5 | submit() { 6 | this.sendAction('save'); 7 | } 8 | } 9 | }); 10 | -------------------------------------------------------------------------------- /app/components/forms/admin/settings/system/order-expiry-form.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Component from '@ember/component'; 3 | 4 | @classic 5 | export default class OrderExpiryForm extends Component { 6 | 7 | } 8 | -------------------------------------------------------------------------------- /app/components/ui-table/cell/admin/reports/system-logs/activity-logs/cell-time.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Component from '@ember/component'; 3 | 4 | @classic 5 | export default class CellTime extends Component {} 6 | -------------------------------------------------------------------------------- /app/components/ui-table/cell/admin/reports/system-logs/notification-logs/cell-for.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Component from '@ember/component'; 3 | 4 | @classic 5 | export default class CellFor extends Component {} 6 | -------------------------------------------------------------------------------- /app/components/ui-table/cell/events/view/sessions/cell-session-title.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Component from '@ember/component'; 3 | 4 | @classic 5 | export default class CellSessionTitle extends Component {} 6 | -------------------------------------------------------------------------------- /app/components/ui-table/cell/events/view/speakers/cell-simple-sessions.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Component from '@ember/component'; 3 | 4 | @classic 5 | export default class CellSimpleSessions extends Component {} 6 | -------------------------------------------------------------------------------- /app/components/ui-table/cell/events/view/tickets/access-codes/cell-actions.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Component from '@ember/component'; 3 | 4 | @classic 5 | export default class CellActions extends Component {} 6 | -------------------------------------------------------------------------------- /app/components/ui-table/cell/events/view/tickets/cell-add-order-price.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Component from '@ember/component'; 3 | 4 | @classic 5 | export default class CellAddOrderPrice extends Component {} 6 | -------------------------------------------------------------------------------- /app/components/ui-table/cell/events/view/tickets/cell-add-order-total.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Component from '@ember/component'; 3 | 4 | @classic 5 | export default class CellAddOrderTotal extends Component {} 6 | -------------------------------------------------------------------------------- /app/components/ui-table/cell/events/view/tickets/discount-codes/cell-actions.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Component from '@ember/component'; 3 | 4 | @classic 5 | export default class CellActions extends Component {} 6 | -------------------------------------------------------------------------------- /app/components/ui-table/cell/events/view/tickets/discount-codes/cell-status.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Component from '@ember/component'; 3 | 4 | @classic 5 | export default class CellStatus extends Component {} 6 | -------------------------------------------------------------------------------- /app/helpers/is-input-field.js: -------------------------------------------------------------------------------- 1 | import { helper } from '@ember/component/helper'; 2 | 3 | export const isInputField = params => params[0] === 'text' || params[0] === 'number' || params[0] === 'email'; 4 | 5 | export default helper(isInputField); 6 | -------------------------------------------------------------------------------- /app/models/panel-permission.js: -------------------------------------------------------------------------------- 1 | import attr from 'ember-data/attr'; 2 | import ModelBase from 'open-event-frontend/models/base'; 3 | 4 | export default ModelBase.extend({ 5 | panelName : attr('string'), 6 | canAccess : attr('boolean') 7 | }); 8 | -------------------------------------------------------------------------------- /app/styles/components/forms/basic-details-step.scss: -------------------------------------------------------------------------------- 1 | .payments { 2 | margin-top: 10px !important; 3 | } 4 | 5 | .basic-details { 6 | margin-right: 6px !important; 7 | } 8 | 9 | .tax-info { 10 | padding: .5em 1em !important; 11 | } 12 | -------------------------------------------------------------------------------- /config/l10n-extract.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | 'bug-address' : 'open-event@googlegroups.com', 3 | 'package' : 'open-event-frontend', 4 | 'skip-all-dependencies' : true, 5 | 'copyright' : 'FOSSASIA' 6 | }; 7 | -------------------------------------------------------------------------------- /app/components/ui-table/cell/admin/reports/system-logs/notification-logs/cell-time.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Component from '@ember/component'; 3 | 4 | @classic 5 | export default class CellTime extends Component {} 6 | -------------------------------------------------------------------------------- /app/components/ui-table/cell/admin/sales/invoice-user.hbs: -------------------------------------------------------------------------------- 1 | {{ @record.email }} 2 | -------------------------------------------------------------------------------- /app/components/ui-table/cell/events/view/tickets/cell-add-order-quantity.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Component from '@ember/component'; 3 | 4 | @classic 5 | export default class CellAddOrderQuantity extends Component {} 6 | -------------------------------------------------------------------------------- /app/components/ui-table/cell/events/view/tickets/discount-codes/cell-validity.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Component from '@ember/component'; 3 | 4 | @classic 5 | export default class CellValidity extends Component {} 6 | -------------------------------------------------------------------------------- /app/models/admin-sales-by-location.js: -------------------------------------------------------------------------------- 1 | import attr from 'ember-data/attr'; 2 | import ModelBase from 'open-event-frontend/models/base'; 3 | 4 | export default ModelBase.extend({ 5 | locationName : attr('string'), 6 | sales : attr() 7 | }); 8 | -------------------------------------------------------------------------------- /app/templates/components/public/speaker-list.hbs: -------------------------------------------------------------------------------- 1 |

{{t 'Speakers'}}

2 |
3 | {{#each this.speakers as |speaker|}} 4 | 5 | {{/each}} 6 |
7 | -------------------------------------------------------------------------------- /app/templates/components/widgets/forms/date-picker.hbs: -------------------------------------------------------------------------------- 1 | 2 | {{#if this.icon}} 3 | 4 | {{/if}} 5 | 6 | -------------------------------------------------------------------------------- /app/components/public/social-links.js: -------------------------------------------------------------------------------- 1 | import { A } from '@ember/array'; 2 | import Component from '@ember/component'; 3 | 4 | export default Component.extend({ 5 | classNames: ['ui', 'basic', 'segment', 'm-0', 'pt-0'], 6 | 7 | socialLinks: A() 8 | }); 9 | -------------------------------------------------------------------------------- /app/components/ui-table/cell/admin/reports/system-logs/mail-logs/cell-mail-message.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Component from '@ember/component'; 3 | 4 | @classic 5 | export default class CellMailMessage extends Component {} 6 | -------------------------------------------------------------------------------- /app/components/ui-table/cell/admin/reports/system-logs/notification-logs/cell-sanitize.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Component from '@ember/component'; 3 | 4 | @classic 5 | export default class CellSanitize extends Component {} 6 | -------------------------------------------------------------------------------- /app/models/order-statistics-ticket.js: -------------------------------------------------------------------------------- 1 | import attr from 'ember-data/attr'; 2 | import ModelBase from 'open-event-frontend/models/base'; 3 | 4 | export default ModelBase.extend({ 5 | orders : attr(), 6 | tickets : attr(), 7 | sales : attr() 8 | }); 9 | -------------------------------------------------------------------------------- /app/styles/pages/public.scss: -------------------------------------------------------------------------------- 1 | .public { 2 | height: 100vh; 3 | overflow: hidden !important; 4 | } 5 | 6 | .side-menu { 7 | position: sticky; 8 | top: 14px; 9 | } 10 | 11 | .social-links { 12 | display: flex; 13 | flex-wrap: wrap; 14 | } 15 | -------------------------------------------------------------------------------- /app/templates/components/public/sponsor-item.hbs: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /app/templates/components/welcome-header.hbs: -------------------------------------------------------------------------------- 1 |
2 |

{{t 'The simplest way to create events.'}}

3 | 4 | {{t 'Create Event'}} 5 | 6 |
7 | -------------------------------------------------------------------------------- /types/open-event-frontend/index.d.ts: -------------------------------------------------------------------------------- 1 | import Ember from 'ember'; 2 | 3 | declare global { 4 | interface Array extends Ember.ArrayPrototypeExtensions {} 5 | // interface Function extends Ember.FunctionPrototypeExtensions {} 6 | } 7 | 8 | export {}; 9 | -------------------------------------------------------------------------------- /app/components/modals/confirm-user-delete-modal.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import ModalBase from 'open-event-frontend/components/modals/modal-base'; 3 | 4 | @classic 5 | export default class ConfirmUserDeleteModal extends ModalBase {} 6 | -------------------------------------------------------------------------------- /app/routes/admin/users/view/index.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Route from '@ember/routing/route'; 3 | 4 | @classic 5 | export default class IndexRoute extends Route { 6 | templateName = 'admin/users/view/account/profile'; 7 | } 8 | -------------------------------------------------------------------------------- /app/templates/components/tables/headers/sort.hbs: -------------------------------------------------------------------------------- 1 |
2 | {{yield}} 3 | {{#if this.column.isSortable}} 4 | 5 | {{/if}} 6 |
7 | -------------------------------------------------------------------------------- /netlify.toml: -------------------------------------------------------------------------------- 1 | [build] 2 | command = "node scripts/l10n.js generate && ember build -prod" 3 | [build.environment] 4 | NODE_VERSION = "14" 5 | [context.production] 6 | [context.production.environment] 7 | API_HOST = "https://open-event.dokku.fossasia.org" 8 | -------------------------------------------------------------------------------- /scripts/test_fastboot.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | node ./scripts/fastboot-server.js & 4 | sleep 5 5 | FASTBOOT_PID=$! 6 | STATUS_CODE=$(curl -s -o /dev/null -w "%{http_code}" http://localhost:4000/) 7 | kill -9 $FASTBOOT_PID 8 | 9 | [ 200 = $STATUS_CODE ] 10 | -------------------------------------------------------------------------------- /app/components/modals/event-revision.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import ModalBase from 'open-event-frontend/components/modals/modal-base'; 3 | 4 | @classic 5 | export default class EventRevision extends ModalBase { 6 | isSmall = true; 7 | } 8 | -------------------------------------------------------------------------------- /app/components/n-times.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import { tagName } from '@ember-decorators/component'; 3 | import Component from '@ember/component'; 4 | 5 | @classic 6 | @tagName('') 7 | export default class NTimes extends Component {} 8 | -------------------------------------------------------------------------------- /app/components/modals/event-share-modal.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import ModalBase from 'open-event-frontend/components/modals/modal-base'; 3 | 4 | @classic 5 | export default class EventShareModal extends ModalBase { 6 | isSmall = true; 7 | } 8 | -------------------------------------------------------------------------------- /app/components/tables/utilities/page-size-input.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Component from '@ember/component'; 3 | 4 | @classic 5 | export default class PageSizeInput extends Component { 6 | sizes = [10, 25, 50, 100, 250, 'All']; 7 | } 8 | -------------------------------------------------------------------------------- /app/controllers/reset-password.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Controller from '@ember/controller'; 3 | 4 | @classic 5 | export default class ResetPasswordController extends Controller { 6 | queryParams = ['token']; 7 | token = null; 8 | } 9 | -------------------------------------------------------------------------------- /app/helpers/random.ts: -------------------------------------------------------------------------------- 1 | import Helper from '@ember/component/helper'; 2 | 3 | export default Helper.helper(function(items: string[]): string { 4 | if (Array.isArray(items[0])) { 5 | items = items[0]; 6 | } 7 | return items[items.length * Math.random() | 0]; 8 | }); 9 | -------------------------------------------------------------------------------- /app/routes/account.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Route from '@ember/routing/route'; 3 | 4 | @classic 5 | export default class AccountRoute extends Route { 6 | titleToken() { 7 | return this.l10n.t('Account'); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /app/routes/admin/events.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Route from '@ember/routing/route'; 3 | 4 | @classic 5 | export default class EventsRoute extends Route { 6 | titleToken() { 7 | return this.l10n.t('Events'); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /app/routes/admin/sales.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Route from '@ember/routing/route'; 3 | 4 | @classic 5 | export default class SalesRoute extends Route { 6 | titleToken() { 7 | return this.l10n.t('Sales'); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /app/routes/admin/users.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Route from '@ember/routing/route'; 3 | 4 | @classic 5 | export default class UsersRoute extends Route { 6 | titleToken() { 7 | return this.l10n.t('Users'); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /app/templates/components/ui-table/header-rows-grouped.hbs: -------------------------------------------------------------------------------- 1 | {{#each this.groupedHeaders as |row|}} 2 | 3 | {{#each row as |cell|}} 4 | {{cell.title}} 5 | {{/each}} 6 | 7 | {{/each}} 8 | -------------------------------------------------------------------------------- /app/components/public/sponsor-item.hbs: -------------------------------------------------------------------------------- 1 |
2 | 3 | 4 | 5 |
6 | -------------------------------------------------------------------------------- /app/models/admin-sales-by-marketer.js: -------------------------------------------------------------------------------- 1 | import attr from 'ember-data/attr'; 2 | import ModelBase from 'open-event-frontend/models/base'; 3 | 4 | export default ModelBase.extend({ 5 | fullname : attr('string'), 6 | email : attr('string'), 7 | sales : attr() 8 | }); 9 | -------------------------------------------------------------------------------- /app/routes/admin/content.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Route from '@ember/routing/route'; 3 | 4 | @classic 5 | export default class ContentRoute extends Route { 6 | titleToken() { 7 | return this.l10n.t('Content'); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /app/routes/admin/reports.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Route from '@ember/routing/route'; 3 | 4 | @classic 5 | export default class ReportsRoute extends Route { 6 | titleToken() { 7 | return this.l10n.t('Reports'); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /app/routes/public/cfs.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Route from '@ember/routing/route'; 3 | 4 | @classic 5 | export default class CfsRoute extends Route { 6 | titleToken() { 7 | return this.l10n.t('Call for Speakers'); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /app/routes/public/coc.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Route from '@ember/routing/route'; 3 | 4 | @classic 5 | export default class CocRoute extends Route { 6 | titleToken() { 7 | return this.l10n.t('Code of Conduct'); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /app/templates/admin/settings/billing.hbs: -------------------------------------------------------------------------------- 1 |
2 | 3 |
4 | -------------------------------------------------------------------------------- /app/templates/components/widgets/forms/color-picker.hbs: -------------------------------------------------------------------------------- 1 | 2 | 3 | {{yield}} 4 | -------------------------------------------------------------------------------- /kubernetes/yamls/frontend/frontend-service.yml: -------------------------------------------------------------------------------- 1 | kind: Service 2 | apiVersion: v1 3 | metadata: 4 | name: frontend 5 | namespace: web 6 | spec: 7 | ports: 8 | - port: 4000 9 | protocol: TCP 10 | targetPort: 4000 11 | selector: 12 | app: frontend 13 | -------------------------------------------------------------------------------- /app/components/modals/proposal-withdraw-modal.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import ModalBase from 'open-event-frontend/components/modals/modal-base'; 3 | 4 | @classic 5 | export default class ProposalDeleteModal extends ModalBase { 6 | isSmall = true; 7 | } 8 | -------------------------------------------------------------------------------- /app/routes/admin/events/import.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Route from '@ember/routing/route'; 3 | 4 | @classic 5 | export default class ImportRoute extends Route { 6 | titleToken() { 7 | return this.l10n.t('Import'); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /app/routes/events/view/tickets.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Route from '@ember/routing/route'; 3 | 4 | @classic 5 | export default class TicketsRoute extends Route { 6 | titleToken() { 7 | return this.l10n.t('Tickets'); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /app/routes/my-tickets/upcoming.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Route from '@ember/routing/route'; 3 | 4 | @classic 5 | export default class UpcomingRoute extends Route { 6 | titleToken() { 7 | return this.l10n.t('Upcoming'); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /app/routes/not-found.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Route from '@ember/routing/route'; 3 | 4 | @classic 5 | export default class NotFoundRoute extends Route { 6 | titleToken() { 7 | return this.l10n.t('Page Not Found'); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /app/components/session-card.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import { classNames } from '@ember-decorators/component'; 3 | import Component from '@ember/component'; 4 | 5 | @classic 6 | @classNames('column') 7 | export default class SessionCard extends Component {} 8 | -------------------------------------------------------------------------------- /app/models/admin-statistics-event.js: -------------------------------------------------------------------------------- 1 | import attr from 'ember-data/attr'; 2 | import ModelBase from 'open-event-frontend/models/base'; 3 | 4 | export default ModelBase.extend({ 5 | draft : attr('number'), 6 | published : attr('number'), 7 | past : attr('number') 8 | }); 9 | -------------------------------------------------------------------------------- /app/routes/admin/permissions.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Route from '@ember/routing/route'; 3 | 4 | @classic 5 | export default class PermissionsRoute extends Route { 6 | titleToken() { 7 | return this.l10n.t('Permissions'); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /app/routes/events/view/settings.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Route from '@ember/routing/route'; 3 | 4 | @classic 5 | export default class SettingsRoute extends Route { 6 | titleToken() { 7 | return this.l10n.t('Settings'); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /app/routes/events/view/settings/export.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Route from '@ember/routing/route'; 3 | 4 | @classic 5 | export default class ExportRoute extends Route { 6 | titleToken() { 7 | return this.l10n.t('Export'); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /app/components/ui-table/cell/events/view/sessions/cell-notify.hbs: -------------------------------------------------------------------------------- 1 | 4 | 5 | -------------------------------------------------------------------------------- /app/routes/admin/settings/billing.js: -------------------------------------------------------------------------------- 1 | import Route from '@ember/routing/route'; 2 | 3 | export default class extends Route { 4 | titleToken() { 5 | return this.l10n.t('Admin Billing'); 6 | } 7 | 8 | model() { 9 | return this.modelFor('admin.settings'); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /app/templates/account/password.hbs: -------------------------------------------------------------------------------- 1 | 7 | -------------------------------------------------------------------------------- /app/routes/admin/reports/system-logs.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Route from '@ember/routing/route'; 3 | 4 | @classic 5 | export default class SystemLogsRoute extends Route { 6 | titleToken() { 7 | return this.l10n.t('System Logs'); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /app/routes/events/view/team.ts: -------------------------------------------------------------------------------- 1 | import Route from '@ember/routing/route'; 2 | 3 | export default class EventsViewTeam extends Route.extend({ 4 | // anything which *must* be merged to prototype here 5 | }) { 6 | titleToken(): string { 7 | return this.l10n.t('Team'); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /app/routes/events/view/tickets/attendees.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Route from '@ember/routing/route'; 3 | 4 | @classic 5 | export default class AttendeesRoute extends Route { 6 | titleToken() { 7 | return this.l10n.t('Attendees'); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /app/utils/dictionary/age-groups.ts: -------------------------------------------------------------------------------- 1 | export const ageGroups = [ 2 | { 3 | age: '19 or less' 4 | }, 5 | { 6 | age: '20 to 29' 7 | }, 8 | { 9 | age: '30 to 39' 10 | }, 11 | { 12 | age: '40 to 49' 13 | }, 14 | { 15 | age: '50 or above' 16 | } 17 | ]; 18 | -------------------------------------------------------------------------------- /app/components/public/copyright-item.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import { classNames } from '@ember-decorators/component'; 3 | import Component from '@ember/component'; 4 | 5 | @classic 6 | @classNames('copyright') 7 | export default class CopyrightItem extends Component {} 8 | -------------------------------------------------------------------------------- /app/routes/admin/users/view/account/profile.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Route from '@ember/routing/route'; 3 | 4 | @classic 5 | export default class ProfileRoute extends Route { 6 | model() { 7 | return this.modelFor('admin.users.view'); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /app/routes/events/view/tickets/access-codes.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Route from '@ember/routing/route'; 3 | 4 | @classic 5 | export default class AccessCodesRoute extends Route { 6 | titleToken() { 7 | return this.l10n.t('Access codes'); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /app/templates/components/ui-table/cell/events/view/speakers/speaker-logo.hbs: -------------------------------------------------------------------------------- 1 |
2 | Speaker 3 |
-------------------------------------------------------------------------------- /app/templates/components/ui-table/cell/events/view/tickets/attendees/cell-date.hbs: -------------------------------------------------------------------------------- 1 | {{#if (eq @extraRecords.order.status 'completed')}} 2 | {{general-date @extraRecords.order.completedAt 'date-time-short'}} 3 | {{else}} 4 | {{general-date @extraRecords.order.createdAt 'date-time-short'}} 5 | {{/if}} 6 | -------------------------------------------------------------------------------- /app/models/order-statistics-event.js: -------------------------------------------------------------------------------- 1 | import attr from 'ember-data/attr'; 2 | import ModelBase from 'open-event-frontend/models/base'; 3 | 4 | export default ModelBase.extend({ 5 | identifier : attr('string'), 6 | orders : attr(), 7 | tickets : attr(), 8 | sales : attr() 9 | }); 10 | -------------------------------------------------------------------------------- /app/helpers/custom-related-field.js: -------------------------------------------------------------------------------- 1 | import { helper } from '@ember/component/helper'; 2 | 3 | export function customRelatedField(params/* , hash*/) { 4 | 5 | const record = params[0].get(params[1]); 6 | return record.get(params[2]); 7 | 8 | } 9 | 10 | export default helper(customRelatedField); 11 | -------------------------------------------------------------------------------- /app/routes/admin/permissions/index.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Route from '@ember/routing/route'; 3 | 4 | @classic 5 | export default class IndexRoute extends Route { 6 | beforeModel() { 7 | return this.transitionTo('admin.permissions.system-roles'); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /app/templates/components/ui-table/cell/events/view/tickets/orders/cell-date.hbs: -------------------------------------------------------------------------------- 1 | {{#if this.record}} 2 |
3 | {{general-date this.record 'date-time-short'}} 4 |
5 | {{else}} 6 |
7 | {{general-date this.extraRecords.createdAt 'date-time-short'}} 8 |
9 | {{/if}} 10 | -------------------------------------------------------------------------------- /app/controllers/admin/sales/locations.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Controller from '@ember/controller'; 3 | import AdminSalesMixin from 'open-event-frontend/mixins/admin-sales'; 4 | 5 | @classic 6 | export default class LocationsController extends Controller.extend(AdminSalesMixin) {} 7 | -------------------------------------------------------------------------------- /app/routes/events/view/tickets/discount-codes.js: -------------------------------------------------------------------------------- 1 | 2 | import classic from 'ember-classic-decorator'; 3 | import Route from '@ember/routing/route'; 4 | 5 | @classic 6 | export default class DiscountCodesRoute extends Route { 7 | titleToken() { 8 | return this.l10n.t('Discount codes'); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /app/templates/components/scheduler/unscheduled-session.hbs: -------------------------------------------------------------------------------- 1 |
2 | 3 | {{this.session.title}} | 4 | 5 | {{#each this.session.speakers as |speaker|}} 6 | 7 | {{speaker.name}} 8 | 9 | {{/each}} 10 |
-------------------------------------------------------------------------------- /app/templates/components/widgets/forms/time-picker.hbs: -------------------------------------------------------------------------------- 1 |
2 | {{#if this.icon}} 3 | 4 | {{/if}} 5 | 6 |
7 | -------------------------------------------------------------------------------- /app/controllers/admin/sales/organizers.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Controller from '@ember/controller'; 3 | import AdminSalesMixin from 'open-event-frontend/mixins/admin-sales'; 4 | 5 | @classic 6 | export default class OrganizersController extends Controller.extend(AdminSalesMixin) {} 7 | -------------------------------------------------------------------------------- /app/controllers/my-tickets/past.js: -------------------------------------------------------------------------------- 1 | import Controller from '@ember/controller'; 2 | import { action } from '@ember/object'; 3 | 4 | export default class extends Controller { 5 | @action 6 | shareEvent(event) { 7 | this.set('eventToShare', event); 8 | this.set('isShareModalOpen', true); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /app/helpers/includes.js: -------------------------------------------------------------------------------- 1 | import Helper from '@ember/component/helper'; 2 | 3 | export function includes(params) { 4 | if (params[0] && typeof params[0].includes === 'function') { 5 | return params[0].includes(params[1]); 6 | } 7 | return false; 8 | } 9 | 10 | export default Helper.helper(includes); 11 | -------------------------------------------------------------------------------- /app/models/admin-sales-by-organizer.js: -------------------------------------------------------------------------------- 1 | import attr from 'ember-data/attr'; 2 | import ModelBase from 'open-event-frontend/models/base'; 3 | 4 | export default ModelBase.extend({ 5 | firstName : attr('string'), 6 | lastName : attr('string'), 7 | email : attr('string'), 8 | sales : attr() 9 | }); 10 | -------------------------------------------------------------------------------- /app/models/ticket-fee.js: -------------------------------------------------------------------------------- 1 | import attr from 'ember-data/attr'; 2 | import ModelBase from 'open-event-frontend/models/base'; 3 | 4 | export default ModelBase.extend({ 5 | country : attr('string'), 6 | currency : attr('string'), 7 | serviceFee : attr('number'), 8 | maximumFee : attr('number') 9 | }); 10 | -------------------------------------------------------------------------------- /app/routes/account/index.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Route from '@ember/routing/route'; 3 | 4 | @classic 5 | export default class IndexRoute extends Route { 6 | beforeModel() { 7 | super.beforeModel(...arguments); 8 | this.transitionTo('account.profile'); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /app/templates/components/ui-table/cell/admin/reports/system-logs/notification-logs/cell-for.hbs: -------------------------------------------------------------------------------- 1 | {{#if (or this.record.firstName this.record.lastName)}} 2 | {{this.record.firstName}} {{this.record.lastName}} 3 | {{else}} 4 | {{t 'No Name Provided'}} 5 | {{/if}} 6 |
{{this.record.email}}
7 | -------------------------------------------------------------------------------- /app/components/events/view/overview/event-sponsors.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import { classNames } from '@ember-decorators/component'; 3 | import Component from '@ember/component'; 4 | 5 | @classic 6 | @classNames('ui', 'fluid', 'card') 7 | export default class EventSponsors extends Component {} 8 | -------------------------------------------------------------------------------- /app/components/events/view/overview/speaker-session.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import { classNames } from '@ember-decorators/component'; 3 | import Component from '@ember/component'; 4 | 5 | @classic 6 | @classNames('ui', 'fluid', 'card') 7 | export default class SpeakerSession extends Component {} 8 | -------------------------------------------------------------------------------- /app/controllers/my-tickets/upcoming.js: -------------------------------------------------------------------------------- 1 | import Controller from '@ember/controller'; 2 | import { action } from '@ember/object'; 3 | 4 | export default class extends Controller { 5 | @action 6 | shareEvent(event) { 7 | this.set('eventToShare', event); 8 | this.set('isShareModalOpen', true); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /app/routes/admin/reports/kubernetes-server-logs.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Route from '@ember/routing/route'; 3 | 4 | @classic 5 | export default class KubernetesServerLogsRoute extends Route { 6 | titleToken() { 7 | return this.l10n.t('Kubernetes Server Logs'); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /app/routes/events/index.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Route from '@ember/routing/route'; 3 | 4 | @classic 5 | export default class IndexRoute extends Route { 6 | beforeModel() { 7 | super.beforeModel(...arguments); 8 | this.transitionTo('events.list', 'live'); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /app/templates/components/public/featured-speaker-list.hbs: -------------------------------------------------------------------------------- 1 |

{{t 'Featured Speakers'}}

2 |
3 | {{#each this.speakers as |speaker|}} 4 | 5 | {{/each}} 6 |
7 | -------------------------------------------------------------------------------- /fastboot/initializers/ajax.js: -------------------------------------------------------------------------------- 1 | export default { 2 | name: 'ajax-service', 3 | initialize() { 4 | // noop 5 | // This is to override Fastboot's initializer which prevents ember-fetch from working 6 | // https://github.com/ember-fastboot/ember-cli-fastboot/blob/master/fastboot/initializers/ajax.js 7 | } 8 | }; 9 | -------------------------------------------------------------------------------- /.ember-cli: -------------------------------------------------------------------------------- 1 | { 2 | /** 3 | Ember CLI sends analytics information by default. The data is completely 4 | anonymous, but there are times when you might want to disable this behavior. 5 | 6 | Setting `disableAnalytics` to true will prevent any data from being sent. 7 | */ 8 | "disableAnalytics": false 9 | } 10 | -------------------------------------------------------------------------------- /app/controllers/admin/sales/discounted-events.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Controller from '@ember/controller'; 3 | import AdminSalesMixin from 'open-event-frontend/mixins/admin-sales'; 4 | 5 | @classic 6 | export default class DiscountedEventsController extends Controller.extend(AdminSalesMixin) {} 7 | -------------------------------------------------------------------------------- /app/helpers/not-includes.js: -------------------------------------------------------------------------------- 1 | import Helper from '@ember/component/helper'; 2 | 3 | export function notIncludes(params) { 4 | if (params[0] && typeof params[0].includes === 'function') { 5 | return !(params[0].includes(params[1])); 6 | } 7 | return true; 8 | } 9 | 10 | export default Helper.helper(notIncludes); 11 | -------------------------------------------------------------------------------- /app/models/admin-statistics-mail.js: -------------------------------------------------------------------------------- 1 | import attr from 'ember-data/attr'; 2 | import ModelBase from 'open-event-frontend/models/base'; 3 | 4 | export default ModelBase.extend({ 5 | oneDay : attr('number'), 6 | threeDays : attr('number'), 7 | sevenDays : attr('number'), 8 | thirtyDays : attr('number') 9 | }); 10 | -------------------------------------------------------------------------------- /app/models/custom-form-option.js: -------------------------------------------------------------------------------- 1 | import attr from 'ember-data/attr'; 2 | import ModelBase from 'open-event-frontend/models/base'; 3 | import { belongsTo } from 'ember-data/relationships'; 4 | 5 | export default ModelBase.extend({ 6 | 7 | value : attr('string'), 8 | customForm : belongsTo('customForm') 9 | }); 10 | -------------------------------------------------------------------------------- /app/models/custom-system-role.js: -------------------------------------------------------------------------------- 1 | import attr from 'ember-data/attr'; 2 | import ModelBase from 'open-event-frontend/models/base'; 3 | import { hasMany } from 'ember-data/relationships'; 4 | 5 | export default ModelBase.extend({ 6 | name: attr('string'), 7 | 8 | panelPermissions: hasMany('panelPermission') 9 | }); 10 | -------------------------------------------------------------------------------- /app/models/event-type.js: -------------------------------------------------------------------------------- 1 | import attr from 'ember-data/attr'; 2 | import ModelBase from 'open-event-frontend/models/base'; 3 | import { hasMany } from 'ember-data/relationships'; 4 | 5 | export default ModelBase.extend({ 6 | name : attr('string'), 7 | slug : attr('string'), 8 | 9 | events: hasMany('event') 10 | }); 11 | -------------------------------------------------------------------------------- /app/routes/my-tickets/index.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Route from '@ember/routing/route'; 3 | 4 | @classic 5 | export default class IndexRoute extends Route { 6 | beforeModel() { 7 | super.beforeModel(...arguments); 8 | this.transitionTo('my-tickets.upcoming'); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /app/templates/components/tables/utilities/search-box.hbs: -------------------------------------------------------------------------------- 1 |
2 | 3 | 4 |
5 | -------------------------------------------------------------------------------- /app/components/events/view/overview/event-setup-checklist.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import { classNames } from '@ember-decorators/component'; 3 | import Component from '@ember/component'; 4 | 5 | @classic 6 | @classNames('ui', 'fluid', 'card') 7 | export default class EventSetupChecklist extends Component {} 8 | -------------------------------------------------------------------------------- /app/components/welcome-header.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import { classNames } from '@ember-decorators/component'; 3 | import Component from '@ember/component'; 4 | 5 | @classic 6 | @classNames('welcome-header', 'mobile', 'hidden', 'text', 'centered') 7 | export default class WelcomeHeader extends Component {} 8 | -------------------------------------------------------------------------------- /app/models/event-location.js: -------------------------------------------------------------------------------- 1 | import attr from 'ember-data/attr'; 2 | import ModelBase from 'open-event-frontend/models/base'; 3 | import { hasMany } from 'ember-data/relationships'; 4 | 5 | export default ModelBase.extend({ 6 | name : attr('string'), 7 | slug : attr('string'), 8 | 9 | events: hasMany('event') 10 | }); 11 | -------------------------------------------------------------------------------- /app/routes/account/billing/payment-info.js: -------------------------------------------------------------------------------- 1 | import Route from '@ember/routing/route'; 2 | import AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin'; 3 | 4 | export default class extends Route.extend(AuthenticatedRouteMixin) { 5 | titleToken() { 6 | return this.l10n.t('Payment Info'); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /app/routes/admin/events/index.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Route from '@ember/routing/route'; 3 | 4 | @classic 5 | export default class IndexRoute extends Route { 6 | beforeModel() { 7 | super.beforeModel(...arguments); 8 | this.transitionTo('admin.events.list', 'live'); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /app/routes/admin/reports/index.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Route from '@ember/routing/route'; 3 | 4 | @classic 5 | export default class IndexRoute extends Route { 6 | beforeModel() { 7 | super.beforeModel(...arguments); 8 | this.replaceWith('admin.reports.system-logs'); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /app/styles/components/ui-table.scss: -------------------------------------------------------------------------------- 1 | .ui-table { 2 | .ui.grid.no-right-margin { 3 | padding-right: 0; 4 | } 5 | 6 | .ui.search.no-right-margin { 7 | padding-right: 0; 8 | } 9 | 10 | .ui.grid.table-footer { 11 | padding-top: 10px; 12 | } 13 | } 14 | 15 | .table-body { 16 | vertical-align: 0; 17 | } 18 | -------------------------------------------------------------------------------- /app/templates/components/ui-table/cell/admin/users/cell-status.hbs: -------------------------------------------------------------------------------- 1 | {{#if (eq this.record 'active')}} 2 |
{{t 'Active'}}
3 | {{else if (eq this.record 'inactive')}} 4 |
{{t 'Inactive'}}
5 | {{else}} 6 |
{{t 'Deleted'}}
7 | {{/if}} 8 | -------------------------------------------------------------------------------- /app/templates/components/ui-table/cell/events/view/tickets/discount-codes/cell-value.hbs: -------------------------------------------------------------------------------- 1 | 2 | {{#if (eq this.extraRecords.type 'percent')}} 3 | {{this.record}} % 4 | {{else if (eq this.extraRecords.type 'amount')}} 5 | {{currency-symbol this.extraRecords.event.paymentCurrency}} {{this.record}} 6 | {{/if}} 7 | 8 | -------------------------------------------------------------------------------- /app/components/events/imports-history-section.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import { classNames } from '@ember-decorators/component'; 3 | import Component from '@ember/component'; 4 | 5 | @classic 6 | @classNames('ui', 'stackable', 'centered', 'grid') 7 | export default class ImportsHistorySection extends Component {} 8 | -------------------------------------------------------------------------------- /app/models/user-permission.js: -------------------------------------------------------------------------------- 1 | import attr from 'ember-data/attr'; 2 | import ModelBase from 'open-event-frontend/models/base'; 3 | 4 | export default ModelBase.extend({ 5 | name : attr('string'), 6 | description : attr('string'), 7 | unverifiedUser : attr('boolean'), 8 | anonymousUser : attr('boolean') 9 | }); 10 | -------------------------------------------------------------------------------- /app/routes/notifications/index.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Route from '@ember/routing/route'; 3 | 4 | @classic 5 | export default class IndexRoute extends Route { 6 | beforeModel() { 7 | super.beforeModel(...arguments); 8 | this.transitionTo('notifications.all', 'unread'); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /app/utils/dictionary/date-time.ts: -------------------------------------------------------------------------------- 1 | import moment from 'moment'; 2 | import 'moment-timezone'; 3 | 4 | export const timezones = moment.tz.names(); 5 | 6 | export const FORM_DATE_FORMAT = 'MM-DD-YYYY'; 7 | export const FORM_TIME_FORMAT = 'HH:mm'; 8 | 9 | export const FORM_DATE_TIME_FORMAT = `${FORM_DATE_FORMAT} ${FORM_TIME_FORMAT}`; 10 | -------------------------------------------------------------------------------- /docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '3' 2 | services: 3 | web: 4 | image: eventyay/open-event-frontend 5 | container_name: opev-frontend 6 | restart: unless-stopped 7 | env_file: 8 | - .env 9 | environment: 10 | INJECT_ENV: 'true' 11 | FASTBOOT_DISABLED: 'true' 12 | ports: 13 | - 4200:4000 14 | -------------------------------------------------------------------------------- /app/models/import-job.js: -------------------------------------------------------------------------------- 1 | import attr from 'ember-data/attr'; 2 | import ModelBase from 'open-event-frontend/models/base'; 3 | 4 | export default ModelBase.extend({ 5 | resultStatus : attr('string'), 6 | result : attr('string'), 7 | task : attr('string'), 8 | startsAt : attr('moment', { readOnly: true }) 9 | }); 10 | -------------------------------------------------------------------------------- /app/models/role.js: -------------------------------------------------------------------------------- 1 | import attr from 'ember-data/attr'; 2 | import ModelBase from 'open-event-frontend/models/base'; 3 | import { hasMany } from 'ember-data/relationships'; 4 | 5 | export default ModelBase.extend({ 6 | name : attr('string'), 7 | titleName : attr('string'), 8 | roleInvites : hasMany('role-invite') 9 | }); 10 | -------------------------------------------------------------------------------- /config/nginx.conf: -------------------------------------------------------------------------------- 1 | server { 2 | 3 | listen 4000; 4 | 5 | location / { 6 | root /fastboot/dist; 7 | index index.html index.htm; 8 | try_files $uri $uri/ /index.html; 9 | } 10 | 11 | error_page 500 502 503 504 /50x.html; 12 | 13 | location = /50x.html { 14 | root /fastboot/dist; 15 | } 16 | 17 | } 18 | -------------------------------------------------------------------------------- /lib/start-title/index.js: -------------------------------------------------------------------------------- 1 | /* eslint-env node */ 2 | 'use strict'; 3 | 4 | module.exports = { 5 | name: 'start-title', 6 | 7 | isDevelopingAddon() { 8 | return true; 9 | }, 10 | 11 | contentFor(type, config) { 12 | if (type === this.name) { 13 | return `${config.appName}`; 14 | } 15 | } 16 | }; 17 | -------------------------------------------------------------------------------- /app/models/mail.js: -------------------------------------------------------------------------------- 1 | import attr from 'ember-data/attr'; 2 | import ModelBase from 'open-event-frontend/models/base'; 3 | 4 | export default ModelBase.extend({ 5 | 6 | action : attr('string'), 7 | message : attr('string'), 8 | subject : attr('string'), 9 | recipient : attr('string'), 10 | time : attr('string') 11 | }); 12 | -------------------------------------------------------------------------------- /app/routes/admin/content/pages.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Route from '@ember/routing/route'; 3 | 4 | @classic 5 | export default class PagesRoute extends Route { 6 | titleToken() { 7 | return this.l10n.t('Pages'); 8 | } 9 | 10 | model() { 11 | return this.store.findAll('page'); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /app/routes/events/view/sessions/index.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Route from '@ember/routing/route'; 3 | 4 | @classic 5 | export default class IndexRoute extends Route { 6 | beforeModel() { 7 | super.beforeModel(...arguments); 8 | this.transitionTo('events.view.sessions.list', 'all'); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /app/components/orders/ticket-holder.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import { computed } from '@ember/object'; 3 | import Component from '@ember/component'; 4 | 5 | @classic 6 | export default class TicketHolder extends Component { 7 | @computed('data.user') 8 | get buyer() { 9 | return this.data.user; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /app/routes/events/view/videoroom/index.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Route from '@ember/routing/route'; 3 | 4 | @classic 5 | export default class IndexRoute extends Route { 6 | beforeModel() { 7 | super.beforeModel(...arguments); 8 | this.transitionTo('events.view.videoroom.list', 'all'); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /app/components/forms/events/view/edit-session.js: -------------------------------------------------------------------------------- 1 | import Component from '@ember/component'; 2 | import FormMixin from 'open-event-frontend/mixins/form'; 3 | 4 | export default Component.extend(FormMixin, { 5 | actions: { 6 | submit() { 7 | this.onValid(() => { 8 | this.sendAction('save'); 9 | }); 10 | } 11 | } 12 | }); 13 | -------------------------------------------------------------------------------- /app/extensions/ember-table/template.hbs: -------------------------------------------------------------------------------- 1 | 2 | 3 | {{yield (hash 4 | api=this.api 5 | head=(component "ember-thead" api=this.api) 6 | body=(component "ember-tbody" api=this.api) 7 | foot=(component "ember-tfoot" api=this.api) 8 | )}} 9 |
10 | -------------------------------------------------------------------------------- /app/routes/account/billing/invoices/index.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Route from '@ember/routing/route'; 3 | 4 | @classic 5 | export default class IndexRoute extends Route { 6 | beforeModel() { 7 | super.beforeModel(...arguments); 8 | this.transitionTo('account.billing.invoices.list', 'all'); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /app/routes/admin/users/view/events/index.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Route from '@ember/routing/route'; 3 | 4 | @classic 5 | export default class IndexRoute extends Route { 6 | beforeModel() { 7 | super.beforeModel(...arguments); 8 | this.transitionTo('admin.users.view.events.list', 'live'); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /app/routes/events/view/sessions.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Route from '@ember/routing/route'; 3 | 4 | @classic 5 | export default class SessionsRoute extends Route { 6 | titleToken() { 7 | return this.l10n.t('Sessions'); 8 | } 9 | 10 | model() { 11 | return this.modelFor('events.view'); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /app/routes/events/view/speakers.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Route from '@ember/routing/route'; 3 | 4 | @classic 5 | export default class SpeakersRoute extends Route { 6 | titleToken() { 7 | return this.l10n.t('Speakers'); 8 | } 9 | 10 | model() { 11 | return this.modelFor('events.view'); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /app/styles/partials/buttons.scss: -------------------------------------------------------------------------------- 1 | .sharp.button { 2 | border-radius: 0 !important; 3 | } 4 | 5 | .ui.wysihtml5-command-active.button { 6 | background-color: #c0c1c2; 7 | background-image: none; 8 | box-shadow: 0 0 0 1px transparent inset; 9 | color: rgba(0, 0, 0, .95); 10 | } 11 | 12 | .w-content-button { 13 | width: max-content; 14 | } 15 | -------------------------------------------------------------------------------- /app/components/forms/session-section.js: -------------------------------------------------------------------------------- 1 | import Component from '@ember/component'; 2 | import FormMixin from 'open-event-frontend/mixins/form'; 3 | import { languages } from 'open-event-frontend/utils/dictionary/languages'; 4 | import { orderBy } from 'lodash-es'; 5 | 6 | export default Component.extend(FormMixin, { 7 | languages: orderBy(languages, 'name') 8 | }); 9 | -------------------------------------------------------------------------------- /app/routes/admin/reports/system-logs/index.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Route from '@ember/routing/route'; 3 | 4 | @classic 5 | export default class IndexRoute extends Route { 6 | beforeModel() { 7 | super.beforeModel(...arguments); 8 | this.replaceWith('admin.reports.system-logs.activity-logs'); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /app/routes/admin/sales/revenue.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Route from '@ember/routing/route'; 3 | 4 | @classic 5 | export default class RevenueRoute extends Route { 6 | titleToken() { 7 | return this.l10n.t('Revenue'); 8 | } 9 | 10 | model() { 11 | return this.store.findAll('admin-sales-fee'); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /app/routes/admin/settings.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Route from '@ember/routing/route'; 3 | 4 | @classic 5 | export default class SettingsRoute extends Route { 6 | titleToken() { 7 | return this.l10n.t('Settings'); 8 | } 9 | 10 | model() { 11 | return this.store.queryRecord('setting', {}); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /app/routes/events/view/tickets/orders.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Route from '@ember/routing/route'; 3 | 4 | @classic 5 | export default class OrdersRoute extends Route { 6 | titleToken() { 7 | return this.l10n.t('Orders'); 8 | } 9 | 10 | model() { 11 | return this.modelFor('events.view'); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /app/routes/events/view/videoroom.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Route from '@ember/routing/route'; 3 | 4 | @classic 5 | export default class SpeakersRoute extends Route { 6 | titleToken() { 7 | return this.l10n.t('Microlocation'); 8 | } 9 | 10 | model() { 11 | return this.modelFor('events.view'); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /app/components/public/session-filter.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import { action } from '@ember/object'; 3 | import Component from '@ember/component'; 4 | 5 | @classic 6 | export default class SessionFilter extends Component { 7 | @action 8 | filter(trackId = null) { 9 | this.set('selectedTrackId', trackId); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /app/routes/events/view/tickets/orders/index.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Route from '@ember/routing/route'; 3 | 4 | @classic 5 | export default class IndexRoute extends Route { 6 | beforeModel() { 7 | super.beforeModel(...arguments); 8 | this.transitionTo('events.view.tickets.orders.list', 'completed'); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /app/templates/components/orders/organizer-info.hbs: -------------------------------------------------------------------------------- 1 |
2 |
3 |

{{t 'Organizer'}}

4 |
5 |
6 |

{{this.data.event.ownerName}}

7 |
8 | {{sanitize this.data.event.ownerDescription}} 9 |
10 |
11 | -------------------------------------------------------------------------------- /config/targets.js: -------------------------------------------------------------------------------- 1 | const browsers = [ 2 | 'Firefox >= 55', 'Chrome >=55', 'Android >= 4.4', 'Safari >= 10', 'iOS >= 10' 3 | ]; 4 | 5 | const isCI = !!process.env.CI; 6 | const isProduction = process.env.EMBER_ENV === 'production'; 7 | 8 | if (isCI || isProduction) { 9 | browsers.push('defaults'); 10 | } 11 | 12 | module.exports = { 13 | browsers 14 | }; 15 | -------------------------------------------------------------------------------- /app/helpers/currency-name.js: -------------------------------------------------------------------------------- 1 | import Helper from '@ember/component/helper'; 2 | import { find } from 'lodash-es'; 3 | import { paymentCurrencies } from 'open-event-frontend/utils/dictionary/payment'; 4 | 5 | export function currencyName(params) { 6 | return find(paymentCurrencies, ['code', params[0]]).name; 7 | } 8 | 9 | export default Helper.helper(currencyName); 10 | -------------------------------------------------------------------------------- /app/models/stripe-authorization.js: -------------------------------------------------------------------------------- 1 | import attr from 'ember-data/attr'; 2 | import ModelBase from 'open-event-frontend/models/base'; 3 | import { belongsTo } from 'ember-data/relationships'; 4 | 5 | export default ModelBase.extend({ 6 | stripeAuthCode : attr('string'), 7 | stripePublishableKey : attr('string'), 8 | 9 | event: belongsTo('event') 10 | }); 11 | -------------------------------------------------------------------------------- /app/routes/events/view/tickets/attendees/index.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Route from '@ember/routing/route'; 3 | 4 | @classic 5 | export default class IndexRoute extends Route { 6 | beforeModel() { 7 | super.beforeModel(...arguments); 8 | this.transitionTo('events.view.tickets.attendees.list', 'completed'); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /app/templates/components/ui-table/cell/events/view/tickets/attendees/cell-price.hbs: -------------------------------------------------------------------------------- 1 |
2 | 3 |
4 | {{#if this.extraRecords.discountCode.code}} 5 |
6 | {{this.extraRecords.discountCode.code}} 7 |
8 | {{/if}} -------------------------------------------------------------------------------- /app/adapters/admin-sales-fee.js: -------------------------------------------------------------------------------- 1 | import ApplicationAdapter from './application'; 2 | 3 | export default ApplicationAdapter.extend({ 4 | buildURL(modelName, id, snapshot, requestType, query) { 5 | let url = this._super(modelName, id, snapshot, requestType, query); 6 | url = url.replace('admin-sales-fee', 'admin/sales/fee'); 7 | return url; 8 | } 9 | }); 10 | -------------------------------------------------------------------------------- /app/models/admin-sales-by-event.js: -------------------------------------------------------------------------------- 1 | import attr from 'ember-data/attr'; 2 | import ModelBase from 'open-event-frontend/models/base'; 3 | 4 | export default ModelBase.extend({ 5 | name : attr('string'), 6 | endsAt : attr('moment'), 7 | startsAt : attr('moment'), 8 | paymentCurrency : attr('string'), 9 | sales : attr() 10 | }); 11 | -------------------------------------------------------------------------------- /app/routes/admin/sales/locations.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Route from '@ember/routing/route'; 3 | 4 | @classic 5 | export default class LocationsRoute extends Route { 6 | titleToken() { 7 | return this.l10n.t('Location'); 8 | } 9 | 10 | model() { 11 | return this.store.findAll('admin-sales-by-location'); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /app/routes/admin/sales/marketer.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Route from '@ember/routing/route'; 3 | 4 | @classic 5 | export default class MarketerRoute extends Route { 6 | titleToken() { 7 | return this.l10n.t('Marketer'); 8 | } 9 | 10 | model() { 11 | return this.store.findAll('admin-sales-by-marketer'); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /app/routes/admin/users/index.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Route from '@ember/routing/route'; 3 | 4 | @classic 5 | export default class IndexRoute extends Route { 6 | templateName = 'admin/users/list'; 7 | 8 | beforeModel() { 9 | super.beforeModel(...arguments); 10 | this.transitionTo('admin.users.list', 'all'); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /app/routes/events/view/tickets/discount-codes/index.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Route from '@ember/routing/route'; 3 | 4 | @classic 5 | export default class IndexRoute extends Route { 6 | beforeModel() { 7 | super.beforeModel(...arguments); 8 | this.transitionTo('events.view.tickets.discount-codes.list', 'all'); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /app/routes/public/speaker/view.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Route from '@ember/routing/route'; 3 | 4 | @classic 5 | export default class ViewRoute extends Route { 6 | titleToken(model) { 7 | return model.title; 8 | } 9 | 10 | model(params) { 11 | return this.store.findRecord('speaker', params.speaker_id); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /app/components/modals/login-signup-modal.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import { action } from '@ember/object'; 3 | import ModalBase from 'open-event-frontend/components/modals/modal-base'; 4 | 5 | @classic 6 | export default class LoginSignupModal extends ModalBase { 7 | @action 8 | toggleView() { 9 | this.set('isOpen', false); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /app/models/admin-sales-discounted.js: -------------------------------------------------------------------------------- 1 | import attr from 'ember-data/attr'; 2 | import ModelBase from 'open-event-frontend/models/base'; 3 | 4 | export default ModelBase.extend({ 5 | code : attr('string'), 6 | email : attr('string'), 7 | eventName : attr('string'), 8 | paymentCurrency : attr('string'), 9 | sales : attr() 10 | }); 11 | -------------------------------------------------------------------------------- /app/models/event-topic.js: -------------------------------------------------------------------------------- 1 | import attr from 'ember-data/attr'; 2 | import ModelBase from 'open-event-frontend/models/base'; 3 | import { hasMany } from 'ember-data/relationships'; 4 | 5 | export default ModelBase.extend({ 6 | name : attr('string'), 7 | slug : attr('string'), 8 | 9 | subTopics : hasMany('event-sub-topic'), 10 | events : hasMany('event') 11 | }); 12 | -------------------------------------------------------------------------------- /app/routes/admin/sales/organizers.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Route from '@ember/routing/route'; 3 | 4 | @classic 5 | export default class OrganizersRoute extends Route { 6 | titleToken() { 7 | return this.l10n.t('Organizer'); 8 | } 9 | 10 | model() { 11 | return this.store.findAll('admin-sales-by-organizer'); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /app/styles/components/all.scss: -------------------------------------------------------------------------------- 1 | @import 'ticket-list'; 2 | @import 'notification-dropdown'; 3 | @import 'speaker-list'; 4 | @import 'explore/side-bar'; 5 | @import 'events/view/settings/export'; 6 | @import 'tabbed-navigation'; 7 | @import 'ui-table'; 8 | @import 'scheduler'; 9 | @import 'infinity-loader'; 10 | @import 'track-item'; 11 | @import 'stream'; 12 | @import 'extras'; 13 | -------------------------------------------------------------------------------- /app/templates/components/widgets/twitter-timeline.hbs: -------------------------------------------------------------------------------- 1 | {{#if this.handle}} 2 | 6 | 7 | {{/if}} 8 | -------------------------------------------------------------------------------- /app/templates/register.hbs: -------------------------------------------------------------------------------- 1 |
2 |
3 | 9 |
10 |
11 | -------------------------------------------------------------------------------- /tests/unit/routes/events/view/team-test.ts: -------------------------------------------------------------------------------- 1 | import { module, test } from 'qunit'; 2 | import { setupTest } from 'ember-qunit'; 3 | 4 | module('Unit | Route | events/view/team', function(hooks) { 5 | setupTest(hooks); 6 | 7 | test('it exists', function(assert) { 8 | const route = this.owner.lookup('route:events/view/team'); 9 | assert.ok(route); 10 | }); 11 | }); 12 | -------------------------------------------------------------------------------- /app/components/modals/simple-modal.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import { action } from '@ember/object'; 3 | import ModalBase from 'open-event-frontend/components/modals/modal-base'; 4 | 5 | @classic 6 | export default class SimpleModal extends ModalBase { 7 | @action 8 | performAction() { 9 | this.close(); 10 | this.action(); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /app/routes/admin/sessions/index.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Route from '@ember/routing/route'; 3 | 4 | @classic 5 | export default class IndexRoute extends Route { 6 | templateName = 'admin/sessions/list'; 7 | 8 | beforeModel() { 9 | super.beforeModel(...arguments); 10 | this.transitionTo('admin.sessions.list', 'all'); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /app/routes/events.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Route from '@ember/routing/route'; 3 | import AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin'; 4 | 5 | @classic 6 | export default class EventsRoute extends Route.extend(AuthenticatedRouteMixin) { 7 | titleToken() { 8 | return this.l10n.t('Events'); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /app/routes/oauth.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Route from '@ember/routing/route'; 3 | 4 | @classic 5 | export default class OauthRoute extends Route { 6 | queryParams = { 7 | code : '', 8 | provider : '' 9 | }; 10 | 11 | model(queryParams) { 12 | this.controllerFor('oauth/callback').oauth(queryParams); 13 | } 14 | } 15 | 16 | -------------------------------------------------------------------------------- /app/routes/orders.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Route from '@ember/routing/route'; 3 | import AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin'; 4 | 5 | @classic 6 | export default class OrdersRoute extends Route.extend(AuthenticatedRouteMixin) { 7 | titleToken() { 8 | return this.l10n.t('Orders'); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /app/templates/admin/permissions.hbs: -------------------------------------------------------------------------------- 1 |
2 | 3 | 4 | {{t 'System Roles'}} 5 | 6 | 7 | {{t 'Event Roles'}} 8 | 9 | 10 |
11 | {{outlet}} 12 | -------------------------------------------------------------------------------- /app/adapters/admin-sales-by-event.js: -------------------------------------------------------------------------------- 1 | import ApplicationAdapter from './application'; 2 | 3 | export default ApplicationAdapter.extend({ 4 | buildURL(modelName, id, snapshot, requestType, query) { 5 | let url = this._super(modelName, id, snapshot, requestType, query); 6 | url = url.replace('admin-sales-by-event', 'admin/sales/by-event'); 7 | return url; 8 | } 9 | }); 10 | -------------------------------------------------------------------------------- /app/adapters/admin-sales-invoice.js: -------------------------------------------------------------------------------- 1 | import ApplicationAdapter from './application'; 2 | 3 | export default ApplicationAdapter.extend({ 4 | buildURL(modelName, id, snapshot, requestType, query) { 5 | let url = this._super(modelName, id, snapshot, requestType, query); 6 | url = url.replace('admin-sales-by-invoice', 'admin/sales/invoice'); 7 | return url; 8 | } 9 | }); 10 | -------------------------------------------------------------------------------- /app/adapters/admin-statistics-mail.js: -------------------------------------------------------------------------------- 1 | import ApplicationAdapter from './application'; 2 | 3 | export default ApplicationAdapter.extend({ 4 | buildURL(modelName, id, snapshot, requestType, query) { 5 | let url = this._super(modelName, id, snapshot, requestType, query); 6 | url = url.replace('admin-statistics-mail', 'admin/statistics/mail'); 7 | return url; 8 | } 9 | }); 10 | -------------------------------------------------------------------------------- /app/adapters/admin-statistics-user.js: -------------------------------------------------------------------------------- 1 | import ApplicationAdapter from './application'; 2 | 3 | export default ApplicationAdapter.extend({ 4 | buildURL(modelName, id, snapshot, requestType, query) { 5 | let url = this._super(modelName, id, snapshot, requestType, query); 6 | url = url.replace('admin-statistics-user', 'admin/statistics/user'); 7 | return url; 8 | } 9 | }); 10 | -------------------------------------------------------------------------------- /app/components/modals/publish-unpublish-modal.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import { action } from '@ember/object'; 3 | import ModalBase from 'open-event-frontend/components/modals/modal-base'; 4 | 5 | @classic 6 | export default class PublishUnpublishModal extends ModalBase { 7 | @action 8 | toggleView() { 9 | this.set('isOpen', false); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /app/components/ui-table/cell/events/view/sessions/cell-notify.js: -------------------------------------------------------------------------------- 1 | import Component from '@glimmer/component'; 2 | import { tracked } from '@glimmer/tracking'; 3 | import { action } from '@ember/object'; 4 | 5 | export default class CellNotify extends Component { 6 | @tracked isModalOpen = false; 7 | 8 | @action 9 | openModal() { 10 | this.isModalOpen = true; 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /app/helpers/url-encode.js: -------------------------------------------------------------------------------- 1 | import Helper from '@ember/component/helper'; 2 | 3 | /** 4 | * Helper to URL encode a string 5 | * @param params 6 | * @returns {*} 7 | */ 8 | export function urlEncode(params) { 9 | if (!params || params.length === 0) { 10 | return ''; 11 | } 12 | return encodeURIComponent(params[0]); 13 | } 14 | 15 | export default Helper.helper(urlEncode); 16 | -------------------------------------------------------------------------------- /app/routes/login.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Route from '@ember/routing/route'; 3 | import UnauthenticatedRouteMixin from 'ember-simple-auth/mixins/unauthenticated-route-mixin'; 4 | 5 | @classic 6 | export default class LoginRoute extends Route.extend(UnauthenticatedRouteMixin) { 7 | titleToken() { 8 | return this.l10n.t('Login'); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /app/templates/components/ui-table/cell/events/cell-action.hbs: -------------------------------------------------------------------------------- 1 | {{#if (eq this.extraRecords.status 'due')}} 2 | 3 | {{t 'Review and Pay'}} 4 | 5 | {{else}} 6 | 7 | {{t 'See Payment'}} 8 | 9 | {{/if}} -------------------------------------------------------------------------------- /app/templates/components/ui-table/cell/events/view/tickets/orders/cell-amount.hbs: -------------------------------------------------------------------------------- 1 |
2 | 3 |
4 | {{#if this.extraRecords.discountCode.code}} 5 |
6 | {{this.extraRecords.discountCode.code}} 7 |
8 | {{/if}} 9 | -------------------------------------------------------------------------------- /tests/unit/routes/public/speaker/view-test.js: -------------------------------------------------------------------------------- 1 | import { module, test } from 'qunit'; 2 | import { setupTest } from 'ember-qunit'; 3 | 4 | module('Unit | Route | public/speaker/view', function(hooks) { 5 | setupTest(hooks); 6 | 7 | test('it exists', function(assert) { 8 | const route = this.owner.lookup('route:public/speaker/view'); 9 | assert.ok(route); 10 | }); 11 | }); 12 | -------------------------------------------------------------------------------- /tests/unit/routes/public/stream/view-test.ts: -------------------------------------------------------------------------------- 1 | import { module, test } from 'qunit'; 2 | import { setupTest } from 'ember-qunit'; 3 | 4 | module('Unit | Route | public/stream/view', function(hooks) { 5 | setupTest(hooks); 6 | 7 | test('it exists', function(assert) { 8 | const route = this.owner.lookup('route:public/stream/view'); 9 | assert.ok(route); 10 | }); 11 | }); 12 | -------------------------------------------------------------------------------- /app/adapters/admin-sales-discounted.js: -------------------------------------------------------------------------------- 1 | import ApplicationAdapter from './application'; 2 | 3 | export default ApplicationAdapter.extend({ 4 | buildURL(modelName, id, snapshot, requestType, query) { 5 | let url = this._super(modelName, id, snapshot, requestType, query); 6 | url = url.replace('admin-sales-discounteds', 'admin/sales/discounted'); 7 | return url; 8 | } 9 | }); 10 | -------------------------------------------------------------------------------- /app/adapters/admin-statistics-event.js: -------------------------------------------------------------------------------- 1 | import ApplicationAdapter from './application'; 2 | 3 | export default ApplicationAdapter.extend({ 4 | buildURL(modelName, id, snapshot, requestType, query) { 5 | let url = this._super(modelName, id, snapshot, requestType, query); 6 | url = url.replace('admin-statistics-event', 'admin/statistics/event'); 7 | return url; 8 | } 9 | }); 10 | -------------------------------------------------------------------------------- /app/models/admin-statistics-session.js: -------------------------------------------------------------------------------- 1 | import attr from 'ember-data/attr'; 2 | import ModelBase from 'open-event-frontend/models/base'; 3 | 4 | export default ModelBase.extend({ 5 | confirmed : attr('number'), 6 | accepted : attr('number'), 7 | submitted : attr('number'), 8 | draft : attr('number'), 9 | rejected : attr('number'), 10 | pending : attr('number') 11 | }); 12 | -------------------------------------------------------------------------------- /app/templates/components/ui-table/cell/cell-label.hbs: -------------------------------------------------------------------------------- 1 | 2 | {{#if this.extraRecords.isExpired}} 3 | {{t 'Expired'}} 4 | {{else}} 5 | {{#if this.record}} 6 | {{t 'Active'}} 7 | {{else}} 8 | {{t 'Inactive'}} 9 | {{/if}} 10 | {{/if}} 11 | -------------------------------------------------------------------------------- /app/adapters/admin-sales-by-location.js: -------------------------------------------------------------------------------- 1 | import ApplicationAdapter from './application'; 2 | 3 | export default ApplicationAdapter.extend({ 4 | buildURL(modelName, id, snapshot, requestType, query) { 5 | let url = this._super(modelName, id, snapshot, requestType, query); 6 | url = url.replace('admin-sales-by-locations', 'admin/sales/by-location'); 7 | return url; 8 | } 9 | }); 10 | -------------------------------------------------------------------------------- /app/adapters/admin-sales-by-marketer.js: -------------------------------------------------------------------------------- 1 | import ApplicationAdapter from './application'; 2 | 3 | export default ApplicationAdapter.extend({ 4 | buildURL(modelName, id, snapshot, requestType, query) { 5 | let url = this._super(modelName, id, snapshot, requestType, query); 6 | url = url.replace('admin-sales-by-marketers', 'admin/sales/by-marketer'); 7 | return url; 8 | } 9 | }); 10 | -------------------------------------------------------------------------------- /app/adapters/admin-sales-by-organizer.js: -------------------------------------------------------------------------------- 1 | import ApplicationAdapter from './application'; 2 | 3 | export default ApplicationAdapter.extend({ 4 | buildURL(modelName, id, snapshot, requestType, query) { 5 | let url = this._super(modelName, id, snapshot, requestType, query); 6 | url = url.replace('admin-sales-by-organizer', 'admin/sales/by-organizer'); 7 | return url; 8 | } 9 | }); 10 | -------------------------------------------------------------------------------- /app/adapters/admin-statistics-session.js: -------------------------------------------------------------------------------- 1 | import ApplicationAdapter from './application'; 2 | 3 | export default ApplicationAdapter.extend({ 4 | buildURL(modelName, id, snapshot, requestType, query) { 5 | let url = this._super(modelName, id, snapshot, requestType, query); 6 | url = url.replace('admin-statistics-session', 'admin/statistics/session'); 7 | return url; 8 | } 9 | }); 10 | -------------------------------------------------------------------------------- /app/components/public/sponsor-list.hbs: -------------------------------------------------------------------------------- 1 | {{#each-in this.sponsorsGrouped as |key sponsorsGroup|}} 2 | {{#if (not-eq key 'null')}} 3 |

{{key}}

4 | {{/if}} 5 |
6 | {{#each sponsorsGroup.sponsors as |sponsor|}} 7 | 8 | {{/each}} 9 |
10 | {{/each-in}} 11 | -------------------------------------------------------------------------------- /app/models/base.js: -------------------------------------------------------------------------------- 1 | import Model from 'ember-data/model'; 2 | import ModelMixin from 'ember-data-has-many-query/mixins/model'; 3 | import { fixFilterQuery } from 'open-event-frontend/adapters/application'; 4 | 5 | export default Model.extend(ModelMixin, { 6 | query(propertyName, params) { 7 | params = fixFilterQuery(params); 8 | return this._super(propertyName, params); 9 | } 10 | }); 11 | -------------------------------------------------------------------------------- /app/routes/account/password.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Route from '@ember/routing/route'; 3 | import AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin'; 4 | 5 | @classic 6 | export default class PasswordRoute extends Route.extend(AuthenticatedRouteMixin) { 7 | titleToken() { 8 | return this.l10n.t('Password'); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /app/routes/admin/sales/discounted-events.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Route from '@ember/routing/route'; 3 | 4 | @classic 5 | export default class DiscountedEventsRoute extends Route { 6 | titleToken() { 7 | return this.l10n.t('Discounted Events'); 8 | } 9 | 10 | model() { 11 | return this.store.findAll('admin-sales-discounted'); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /app/routes/events/view/settings/index.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Route from '@ember/routing/route'; 3 | 4 | @classic 5 | export default class IndexRoute extends Route { 6 | templateName = 'events/view/settings/export'; 7 | 8 | beforeModel() { 9 | super.beforeModel(...arguments); 10 | this.transitionTo('events.view.settings.export'); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /app/routes/my-sessions.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Route from '@ember/routing/route'; 3 | import AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin'; 4 | 5 | @classic 6 | export default class MySessionsRoute extends Route.extend(AuthenticatedRouteMixin) { 7 | titleToken() { 8 | return this.l10n.t('My sessions'); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /app/routes/my-tickets.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Route from '@ember/routing/route'; 3 | import AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin'; 4 | 5 | @classic 6 | export default class MyTicketsRoute extends Route.extend(AuthenticatedRouteMixin) { 7 | titleToken() { 8 | return this.l10n.t('My Tickets'); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /app/templates/components/ui-table/cell/cell-simple-date.hbs: -------------------------------------------------------------------------------- 1 | {{#if this.extraRecords.timezone}} 2 | 3 | {{general-date this.record 'date-time-tz-short' tz=this.extraRecords.timezone}} 4 | 5 | {{else if this.record}} 6 | 7 | {{general-date this.record (if this.props.options.dateFormat this.props.options.dateFormat 'date-time-short')}} 8 | 9 | {{/if}} 10 | -------------------------------------------------------------------------------- /app/utils/dictionary/sessions.ts: -------------------------------------------------------------------------------- 1 | export const stateColorMap = { 2 | draft : 'grey', 3 | accepted : 'teal', 4 | confirmed : 'green', 5 | pending : 'yellow', 6 | rejected : 'red', 7 | deleted : 'red', 8 | withdrawn : 'black', 9 | canceled : 'orange' 10 | }; 11 | 12 | export const SESSION_STATES = ['pending', 'accepted', 'confirmed', 'rejected', 'withdrawn', 'canceled']; 13 | -------------------------------------------------------------------------------- /tests/unit/routes/events/view/team/index-test.ts: -------------------------------------------------------------------------------- 1 | import { module, test } from 'qunit'; 2 | import { setupTest } from 'ember-qunit'; 3 | 4 | module('Unit | Route | events/view/team/index', function(hooks) { 5 | setupTest(hooks); 6 | 7 | test('it exists', function(assert) { 8 | const route = this.owner.lookup('route:events/view/team/index'); 9 | assert.ok(route); 10 | }); 11 | }); 12 | -------------------------------------------------------------------------------- /app/helpers/sanitize.js: -------------------------------------------------------------------------------- 1 | import Helper from '@ember/component/helper'; 2 | import { inject as service } from '@ember/service'; 3 | import { htmlSafe } from '@ember/string'; 4 | 5 | /** 6 | * Helper to sanitize a HTML string 7 | */ 8 | export default Helper.extend({ 9 | sanitizer: service(), 10 | 11 | compute(params) { 12 | return htmlSafe(this.sanitizer.purify(params[0])); 13 | } 14 | }); 15 | -------------------------------------------------------------------------------- /app/models/activity.js: -------------------------------------------------------------------------------- 1 | import attr from 'ember-data/attr'; 2 | import moment from 'moment'; 3 | import ModelBase from 'open-event-frontend/models/base'; 4 | 5 | const detectedTimezone = moment.tz.guess(); 6 | 7 | export default ModelBase.extend({ 8 | actor : attr('string'), 9 | time : attr('moment', { defaultValue: () => moment.tz(detectedTimezone) }), 10 | action : attr('string') 11 | }); 12 | -------------------------------------------------------------------------------- /app/routes/account/billing.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Route from '@ember/routing/route'; 3 | import AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin'; 4 | 5 | @classic 6 | export default class BillingRoute extends Route.extend(AuthenticatedRouteMixin) { 7 | titleToken() { 8 | return this.l10n.t('Billing Info'); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /app/routes/admin/users/view/events.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Route from '@ember/routing/route'; 3 | import AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin'; 4 | 5 | @classic 6 | export default class EventsRoute extends Route.extend(AuthenticatedRouteMixin) { 7 | titleToken() { 8 | return this.l10n.t('Events'); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /app/routes/events/view/speakers/index.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Route from '@ember/routing/route'; 3 | 4 | @classic 5 | export default class IndexRoute extends Route { 6 | templateName = 'events/view/speakers/list'; 7 | 8 | beforeModel() { 9 | super.beforeModel(...arguments); 10 | this.transitionTo('events.view.speakers.list', 'all'); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /app/templates/admin/users/view/sessions/list.hbs: -------------------------------------------------------------------------------- 1 |
2 |
3 | {{#each this.model as |session|}} 4 | 5 | 6 | {{else}} 7 |
{{t 'No session proposals found for the events'}}
8 | {{/each}} 9 |
10 |
11 | -------------------------------------------------------------------------------- /tests/helpers/stubs/services/-routing.js: -------------------------------------------------------------------------------- 1 | import Service from '@ember/service'; 2 | 3 | export default Service.extend({ 4 | router: { 5 | router: { 6 | state: { 7 | params: { 8 | 'events.view': { 9 | event_id: 1 10 | } 11 | } 12 | } 13 | }, 14 | generate() { 15 | return 'http://dummy-url.com'; 16 | } 17 | } 18 | }); 19 | -------------------------------------------------------------------------------- /app/routes/admin/users/view/tickets.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Route from '@ember/routing/route'; 3 | import AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin'; 4 | 5 | @classic 6 | export default class TicketsRoute extends Route.extend(AuthenticatedRouteMixin) { 7 | titleToken() { 8 | return this.l10n.t('My Tickets'); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /app/routes/notifications.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Route from '@ember/routing/route'; 3 | import AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin'; 4 | 5 | @classic 6 | export default class NotificationsRoute extends Route.extend(AuthenticatedRouteMixin) { 7 | titleToken() { 8 | return this.l10n.t('Notifications'); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /tests/unit/services/cache-test.ts: -------------------------------------------------------------------------------- 1 | import { module, test } from 'qunit'; 2 | import { setupTest } from 'ember-qunit'; 3 | 4 | module('Unit | Service | cache', function(hooks) { 5 | setupTest(hooks); 6 | 7 | // Replace this with your real tests. 8 | test('it exists', function(assert) { 9 | const service = this.owner.lookup('service:cache'); 10 | assert.ok(service); 11 | }); 12 | }); 13 | 14 | -------------------------------------------------------------------------------- /app/models/session-type.js: -------------------------------------------------------------------------------- 1 | import attr from 'ember-data/attr'; 2 | import ModelBase from 'open-event-frontend/models/base'; 3 | import { hasMany, belongsTo } from 'ember-data/relationships'; 4 | 5 | export default ModelBase.extend({ 6 | name : attr('string'), 7 | length : attr('string', { defaultValue: '00:30' }), 8 | 9 | event : belongsTo('event'), 10 | sessions : hasMany('session') 11 | }); 12 | -------------------------------------------------------------------------------- /app/routes/admin/users/view/sessions.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Route from '@ember/routing/route'; 3 | import AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin'; 4 | 5 | @classic 6 | export default class SessionsRoute extends Route.extend(AuthenticatedRouteMixin) { 7 | titleToken() { 8 | return this.l10n.t('My sessions'); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /app/routes/public/sessions-index.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Route from '@ember/routing/route'; 3 | 4 | @classic 5 | export default class SessionsIndex extends Route { 6 | beforeModel() { 7 | // We don't want to process or transition in fastboot mode 8 | // Since this is only an intermediate page 9 | return this.transitionTo('public.sessions'); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /app/templates/admin/users/view/tickets/list.hbs: -------------------------------------------------------------------------------- 1 |
2 |
3 | {{#each this.model.orders as |order|}} 4 | 5 | 6 | 7 | {{else}} 8 |
{{t 'No tickets found for this user'}}
9 | {{/each}} 10 |
11 |
12 | -------------------------------------------------------------------------------- /app/utils/patches/fullcalendar.js: -------------------------------------------------------------------------------- 1 | import $ from 'jquery'; 2 | 3 | // Workaround for https://github.com/fossasia/open-event-frontend/issues/4778 4 | export function patchFullCalendar() { 5 | const rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi; 6 | $.htmlPrefilter = function(html) { 7 | return html.replace(rxhtmlTag, '<$1>'); 8 | }; 9 | } 10 | -------------------------------------------------------------------------------- /app/helpers/session-color.js: -------------------------------------------------------------------------------- 1 | import Helper from '@ember/component/helper'; 2 | 3 | export function sessionColor(params) { 4 | switch (params[0]) { 5 | case 'accepted': 6 | return 'yellow'; 7 | case 'pending': 8 | return 'yellow'; 9 | case 'confirmed': 10 | return 'green'; 11 | default: 12 | return 'red'; 13 | } 14 | } 15 | 16 | export default Helper.helper(sessionColor); 17 | -------------------------------------------------------------------------------- /app/routes/logout.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Route from '@ember/routing/route'; 3 | import AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin'; 4 | 5 | @classic 6 | export default class LogoutRoute extends Route.extend(AuthenticatedRouteMixin) { 7 | beforeModel() { 8 | this.authManager.logout(); 9 | this.transitionTo('index'); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /app/utils/sort.ts: -------------------------------------------------------------------------------- 1 | import { sortBy } from 'lodash-es'; 2 | 3 | interface CustomFormField { 4 | fieldIdentifier: string, 5 | isComplex: boolean 6 | } 7 | 8 | export function sortCustomFormFields(fields: CustomFormField[], fieldOrder: string[]): CustomFormField[] { 9 | fieldOrder = [...fieldOrder].reverse(); 10 | return sortBy(fields, 'isComplex', item => -fieldOrder.indexOf(item.fieldIdentifier)); 11 | } 12 | -------------------------------------------------------------------------------- /tests/unit/routes/events/view/team/permissions-test.ts: -------------------------------------------------------------------------------- 1 | import { module, test } from 'qunit'; 2 | import { setupTest } from 'ember-qunit'; 3 | 4 | module('Unit | Route | events/view/team/permissions', function(hooks) { 5 | setupTest(hooks); 6 | 7 | test('it exists', function(assert) { 8 | const route = this.owner.lookup('route:events/view/team/permissions'); 9 | assert.ok(route); 10 | }); 11 | }); 12 | -------------------------------------------------------------------------------- /tests/unit/services/bug-tracker-test.ts: -------------------------------------------------------------------------------- 1 | import { module, test } from 'qunit'; 2 | import { setupTest } from 'ember-qunit'; 3 | 4 | module('Unit | Service | bug-tracker', function(hooks) { 5 | setupTest(hooks); 6 | 7 | // Replace this with your real tests. 8 | test('it exists', function(assert) { 9 | const service = this.owner.lookup('service:bug-tracker'); 10 | assert.ok(service); 11 | }); 12 | }); 13 | -------------------------------------------------------------------------------- /app/routes/admin/settings/index.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import { action } from '@ember/object'; 3 | import Route from '@ember/routing/route'; 4 | 5 | @classic 6 | export default class IndexRoute extends Route { 7 | titleToken() { 8 | return this.l10n.t('System'); 9 | } 10 | 11 | @action 12 | willTransition() { 13 | this.controller.model.rollbackAttributes(); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /app/styles/partials/uploader.scss: -------------------------------------------------------------------------------- 1 | .upload.segment { 2 | cursor: pointer; 3 | font-size: 20px; 4 | margin-bottom: 10px !important; 5 | margin-top: 15px !important; 6 | padding: 30px 0; 7 | transition: color .3s; 8 | 9 | &.drag-hover { 10 | background-color: #fffcf4; 11 | } 12 | 13 | &:hover { 14 | color: #2a2a2a !important; 15 | } 16 | 17 | small { 18 | font-size: 14px; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /app/routes/admin/users/view/account/applications.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Route from '@ember/routing/route'; 3 | import AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin'; 4 | 5 | @classic 6 | export default class ApplicationsRoute extends Route.extend(AuthenticatedRouteMixin) { 7 | titleToken() { 8 | return this.l10n.t('Applications'); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /app/routes/my-tickets/upcoming/index.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Route from '@ember/routing/route'; 3 | 4 | @classic 5 | export default class IndexRoute extends Route { 6 | titleToken() { 7 | return this.l10n.t('Completed'); 8 | } 9 | 10 | beforeModel() { 11 | super.beforeModel(...arguments); 12 | this.transitionTo('my-tickets.upcoming.list', 'completed'); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /app/templates/components/public/copyright-item.hbs: -------------------------------------------------------------------------------- 1 | {{#if this.copyright.logoUrl}} 2 | {{this.copyright.licence}} 3 |
4 | {{/if}} 5 | 10 | -------------------------------------------------------------------------------- /app/templates/components/ui-table/cell/events/view/tickets/discount-codes/cell-status.hbs: -------------------------------------------------------------------------------- 1 | 2 | {{#if this.extraRecords.isExpired}} 3 | {{t 'Expired'}} 4 | {{else}} 5 | {{#if this.record}} 6 | {{t 'Active'}} 7 | {{else}} 8 | {{t 'Inactive'}} 9 | {{/if}} 10 | {{/if}} 11 | -------------------------------------------------------------------------------- /app/templates/events/view/tickets/access-codes/edit.hbs: -------------------------------------------------------------------------------- 1 |
2 |
3 |

{{t 'Edit an access code'}}

4 |
5 |
6 |
7 | 8 |
9 |
10 |
11 | -------------------------------------------------------------------------------- /app/utils/dictionary/amazon-s3-regions.ts: -------------------------------------------------------------------------------- 1 | export const amazonS3Regions = [ 2 | 'us-east-1', 3 | 'us-west-1', 4 | 'us-gov-west-1', 5 | 'ap-northeast-1', 6 | 'ap-northeast-2', 7 | 'sa-east-1', 8 | 'eu-central-1', 9 | 'ap-southeast-1', 10 | 'ca-central-1', 11 | 'ap-southeast-2', 12 | 'us-west-2', 13 | 'us-east-2', 14 | 'ap-south-1', 15 | 'cn-north-1', 16 | 'eu-west-1', 17 | 'eu-west-2' 18 | ]; 19 | -------------------------------------------------------------------------------- /kubernetes/yamls/frontend/ingress-notls.yml: -------------------------------------------------------------------------------- 1 | apiVersion: extensions/v1beta1 2 | kind: Ingress 3 | metadata: 4 | name: frontend-web-notls 5 | namespace: web 6 | annotations: 7 | kubernetes.io/ingress.class: "nginx" 8 | spec: 9 | rules: 10 | - host: nextgen.eventyay.com 11 | http: 12 | paths: 13 | - path: / 14 | backend: 15 | serviceName: frontend 16 | servicePort: 4000 17 | -------------------------------------------------------------------------------- /app/helpers/currency-symbol.js: -------------------------------------------------------------------------------- 1 | import Helper from '@ember/component/helper'; 2 | import { find } from 'lodash-es'; 3 | import { paymentCurrencies } from 'open-event-frontend/utils/dictionary/payment'; 4 | 5 | export function currencySymbol(params) { 6 | const currency = find(paymentCurrencies, ['code', params[0]]); 7 | return currency ? currency.symbol : params[0]; 8 | } 9 | 10 | export default Helper.helper(currencySymbol); 11 | -------------------------------------------------------------------------------- /app/templates/components/public/session-filter.hbs: -------------------------------------------------------------------------------- 1 | 11 | -------------------------------------------------------------------------------- /app/templates/components/ui-table/expand-row-cell.hbs: -------------------------------------------------------------------------------- 1 | {{#if (exists-in this._expandedRowIndexes this.index)}} 2 | 3 | {{else}} 4 | 5 | {{/if}} 6 | -------------------------------------------------------------------------------- /app/helpers/text-color.ts: -------------------------------------------------------------------------------- 1 | import { getTextColor } from 'open-event-frontend/utils/color'; 2 | import Helper from '@ember/component/helper'; 3 | 4 | // inputs: bg color, dark color (chosen if bg is light), light color (chosen if bg is dark) 5 | export default Helper.helper(function(params: string[]): string { 6 | const color = params[0]; 7 | if (!color) {return '#000'} 8 | return getTextColor(color, params[1], params[2]); 9 | }); 10 | -------------------------------------------------------------------------------- /app/models/admin-sales-invoice.js: -------------------------------------------------------------------------------- 1 | import attr from 'ember-data/attr'; 2 | import ModelBase from 'open-event-frontend/models/base'; 3 | 4 | export default ModelBase.extend({ 5 | identifier : attr('string'), 6 | status : attr('string'), 7 | amount : attr('number'), 8 | createdAt : attr('moment'), 9 | completedAt : attr('moment'), 10 | eventName : attr('string'), 11 | sentTo : attr('string') 12 | }); 13 | -------------------------------------------------------------------------------- /app/routes/admin/content/translations.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Route from '@ember/routing/route'; 3 | 4 | @classic 5 | export default class TranslationsRoute extends Route { 6 | titleToken() { 7 | return this.l10n.t('Translations'); 8 | } 9 | 10 | model() { 11 | return [ 12 | { 13 | code : 'en', 14 | sourceUrl : '#' 15 | } 16 | ]; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /app/routes/admin/settings/analytics.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import { action } from '@ember/object'; 3 | import Route from '@ember/routing/route'; 4 | 5 | @classic 6 | export default class AnalyticsRoute extends Route { 7 | titleToken() { 8 | return this.l10n.t('Analytics'); 9 | } 10 | 11 | @action 12 | willTransition() { 13 | this.controller.model.rollbackAttributes(); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /app/routes/admin/users/view/tickets/index.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Route from '@ember/routing/route'; 3 | 4 | @classic 5 | export default class IndexRoute extends Route { 6 | titleToken() { 7 | return this.l10n.t('Upcoming'); 8 | } 9 | 10 | beforeModel() { 11 | super.beforeModel(...arguments); 12 | this.transitionTo('admin.users.view.tickets.list', 'upcoming'); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /app/routes/events/view/tickets/access-codes/index.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Route from '@ember/routing/route'; 3 | 4 | @classic 5 | export default class IndexRoute extends Route { 6 | templateName = 'events/view/tickets/access-codes/list'; 7 | 8 | beforeModel() { 9 | super.beforeModel(...arguments); 10 | this.transitionTo('events.view.tickets.access-codes.list', 'all'); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /app/templates/events/view/tickets/access-codes/create.hbs: -------------------------------------------------------------------------------- 1 |
2 |
3 |

{{t 'Create a New Access code'}}

4 |
5 |
6 |
7 | 8 |
9 |
10 |
11 | -------------------------------------------------------------------------------- /types/global.d.ts: -------------------------------------------------------------------------------- 1 | // Types for compiled templates 2 | declare module 'open-event-frontend/templates/*' { 3 | import { TemplateFactory } from 'htmlbars-inline-precompile'; 4 | const tmpl: TemplateFactory; 5 | export default tmpl; 6 | } 7 | 8 | interface JQuery { 9 | fullCalendar(op: string, key: string, value: unknown): void, 10 | fullCalendar(key: string): unknown[] 11 | } 12 | 13 | declare module 'google-material-color'; 14 | -------------------------------------------------------------------------------- /app.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Open Event Frontend", 3 | "description": "Frontend for Open Event Server", 4 | "repository": "https://github.com/fossasia/open-event-frontend", 5 | "logo": "https://heroku-www-files.s3.amazonaws.com/getting-started/ember.svg", 6 | "keywords": ["ember.js", "static", "open event"], 7 | "buildpacks": [ 8 | { "url": "https://codon-buildpacks.s3.amazonaws.com/buildpacks/heroku/emberjs.tgz" } 9 | ] 10 | } 11 | -------------------------------------------------------------------------------- /app/components/public/stream/join-video.hbs: -------------------------------------------------------------------------------- 1 | 6 | 7 | {{t 'Join Video'}} 8 | 9 | -------------------------------------------------------------------------------- /app/models/page.js: -------------------------------------------------------------------------------- 1 | import attr from 'ember-data/attr'; 2 | import ModelBase from 'open-event-frontend/models/base'; 3 | 4 | export default ModelBase.extend({ 5 | name : attr('string'), 6 | title : attr('string'), 7 | url : attr('string'), 8 | description : attr('string'), 9 | language : attr('string'), 10 | index : attr('number', { defaultValue: 0 }), 11 | place : attr('string') 12 | }); 13 | -------------------------------------------------------------------------------- /app/routes/public/session/view.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Route from '@ember/routing/route'; 3 | 4 | @classic 5 | export default class ViewRoute extends Route { 6 | titleToken(model) { 7 | return model.title; 8 | } 9 | 10 | model(params) { 11 | return this.store.findRecord('session', params.session_id, { 12 | include: 'session-type,speakers,track,event' 13 | }); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /app/templates/components/account/application-section.hbs: -------------------------------------------------------------------------------- 1 |

{{t 'Connect with Facebook'}}

2 | {{!-- {{#if data.facebookId}} 3 | {{t 'Successfully linked with Facebook'}} 4 | {{else}} 5 | 9 | {{/if}} 10 | --}} 11 | -------------------------------------------------------------------------------- /app/templates/events/view/tickets/add-order.hbs: -------------------------------------------------------------------------------- 1 |

{{t 'Add Order'}}

2 | 12 | -------------------------------------------------------------------------------- /app/components/modals/room-info-modal.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import { action } from '@ember/object'; 3 | import FormMixin from 'open-event-frontend/mixins/form'; 4 | import ModalBase from 'open-event-frontend/components/modals/modal-base'; 5 | 6 | @classic 7 | export default class RoomInfoModal extends ModalBase.extend(FormMixin) { 8 | @action 9 | close() { 10 | this.set('isOpen', false); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /app/models/event-sub-topic.js: -------------------------------------------------------------------------------- 1 | import attr from 'ember-data/attr'; 2 | import ModelBase from 'open-event-frontend/models/base'; 3 | import { hasMany, belongsTo } from 'ember-data/relationships'; 4 | 5 | export default ModelBase.extend({ 6 | name : attr('string'), 7 | slug : attr('string'), 8 | 9 | eventTopic : belongsTo('event-topic'), 10 | events : hasMany('event'), 11 | placeholder : belongsTo('custom-placeholder') 12 | }); 13 | -------------------------------------------------------------------------------- /app/routes/admin/settings/microservices.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import { action } from '@ember/object'; 3 | import Route from '@ember/routing/route'; 4 | 5 | @classic 6 | export default class MicroservicesRoute extends Route { 7 | titleToken() { 8 | return this.l10n.t('Microservices'); 9 | } 10 | 11 | @action 12 | willTransition() { 13 | this.controller.model.rollbackAttributes(); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /app/templates/components/ui-table/cell/events/view/videoroom/cell-video-url.hbs: -------------------------------------------------------------------------------- 1 | {{#if @record.url}} 2 |
3 | {{#if (eq @record.videoChannel.provider 'bbb')}} 4 | {{t 'Auto-Generated'}} 5 | {{else}} 6 |
7 | 8 |
9 | {{/if}} 10 |
11 | {{/if}} 12 | -------------------------------------------------------------------------------- /tests/unit/utils/text-test.ts: -------------------------------------------------------------------------------- 1 | import { slugify } from 'open-event-frontend/utils/text'; 2 | import { module, test } from 'qunit'; 3 | 4 | module('Unit | Text | Slugify', function() { 5 | test('test slugify', function(assert) { 6 | assert.equal(slugify('Hello World'), 'hello-world'); 7 | assert.equal(slugify('Name and Age', '_'), 'name_and_age'); 8 | assert.equal(slugify('What is Suo Moto?'), 'what-is-suo-moto'); 9 | }); 10 | }); 11 | -------------------------------------------------------------------------------- /app/routes/admin/settings/payment-gateway.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import { action } from '@ember/object'; 3 | import Route from '@ember/routing/route'; 4 | 5 | @classic 6 | export default class PaymentGatewayRoute extends Route { 7 | titleToken() { 8 | return this.l10n.t('Payment Gateway'); 9 | } 10 | 11 | @action 12 | willTransition() { 13 | this.controller.model.rollbackAttributes(); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /app/templates/error.hbs: -------------------------------------------------------------------------------- 1 | {{! This will be automatically rendered if any model fetch fails }} 2 |
3 | {{#if (eq this.model.errors.0.status 404)}} 4 | 5 | {{else if (eq this.model.errors.0.status 403)}} 6 | 7 | {{else if (eq this.model.errors.0.status 500)}} 8 | 9 | {{else}} 10 | 11 | {{/if}} 12 |
13 | -------------------------------------------------------------------------------- /app/templates/events/list.hbs: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/components/modals/event-delete-modal.js: -------------------------------------------------------------------------------- 1 | import { tracked } from '@glimmer/tracking'; 2 | import classic from 'ember-classic-decorator'; 3 | import ModalBase from 'open-event-frontend/components/modals/modal-base'; 4 | 5 | @classic 6 | export default class EventDeleteModal extends ModalBase { 7 | isSmall = true; 8 | @tracked confirmName = ''; 9 | 10 | get isNameDifferent() { 11 | return this.confirmName !== this.eventName; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /app/components/modals/user-delete-modal.js: -------------------------------------------------------------------------------- 1 | import { tracked } from '@glimmer/tracking'; 2 | import classic from 'ember-classic-decorator'; 3 | import ModalBase from 'open-event-frontend/components/modals/modal-base'; 4 | 5 | @classic 6 | export default class UserDeleteModal extends ModalBase { 7 | isSmall = true; 8 | @tracked confirmEmail = ''; 9 | 10 | get isEmailDifferent() { 11 | return this.confirmEmail !== this.userEmail; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /app/components/ui-table/cell/events/view/videoroom/cell-additional-info.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Component from '@ember/component'; 3 | import { action } from '@ember/object'; 4 | import { tracked } from '@glimmer/tracking'; 5 | @classic 6 | export default class CellVideoUrl extends Component { 7 | @tracked taxModalIsOpen = false; 8 | @action 9 | openTaxModal() { 10 | this.set('taxModalIsOpen', true); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /app/helpers/payment-icon.js: -------------------------------------------------------------------------------- 1 | import { helper } from '@ember/component/helper'; 2 | 3 | export function paymentIcon(params) { 4 | switch (params[0]) { 5 | case 'Visa': 6 | return 'big cc visa icon'; 7 | case 'MasterCard': 8 | return 'big cc mastercard icon'; 9 | case 'American Express': 10 | return 'big cc amex icon'; 11 | default: 12 | return false; 13 | } 14 | } 15 | 16 | export default helper(paymentIcon); 17 | -------------------------------------------------------------------------------- /app/models/admin-sales-fee.js: -------------------------------------------------------------------------------- 1 | import attr from 'ember-data/attr'; 2 | import ModelBase from 'open-event-frontend/models/base'; 3 | 4 | export default ModelBase.extend({ 5 | name : attr('string'), 6 | paymentCurrency : attr('string'), 7 | feePercentage : attr('number'), 8 | maximumFee : attr('number'), 9 | revenue : attr('number'), 10 | ticketCount : attr('number'), 11 | eventDate : attr('moment') 12 | }); 13 | -------------------------------------------------------------------------------- /app/routes/admin/sessions.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Route from '@ember/routing/route'; 3 | import { SESSION_STATES } from 'open-event-frontend/utils/dictionary/sessions'; 4 | 5 | @classic 6 | export default class SessionsRoute extends Route { 7 | titleToken() { 8 | return this.l10n.t('Sessions'); 9 | } 10 | 11 | model() { 12 | return { 13 | sessionStates: SESSION_STATES 14 | }; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /app/transforms/moment.js: -------------------------------------------------------------------------------- 1 | import Transform from 'ember-data/transform'; 2 | import moment from 'moment'; 3 | 4 | export default Transform.extend({ 5 | deserialize(serialized) { 6 | if (!serialized) { 7 | return null; 8 | } 9 | return moment(serialized); 10 | }, 11 | 12 | serialize(deserialized) { 13 | if (!deserialized) { 14 | return null; 15 | } 16 | return moment(deserialized).toISOString(); 17 | } 18 | }); 19 | -------------------------------------------------------------------------------- /kubernetes/deploy.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | export DIR=${BASH_SOURCE%/*} 3 | 4 | if [ "$1" = "delete" ]; then 5 | echo "Clearing the cluster." 6 | kubectl delete -R -f ${DIR}/yamls 7 | echo "Done. The project was removed from the cluster." 8 | elif [ "$1" = "create" ]; then 9 | echo "Deploying the project to kubernetes cluster" 10 | kubectl create -R -f ${DIR}/yamls 11 | echo "Done. The project was deployed to kubernetes. :)" 12 | fi 13 | -------------------------------------------------------------------------------- /app/adapters/user.js: -------------------------------------------------------------------------------- 1 | import ApplicationAdapter from './application'; 2 | 3 | export default ApplicationAdapter.extend({ 4 | buildURL(modelName, id, snapshot, requestType, query) { 5 | let url = this._super(modelName, id, snapshot, requestType, query); 6 | if (requestType === 'updateRecord' && snapshot.adapterOptions && snapshot.adapterOptions.getTrashed) { 7 | url = `${url}?get_trashed=true`; 8 | } 9 | return url; 10 | } 11 | }); 12 | -------------------------------------------------------------------------------- /app/components/public/event-venue.hbs: -------------------------------------------------------------------------------- 1 | {{#if @event.online}} 2 |

3 | 4 | {{t 'Online Event'}} 5 |

6 | {{/if}} 7 | {{#if @event.shortLocationName}} 8 | 9 | 10 | 11 | 12 | {{@event.shortLocationName}} 13 | 14 | {{/if}} 15 | -------------------------------------------------------------------------------- /app/routes/account/billing/index.js: -------------------------------------------------------------------------------- 1 | import Route from '@ember/routing/route'; 2 | import AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin'; 3 | 4 | export default class extends Route.extend(AuthenticatedRouteMixin) { 5 | titleToken() { 6 | return this.l10n.t('Billing Info'); 7 | } 8 | 9 | beforeModel() { 10 | super.beforeModel(...arguments); 11 | this.replaceWith('account.billing.invoices'); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /app/routes/admin/content/system-images/list.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Route from '@ember/routing/route'; 3 | 4 | @classic 5 | export default class ListRoute extends Route { 6 | titleToken() { 7 | return this.l10n.t('Sub topics'); 8 | } 9 | 10 | model(params) { 11 | this.set('params', params); 12 | return this.store.findRecord('event-topic', params.topic_id, { include: 'event-sub-topics' }); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /app/templates/events/view/edit.hbs: -------------------------------------------------------------------------------- 1 |
2 |

{{t 'Editing'}} {{this.model.event.name}}

3 |
4 | 7 |
8 | {{outlet}} 9 |
10 |
11 |
12 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | # EditorConfig helps developers define and maintain consistent 2 | # coding styles between different editors and IDEs 3 | # editorconfig.org 4 | 5 | root = true 6 | 7 | 8 | [*] 9 | end_of_line = lf 10 | charset = utf-8 11 | trim_trailing_whitespace = true 12 | insert_final_newline = true 13 | indent_style = space 14 | indent_size = 2 15 | 16 | [*.hbs] 17 | insert_final_newline = false 18 | 19 | [*.{diff,md}] 20 | trim_trailing_whitespace = false 21 | -------------------------------------------------------------------------------- /app/components/events/view/overview/general-info.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import { action } from '@ember/object'; 3 | import { classNames } from '@ember-decorators/component'; 4 | import Component from '@ember/component'; 5 | 6 | @classic 7 | @classNames('ui', 'fluid', 'card') 8 | export default class GeneralInfo extends Component { 9 | @action 10 | openModal() { 11 | this.set('isEventRevisionModalOpen', true); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /app/styles/partials/text.scss: -------------------------------------------------------------------------------- 1 | .small.text { 2 | font-size: smaller !important; 3 | } 4 | 5 | .tiny.text { 6 | font-size: .55em !important; 7 | } 8 | 9 | .centered.text { 10 | text-align: center !important; 11 | } 12 | 13 | .gray-text { 14 | color: #555 !important; 15 | } 16 | 17 | .strike.text { 18 | text-decoration: line-through; 19 | } 20 | 21 | .truncate { 22 | overflow: hidden; 23 | text-overflow: ellipsis; 24 | white-space: nowrap; 25 | } 26 | -------------------------------------------------------------------------------- /app/templates/components/ui-table/cell/events/view/speakers/cell-simple-sessions.hbs: -------------------------------------------------------------------------------- 1 |
2 | {{#each this.record as |session|}} 3 | {{#if (not this.eq session.deletedAt)}} 4 |
5 |
6 |
{{session.state}}
7 | {{session.title}} 8 |
9 |
10 | {{/if}} 11 | {{/each}} 12 |
-------------------------------------------------------------------------------- /app/templates/events/view/tickets/discount-codes/edit.hbs: -------------------------------------------------------------------------------- 1 |
2 |
3 |

{{t 'Edit a Discount Code'}}

4 |
5 |
6 |
7 | 8 |
9 |
10 |
11 | -------------------------------------------------------------------------------- /app/models/feedback.js: -------------------------------------------------------------------------------- 1 | import attr from 'ember-data/attr'; 2 | import ModelBase from 'open-event-frontend/models/base'; 3 | import { belongsTo } from 'ember-data/relationships'; 4 | 5 | export default ModelBase.extend({ 6 | rating : attr('number', { defaultValue: 0.0 }), 7 | comment : attr('string'), 8 | deletedAt : attr('moment'), 9 | 10 | user : belongsTo('user'), 11 | event : belongsTo('event'), 12 | session : belongsTo('session') 13 | }); 14 | -------------------------------------------------------------------------------- /tests/test-helper.js: -------------------------------------------------------------------------------- 1 | import Application from 'open-event-frontend/app'; 2 | import QUnit from 'qunit'; 3 | import config from 'open-event-frontend/config/environment'; 4 | import { setApplication } from '@ember/test-helpers'; 5 | import { start } from 'ember-qunit'; 6 | import loadEmberExam from 'ember-exam/test-support/load'; 7 | 8 | QUnit.config.testTimeout = 300000; 9 | 10 | setApplication(Application.create(config.APP)); 11 | 12 | loadEmberExam(); 13 | start(); 14 | -------------------------------------------------------------------------------- /app/adapters/access-code.js: -------------------------------------------------------------------------------- 1 | import ApplicationAdapter from './application'; 2 | import ENV from 'open-event-frontend/config/environment'; 3 | 4 | export default ApplicationAdapter.extend({ 5 | 6 | urlForQueryRecord(query) { 7 | if (query && query.code && query.eventIdentifier) { 8 | return `${ENV.APP.apiHost}/v1/events/${query.eventIdentifier}/access-codes/${query.code}`; 9 | } else { 10 | return this._super(...arguments); 11 | } 12 | } 13 | }); 14 | -------------------------------------------------------------------------------- /app/components/forms/wizard/custom-forms/table.ts: -------------------------------------------------------------------------------- 1 | import Component from '@glimmer/component'; 2 | 3 | interface CustomForm { isComplex: boolean } 4 | 5 | interface Args { 6 | fields: CustomForm[], 7 | removeField: (field: any) => void, 8 | updateField: (field: any) => void 9 | } 10 | 11 | export default class CustomFormTable extends Component { 12 | get editColumn(): boolean { 13 | return this.args.fields?.some(field => field.isComplex); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /app/routes/events/view/edit/basic-details.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Route from '@ember/routing/route'; 3 | import EventWizardMixin from 'open-event-frontend/mixins/event-wizard'; 4 | 5 | @classic 6 | export default class BasicDetailsRoute extends Route.extend(EventWizardMixin) { 7 | titleToken() { 8 | return this.l10n.t('Basic Details'); 9 | } 10 | 11 | model() { 12 | return this.modelFor('events.view.edit'); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /app/routes/register.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Route from '@ember/routing/route'; 3 | import UnauthenticatedRouteMixin from 'ember-simple-auth/mixins/unauthenticated-route-mixin'; 4 | 5 | @classic 6 | export default class RegisterRoute extends Route.extend(UnauthenticatedRouteMixin) { 7 | titleToken() { 8 | return this.l10n.t('Register'); 9 | } 10 | 11 | model() { 12 | return this.store.createRecord('user'); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /app/templates/components/create-session-message.hbs: -------------------------------------------------------------------------------- 1 | {{#if this.shouldShowMessage}} 2 |
3 | 4 | 5 |
6 | {{t 'Your Speaker Details have been saved, you can now submit a proposal by clicking Submit proposal!'}} 7 |
8 |
9 | {{/if}} 10 | -------------------------------------------------------------------------------- /app/templates/events/view/tickets/discount-codes/create.hbs: -------------------------------------------------------------------------------- 1 |
2 |
3 |

{{t 'Create a new Discount Code'}}

4 |
5 |
6 |
7 | 8 |
9 |
10 |
11 | -------------------------------------------------------------------------------- /app/adapters/discount-code.js: -------------------------------------------------------------------------------- 1 | import ApplicationAdapter from './application'; 2 | import ENV from 'open-event-frontend/config/environment'; 3 | 4 | export default ApplicationAdapter.extend({ 5 | 6 | urlForQueryRecord(query) { 7 | if (query && query.code && query.eventIdentifier) { 8 | return `${ENV.APP.apiHost}/v1/events/${query.eventIdentifier}/discount-codes/${query.code}`; 9 | } else { 10 | return this._super(...arguments); 11 | } 12 | } 13 | }); 14 | -------------------------------------------------------------------------------- /app/components/widgets/forms/billing-info.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import { computed } from '@ember/object'; 3 | import { countries } from 'open-event-frontend/utils/dictionary/demography'; 4 | import Component from '@ember/component'; 5 | import { orderBy } from 'lodash-es'; 6 | 7 | @classic 8 | export default class BillingInfo extends Component { 9 | @computed 10 | get countries() { 11 | return orderBy(countries, 'name'); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /app/helpers/ticket-attendees.js: -------------------------------------------------------------------------------- 1 | import { helper } from '@ember/component/helper'; 2 | import { intersection } from 'lodash-es'; 3 | 4 | export function ticketAttendees(params/* , hash*/) { 5 | 6 | const allTicketAttendees = params[1].toArray(); 7 | const orderAttendees = params[0].toArray(); 8 | const commonAttendees = intersection(orderAttendees, allTicketAttendees); 9 | return commonAttendees.length; 10 | 11 | } 12 | 13 | export default helper(ticketAttendees); 14 | -------------------------------------------------------------------------------- /app/templates/admin/reports/system-logs/mail-logs.hbs: -------------------------------------------------------------------------------- 1 | 14 | -------------------------------------------------------------------------------- /app/app.js: -------------------------------------------------------------------------------- 1 | import Application from '@ember/application'; 2 | import Resolver from './resolver'; 3 | import loadInitializers from 'ember-load-initializers'; 4 | import config from 'open-event-frontend/config/environment'; 5 | import './sentry'; 6 | 7 | const App = Application.extend({ 8 | modulePrefix : config.modulePrefix, 9 | podModulePrefix : config.podModulePrefix, 10 | Resolver 11 | }); 12 | 13 | loadInitializers(App, config.modulePrefix); 14 | 15 | export default App; 16 | -------------------------------------------------------------------------------- /app/models/event-copyright.js: -------------------------------------------------------------------------------- 1 | import attr from 'ember-data/attr'; 2 | import ModelBase from 'open-event-frontend/models/base'; 3 | import { belongsTo } from 'ember-data/relationships'; 4 | 5 | export default ModelBase.extend({ 6 | holder : attr('string'), 7 | holderUrl : attr('string'), 8 | licence : attr('string'), 9 | licenceUrl : attr('string'), 10 | year : attr('number'), 11 | logoUrl : attr('string'), 12 | 13 | event: belongsTo('event') 14 | }); 15 | -------------------------------------------------------------------------------- /app/routes/account/applications.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Route from '@ember/routing/route'; 3 | import AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin'; 4 | 5 | @classic 6 | export default class ApplicationsRoute extends Route.extend(AuthenticatedRouteMixin) { 7 | titleToken() { 8 | return this.l10n.t('Applications'); 9 | } 10 | 11 | model() { 12 | return this.authManager.currentUser; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /app/routes/admin/users/view/account.js: -------------------------------------------------------------------------------- 1 | import classic from 'ember-classic-decorator'; 2 | import Route from '@ember/routing/route'; 3 | import AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin'; 4 | 5 | @classic 6 | export default class AccountRoute extends Route.extend(AuthenticatedRouteMixin) { 7 | titleToken() { 8 | return this.l10n.t('Account'); 9 | } 10 | 11 | model() { 12 | return this.modelFor('admin.users.view'); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /app/templates/admin/reports/system-logs/activity-logs.hbs: -------------------------------------------------------------------------------- 1 | 14 | -------------------------------------------------------------------------------- /app/components/forms/speaker-section.js: -------------------------------------------------------------------------------- 1 | import Component from '@ember/component'; 2 | import FormMixin from 'open-event-frontend/mixins/form'; 3 | import { countries } from 'open-event-frontend/utils/dictionary/demography'; 4 | import { genders } from 'open-event-frontend/utils/dictionary/genders'; 5 | import { orderBy } from 'lodash-es'; 6 | 7 | export default Component.extend(FormMixin, { 8 | countries : orderBy(countries, 'name'), 9 | genders : orderBy(genders, 'name') 10 | }); 11 | -------------------------------------------------------------------------------- /app/helpers/can-modify-order.js: -------------------------------------------------------------------------------- 1 | import Helper from '@ember/component/helper'; 2 | 3 | export function canModifyOrder(params) { 4 | const [order] = params; 5 | if ((order.amount !== null && order.amount > 0) || (order.discountCodeId !== null)) { 6 | // returns false if order is paid or discounted and completed 7 | return order.status !== 'completed'; 8 | } 9 | // returns true for free ticket 10 | return true; 11 | } 12 | 13 | export default Helper.helper(canModifyOrder); 14 | -------------------------------------------------------------------------------- /app/models/sponsor.js: -------------------------------------------------------------------------------- 1 | import attr from 'ember-data/attr'; 2 | import ModelBase from 'open-event-frontend/models/base'; 3 | import { belongsTo } from 'ember-data/relationships'; 4 | 5 | export default ModelBase.extend({ 6 | name : attr('string'), 7 | level : attr('number'), 8 | type : attr('string'), 9 | url : attr('string'), 10 | description : attr('string'), 11 | logoUrl : attr('string'), 12 | 13 | event: belongsTo('event') 14 | 15 | }); 16 | -------------------------------------------------------------------------------- /app/templates/admin/reports/system-logs/notification-logs.hbs: -------------------------------------------------------------------------------- 1 | 14 | --------------------------------------------------------------------------------