├── INSTALL ├── LICENSE ├── README ├── README.md ├── Rakefile ├── contrib ├── README ├── event_links.rb ├── penta_accounts_gender ├── penta_attendee ├── penta_conferences_arrived ├── penta_conferences_attend ├── penta_conferences_reconfirmed ├── penta_events_status ├── penta_events_track ├── penta_events_type └── penta_travel_money ├── rails ├── .gitignore ├── README ├── Rakefile ├── app │ ├── controllers │ │ ├── admin_controller.rb │ │ ├── application_controller.rb │ │ ├── atom_controller.rb │ │ ├── conference_controller.rb │ │ ├── csv_controller.rb │ │ ├── event_controller.rb │ │ ├── feedback_controller.rb │ │ ├── ical_controller.rb │ │ ├── image_controller.rb │ │ ├── localization_controller.rb │ │ ├── pentabarf_controller.rb │ │ ├── person_controller.rb │ │ ├── report_controller.rb │ │ ├── schedule_controller.rb │ │ ├── search_controller.rb │ │ ├── submission_controller.rb │ │ ├── user_controller.rb │ │ ├── xcal_controller.rb │ │ └── xml_controller.rb │ ├── helpers │ │ ├── admin_helper.rb │ │ ├── application_helper.rb │ │ ├── atom_helper.rb │ │ ├── conference_helper.rb │ │ ├── csv_helper.rb │ │ ├── event_helper.rb │ │ ├── feedback_helper.rb │ │ ├── image_helper.rb │ │ ├── localization_helper.rb │ │ ├── pentabarf_helper.rb │ │ ├── person_helper.rb │ │ ├── report_helper.rb │ │ ├── schedule_helper.rb │ │ ├── search_helper.rb │ │ ├── submission_helper.rb │ │ ├── user_helper.rb │ │ ├── xcal_helper.rb │ │ └── xml_helper.rb │ ├── models │ │ ├── account.rb │ │ ├── account_activation.rb │ │ ├── account_conference_permissions.rb │ │ ├── account_password_reset.rb │ │ ├── account_permissions.rb │ │ ├── account_role.rb │ │ ├── account_settings.rb │ │ ├── activate_account.rb │ │ ├── activate_account_id.rb │ │ ├── attachment_type.rb │ │ ├── attachment_type_localized.rb │ │ ├── conference.rb │ │ ├── conference_day.rb │ │ ├── conference_image.rb │ │ ├── conference_language.rb │ │ ├── conference_link.rb │ │ ├── conference_person.rb │ │ ├── conference_person_link.rb │ │ ├── conference_person_link_internal.rb │ │ ├── conference_person_travel.rb │ │ ├── conference_phase.rb │ │ ├── conference_phase_conflict.rb │ │ ├── conference_phase_localized.rb │ │ ├── conference_release.rb │ │ ├── conference_role.rb │ │ ├── conference_role_permission.rb │ │ ├── conference_room.rb │ │ ├── conference_room_role.rb │ │ ├── conference_team.rb │ │ ├── conference_track.rb │ │ ├── conflict.rb │ │ ├── conflict_level.rb │ │ ├── conflict_level_localized.rb │ │ ├── conflict_localized.rb │ │ ├── conflict_statistics.rb │ │ ├── conflict_type.rb │ │ ├── copy_event.rb │ │ ├── country.rb │ │ ├── country_localized.rb │ │ ├── create_account.rb │ │ ├── currency.rb │ │ ├── currency_localized.rb │ │ ├── custom.rb │ │ ├── custom_conference.rb │ │ ├── custom_conference_person.rb │ │ ├── custom_event.rb │ │ ├── custom_fields.rb │ │ ├── custom_person.rb │ │ ├── dinner_menu.rb │ │ ├── domain.rb │ │ ├── event.rb │ │ ├── event_attachment.rb │ │ ├── event_feedback.rb │ │ ├── event_image.rb │ │ ├── event_link.rb │ │ ├── event_link_internal.rb │ │ ├── event_origin.rb │ │ ├── event_origin_localized.rb │ │ ├── event_person.rb │ │ ├── event_rating.rb │ │ ├── event_rating_category.rb │ │ ├── event_rating_remark.rb │ │ ├── event_role.rb │ │ ├── event_role_localized.rb │ │ ├── event_role_state.rb │ │ ├── event_role_state_localized.rb │ │ ├── event_state.rb │ │ ├── event_state_localized.rb │ │ ├── event_state_progress.rb │ │ ├── event_state_progress_localized.rb │ │ ├── event_type.rb │ │ ├── event_type_localized.rb │ │ ├── forgot_password.rb │ │ ├── im_type.rb │ │ ├── im_type_localized.rb │ │ ├── language.rb │ │ ├── language_localized.rb │ │ ├── link_type.rb │ │ ├── link_type_localized.rb │ │ ├── log.rb │ │ ├── log_transaction_involved_tables.rb │ │ ├── mime_type.rb │ │ ├── mime_type_localized.rb │ │ ├── notifier.rb │ │ ├── object_domain.rb │ │ ├── own_conference_events.rb │ │ ├── own_conference_persons.rb │ │ ├── own_events.rb │ │ ├── permission.rb │ │ ├── permission_localized.rb │ │ ├── person.rb │ │ ├── person_availability.rb │ │ ├── person_im.rb │ │ ├── person_image.rb │ │ ├── person_language.rb │ │ ├── person_phone.rb │ │ ├── person_rating.rb │ │ ├── phone_type.rb │ │ ├── phone_type_localized.rb │ │ ├── release.rb │ │ ├── release │ │ │ ├── conference.rb │ │ │ ├── conference_day.rb │ │ │ ├── conference_link.rb │ │ │ ├── conference_person.rb │ │ │ ├── conference_person_link.rb │ │ │ ├── conference_room.rb │ │ │ ├── conference_track.rb │ │ │ ├── event.rb │ │ │ ├── event_attachment.rb │ │ │ ├── event_link.rb │ │ │ ├── view_schedule_day.rb │ │ │ ├── view_schedule_event.rb │ │ │ ├── view_schedule_event_attachment.rb │ │ │ ├── view_schedule_event_person.rb │ │ │ ├── view_schedule_person.rb │ │ │ ├── view_schedule_room.rb │ │ │ └── view_schedule_track.rb │ │ ├── release_preview.rb │ │ ├── reset_password.rb │ │ ├── role.rb │ │ ├── role_localized.rb │ │ ├── role_permission.rb │ │ ├── set_config.rb │ │ ├── submit_event.rb │ │ ├── timezone.rb │ │ ├── transport.rb │ │ ├── transport_localized.rb │ │ ├── ui_message.rb │ │ ├── ui_message_localized.rb │ │ ├── view_conference_image_modification.rb │ │ ├── view_conference_language.rb │ │ ├── view_conference_person.rb │ │ ├── view_conference_rating.rb │ │ ├── view_conflict_event.rb │ │ ├── view_conflict_event_event.rb │ │ ├── view_conflict_event_person.rb │ │ ├── view_conflict_event_person_event.rb │ │ ├── view_conflict_level.rb │ │ ├── view_conflict_person.rb │ │ ├── view_event.rb │ │ ├── view_event_attachment.rb │ │ ├── view_event_category_rating.rb │ │ ├── view_event_duration.rb │ │ ├── view_event_feedback.rb │ │ ├── view_event_feedback_statistics.rb │ │ ├── view_event_image_modification.rb │ │ ├── view_event_origin.rb │ │ ├── view_event_person.rb │ │ ├── view_event_rating.rb │ │ ├── view_event_rating_public.rb │ │ ├── view_event_state_progress_statistic.rb │ │ ├── view_event_state_statistic.rb │ │ ├── view_find_account.rb │ │ ├── view_find_conference.rb │ │ ├── view_find_event.rb │ │ ├── view_find_person.rb │ │ ├── view_last_active.rb │ │ ├── view_mail_accepted_speaker.rb │ │ ├── view_mail_all_reviewer.rb │ │ ├── view_mail_all_speaker.rb │ │ ├── view_mail_missing_slides.rb │ │ ├── view_own_events_coordinator.rb │ │ ├── view_own_events_participant.rb │ │ ├── view_person.rb │ │ ├── view_person_image_modification.rb │ │ ├── view_person_rating.rb │ │ ├── view_recent_changes.rb │ │ ├── view_report_accommodation.rb │ │ ├── view_report_arrived.rb │ │ ├── view_report_expenses.rb │ │ ├── view_report_feedback.rb │ │ ├── view_report_missing.rb │ │ ├── view_report_not_arrived.rb │ │ ├── view_report_paper.rb │ │ ├── view_report_pickup.rb │ │ ├── view_report_resources.rb │ │ ├── view_report_review.rb │ │ ├── view_report_slides.rb │ │ ├── view_schedule.rb │ │ ├── view_schedule_day.rb │ │ ├── view_schedule_event.rb │ │ ├── view_schedule_event_attachment.rb │ │ ├── view_schedule_event_person.rb │ │ ├── view_schedule_person.rb │ │ ├── view_schedule_room.rb │ │ └── view_schedule_track.rb │ ├── stylesheets │ │ ├── _base.sass │ │ ├── _helper.sass │ │ ├── _img.sass │ │ ├── _sidebar.sass │ │ └── main.sass │ └── views │ │ ├── admin │ │ ├── _sidebar.rxml │ │ ├── account_roles.rxml │ │ ├── conference_role_permissions.rxml │ │ ├── conflict_setup.rxml │ │ ├── custom_fields.rxml │ │ ├── index.rxml │ │ └── role_permissions.rxml │ │ ├── atom │ │ └── recent_changes.rxml │ │ ├── auth_failed.rxml │ │ ├── conference │ │ ├── _conference_comment.rxml │ │ ├── _conference_days.rxml │ │ ├── _conference_export.rxml │ │ ├── _conference_feedback.rxml │ │ ├── _conference_general.rxml │ │ ├── _conference_rating.rxml │ │ ├── _conference_room_roles.rxml │ │ ├── _conference_rooms.rxml │ │ ├── _conference_speaker_dinner.rxml │ │ ├── _conference_teams.rxml │ │ ├── _conference_tracks.rxml │ │ ├── edit.rxml │ │ └── select.rxml │ │ ├── event │ │ ├── _conflicts.rxml │ │ ├── _event_comment.rxml │ │ ├── _event_description.rxml │ │ ├── _event_feedback.rxml │ │ ├── _event_general.rxml │ │ ├── _event_links.rxml │ │ ├── _event_persons.rxml │ │ ├── _event_rating.rxml │ │ ├── _event_related.rxml │ │ ├── _event_resources.rxml │ │ ├── _event_schedule.rxml │ │ ├── edit.rxml │ │ ├── own.rxml │ │ └── state.rxml │ │ ├── feedback │ │ ├── _sidebar.rxml │ │ ├── event.rxml │ │ └── thankyou.rxml │ │ ├── layouts │ │ ├── admin.rxml │ │ ├── conference.rxml │ │ ├── event.rxml │ │ ├── feedback.rxml │ │ ├── localization.rxml │ │ ├── pentabarf.rxml │ │ ├── person.rxml │ │ ├── report.rxml │ │ ├── schedule.rxml │ │ ├── search.rxml │ │ ├── submission.rxml │ │ ├── user.rxml │ │ └── xcal.rxml │ │ ├── localization │ │ ├── _localization_form.rxml │ │ ├── _localization_form2.rxml │ │ ├── _sidebar.rxml │ │ └── index.rxml │ │ ├── meditation.rhtml │ │ ├── notifier │ │ ├── activate_account.rhtml │ │ ├── forgot_password.rhtml │ │ └── general.rhtml │ │ ├── pentabarf │ │ ├── _activity.rxml │ │ ├── _recipients.rxml │ │ ├── conflicts.rxml │ │ ├── index.rxml │ │ ├── mail.rxml │ │ ├── recent_changes.rxml │ │ └── schedule.rxml │ │ ├── person │ │ ├── _conflicts.rxml │ │ ├── _person_account.rxml │ │ ├── _person_availability.rxml │ │ ├── _person_comment.rxml │ │ ├── _person_contact.rxml │ │ ├── _person_description.rxml │ │ ├── _person_events.rxml │ │ ├── _person_general.rxml │ │ ├── _person_links.rxml │ │ ├── _person_rating.rxml │ │ ├── _person_travel.rxml │ │ └── edit.rxml │ │ ├── report │ │ ├── _review_table.rxml │ │ ├── accommodation.rxml │ │ ├── arrived.rxml │ │ ├── expenses.rxml │ │ ├── feedback.rxml │ │ ├── index.rxml │ │ ├── missing.rxml │ │ ├── not_arrived.rxml │ │ ├── paper.rxml │ │ ├── pickup.rxml │ │ ├── report.rxml │ │ ├── resources.rxml │ │ ├── review.rxml │ │ └── slides.rxml │ │ ├── schedule │ │ ├── _event_infobox.rxml │ │ ├── _event_navigation.rxml │ │ ├── _sidebar.rxml │ │ ├── day.rxml │ │ ├── event.rxml │ │ ├── events.rxml │ │ ├── index.rxml │ │ ├── speaker.rxml │ │ └── speakers.rxml │ │ ├── search │ │ ├── _account_results.rxml │ │ ├── _conference_results.rxml │ │ ├── _event_results.rxml │ │ ├── _person_results.rxml │ │ ├── _sidebar_results.rxml │ │ ├── account.rxml │ │ ├── conference.rxml │ │ ├── event.rxml │ │ └── person.rxml │ │ ├── shared │ │ ├── _modification_buttons.rxml │ │ └── _sidebar.rxml │ │ ├── submission │ │ ├── _event_description.rxml │ │ ├── _event_feedback.rxml │ │ ├── _event_files.rxml │ │ ├── _event_general.rxml │ │ ├── _event_links.rxml │ │ ├── _event_resources.rxml │ │ ├── _person_account.rxml │ │ ├── _person_availability.rxml │ │ ├── _person_contact.rxml │ │ ├── _person_description.rxml │ │ ├── _person_general.rxml │ │ ├── _person_links.rxml │ │ ├── _person_travel.rxml │ │ ├── _sidebar.rxml │ │ ├── _submission_comment.rxml │ │ ├── event.rxml │ │ ├── events.rxml │ │ ├── index.rxml │ │ └── person.rxml │ │ ├── user │ │ ├── _sidebar.rxml │ │ ├── account_activated.rxml │ │ ├── account_done.rxml │ │ ├── forgot_password.rxml │ │ ├── index.rxml │ │ ├── new_account.rxml │ │ ├── reset_link_sent.rxml │ │ └── reset_password.rxml │ │ ├── xcal │ │ └── conference.rxml │ │ └── xml │ │ └── schedule.rxml ├── config │ ├── .gitignore │ ├── boot.rb │ ├── compass.config │ ├── database.yml.template │ ├── environment.rb │ ├── environments │ │ ├── development.rb │ │ ├── production.rb │ │ └── test.rb │ ├── initializers │ │ └── security_fix.rb │ ├── jabber.yml.template │ ├── mail.yml.template │ └── routes.rb ├── doc │ └── README_FOR_APP ├── lib │ ├── builder_enhancements.rb │ ├── builder_helper.rb │ ├── html_export.rb │ ├── jabberlogger.rb │ ├── localizer.rb │ ├── log_entry.rb │ ├── maillogger.rb │ ├── momomoto_auth.rb │ ├── momomoto_helper.rb │ ├── momomoto_logging.rb │ ├── momomoto_transaction_ids.rb │ ├── pentacards.rb │ ├── pope.rb │ ├── tasks │ │ └── rails_rcov.rake │ └── token.rb ├── log │ └── .gitignore ├── public │ ├── 404.html │ ├── 500.html │ ├── favicon.ico │ ├── htaccess.template │ ├── images │ │ ├── bullet.png │ │ ├── erisdiscordia-128x128.png │ │ ├── erisdiscordia-160x160.png │ │ ├── erisdiscordia-bug-160x160.png │ │ ├── icon-clock-128x128.png │ │ ├── icon-clock-256x256.png │ │ ├── icon-clock-64x64.png │ │ ├── icon-conference-128x128.png │ │ ├── icon-conference-32x32.png │ │ ├── icon-conference-64x64.png │ │ ├── icon-event-128x128.png │ │ ├── icon-event-32x32.png │ │ ├── icon-event-64x64.png │ │ ├── icon-find-conference-32x32.png │ │ ├── icon-find-event-32x32.png │ │ ├── icon-find-person-32x32.png │ │ ├── icon-im-32x32.png │ │ ├── icon-link-32x32.png │ │ ├── icon-list-64x64.png │ │ ├── icon-minus-16x16.png │ │ ├── icon-new-conference-32x32.png │ │ ├── icon-new-event-32x32.png │ │ ├── icon-new-person-32x32.png │ │ ├── icon-person-128x128.png │ │ ├── icon-person-32x32.png │ │ ├── icon-person-64x64.png │ │ ├── icon-phone-32x32.png │ │ └── icon-plus-16x16.png │ ├── javascripts │ │ ├── application.js │ │ ├── controls.js │ │ ├── dragdrop.js │ │ ├── effects.js │ │ ├── jscalendar │ │ │ ├── ChangeLog │ │ │ ├── README │ │ │ ├── calendar-blue.css │ │ │ ├── calendar-blue2.css │ │ │ ├── calendar-brown.css │ │ │ ├── calendar-green.css │ │ │ ├── calendar-setup.js │ │ │ ├── calendar-setup_stripped.js │ │ │ ├── calendar-system.css │ │ │ ├── calendar-tas.css │ │ │ ├── calendar-win2k-1.css │ │ │ ├── calendar-win2k-2.css │ │ │ ├── calendar-win2k-cold-1.css │ │ │ ├── calendar-win2k-cold-2.css │ │ │ ├── calendar.js │ │ │ ├── calendar_stripped.js │ │ │ ├── img.gif │ │ │ ├── lang │ │ │ │ ├── calendar-af.js │ │ │ │ ├── calendar-al.js │ │ │ │ ├── calendar-bg.js │ │ │ │ ├── calendar-big5-utf8.js │ │ │ │ ├── calendar-big5.js │ │ │ │ ├── calendar-br.js │ │ │ │ ├── calendar-ca.js │ │ │ │ ├── calendar-cs-utf8.js │ │ │ │ ├── calendar-cs-win.js │ │ │ │ ├── calendar-da.js │ │ │ │ ├── calendar-de.js │ │ │ │ ├── calendar-du.js │ │ │ │ ├── calendar-el.js │ │ │ │ ├── calendar-en.js │ │ │ │ ├── calendar-es.js │ │ │ │ ├── calendar-fi.js │ │ │ │ ├── calendar-fr.js │ │ │ │ ├── calendar-he-utf8.js │ │ │ │ ├── calendar-hr-utf8.js │ │ │ │ ├── calendar-hr.js │ │ │ │ ├── calendar-hu.js │ │ │ │ ├── calendar-it.js │ │ │ │ ├── calendar-jp.js │ │ │ │ ├── calendar-ko-utf8.js │ │ │ │ ├── calendar-ko.js │ │ │ │ ├── calendar-lt-utf8.js │ │ │ │ ├── calendar-lt.js │ │ │ │ ├── calendar-lv.js │ │ │ │ ├── calendar-nl.js │ │ │ │ ├── calendar-no.js │ │ │ │ ├── calendar-pl-utf8.js │ │ │ │ ├── calendar-pl.js │ │ │ │ ├── calendar-pt.js │ │ │ │ ├── calendar-ro.js │ │ │ │ ├── calendar-ru.js │ │ │ │ ├── calendar-ru_win_.js │ │ │ │ ├── calendar-si.js │ │ │ │ ├── calendar-sk.js │ │ │ │ ├── calendar-sp.js │ │ │ │ ├── calendar-sv.js │ │ │ │ ├── calendar-tr.js │ │ │ │ ├── calendar-zh.js │ │ │ │ └── cn_utf8.js │ │ │ ├── menuarrow.gif │ │ │ ├── menuarrow2.gif │ │ │ └── skins │ │ │ │ └── aqua │ │ │ │ ├── active-bg.gif │ │ │ │ ├── dark-bg.gif │ │ │ │ ├── hover-bg.gif │ │ │ │ ├── menuarrow.gif │ │ │ │ ├── normal-bg.gif │ │ │ │ ├── rowhover-bg.gif │ │ │ │ ├── status-bg.gif │ │ │ │ ├── theme.css │ │ │ │ ├── title-bg.gif │ │ │ │ └── today-bg.gif │ │ ├── prototype.js │ │ └── sortable.js │ ├── logout.html │ ├── robots.txt │ └── stylesheets │ │ └── main.css ├── script │ ├── about │ ├── breakpointer │ ├── console │ ├── dbconsole │ ├── destroy │ ├── generate │ ├── html-export │ ├── jabber │ ├── pentacards │ ├── performance │ │ ├── benchmarker │ │ └── profiler │ ├── plugin │ ├── process │ │ ├── inspector │ │ ├── reaper │ │ └── spawner │ ├── runner │ └── server ├── test │ ├── functional │ │ ├── admin_controller_test.rb │ │ ├── application_controller_test.rb │ │ ├── atom_controller_test.rb │ │ ├── conference_controller_test.rb │ │ ├── csv_controller_test.rb │ │ ├── event_controller_test.rb │ │ ├── feedback_controller_test.rb │ │ ├── ical_controller_test.rb │ │ ├── image_controller_test.rb │ │ ├── localization_controller_test.rb │ │ ├── pentabarf_controller_test.rb │ │ ├── person_controller_test.rb │ │ ├── report_controller_test.rb │ │ ├── schedule_controller_test.rb │ │ ├── search_controller_test.rb │ │ ├── submission_controller_test.rb │ │ ├── user_controller_test.rb │ │ ├── xcal_controller_test.rb │ │ └── xml_controller_test.rb │ ├── test_helper.rb │ └── unit │ │ ├── notifier_test.rb │ │ ├── pentacards_test.rb │ │ └── pope_test.rb ├── tmp │ ├── html-export │ │ └── .gitignore │ └── pids │ │ └── .gitignore └── vendor │ └── plugins │ └── rails-dev-boost │ ├── LICENSE │ ├── TODO.txt │ ├── init.rb │ ├── lib │ ├── rails_development_boost.rb │ └── rails_development_boost │ │ ├── dependencies_patch.rb │ │ ├── dispatcher_patch.rb │ │ ├── loaded_file.rb │ │ └── view_helpers_patch.rb │ └── test │ ├── constants │ ├── active_record │ │ ├── comment.rb │ │ ├── message.rb │ │ ├── other.rb │ │ └── post.rb │ ├── deep_nesting │ │ ├── a.rb │ │ └── a │ │ │ ├── b.rb │ │ │ └── b │ │ │ ├── c.rb │ │ │ └── c │ │ │ └── d.rb │ ├── double_removal │ │ ├── ns.rb │ │ └── ns │ │ │ ├── c.rb │ │ │ └── m.rb │ ├── mixins │ │ ├── client.rb │ │ ├── mixin.rb │ │ └── update │ │ │ └── mixin.rb │ ├── nested_mixins │ │ ├── b.rb │ │ ├── b │ │ │ └── c.rb │ │ ├── ma.rb │ │ ├── ma │ │ │ ├── mb.rb │ │ │ └── mb │ │ │ │ └── mc.rb │ │ ├── oa.rb │ │ └── oa │ │ │ ├── ob.rb │ │ │ └── ob │ │ │ └── oc.rb │ ├── single_removal │ │ ├── a.rb │ │ └── b.rb │ ├── singleton_mixins │ │ ├── a.rb │ │ └── b.rb │ └── subclass │ │ ├── a.rb │ │ ├── b.rb │ │ └── c.rb │ ├── rails_development_boost_test.rb │ └── stub_environment.rb └── sql ├── Makefile ├── activate_trigger.sql ├── data ├── attachment_type.sql ├── attachment_type_localized.sql ├── auth.conference_role.sql ├── auth.conference_role_localized.sql ├── auth.conference_role_permission.sql ├── auth.domain.sql ├── auth.object_domain.sql ├── auth.permission.sql ├── auth.permission_localized.sql ├── auth.role.sql ├── auth.role_localized.sql ├── auth.role_permission.sql ├── conference_phase.sql ├── conference_phase_localized.sql ├── conflict.conference_phase_conflict.sql ├── conflict.conflict.sql ├── conflict.conflict_level.sql ├── conflict.conflict_level_localized.sql ├── conflict.conflict_localized.sql ├── conflict.conflict_type.sql ├── country.sql ├── country_localized.sql ├── currency.sql ├── currency_localized.sql ├── event_origin.sql ├── event_origin_localized.sql ├── event_role.sql ├── event_role_localized.sql ├── event_role_state.sql ├── event_role_state_localized.sql ├── event_state.sql ├── event_state_localized.sql ├── event_state_progress.sql ├── event_state_progress_localized.sql ├── event_type.sql ├── event_type_localized.sql ├── im_type.sql ├── im_type_localized.sql ├── import.sql ├── language.sql ├── language_localized.sql ├── link_type.sql ├── link_type_localized.sql ├── mime_type.sql ├── mime_type_localized.sql ├── phone_type.sql ├── phone_type_localized.sql ├── timezone.sql ├── transport.sql ├── transport_localized.sql ├── ui_message.sql ├── ui_message_localized.sql └── update_data ├── functions.sql ├── functions ├── account │ ├── own_conference_persons.sql │ └── own_events.sql ├── add_attendee.sql ├── admin │ └── merge_person.sql ├── auth │ ├── account_conference_permissions.sql │ ├── account_permissions.sql │ ├── activate_account.sql │ ├── activate_account_id.sql │ ├── create_account.sql │ ├── forgot_password.sql │ └── reset_password.sql ├── conflict │ ├── conflict_statistics.sql │ ├── event │ │ ├── abstract_length.sql │ │ ├── accepted_without_timeslot.sql │ │ ├── conference_language.sql │ │ ├── conflict_event.sql │ │ ├── description_length.sql │ │ ├── incomplete.sql │ │ ├── inconsistent_public_link.sql │ │ ├── inconsistent_tag.sql │ │ ├── missing_tag.sql │ │ ├── no_abstract.sql │ │ ├── no_coordinator.sql │ │ ├── no_description.sql │ │ ├── no_language_sql.sql │ │ ├── no_paper.sql │ │ ├── no_room_roles.sql │ │ ├── no_slides.sql │ │ ├── no_speaker.sql │ │ ├── no_track.sql │ │ ├── paper_unknown.sql │ │ ├── slides_unknown.sql │ │ └── unconfirmed_with_timeslot.sql │ ├── event_event │ │ ├── conflict_event_event.sql │ │ ├── duplicate_tag.sql │ │ ├── event_without_break_after.sql │ │ ├── event_without_break_before.sql │ │ └── time.sql │ ├── event_person │ │ ├── conflict_event_person.sql │ │ ├── event_after_departure.sql │ │ ├── event_before_arrival.sql │ │ ├── language.sql │ │ └── person_availability.sql │ ├── event_person_event │ │ ├── conflict_event_person_event.sql │ │ ├── time_attendee.sql │ │ ├── time_speaker_speaker.sql │ │ ├── time_speaker_visitor.sql │ │ └── time_visitor_visitor.sql │ ├── person │ │ ├── abstract_length.sql │ │ ├── conflict_person.sql │ │ ├── description_length.sql │ │ ├── inconsistent_public_link.sql │ │ ├── no_abstract.sql │ │ ├── no_description.sql │ │ └── no_mail.sql │ ├── view_conflict_event.sql │ ├── view_conflict_event_event.sql │ ├── view_conflict_event_person.sql │ ├── view_conflict_event_person_event.sql │ └── view_conflict_person.sql ├── copy_event.sql ├── custom_field_trigger.sql ├── log │ └── activate_logging.sql ├── related_event_keyword.sql ├── related_event_speaker.sql ├── remove_attendee.sql └── submit_event.sql ├── index.sql ├── maintenance ├── upgrade_0.3.0_to_0.3.1.sql ├── upgrade_0.3.10_to_0.3.11.sql ├── upgrade_0.3.11_to_0.3.12.sql ├── upgrade_0.3.12_to_0.3.13.sql ├── upgrade_0.3.13_to_0.3.14.sql ├── upgrade_0.3.14_to_0.3.15.sql ├── upgrade_0.3.15_to_0.3.16.sql ├── upgrade_0.3.16_to_0.3.17.sql ├── upgrade_0.3.17_to_0.3.18.sql ├── upgrade_0.3.18_0.4.0.sql ├── upgrade_0.3.1_to_0.3.2.sql ├── upgrade_0.3.2_to_0.3.3.sql ├── upgrade_0.3.3_to_0.3.4.sql ├── upgrade_0.3.4_to_0.3.5.sql ├── upgrade_0.3.5_to_0.3.6.sql ├── upgrade_0.3.6_to_0.3.7.sql ├── upgrade_0.3.7_to_0.3.8.sql ├── upgrade_0.3.8_to_0.3.9.sql ├── upgrade_0.3.9_to_0.3.10.sql ├── upgrade_0.4.0_to_0.4.1.sql ├── upgrade_0.4.1_to_0.4.2.sql └── upgrade_0.4.3_to_0.4.4.sql ├── pentabarf-user.sql ├── schema.sql ├── tables.sql ├── tables ├── attachment_type.sql ├── attachment_type_localized.sql ├── auth │ ├── account.sql │ ├── account_activation.sql │ ├── account_conference_role.sql │ ├── account_password_reset.sql │ ├── account_role.sql │ ├── account_settings.sql │ ├── conference_role.sql │ ├── conference_role_localized.sql │ ├── conference_role_permission.sql │ ├── domain.sql │ ├── object_domain.sql │ ├── permission.sql │ ├── permission_localized.sql │ ├── role.sql │ ├── role_localized.sql │ └── role_permission.sql ├── base │ ├── logging.sql │ └── release.sql ├── conference.sql ├── conference_day.sql ├── conference_image.sql ├── conference_language.sql ├── conference_link.sql ├── conference_person.sql ├── conference_person_link.sql ├── conference_person_link_internal.sql ├── conference_person_travel.sql ├── conference_phase.sql ├── conference_phase_localized.sql ├── conference_release.sql ├── conference_room.sql ├── conference_room_role.sql ├── conference_team.sql ├── conference_track.sql ├── conflict │ ├── conference_phase_conflict.sql │ ├── conflict.sql │ ├── conflict_level.sql │ ├── conflict_level_localized.sql │ ├── conflict_localized.sql │ └── conflict_type.sql ├── country.sql ├── country_localized.sql ├── currency.sql ├── currency_localized.sql ├── custom │ ├── custom_conference.sql │ ├── custom_conference_person.sql │ ├── custom_event.sql │ ├── custom_fields.sql │ └── custom_person.sql ├── dinner_menu.sql ├── event.sql ├── event_attachment.sql ├── event_feedback.sql ├── event_image.sql ├── event_link.sql ├── event_link_internal.sql ├── event_origin.sql ├── event_origin_localized.sql ├── event_person.sql ├── event_rating.sql ├── event_rating_category.sql ├── event_rating_remark.sql ├── event_related.sql ├── event_role.sql ├── event_role_localized.sql ├── event_role_state.sql ├── event_role_state_localized.sql ├── event_state.sql ├── event_state_localized.sql ├── event_state_progress.sql ├── event_state_progress_localized.sql ├── event_type.sql ├── event_type_localized.sql ├── im_type.sql ├── im_type_localized.sql ├── language.sql ├── language_localized.sql ├── link_type.sql ├── link_type_localized.sql ├── log │ ├── log_transaction.sql │ └── log_transaction_involved_tables.sql ├── mime_type.sql ├── mime_type_localized.sql ├── person.sql ├── person_availability.sql ├── person_im.sql ├── person_image.sql ├── person_language.sql ├── person_phone.sql ├── person_rating.sql ├── phone_type.sql ├── phone_type_localized.sql ├── release │ ├── conference.sql │ ├── conference_day.sql │ ├── conference_image.sql │ ├── conference_link.sql │ ├── conference_person.sql │ ├── conference_person_link.sql │ ├── conference_room.sql │ ├── conference_track.sql │ ├── event.sql │ ├── event_attachment.sql │ ├── event_image.sql │ ├── event_link.sql │ ├── event_person.sql │ ├── person.sql │ └── person_image.sql ├── timezone.sql ├── transport.sql ├── transport_localized.sql ├── ui_message.sql └── ui_message_localized.sql ├── test.sql ├── trigger.sql ├── types.sql ├── views.sql └── views ├── conference_image_modification.sql ├── conference_person.sql ├── conference_person_link_internal.sql ├── conference_rating.sql ├── event.sql ├── event_attachment.sql ├── event_feedback.sql ├── event_feedback_statistics.sql ├── event_image_modification.sql ├── event_link_internal.sql ├── event_person.sql ├── event_rating.sql ├── event_related.sql ├── find ├── find_conference.sql ├── find_event.sql ├── find_person.sql └── view_find_account.sql ├── last_active.sql ├── mail ├── mail_accepted_speaker.sql ├── mail_all_reviewer.sql ├── mail_all_speaker.sql └── mail_missing_slides.sql ├── person.sql ├── person_image_modification.sql ├── person_rating.sql ├── recent_changes.sql ├── release ├── view_person.sql ├── view_schedule_day.sql ├── view_schedule_event.sql ├── view_schedule_event_attachment.sql ├── view_schedule_event_person.sql ├── view_schedule_person.sql ├── view_schedule_room.sql └── view_schedule_track.sql ├── report ├── report_accommodation.sql ├── report_arrived.sql ├── report_events.sql ├── report_expenses.sql ├── report_feedback.sql ├── report_missing.sql ├── report_not_arrived.sql ├── report_paper.sql ├── report_pickup.sql ├── report_resources.sql ├── report_schedule_coordinator.sql ├── report_schedule_gender.sql ├── report_slides.sql └── view_report_review.sql ├── schedule ├── view_schedule.sql ├── view_schedule_day.sql ├── view_schedule_event.sql ├── view_schedule_event_attachment.sql ├── view_schedule_event_person.sql ├── view_schedule_person.sql ├── view_schedule_room.sql └── view_schedule_track.sql ├── view_conference_language.sql ├── view_event_category_rating.sql ├── view_event_duration.sql ├── view_event_state_progress_statistic.sql ├── view_event_state_statistic.sql ├── view_own_events_coordinator.sql └── view_own_events_participant.sql /INSTALL: -------------------------------------------------------------------------------- 1 | 2 | The installation instructions for pentabarf can be found in the pentabarf 3 | wiki http://pentabarf.org/Installation 4 | 5 | -------------------------------------------------------------------------------- /README: -------------------------------------------------------------------------------- 1 | 2 | Pentabarf is a conference planning software written in Ruby 3 | ( using the Rails framework) and PL/pgSQL. 4 | 5 | Pentabarf supports you in the submission collection, content planning, 6 | schedule creation, feedback collection and has various exports to put 7 | these data to use in other systems. 8 | 9 | -------------------------------------------------------------------------------- /contrib/README: -------------------------------------------------------------------------------- 1 | Contrib 2 | ------- 3 | 4 | This directory contains additional files and tools supplied by people 5 | using pentabarf. Some of the files may not work right away on an 6 | unmodified pentabarf version, but they will at least give you a good 7 | idea what you could do yourself. 8 | -------------------------------------------------------------------------------- /rails/.gitignore: -------------------------------------------------------------------------------- 1 | app/stylesheets/.sass-cache 2 | tmp/sass-cache 3 | -------------------------------------------------------------------------------- /rails/Rakefile: -------------------------------------------------------------------------------- 1 | # Add your own tasks in files placed in lib/tasks ending in .rake, 2 | # for example lib/tasks/capistrano.rake, and they will automatically be available to Rake. 3 | 4 | require(File.join(File.dirname(__FILE__), 'config', 'boot')) 5 | 6 | require 'rake' 7 | require 'rake/testtask' 8 | require 'rake/rdoctask' 9 | 10 | require 'tasks/rails' 11 | -------------------------------------------------------------------------------- /rails/app/controllers/atom_controller.rb: -------------------------------------------------------------------------------- 1 | class AtomController < ApplicationController 2 | 3 | def recent_changes 4 | response.content_type = Mime::ATOM 5 | @current_language = POPE.user.current_language 6 | @changes = View_recent_changes.select( {}, {:limit => 25 } ) 7 | end 8 | 9 | def check_permission 10 | POPE.permission?('pentabarf::login') 11 | end 12 | 13 | end 14 | -------------------------------------------------------------------------------- /rails/app/helpers/admin_helper.rb: -------------------------------------------------------------------------------- 1 | module AdminHelper 2 | end 3 | -------------------------------------------------------------------------------- /rails/app/helpers/atom_helper.rb: -------------------------------------------------------------------------------- 1 | module AtomHelper 2 | end 3 | -------------------------------------------------------------------------------- /rails/app/helpers/conference_helper.rb: -------------------------------------------------------------------------------- 1 | module ConferenceHelper 2 | end 3 | -------------------------------------------------------------------------------- /rails/app/helpers/csv_helper.rb: -------------------------------------------------------------------------------- 1 | module CsvHelper 2 | end 3 | -------------------------------------------------------------------------------- /rails/app/helpers/feedback_helper.rb: -------------------------------------------------------------------------------- 1 | module FeedbackHelper 2 | end 3 | -------------------------------------------------------------------------------- /rails/app/helpers/image_helper.rb: -------------------------------------------------------------------------------- 1 | module ImageHelper 2 | end 3 | -------------------------------------------------------------------------------- /rails/app/helpers/localization_helper.rb: -------------------------------------------------------------------------------- 1 | module LocalizationHelper 2 | end 3 | -------------------------------------------------------------------------------- /rails/app/helpers/pentabarf_helper.rb: -------------------------------------------------------------------------------- 1 | module PentabarfHelper 2 | 3 | end 4 | 5 | -------------------------------------------------------------------------------- /rails/app/helpers/person_helper.rb: -------------------------------------------------------------------------------- 1 | module PersonHelper 2 | end 3 | -------------------------------------------------------------------------------- /rails/app/helpers/report_helper.rb: -------------------------------------------------------------------------------- 1 | module ReportHelper 2 | end 3 | -------------------------------------------------------------------------------- /rails/app/helpers/search_helper.rb: -------------------------------------------------------------------------------- 1 | module SearchHelper 2 | end 3 | -------------------------------------------------------------------------------- /rails/app/helpers/submission_helper.rb: -------------------------------------------------------------------------------- 1 | module SubmissionHelper 2 | end 3 | -------------------------------------------------------------------------------- /rails/app/helpers/user_helper.rb: -------------------------------------------------------------------------------- 1 | module UserHelper 2 | end 3 | -------------------------------------------------------------------------------- /rails/app/helpers/xcal_helper.rb: -------------------------------------------------------------------------------- 1 | module XcalHelper 2 | end 3 | -------------------------------------------------------------------------------- /rails/app/helpers/xml_helper.rb: -------------------------------------------------------------------------------- 1 | module XmlHelper 2 | end 3 | -------------------------------------------------------------------------------- /rails/app/models/account_activation.rb: -------------------------------------------------------------------------------- 1 | class Account_activation < Momomoto::Table 2 | schema_name "auth" 3 | 4 | def self.log_content_columns 5 | [] 6 | end 7 | 8 | end 9 | 10 | -------------------------------------------------------------------------------- /rails/app/models/account_conference_permissions.rb: -------------------------------------------------------------------------------- 1 | class Account_conference_permissions < Momomoto::Procedure 2 | schema_name "auth" 3 | end 4 | 5 | -------------------------------------------------------------------------------- /rails/app/models/account_password_reset.rb: -------------------------------------------------------------------------------- 1 | class Account_password_reset < Momomoto::Table 2 | schema_name "auth" 3 | 4 | def self.log_content_columns 5 | [] 6 | end 7 | 8 | end 9 | 10 | -------------------------------------------------------------------------------- /rails/app/models/account_permissions.rb: -------------------------------------------------------------------------------- 1 | class Account_permissions < Momomoto::Procedure 2 | schema_name "auth" 3 | end 4 | 5 | -------------------------------------------------------------------------------- /rails/app/models/account_role.rb: -------------------------------------------------------------------------------- 1 | class Account_role < Momomoto::Table 2 | schema_name "auth" 3 | 4 | def self.log_content_columns 5 | columns.keys - [:account_id] 6 | end 7 | 8 | def self.log_change_url( change ) 9 | {:controller=>'admin',:action=>:account_roles,:id=>change.account_id} 10 | rescue 11 | {} 12 | end 13 | 14 | def self.log_change_title( change ) 15 | Account.log_change_title( Account.select_single({:account_id=>change.account_id})) 16 | rescue 17 | change.account_id 18 | end 19 | 20 | end 21 | 22 | -------------------------------------------------------------------------------- /rails/app/models/account_settings.rb: -------------------------------------------------------------------------------- 1 | require 'yaml' 2 | class Account_settings < Momomoto::Table 3 | schema_name "auth" 4 | module Methods 5 | 6 | def current_language 7 | get_column(:current_language) || 'en' 8 | end 9 | 10 | def preferences 11 | YAML.load( get_column( :preferences ) ) rescue {} 12 | end 13 | 14 | def preferences=( value ) 15 | set_column( :preferences, value.to_yaml ) 16 | end 17 | 18 | end 19 | end 20 | 21 | -------------------------------------------------------------------------------- /rails/app/models/activate_account.rb: -------------------------------------------------------------------------------- 1 | class Activate_account < Momomoto::Procedure 2 | schema_name "auth" 3 | end 4 | 5 | -------------------------------------------------------------------------------- /rails/app/models/activate_account_id.rb: -------------------------------------------------------------------------------- 1 | class Activate_account_id < Momomoto::Procedure 2 | schema_name "auth" 3 | end 4 | 5 | -------------------------------------------------------------------------------- /rails/app/models/attachment_type.rb: -------------------------------------------------------------------------------- 1 | class Attachment_type < Momomoto::Table 2 | end 3 | 4 | -------------------------------------------------------------------------------- /rails/app/models/attachment_type_localized.rb: -------------------------------------------------------------------------------- 1 | class Attachment_type_localized < Momomoto::Table 2 | end 3 | 4 | -------------------------------------------------------------------------------- /rails/app/models/conference_day.rb: -------------------------------------------------------------------------------- 1 | class Conference_day < Momomoto::Table 2 | default_order( :conference_day ) 3 | 4 | def self.log_change_url( change ) 5 | {:controller=>'conference',:action=>:edit,:conference_id=>change.conference_id} 6 | end 7 | 8 | def self.log_change_title( change ) 9 | Conference.log_change_title( Conference.select_single(:conference_id=>change.conference_id)) 10 | rescue 11 | "" 12 | end 13 | 14 | end 15 | 16 | -------------------------------------------------------------------------------- /rails/app/models/conference_image.rb: -------------------------------------------------------------------------------- 1 | class Conference_image < Momomoto::Table 2 | 3 | def self.log_content_columns 4 | columns.keys - [:conference_id] 5 | end 6 | 7 | def self.log_hidden_columns 8 | [:image] 9 | end 10 | 11 | def self.log_change_url( change ) 12 | {:controller=>'conference',:action=>:edit,:conference_id=>change.conference_id} 13 | end 14 | 15 | def self.log_change_title( change ) 16 | Conference.log_change_title( Conference.select_single(:conference_id=>change.conference_id)) 17 | rescue 18 | "" 19 | end 20 | 21 | end 22 | 23 | -------------------------------------------------------------------------------- /rails/app/models/conference_language.rb: -------------------------------------------------------------------------------- 1 | class Conference_language < Momomoto::Table 2 | 3 | def self.log_content_columns 4 | columns.keys - [:conference_id] 5 | end 6 | 7 | def self.log_change_url( change ) 8 | {:controller=>'conference',:action=>:edit,:conference_id=>change.conference_id} 9 | end 10 | 11 | def self.log_change_title( change ) 12 | Conference.log_change_title( Conference.select_single(:conference_id=>change.conference_id)) 13 | rescue 14 | "" 15 | end 16 | 17 | end 18 | -------------------------------------------------------------------------------- /rails/app/models/conference_link.rb: -------------------------------------------------------------------------------- 1 | class Conference_link < Momomoto::Table 2 | 3 | def self.log_content_columns 4 | columns.keys - [:conference_id,:conference_link_id] 5 | end 6 | 7 | def self.log_change_url( change ) 8 | {:controller=>'conference',:action=>:edit,:conference_id=>change.conference_id} 9 | end 10 | 11 | def self.log_change_title( change ) 12 | Conference.log_change_title( Conference.select_single({:conference_id=>change.conference_id})) 13 | rescue 14 | "" 15 | end 16 | 17 | end 18 | 19 | -------------------------------------------------------------------------------- /rails/app/models/conference_person.rb: -------------------------------------------------------------------------------- 1 | class Conference_person < Momomoto::Table 2 | 3 | def self.log_content_columns 4 | columns.keys - [:conference_person_id] 5 | end 6 | 7 | def self.log_change_url( change ) 8 | {:controller=>'person',:action=>:edit,:person_id=>change.person_id} 9 | end 10 | 11 | def self.log_change_title( change ) 12 | person = Person.select_single({:person_id=>change.person_id}) 13 | begin 14 | conf = Conference.select_single({:conference_id=>change.conference_id}) 15 | "#{conf.acronym}: #{person.name}" 16 | rescue 17 | Person.log_change_title( person ) 18 | end 19 | rescue 20 | "" 21 | end 22 | 23 | end 24 | 25 | -------------------------------------------------------------------------------- /rails/app/models/conference_person_link.rb: -------------------------------------------------------------------------------- 1 | class Conference_person_link < Momomoto::Table 2 | 3 | def self.log_content_columns 4 | columns.keys - [:conference_person_id,:conference_person_link_id] 5 | end 6 | 7 | def self.log_change_url( change ) 8 | person = Conference_person.select_single({:conference_person_id=>change.conference_person_id}) 9 | {:controller=>'person',:action=>:edit,:person_id=>person.person_id} 10 | rescue 11 | {} 12 | end 13 | 14 | def self.log_change_title( change ) 15 | Conference_person.log_change_title( Conference_person.select_single({:conference_person_id=>change.conference_person_id}) ) 16 | rescue 17 | "" 18 | end 19 | 20 | end 21 | 22 | -------------------------------------------------------------------------------- /rails/app/models/conference_person_link_internal.rb: -------------------------------------------------------------------------------- 1 | class Conference_person_link_internal < Momomoto::Table 2 | 3 | def self.log_content_columns 4 | columns.keys - [:conference_person_id,:conference_person_link_internal_id] 5 | end 6 | 7 | def self.log_change_url( change ) 8 | person = Conference_person.select_single({:conference_person_id=>change.conference_person_id}) 9 | {:controller=>'person',:action=>:edit,:id=>person.person_id} 10 | rescue 11 | {} 12 | end 13 | 14 | def self.log_change_title( change ) 15 | Conference_person.log_change_title( Conference_person.select_single({:conference_person_id=>change.conference_person_id}) ) 16 | rescue 17 | "" 18 | end 19 | 20 | end 21 | 22 | -------------------------------------------------------------------------------- /rails/app/models/conference_person_travel.rb: -------------------------------------------------------------------------------- 1 | class Conference_person_travel < Momomoto::Table 2 | 3 | def self.log_content_columns 4 | columns.keys - [:conference_person_id] 5 | end 6 | 7 | def self.log_change_url( change ) 8 | cp = Conference_person.select_single({:conference_person_id=>change.conference_person_id}) 9 | {:controller=>'person',:action=>:edit,:person_id=>cp.person_id} 10 | rescue 11 | {} 12 | end 13 | 14 | def self.log_change_title( change ) 15 | Conference_person.log_change_title( Conference_person.select_single({:conference_person_id=>change.conference_person_id}) ) 16 | rescue 17 | "" 18 | end 19 | 20 | end 21 | 22 | -------------------------------------------------------------------------------- /rails/app/models/conference_phase.rb: -------------------------------------------------------------------------------- 1 | class Conference_phase < Momomoto::Table 2 | end 3 | -------------------------------------------------------------------------------- /rails/app/models/conference_phase_conflict.rb: -------------------------------------------------------------------------------- 1 | class Conference_phase_conflict < Momomoto::Table 2 | schema_name "conflict" 3 | end 4 | 5 | -------------------------------------------------------------------------------- /rails/app/models/conference_phase_localized.rb: -------------------------------------------------------------------------------- 1 | class Conference_phase_localized < Momomoto::Table 2 | end 3 | 4 | -------------------------------------------------------------------------------- /rails/app/models/conference_release.rb: -------------------------------------------------------------------------------- 1 | class Conference_release < Momomoto::Table 2 | 3 | def self.log_content_columns 4 | columns.keys - [:conference_release_id] 5 | end 6 | 7 | end 8 | 9 | -------------------------------------------------------------------------------- /rails/app/models/conference_role.rb: -------------------------------------------------------------------------------- 1 | class Conference_role < Momomoto::Table 2 | schema_name "auth" 3 | default_order [:rank,:conference_role] 4 | end 5 | -------------------------------------------------------------------------------- /rails/app/models/conference_role_permission.rb: -------------------------------------------------------------------------------- 1 | class Conference_role_permission < Momomoto::Table 2 | schema_name "auth" 3 | end 4 | 5 | -------------------------------------------------------------------------------- /rails/app/models/conference_room.rb: -------------------------------------------------------------------------------- 1 | class Conference_room < Momomoto::Table 2 | default_order( [:rank, Momomoto::lower(:conference_room)] ) 3 | end 4 | 5 | -------------------------------------------------------------------------------- /rails/app/models/conference_room_role.rb: -------------------------------------------------------------------------------- 1 | class Conference_room_role < Momomoto::Table 2 | end 3 | 4 | -------------------------------------------------------------------------------- /rails/app/models/conference_team.rb: -------------------------------------------------------------------------------- 1 | class Conference_team < Momomoto::Table 2 | end 3 | 4 | -------------------------------------------------------------------------------- /rails/app/models/conference_track.rb: -------------------------------------------------------------------------------- 1 | class Conference_track < Momomoto::Table 2 | default_order( [:rank, Momomoto::lower(:conference_track)] ) 3 | end 4 | 5 | -------------------------------------------------------------------------------- /rails/app/models/conflict.rb: -------------------------------------------------------------------------------- 1 | class Conflict < Momomoto::Table 2 | schema_name 'conflict' 3 | end 4 | 5 | -------------------------------------------------------------------------------- /rails/app/models/conflict_level.rb: -------------------------------------------------------------------------------- 1 | class Conflict_level < Momomoto::Table 2 | schema_name 'conflict' 3 | end 4 | 5 | -------------------------------------------------------------------------------- /rails/app/models/conflict_level_localized.rb: -------------------------------------------------------------------------------- 1 | class Conflict_level_localized < Momomoto::Table 2 | schema_name "conflict" 3 | end 4 | 5 | -------------------------------------------------------------------------------- /rails/app/models/conflict_localized.rb: -------------------------------------------------------------------------------- 1 | class Conflict_localized < Momomoto::Table 2 | schema_name 'conflict' 3 | end 4 | 5 | -------------------------------------------------------------------------------- /rails/app/models/conflict_statistics.rb: -------------------------------------------------------------------------------- 1 | class Conflict_statistics < Momomoto::Procedure 2 | schema_name 'conflict' 3 | end 4 | 5 | -------------------------------------------------------------------------------- /rails/app/models/conflict_type.rb: -------------------------------------------------------------------------------- 1 | class Conflict_type < Momomoto::Table 2 | schema_name 'conflict' 3 | end 4 | 5 | -------------------------------------------------------------------------------- /rails/app/models/copy_event.rb: -------------------------------------------------------------------------------- 1 | class Copy_event < Momomoto::Procedure 2 | end 3 | -------------------------------------------------------------------------------- /rails/app/models/country.rb: -------------------------------------------------------------------------------- 1 | class Country < Momomoto::Table 2 | end 3 | -------------------------------------------------------------------------------- /rails/app/models/country_localized.rb: -------------------------------------------------------------------------------- 1 | class Country_localized < Momomoto::Table 2 | end 3 | 4 | -------------------------------------------------------------------------------- /rails/app/models/create_account.rb: -------------------------------------------------------------------------------- 1 | class Create_account < Momomoto::Procedure 2 | schema_name "auth" 3 | end 4 | -------------------------------------------------------------------------------- /rails/app/models/currency.rb: -------------------------------------------------------------------------------- 1 | class Currency < Momomoto::Table 2 | end 3 | -------------------------------------------------------------------------------- /rails/app/models/currency_localized.rb: -------------------------------------------------------------------------------- 1 | class Currency_localized < Momomoto::Table 2 | end 3 | 4 | -------------------------------------------------------------------------------- /rails/app/models/custom.rb: -------------------------------------------------------------------------------- 1 | 2 | module Custom 3 | 4 | def self.const_missing( table ) 5 | klass = Class.new( Momomoto::Table ) 6 | klass.schema_name = "custom" 7 | klass.table_name = "custom_#{table.to_s.downcase}" 8 | Custom.const_set(table, klass) 9 | end 10 | 11 | end 12 | 13 | -------------------------------------------------------------------------------- /rails/app/models/custom_conference.rb: -------------------------------------------------------------------------------- 1 | Custom_conference = Custom::Conference 2 | 3 | -------------------------------------------------------------------------------- /rails/app/models/custom_conference_person.rb: -------------------------------------------------------------------------------- 1 | Custom_conference_person = Custom::Conference_person 2 | 3 | -------------------------------------------------------------------------------- /rails/app/models/custom_event.rb: -------------------------------------------------------------------------------- 1 | Custom_event = Custom::Event 2 | -------------------------------------------------------------------------------- /rails/app/models/custom_fields.rb: -------------------------------------------------------------------------------- 1 | Custom_fields = Custom::Fields 2 | -------------------------------------------------------------------------------- /rails/app/models/custom_person.rb: -------------------------------------------------------------------------------- 1 | Custom_person = Custom::Person 2 | 3 | -------------------------------------------------------------------------------- /rails/app/models/dinner_menu.rb: -------------------------------------------------------------------------------- 1 | class Dinner_menu < Momomoto::Table 2 | end 3 | 4 | -------------------------------------------------------------------------------- /rails/app/models/domain.rb: -------------------------------------------------------------------------------- 1 | class Domain < Momomoto::Table 2 | schema_name "auth" 3 | end 4 | 5 | -------------------------------------------------------------------------------- /rails/app/models/event.rb: -------------------------------------------------------------------------------- 1 | class Event < Momomoto::Table 2 | SubmissionFields = [:title,:subtitle,:paper,:slides,:language,:conference_track_id,:event_type,:abstract,:description,:resources,:duration,:submission_notes] 3 | 4 | module Methods 5 | 6 | def persons( *args ) 7 | event_person( *args ) 8 | end 9 | 10 | end 11 | 12 | def self.log_content_columns 13 | columns.keys - [:event_id] 14 | end 15 | 16 | def self.log_change_url( change ) 17 | {:controller=>'event',:action=>:edit,:event_id=>change.event_id} 18 | end 19 | 20 | def self.log_change_title( change ) 21 | conf = Conference.select_single(:conference_id=>change.conference_id) 22 | "#{conf.acronym}: #{change.title}" 23 | rescue 24 | change.title 25 | end 26 | 27 | end 28 | -------------------------------------------------------------------------------- /rails/app/models/event_attachment.rb: -------------------------------------------------------------------------------- 1 | class Event_attachment < Momomoto::Table 2 | 3 | def self.log_content_columns 4 | columns.keys - [:event_id] 5 | end 6 | 7 | def self.log_hidden_columns 8 | [:data] 9 | end 10 | 11 | def self.log_change_url( change ) 12 | {:controller=>'event',:action=>:edit,:event_id=>change.event_id} 13 | end 14 | 15 | def self.log_change_title( change ) 16 | Event.log_change_title( Event.select_single({:event_id=>change.event_id})) 17 | rescue 18 | "" 19 | end 20 | 21 | end 22 | 23 | -------------------------------------------------------------------------------- /rails/app/models/event_feedback.rb: -------------------------------------------------------------------------------- 1 | class Event_feedback < Momomoto::Table 2 | 3 | def self.log_content_columns 4 | columns.keys - [:eval_time,:event_id,:event_feedback_id] 5 | end 6 | 7 | def self.log_change_url( change ) 8 | {:controller=>'event',:action=>:edit,:event_id=>change.event_id} 9 | end 10 | 11 | def self.log_change_title( change ) 12 | Event.log_change_title( Event.select_single({:event_id=>change.event_id})) 13 | rescue 14 | "" 15 | end 16 | 17 | end 18 | 19 | -------------------------------------------------------------------------------- /rails/app/models/event_image.rb: -------------------------------------------------------------------------------- 1 | class Event_image < Momomoto::Table 2 | 3 | def self.log_hidden_columns 4 | [:image] 5 | end 6 | 7 | def self.log_content_columns 8 | columns.keys - [:event_id] 9 | end 10 | 11 | def self.log_change_url( change ) 12 | {:controller=>'event',:action=>:edit,:event_id=>change.event_id} 13 | end 14 | 15 | def self.log_change_title( change ) 16 | Event.log_change_title( Event.select_single({:event_id=>change.event_id})) 17 | rescue 18 | "" 19 | end 20 | 21 | end 22 | 23 | -------------------------------------------------------------------------------- /rails/app/models/event_link.rb: -------------------------------------------------------------------------------- 1 | class Event_link < Momomoto::Table 2 | 3 | def self.log_content_columns 4 | columns.keys - [:event_id,:event_link_id] 5 | end 6 | 7 | def self.log_change_url( change ) 8 | {:controller=>'event',:action=>:edit,:event_id=>change.event_id} 9 | end 10 | 11 | def self.log_change_title( change ) 12 | Event.log_change_title( Event.select_single({:event_id=>change.event_id})) 13 | rescue 14 | "" 15 | end 16 | 17 | end 18 | 19 | -------------------------------------------------------------------------------- /rails/app/models/event_link_internal.rb: -------------------------------------------------------------------------------- 1 | class Event_link_internal < Momomoto::Table 2 | 3 | def self.log_content_columns 4 | columns.keys - [:event_id,:event_link_internal_id] 5 | end 6 | 7 | def self.log_change_url( change ) 8 | {:controller=>'event',:action=>:edit,:event_id=>change.event_id} 9 | end 10 | 11 | def self.log_change_title( change ) 12 | Event.log_change_title( Event.select_single({:event_id=>change.event_id})) 13 | rescue 14 | "" 15 | end 16 | 17 | end 18 | 19 | -------------------------------------------------------------------------------- /rails/app/models/event_origin.rb: -------------------------------------------------------------------------------- 1 | class Event_origin < Momomoto::Table 2 | end 3 | 4 | -------------------------------------------------------------------------------- /rails/app/models/event_origin_localized.rb: -------------------------------------------------------------------------------- 1 | class Event_origin_localized < Momomoto::Table 2 | end 3 | 4 | -------------------------------------------------------------------------------- /rails/app/models/event_person.rb: -------------------------------------------------------------------------------- 1 | class Event_person < Momomoto::Table 2 | 3 | def self.log_content_columns 4 | columns.keys - [:event_person_id,:event_id] 5 | end 6 | 7 | def self.log_change_title( change ) 8 | "#{Event.log_change_title( Event.select_single({:event_id=>change.event_id}))}: #{Person.log_change_title( Person.select_single(:person_id=>change.person_id))}" 9 | rescue 10 | "" 11 | end 12 | 13 | def self.log_change_url( change ) 14 | {:controller=>'event',:action=>:edit,:id=>change.event_id} 15 | end 16 | 17 | end 18 | 19 | -------------------------------------------------------------------------------- /rails/app/models/event_rating.rb: -------------------------------------------------------------------------------- 1 | class Event_rating < Momomoto::Table 2 | 3 | def self.log_content_columns 4 | columns.keys - [:eval_time,:event_id] 5 | end 6 | 7 | def self.log_change_title( change ) 8 | Event.log_change_title( Event.select_single({:event_id=>change.event_id})) 9 | rescue 10 | "" 11 | end 12 | 13 | def self.log_change_url( change ) 14 | {:controller=>'event',:action=>:edit,:event_id=>change.event_id} 15 | end 16 | 17 | end 18 | 19 | -------------------------------------------------------------------------------- /rails/app/models/event_rating_category.rb: -------------------------------------------------------------------------------- 1 | class Event_rating_category < Momomoto::Table 2 | end 3 | 4 | -------------------------------------------------------------------------------- /rails/app/models/event_rating_remark.rb: -------------------------------------------------------------------------------- 1 | class Event_rating_remark < Momomoto::Table 2 | end 3 | 4 | -------------------------------------------------------------------------------- /rails/app/models/event_role.rb: -------------------------------------------------------------------------------- 1 | class Event_role < Momomoto::Table 2 | end 3 | 4 | -------------------------------------------------------------------------------- /rails/app/models/event_role_localized.rb: -------------------------------------------------------------------------------- 1 | class Event_role_localized < Momomoto::Table 2 | end 3 | 4 | -------------------------------------------------------------------------------- /rails/app/models/event_role_state.rb: -------------------------------------------------------------------------------- 1 | class Event_role_state < Momomoto::Table 2 | end 3 | 4 | -------------------------------------------------------------------------------- /rails/app/models/event_role_state_localized.rb: -------------------------------------------------------------------------------- 1 | class Event_role_state_localized < Momomoto::Table 2 | end 3 | 4 | -------------------------------------------------------------------------------- /rails/app/models/event_state.rb: -------------------------------------------------------------------------------- 1 | class Event_state < Momomoto::Table 2 | end 3 | 4 | -------------------------------------------------------------------------------- /rails/app/models/event_state_localized.rb: -------------------------------------------------------------------------------- 1 | class Event_state_localized < Momomoto::Table 2 | end 3 | 4 | -------------------------------------------------------------------------------- /rails/app/models/event_state_progress.rb: -------------------------------------------------------------------------------- 1 | class Event_state_progress < Momomoto::Table 2 | end 3 | 4 | -------------------------------------------------------------------------------- /rails/app/models/event_state_progress_localized.rb: -------------------------------------------------------------------------------- 1 | class Event_state_progress_localized < Momomoto::Table 2 | end 3 | 4 | -------------------------------------------------------------------------------- /rails/app/models/event_type.rb: -------------------------------------------------------------------------------- 1 | class Event_type < Momomoto::Table 2 | end 3 | 4 | -------------------------------------------------------------------------------- /rails/app/models/event_type_localized.rb: -------------------------------------------------------------------------------- 1 | class Event_type_localized < Momomoto::Table 2 | end 3 | 4 | -------------------------------------------------------------------------------- /rails/app/models/forgot_password.rb: -------------------------------------------------------------------------------- 1 | class Forgot_password < Momomoto::Procedure 2 | schema_name "auth" 3 | end 4 | 5 | -------------------------------------------------------------------------------- /rails/app/models/im_type.rb: -------------------------------------------------------------------------------- 1 | class Im_type < Momomoto::Table 2 | end 3 | 4 | -------------------------------------------------------------------------------- /rails/app/models/im_type_localized.rb: -------------------------------------------------------------------------------- 1 | class Im_type_localized < Momomoto::Table 2 | end 3 | 4 | -------------------------------------------------------------------------------- /rails/app/models/language.rb: -------------------------------------------------------------------------------- 1 | class Language < Momomoto::Table 2 | end 3 | -------------------------------------------------------------------------------- /rails/app/models/language_localized.rb: -------------------------------------------------------------------------------- 1 | class Language_localized < Momomoto::Table 2 | default_order :name 3 | end 4 | 5 | -------------------------------------------------------------------------------- /rails/app/models/link_type.rb: -------------------------------------------------------------------------------- 1 | class Link_type < Momomoto::Table 2 | end 3 | 4 | -------------------------------------------------------------------------------- /rails/app/models/link_type_localized.rb: -------------------------------------------------------------------------------- 1 | class Link_type_localized < Momomoto::Table 2 | end 3 | 4 | -------------------------------------------------------------------------------- /rails/app/models/log.rb: -------------------------------------------------------------------------------- 1 | 2 | module Log 3 | 4 | def self.const_missing( table ) 5 | klass = Class.new( Momomoto::Table ) 6 | klass.schema_name = "log" 7 | 8 | # copy custom methods from base class to log class if available 9 | if "::#{table}".constantize.const_defined?('Methods') 10 | klass.const_set(:Methods, "::#{table}::Methods".constantize) 11 | end 12 | 13 | Log.const_set(table, klass) 14 | end 15 | 16 | end 17 | 18 | -------------------------------------------------------------------------------- /rails/app/models/log_transaction_involved_tables.rb: -------------------------------------------------------------------------------- 1 | class Log_transaction_involved_tables < Momomoto::Table 2 | schema_name 'log' 3 | end 4 | 5 | -------------------------------------------------------------------------------- /rails/app/models/mime_type.rb: -------------------------------------------------------------------------------- 1 | class Mime_type < Momomoto::Table 2 | end 3 | 4 | -------------------------------------------------------------------------------- /rails/app/models/mime_type_localized.rb: -------------------------------------------------------------------------------- 1 | class Mime_type_localized < Momomoto::Table 2 | end 3 | 4 | -------------------------------------------------------------------------------- /rails/app/models/object_domain.rb: -------------------------------------------------------------------------------- 1 | class Object_domain < Momomoto::Table 2 | schema_name "auth" 3 | end 4 | 5 | -------------------------------------------------------------------------------- /rails/app/models/own_conference_events.rb: -------------------------------------------------------------------------------- 1 | class Own_conference_events < Momomoto::Procedure 2 | end 3 | 4 | -------------------------------------------------------------------------------- /rails/app/models/own_conference_persons.rb: -------------------------------------------------------------------------------- 1 | class Own_conference_persons < Momomoto::Procedure 2 | end 3 | 4 | -------------------------------------------------------------------------------- /rails/app/models/own_events.rb: -------------------------------------------------------------------------------- 1 | class Own_events < Momomoto::Procedure 2 | end 3 | 4 | -------------------------------------------------------------------------------- /rails/app/models/permission.rb: -------------------------------------------------------------------------------- 1 | class Permission < Momomoto::Table 2 | schema_name "auth" 3 | end 4 | -------------------------------------------------------------------------------- /rails/app/models/permission_localized.rb: -------------------------------------------------------------------------------- 1 | class Permission_localized < Momomoto::Table 2 | schema_name "auth" 3 | end 4 | 5 | -------------------------------------------------------------------------------- /rails/app/models/person.rb: -------------------------------------------------------------------------------- 1 | class Person < Momomoto::Table 2 | module Methods 3 | 4 | def name 5 | if public_name 6 | public_name 7 | elsif first_name && last_name 8 | "#{first_name} #{last_name}" 9 | elsif last_name 10 | last_name 11 | else 12 | nickname 13 | end 14 | end 15 | 16 | end 17 | 18 | def self.log_change_url( change ) 19 | {:controller=>'person',:action=>:edit,:id=>change.person_id} 20 | end 21 | 22 | def self.log_change_title( change ) 23 | change.name 24 | end 25 | 26 | end 27 | 28 | -------------------------------------------------------------------------------- /rails/app/models/person_availability.rb: -------------------------------------------------------------------------------- 1 | class Person_availability < Momomoto::Table 2 | end 3 | 4 | -------------------------------------------------------------------------------- /rails/app/models/person_im.rb: -------------------------------------------------------------------------------- 1 | class Person_im < Momomoto::Table 2 | 3 | def self.log_content_columns 4 | columns.keys - [:person_id,:person_im_id] 5 | end 6 | 7 | def self.log_change_title( change ) 8 | Person.log_change_title( Person.select_single({:person_id=>change.person_id})) 9 | rescue 10 | "" 11 | end 12 | 13 | def self.log_change_url( change ) 14 | {:controller=>'person',:action=>:edit,:person_id=>change.person_id} 15 | end 16 | 17 | end 18 | 19 | -------------------------------------------------------------------------------- /rails/app/models/person_image.rb: -------------------------------------------------------------------------------- 1 | class Person_image < Momomoto::Table 2 | 3 | def self.log_hidden_columns 4 | [:image] 5 | end 6 | 7 | def self.log_content_columns 8 | columns.keys - [:person_id] 9 | end 10 | 11 | def self.log_change_title( change ) 12 | Person.log_change_title( Person.select_single({:person_id=>change.person_id})) 13 | rescue 14 | "" 15 | end 16 | 17 | def self.log_change_url( change ) 18 | {:controller=>'person',:action=>:edit,:person_id=>change.person_id} 19 | end 20 | 21 | end 22 | 23 | -------------------------------------------------------------------------------- /rails/app/models/person_language.rb: -------------------------------------------------------------------------------- 1 | class Person_language < Momomoto::Table 2 | 3 | def self.log_content_columns 4 | columns.keys - [:person_id] 5 | end 6 | 7 | def self.log_change_title( change ) 8 | Person.log_change_title( Person.select_single({:person_id=>change.person_id})) 9 | rescue 10 | "" 11 | end 12 | 13 | def self.log_change_url( change ) 14 | {:controller=>'person',:action=>:edit,:person_id=>change.person_id} 15 | end 16 | 17 | end 18 | 19 | -------------------------------------------------------------------------------- /rails/app/models/person_phone.rb: -------------------------------------------------------------------------------- 1 | class Person_phone < Momomoto::Table 2 | 3 | def self.log_content_columns 4 | columns.keys - [:person_id,:person_phone_id] 5 | end 6 | 7 | def self.log_change_title( change ) 8 | Person.log_change_title( Person.select_single({:person_id=>change.person_id})) 9 | rescue 10 | "" 11 | end 12 | 13 | def self.log_change_url( change ) 14 | {:controller=>'person',:action=>:edit,:person_id=>change.person_id} 15 | end 16 | 17 | end 18 | 19 | -------------------------------------------------------------------------------- /rails/app/models/person_rating.rb: -------------------------------------------------------------------------------- 1 | class Person_rating < Momomoto::Table 2 | 3 | def self.log_content_columns 4 | columns.keys - [:person_id] 5 | end 6 | 7 | def self.log_change_title( change ) 8 | Person.log_change_title( Person.select_single({:person_id=>change.person_id})) 9 | rescue 10 | "" 11 | end 12 | 13 | def self.log_change_url( change ) 14 | {:controller=>'person',:action=>:edit,:person_id=>change.person_id} 15 | end 16 | 17 | end 18 | 19 | -------------------------------------------------------------------------------- /rails/app/models/phone_type.rb: -------------------------------------------------------------------------------- 1 | class Phone_type < Momomoto::Table 2 | end 3 | 4 | -------------------------------------------------------------------------------- /rails/app/models/phone_type_localized.rb: -------------------------------------------------------------------------------- 1 | class Phone_type_localized < Momomoto::Table 2 | end 3 | 4 | -------------------------------------------------------------------------------- /rails/app/models/release.rb: -------------------------------------------------------------------------------- 1 | 2 | module Release 3 | 4 | #FIXME: disabled for now because it doesn't work in development mode 5 | # def self.const_missing( table ) 6 | # table_name = table.to_s.downcase 7 | # raise "Invalid class name" unless table_name.match(/^[a-z_]+$/) 8 | # begin 9 | # require "release/#{table_name}" 10 | # raise LoadError if not local_constants.member?( table.to_s ) 11 | # Release.const_get(table) 12 | # rescue LoadError 13 | # klass = Class.new( Momomoto::Table ) 14 | # klass.schema_name = "release" 15 | # klass.table_name = table_name 16 | # 17 | # Release.const_set(table, klass) 18 | # end 19 | # end 20 | 21 | end 22 | 23 | -------------------------------------------------------------------------------- /rails/app/models/release/conference_day.rb: -------------------------------------------------------------------------------- 1 | class Release::Conference_day < Momomoto::Table 2 | 3 | schema_name 'release' 4 | 5 | end 6 | 7 | -------------------------------------------------------------------------------- /rails/app/models/release/conference_link.rb: -------------------------------------------------------------------------------- 1 | class Release::Conference_link < Momomoto::Table 2 | 3 | schema_name "release" 4 | 5 | end 6 | -------------------------------------------------------------------------------- /rails/app/models/release/conference_person.rb: -------------------------------------------------------------------------------- 1 | class Release::Conference_person < Momomoto::Table 2 | 3 | schema_name 'release' 4 | 5 | end 6 | 7 | -------------------------------------------------------------------------------- /rails/app/models/release/conference_person_link.rb: -------------------------------------------------------------------------------- 1 | class Release::Conference_person_link < Momomoto::Table 2 | 3 | schema_name "release" 4 | 5 | end 6 | -------------------------------------------------------------------------------- /rails/app/models/release/conference_room.rb: -------------------------------------------------------------------------------- 1 | class Release::Conference_room < Momomoto::Table 2 | 3 | schema_name 'release' 4 | 5 | end 6 | 7 | -------------------------------------------------------------------------------- /rails/app/models/release/conference_track.rb: -------------------------------------------------------------------------------- 1 | class Release::Conference_track < Momomoto::Table 2 | 3 | schema_name 'release' 4 | 5 | end 6 | 7 | -------------------------------------------------------------------------------- /rails/app/models/release/event.rb: -------------------------------------------------------------------------------- 1 | class Release::Event < Momomoto::Table 2 | 3 | schema_name 'release' 4 | 5 | module Methods 6 | 7 | def attachments 8 | Release::Event_attachment.select({:event_id=>event_id,:conference_release_id=>conference_release_id,:public=>'t'}) 9 | end 10 | 11 | end 12 | 13 | end 14 | -------------------------------------------------------------------------------- /rails/app/models/release/event_attachment.rb: -------------------------------------------------------------------------------- 1 | class Release::Event_attachment < Momomoto::Table 2 | 3 | schema_name "release" 4 | 5 | end 6 | 7 | -------------------------------------------------------------------------------- /rails/app/models/release/event_link.rb: -------------------------------------------------------------------------------- 1 | class Release::Event_link < Momomoto::Table 2 | 3 | schema_name "release" 4 | 5 | end 6 | 7 | -------------------------------------------------------------------------------- /rails/app/models/release/view_schedule_day.rb: -------------------------------------------------------------------------------- 1 | class Release::View_schedule_day < Momomoto::Table 2 | 3 | schema_name "release" 4 | 5 | end 6 | 7 | -------------------------------------------------------------------------------- /rails/app/models/release/view_schedule_event.rb: -------------------------------------------------------------------------------- 1 | class Release::View_schedule_event < Momomoto::Table 2 | 3 | schema_name "release" 4 | 5 | fk_helper_multiple :links, Release::Event_link, [:conference_release_id,:event_id] 6 | fk_helper_multiple :persons, Release::View_schedule_event_person, [:conference_release_id,:event_id,:translated] 7 | fk_helper_multiple :attachments, Release::View_schedule_event_attachment, [:conference_release_id,:event_id,:translated] 8 | 9 | end 10 | 11 | -------------------------------------------------------------------------------- /rails/app/models/release/view_schedule_event_attachment.rb: -------------------------------------------------------------------------------- 1 | class Release::View_schedule_event_attachment < Momomoto::Table 2 | 3 | schema_name "release" 4 | 5 | fk_helper_single :event_attachment, Release::Event_attachment, [:conference_release_id,:event_attachment_id] 6 | 7 | end 8 | 9 | -------------------------------------------------------------------------------- /rails/app/models/release/view_schedule_event_person.rb: -------------------------------------------------------------------------------- 1 | class Release::View_schedule_event_person < Momomoto::Table 2 | 3 | schema_name "release" 4 | 5 | end 6 | 7 | -------------------------------------------------------------------------------- /rails/app/models/release/view_schedule_person.rb: -------------------------------------------------------------------------------- 1 | class Release::View_schedule_person < Momomoto::Table 2 | 3 | schema_name "release" 4 | 5 | fk_helper_multiple :events, Release::View_schedule_event_person, [:conference_release_id,:person_id] 6 | fk_helper_multiple :links, Release::Conference_person_link, [:conference_release_id,:conference_person_id] 7 | 8 | end 9 | 10 | -------------------------------------------------------------------------------- /rails/app/models/release/view_schedule_room.rb: -------------------------------------------------------------------------------- 1 | class Release::View_schedule_room < Momomoto::Table 2 | 3 | schema_name "release" 4 | 5 | end 6 | 7 | -------------------------------------------------------------------------------- /rails/app/models/release/view_schedule_track.rb: -------------------------------------------------------------------------------- 1 | class Release::View_schedule_track < Momomoto::Table 2 | 3 | schema_name "release" 4 | 5 | end 6 | 7 | -------------------------------------------------------------------------------- /rails/app/models/release_preview.rb: -------------------------------------------------------------------------------- 1 | 2 | module Release_preview 3 | class Conference < Momomoto::Table 4 | 5 | fk_helper_multiple :events, View_schedule_event, [:conference_id] 6 | fk_helper_multiple :persons, View_schedule_person, [:conference_id] 7 | fk_helper_multiple :days, View_schedule_day, [:conference_id] 8 | fk_helper_multiple :rooms, View_schedule_room, [:conference_id] 9 | fk_helper_multiple :tracks, View_schedule_track, [:conference_id] 10 | fk_helper_multiple :links, Conference_link, [:conference_id] 11 | 12 | module Methods 13 | 14 | def release 15 | Conference_release.new({:conference_release=>'PREVIEW'}) 16 | end 17 | 18 | end 19 | 20 | end 21 | end 22 | -------------------------------------------------------------------------------- /rails/app/models/reset_password.rb: -------------------------------------------------------------------------------- 1 | class Reset_password < Momomoto::Procedure 2 | schema_name "auth" 3 | end 4 | 5 | -------------------------------------------------------------------------------- /rails/app/models/role.rb: -------------------------------------------------------------------------------- 1 | class Role < Momomoto::Table 2 | schema_name "auth" 3 | default_order [:rank,:role] 4 | end 5 | 6 | -------------------------------------------------------------------------------- /rails/app/models/role_localized.rb: -------------------------------------------------------------------------------- 1 | class Role_localized < Momomoto::Table 2 | schema_name 'auth' 3 | end 4 | 5 | -------------------------------------------------------------------------------- /rails/app/models/role_permission.rb: -------------------------------------------------------------------------------- 1 | class Role_permission < Momomoto::Table 2 | schema_name "auth" 3 | end 4 | 5 | -------------------------------------------------------------------------------- /rails/app/models/set_config.rb: -------------------------------------------------------------------------------- 1 | class Set_config < Momomoto::Procedure 2 | schema_name( 'pg_catalog' ) 3 | parameters( [ 4 | {:setting=>Momomoto::Datatype::Text.new}, 5 | {:value=>Momomoto::Datatype::Text.new}, 6 | {:is_local=>Momomoto::Datatype::Boolean.new(:not_null=>true)} 7 | ]) 8 | end 9 | 10 | -------------------------------------------------------------------------------- /rails/app/models/submit_event.rb: -------------------------------------------------------------------------------- 1 | class Submit_event < Momomoto::Procedure 2 | end 3 | 4 | -------------------------------------------------------------------------------- /rails/app/models/timezone.rb: -------------------------------------------------------------------------------- 1 | class Timezone < Momomoto::Table 2 | end 3 | 4 | -------------------------------------------------------------------------------- /rails/app/models/transport.rb: -------------------------------------------------------------------------------- 1 | class Transport < Momomoto::Table 2 | end 3 | 4 | -------------------------------------------------------------------------------- /rails/app/models/transport_localized.rb: -------------------------------------------------------------------------------- 1 | class Transport_localized < Momomoto::Table 2 | end 3 | 4 | -------------------------------------------------------------------------------- /rails/app/models/ui_message.rb: -------------------------------------------------------------------------------- 1 | class Ui_message < Momomoto::Table 2 | end 3 | 4 | -------------------------------------------------------------------------------- /rails/app/models/ui_message_localized.rb: -------------------------------------------------------------------------------- 1 | class Ui_message_localized < Momomoto::Table 2 | 3 | def self.log_change_title( change ) 4 | change.ui_message 5 | end 6 | 7 | def self.log_change_url( change ) 8 | {:controller=>'localization',:action=>:ui_message,:id=>change.ui_message} 9 | end 10 | 11 | def self.log_content_columns 12 | columns.keys - [:ui_message] 13 | end 14 | 15 | end 16 | 17 | -------------------------------------------------------------------------------- /rails/app/models/view_conference_image_modification.rb: -------------------------------------------------------------------------------- 1 | class View_conference_image_modification < Momomoto::Table 2 | default_order(Momomoto::desc(:last_modified)) 3 | end 4 | 5 | -------------------------------------------------------------------------------- /rails/app/models/view_conference_language.rb: -------------------------------------------------------------------------------- 1 | class View_conference_language < Momomoto::Table 2 | 3 | module Methods 4 | 5 | def current_transaction_id 6 | log_entry = Log::Conference_language.select_single({:conference_id=>get_column(:conference_id),:language=>get_column(:language)},{:order=>Momomoto::desc(:log_transaction_id),:limit=>1}) 7 | return log_entry.log_transaction_id 8 | rescue Momomoto::Nothing_found 9 | 0 10 | end 11 | 12 | end 13 | 14 | end 15 | 16 | -------------------------------------------------------------------------------- /rails/app/models/view_conference_person.rb: -------------------------------------------------------------------------------- 1 | class View_conference_person < Momomoto::Table 2 | default_order( Momomoto.lower(:name) ) 3 | end 4 | 5 | -------------------------------------------------------------------------------- /rails/app/models/view_conference_rating.rb: -------------------------------------------------------------------------------- 1 | class View_conference_rating < Momomoto::Table 2 | end 3 | 4 | -------------------------------------------------------------------------------- /rails/app/models/view_conflict_event.rb: -------------------------------------------------------------------------------- 1 | class View_conflict_event < Momomoto::Procedure 2 | schema_name "conflict" 3 | end 4 | 5 | -------------------------------------------------------------------------------- /rails/app/models/view_conflict_event_event.rb: -------------------------------------------------------------------------------- 1 | class View_conflict_event_event < Momomoto::Procedure 2 | schema_name "conflict" 3 | end 4 | 5 | -------------------------------------------------------------------------------- /rails/app/models/view_conflict_event_person.rb: -------------------------------------------------------------------------------- 1 | class View_conflict_event_person < Momomoto::Procedure 2 | schema_name "conflict" 3 | end 4 | 5 | -------------------------------------------------------------------------------- /rails/app/models/view_conflict_event_person_event.rb: -------------------------------------------------------------------------------- 1 | class View_conflict_event_person_event < Momomoto::Procedure 2 | schema_name "conflict" 3 | end 4 | 5 | -------------------------------------------------------------------------------- /rails/app/models/view_conflict_level.rb: -------------------------------------------------------------------------------- 1 | class View_conflict_level < Momomoto::Table 2 | default_order( :rank ) 3 | end 4 | 5 | -------------------------------------------------------------------------------- /rails/app/models/view_conflict_person.rb: -------------------------------------------------------------------------------- 1 | class View_conflict_person < Momomoto::Procedure 2 | schema_name "conflict" 3 | end 4 | 5 | -------------------------------------------------------------------------------- /rails/app/models/view_event.rb: -------------------------------------------------------------------------------- 1 | class View_event < Momomoto::Table 2 | end 3 | 4 | -------------------------------------------------------------------------------- /rails/app/models/view_event_attachment.rb: -------------------------------------------------------------------------------- 1 | class View_event_attachment < Momomoto::Table 2 | 3 | module Methods 4 | 5 | def current_transaction_id 6 | log_entry = Log::Event_attachment.select_single({:event_attachment_id=>get_column(:event_attachment_id)},{:order=>Momomoto::desc(:log_transaction_id),:limit=>1}) 7 | return log_entry.log_transaction_id 8 | rescue Momomoto::Nothing_found 9 | 0 10 | end 11 | 12 | end 13 | 14 | fk_helper_single :event_attachment, Event_attachment, [:event_attachment_id] 15 | 16 | end 17 | 18 | -------------------------------------------------------------------------------- /rails/app/models/view_event_category_rating.rb: -------------------------------------------------------------------------------- 1 | class View_event_category_rating < Momomoto::Table 2 | end 3 | 4 | -------------------------------------------------------------------------------- /rails/app/models/view_event_duration.rb: -------------------------------------------------------------------------------- 1 | class View_event_duration < Momomoto::Table 2 | end 3 | 4 | -------------------------------------------------------------------------------- /rails/app/models/view_event_feedback.rb: -------------------------------------------------------------------------------- 1 | class View_event_feedback < Momomoto::Table 2 | end 3 | 4 | -------------------------------------------------------------------------------- /rails/app/models/view_event_feedback_statistics.rb: -------------------------------------------------------------------------------- 1 | class View_event_feedback_statistics < Momomoto::Table 2 | end 3 | 4 | -------------------------------------------------------------------------------- /rails/app/models/view_event_image_modification.rb: -------------------------------------------------------------------------------- 1 | class View_event_image_modification < Momomoto::Table 2 | default_order(Momomoto::desc(:last_modified)) 3 | end 4 | 5 | -------------------------------------------------------------------------------- /rails/app/models/view_event_origin.rb: -------------------------------------------------------------------------------- 1 | class View_event_origin < Momomoto::Table 2 | default_order( Momomoto::lower(:name) ) 3 | end 4 | 5 | -------------------------------------------------------------------------------- /rails/app/models/view_event_person.rb: -------------------------------------------------------------------------------- 1 | class View_event_person < Momomoto::Table 2 | 3 | module Methods 4 | 5 | def current_transaction_id 6 | log_entry = Log::Event_person.select_single({:event_person_id=>get_column(:event_person_id)},{:order=>Momomoto::desc(:log_transaction_id),:limit=>1}) 7 | return log_entry.log_transaction_id 8 | rescue Momomoto::Nothing_found 9 | 0 10 | end 11 | 12 | end 13 | 14 | end 15 | 16 | -------------------------------------------------------------------------------- /rails/app/models/view_event_rating.rb: -------------------------------------------------------------------------------- 1 | class View_event_rating < Momomoto::Table 2 | end 3 | 4 | -------------------------------------------------------------------------------- /rails/app/models/view_event_rating_public.rb: -------------------------------------------------------------------------------- 1 | class View_event_rating_public < Momomoto::Table 2 | end 3 | 4 | -------------------------------------------------------------------------------- /rails/app/models/view_event_state_progress_statistic.rb: -------------------------------------------------------------------------------- 1 | class View_event_state_progress_statistic < Momomoto::Table 2 | end 3 | 4 | -------------------------------------------------------------------------------- /rails/app/models/view_event_state_statistic.rb: -------------------------------------------------------------------------------- 1 | class View_event_state_statistic < Momomoto::Table 2 | end 3 | 4 | -------------------------------------------------------------------------------- /rails/app/models/view_find_account.rb: -------------------------------------------------------------------------------- 1 | class View_find_account < Momomoto::Table 2 | end 3 | 4 | -------------------------------------------------------------------------------- /rails/app/models/view_find_conference.rb: -------------------------------------------------------------------------------- 1 | class View_find_conference < Momomoto::Table 2 | default_order( Momomoto.lower(:acronym) ) 3 | end 4 | 5 | -------------------------------------------------------------------------------- /rails/app/models/view_find_event.rb: -------------------------------------------------------------------------------- 1 | class View_find_event < Momomoto::Table 2 | default_order( Momomoto.lower([:title,:subtitle])) 3 | end 4 | 5 | -------------------------------------------------------------------------------- /rails/app/models/view_find_person.rb: -------------------------------------------------------------------------------- 1 | class View_find_person < Momomoto::Table 2 | end 3 | 4 | -------------------------------------------------------------------------------- /rails/app/models/view_last_active.rb: -------------------------------------------------------------------------------- 1 | class View_last_active < Momomoto::Table 2 | end 3 | -------------------------------------------------------------------------------- /rails/app/models/view_mail_accepted_speaker.rb: -------------------------------------------------------------------------------- 1 | class View_mail_accepted_speaker < Momomoto::Table 2 | end 3 | 4 | -------------------------------------------------------------------------------- /rails/app/models/view_mail_all_reviewer.rb: -------------------------------------------------------------------------------- 1 | class View_mail_all_reviewer < Momomoto::Table 2 | end 3 | 4 | -------------------------------------------------------------------------------- /rails/app/models/view_mail_all_speaker.rb: -------------------------------------------------------------------------------- 1 | class View_mail_all_speaker < Momomoto::Table 2 | end 3 | 4 | -------------------------------------------------------------------------------- /rails/app/models/view_mail_missing_slides.rb: -------------------------------------------------------------------------------- 1 | class View_mail_missing_slides < Momomoto::Table 2 | end 3 | 4 | -------------------------------------------------------------------------------- /rails/app/models/view_own_events_coordinator.rb: -------------------------------------------------------------------------------- 1 | class View_own_events_coordinator < Momomoto::Table 2 | end 3 | 4 | -------------------------------------------------------------------------------- /rails/app/models/view_own_events_participant.rb: -------------------------------------------------------------------------------- 1 | class View_own_events_participant < Momomoto::Table 2 | end 3 | 4 | -------------------------------------------------------------------------------- /rails/app/models/view_person.rb: -------------------------------------------------------------------------------- 1 | class View_person < Momomoto::Table 2 | default_order( Momomoto.lower(:name) ) 3 | end 4 | 5 | -------------------------------------------------------------------------------- /rails/app/models/view_person_image_modification.rb: -------------------------------------------------------------------------------- 1 | class View_person_image_modification < Momomoto::Table 2 | default_order(Momomoto::desc(:last_modified)) 3 | end 4 | 5 | -------------------------------------------------------------------------------- /rails/app/models/view_person_rating.rb: -------------------------------------------------------------------------------- 1 | class View_person_rating < Momomoto::Table 2 | end 3 | 4 | -------------------------------------------------------------------------------- /rails/app/models/view_recent_changes.rb: -------------------------------------------------------------------------------- 1 | class View_recent_changes < Momomoto::Table 2 | end 3 | -------------------------------------------------------------------------------- /rails/app/models/view_report_accommodation.rb: -------------------------------------------------------------------------------- 1 | class View_report_accommodation < Momomoto::Table 2 | end 3 | -------------------------------------------------------------------------------- /rails/app/models/view_report_arrived.rb: -------------------------------------------------------------------------------- 1 | class View_report_arrived < Momomoto::Table 2 | end 3 | 4 | -------------------------------------------------------------------------------- /rails/app/models/view_report_expenses.rb: -------------------------------------------------------------------------------- 1 | class View_report_expenses < Momomoto::Table 2 | Reportfields = [:name,:fee,:fee_currency_name,:travel_cost,:travel_currency_name,:accommodation_cost,:accommodation_currency_name] 3 | end 4 | 5 | -------------------------------------------------------------------------------- /rails/app/models/view_report_feedback.rb: -------------------------------------------------------------------------------- 1 | class View_report_feedback < Momomoto::Table 2 | Reportfields = [:title,:comments,:votes] 3 | end 4 | 5 | -------------------------------------------------------------------------------- /rails/app/models/view_report_missing.rb: -------------------------------------------------------------------------------- 1 | class View_report_missing < Momomoto::Table 2 | end 3 | 4 | -------------------------------------------------------------------------------- /rails/app/models/view_report_not_arrived.rb: -------------------------------------------------------------------------------- 1 | class View_report_not_arrived < Momomoto::Table 2 | end 3 | 4 | -------------------------------------------------------------------------------- /rails/app/models/view_report_paper.rb: -------------------------------------------------------------------------------- 1 | class View_report_paper < Momomoto::Table 2 | Reportfields = [:title,:paper_submitted,:pages] 3 | end 4 | 5 | -------------------------------------------------------------------------------- /rails/app/models/view_report_pickup.rb: -------------------------------------------------------------------------------- 1 | class View_report_pickup < Momomoto::Table 2 | end 3 | 4 | -------------------------------------------------------------------------------- /rails/app/models/view_report_resources.rb: -------------------------------------------------------------------------------- 1 | class View_report_resources < Momomoto::Table 2 | Reportfields = [:title,:resources] 3 | end 4 | 5 | -------------------------------------------------------------------------------- /rails/app/models/view_report_review.rb: -------------------------------------------------------------------------------- 1 | class View_report_review < Momomoto::Table 2 | end 3 | 4 | -------------------------------------------------------------------------------- /rails/app/models/view_report_slides.rb: -------------------------------------------------------------------------------- 1 | class View_report_slides < Momomoto::Table 2 | end 3 | 4 | -------------------------------------------------------------------------------- /rails/app/models/view_schedule.rb: -------------------------------------------------------------------------------- 1 | class View_schedule < Momomoto::Table 2 | end 3 | 4 | -------------------------------------------------------------------------------- /rails/app/models/view_schedule_day.rb: -------------------------------------------------------------------------------- 1 | class View_schedule_day < Momomoto::Table 2 | end 3 | 4 | -------------------------------------------------------------------------------- /rails/app/models/view_schedule_event.rb: -------------------------------------------------------------------------------- 1 | class View_schedule_event < Momomoto::Table 2 | 3 | fk_helper_multiple :links, Event_link, [:event_id] 4 | fk_helper_multiple :persons, View_schedule_event_person, [:event_id,:translated] 5 | fk_helper_multiple :attachments, View_schedule_event_attachment, [:event_id,:translated] 6 | 7 | end 8 | 9 | -------------------------------------------------------------------------------- /rails/app/models/view_schedule_event_attachment.rb: -------------------------------------------------------------------------------- 1 | class View_schedule_event_attachment < Momomoto::Table 2 | 3 | fk_helper_single :event_attachment, Event_attachment, [:event_attachment_id] 4 | 5 | end 6 | 7 | -------------------------------------------------------------------------------- /rails/app/models/view_schedule_event_person.rb: -------------------------------------------------------------------------------- 1 | class View_schedule_event_person < Momomoto::Table 2 | end 3 | 4 | -------------------------------------------------------------------------------- /rails/app/models/view_schedule_person.rb: -------------------------------------------------------------------------------- 1 | class View_schedule_person < Momomoto::Table 2 | 3 | fk_helper_multiple :events, View_schedule_event_person, [:conference_id,:person_id] 4 | fk_helper_multiple :links, Conference_person_link, [:conference_person_id] 5 | 6 | end 7 | 8 | -------------------------------------------------------------------------------- /rails/app/models/view_schedule_room.rb: -------------------------------------------------------------------------------- 1 | class View_schedule_room < Momomoto::Table 2 | end 3 | 4 | -------------------------------------------------------------------------------- /rails/app/models/view_schedule_track.rb: -------------------------------------------------------------------------------- 1 | class View_schedule_track < Momomoto::Table 2 | end 3 | 4 | -------------------------------------------------------------------------------- /rails/app/stylesheets/_helper.sass: -------------------------------------------------------------------------------- 1 | 2 | =border-radius(!radius) 3 | :-moz-border-radius = !radius 4 | :-webkit-border-radius = !radius 5 | :border-radius = !radius 6 | 7 | -------------------------------------------------------------------------------- /rails/app/stylesheets/_img.sass: -------------------------------------------------------------------------------- 1 | 2 | img 3 | border: none 4 | vertical-align: middle 5 | border: 0px 6 | margin: 0px 7 | 8 | &.tiny 9 | height: 16px 10 | width: 16px 11 | 12 | &.small 13 | height: 32px 14 | width: 32px 15 | 16 | &.medium 17 | height: 48px 18 | width: 48px 19 | 20 | &.large 21 | height: 64px 22 | width: 64px 23 | 24 | &.huge 25 | height: 128px 26 | width: 128px 27 | 28 | a img 29 | border: 1px solid transparent 30 | 31 | &:hover 32 | border: 1px solid red 33 | 34 | -------------------------------------------------------------------------------- /rails/app/views/admin/index.rxml: -------------------------------------------------------------------------------- 1 | xml.div 2 | -------------------------------------------------------------------------------- /rails/app/views/auth_failed.rxml: -------------------------------------------------------------------------------- 1 | xml.html do 2 | xml.head do 3 | xml.title "Authentication failed." 4 | end 5 | xml.body do 6 | xml.p "Authentication failed." 7 | xml.p do 8 | xml.text! 'If you forgot your password you may ' 9 | xml.a 'reset your password', :href=>url_for(:controller=>'user',:action=>:forgot_password) 10 | xml.text! '.' 11 | end 12 | end 13 | end 14 | 15 | -------------------------------------------------------------------------------- /rails/app/views/conference/_conference_comment.rxml: -------------------------------------------------------------------------------- 1 | xml.div(:id=>'content-comment') do 2 | xml.img( :src=>url_for(:controller=>'image',:action=>:conference,:id=>@conference.conference_id,:size=>'128x128'),:style=>'float: right;') 3 | xml << text_area_fieldset( @conference, :remark, {:rows=>5,:cols=>60}) 4 | end 5 | 6 | -------------------------------------------------------------------------------- /rails/app/views/conference/select.rxml: -------------------------------------------------------------------------------- 1 | xml.div({:id=>'data'}) do 2 | 3 | xml.fieldset do 4 | xml.h2 "You have not yet selected a current conference to work with." 5 | 6 | xml.br 7 | xml.p "Please select a current conference from the listbox on the left." 8 | 9 | xml.p "or" 10 | 11 | xml.p do 12 | xml.a("Create a new conference.", :href=>url_for({:action=>:new})) 13 | end 14 | 15 | end 16 | 17 | end 18 | 19 | -------------------------------------------------------------------------------- /rails/app/views/event/_event_comment.rxml: -------------------------------------------------------------------------------- 1 | xml.div(:id=>'content-comment') do 2 | if not @event.new_record? 3 | xml.img( :src=>url_for(:controller=>'image',:action=>:event,:id=>@event.event_id,:size=>'128x128'),:style=>'float: right;',:height=>128,:width=>128) 4 | end 5 | xml << text_area_fieldset( @event, :remark, {:rows=>5,:cols=>60}) 6 | end 7 | 8 | -------------------------------------------------------------------------------- /rails/app/views/event/_event_related.rxml: -------------------------------------------------------------------------------- 1 | xml.div(:id=>'content-related') do 2 | 3 | xml.fieldset do 4 | xml.legend local('related') 5 | 6 | end 7 | 8 | end 9 | -------------------------------------------------------------------------------- /rails/app/views/event/_event_resources.rxml: -------------------------------------------------------------------------------- 1 | xml.div(:id=>'content-resources') do 2 | 3 | xml << text_area_fieldset( @event, :resources, {:rows=>12} ) 4 | 5 | end 6 | -------------------------------------------------------------------------------- /rails/app/views/event/own.rxml: -------------------------------------------------------------------------------- 1 | tabs = [:participant,:coordinator] 2 | 3 | xml << js_tabs( tabs ) 4 | 5 | xml.div({:id=>'data'}) do 6 | 7 | tabs.each do | tab | 8 | xml.div(:id=>"content-#{tab}") do 9 | xml.fieldset do 10 | xml.legend local("own_events::tab::#{tab}") 11 | xml << event_table( @events[tab],{:id=>"event_table_#{tab}"}) 12 | end 13 | end 14 | end 15 | 16 | xml.script( "switch_tab();", { :type => 'text/javascript' } ) 17 | end 18 | 19 | 20 | -------------------------------------------------------------------------------- /rails/app/views/event/state.rxml: -------------------------------------------------------------------------------- 1 | xml.div({:id=>:data}) do 2 | 3 | xml.fieldset do 4 | xml.div({:id=>:results}) 5 | xml << event_table( @results ) 6 | end 7 | 8 | xml.a({:href=>url_for({:controller=>'csv',:action=>:events,:id=>@results.map(&:event_id).join(' ')})}) do 9 | xml.button("CSV",{:type=>:button}) 10 | end 11 | 12 | end 13 | 14 | -------------------------------------------------------------------------------- /rails/app/views/feedback/thankyou.rxml: -------------------------------------------------------------------------------- 1 | xml.div({:class=>:section}) do 2 | xml.p(local('feedback::thankyou')) 3 | xml.p do 4 | xml.text! "Return to " 5 | xml.a(@event.title,{:href=>"#{@conference.export_base_url}events/#{@event.event_id}.#{@current_language}.html"}) 6 | end 7 | end 8 | -------------------------------------------------------------------------------- /rails/app/views/layouts/schedule.rxml: -------------------------------------------------------------------------------- 1 | xml.div(:id=>'content') do 2 | xml << @content_for_layout 3 | end 4 | xml << @conference.schedule_html_include if @conference.schedule_html_include 5 | -------------------------------------------------------------------------------- /rails/app/views/layouts/xcal.rxml: -------------------------------------------------------------------------------- 1 | xml.instruct! 2 | xml.iCalendar(:"xmlns:xCal"=>"urn:ietf:params:xml:ns:xcal", :"xmlns:pentabarf"=>"http://pentabarf.org") do 3 | xml.vcalendar do 4 | xml.version "2.0" 5 | xml.prodid "-//Pentabarf//Schedule #{@conference.release}//EN" 6 | xml.tag! :"x-wr-caldesc", "#{@conference.acronym} Schedule Release #{@conference.release}" 7 | xml.tag! :"x-wr-calname", "#{@conference.acronym} Schedule" 8 | xml << yield 9 | end 10 | end 11 | -------------------------------------------------------------------------------- /rails/app/views/notifier/activate_account.rhtml: -------------------------------------------------------------------------------- 1 | Dear <%= @name %>, 2 | 3 | Thank you for taking the time to create an account. To enable your account just 4 | click on this link: 5 | <%= @link %> 6 | 7 | This link will only work exactly once. After activating you can directly login 8 | at the submission interface. 9 | 10 | -------------------------------------------------------------------------------- /rails/app/views/notifier/forgot_password.rhtml: -------------------------------------------------------------------------------- 1 | Dear <%= @name %>, 2 | 3 | Someone (probably you, from IP address <%= @remote_ip %>) 4 | requested a password reset. 5 | 6 | To reset your password just follow the link where you can define a new 7 | password: 8 | <%= @link %> 9 | 10 | -------------------------------------------------------------------------------- /rails/app/views/notifier/general.rhtml: -------------------------------------------------------------------------------- 1 | <%= @text %> 2 | -------------------------------------------------------------------------------- /rails/app/views/pentabarf/_activity.rxml: -------------------------------------------------------------------------------- 1 | xml.div do 2 | @last_active.each do | name | 3 | xml.a({:href=>url_for(:controller=>'person',:action=>:edit,:id=>name.person_id), :title => name.name }) do 4 | xml.span( name.login_name, {:class=>'user'}) 5 | xml.span( name.login_diff.strftime('%M:%S'), {:class=>'time'}) 6 | end 7 | end 8 | end 9 | -------------------------------------------------------------------------------- /rails/app/views/pentabarf/_recipients.rxml: -------------------------------------------------------------------------------- 1 | xml.ul({:class=>:recipients}) do 2 | @recipients.each do | r | 3 | xml.li do 4 | xml.a(r.name,{:href=>url_for({:controller=>'person',:action=>:edit,:id=>r.person_id}),:title=>r.email}) 5 | end 6 | end 7 | end 8 | 9 | -------------------------------------------------------------------------------- /rails/app/views/pentabarf/recent_changes.rxml: -------------------------------------------------------------------------------- 1 | xml.div( :id => 'object-image' ) do 2 | xml.img( :src => image_path( 'icon-list-64x64.png' ), :class => 'object-image' ) 3 | end 4 | 5 | xml.div( :id => 'data' ) do 6 | xml.fieldset do 7 | xml.ul({:id=>:recent_changes_list,:class=>:recent_changes}) do 8 | 9 | @changes.each do | changeset | 10 | xml << LogEntry.new( changeset, controller ).to_xml 11 | end 12 | 13 | end 14 | end 15 | end 16 | 17 | -------------------------------------------------------------------------------- /rails/app/views/person/_person_comment.rxml: -------------------------------------------------------------------------------- 1 | xml.div(:id=>'content-comment') do 2 | xml.img( :src=>url_for(:controller=>'image',:action=>:person,:id=>@person.person_id,:size=>'128x128'),:style=>'float: right;') 3 | xml << text_area_fieldset( @conference_person, :remark, {:rows=>5,:cols=>60}) 4 | end 5 | 6 | -------------------------------------------------------------------------------- /rails/app/views/person/_person_description.rxml: -------------------------------------------------------------------------------- 1 | xml.div(:id=>'content-description') do 2 | 3 | xml << text_area_fieldset( @conference_person, :abstract, {:rows=>5,:counter=>@conference.abstract_length,:markup_help=>true} ) 4 | xml << text_area_fieldset( @conference_person, :description, {:rows=>12,:counter=>@conference.description_length,:markup_help=>true} ) 5 | 6 | end 7 | 8 | -------------------------------------------------------------------------------- /rails/app/views/report/index.rxml: -------------------------------------------------------------------------------- 1 | xml.div({:id=>:data}) do 2 | xml.ul do 3 | ReportController::REPORTS.each do | report | 4 | xml.li do 5 | xml.a( local("report::#{report}"),{:href=>url_for({:action=>report})}) 6 | end 7 | end 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /rails/app/views/search/_event_results.rxml: -------------------------------------------------------------------------------- 1 | 2 | paginate( xml, @results, params[:id].to_i ) do | results | 3 | xml << event_table( results ) if results.length > 0 4 | end 5 | 6 | xml.a({:href=>url_for({:controller=>'csv',:action=>:events,:id=>@results.map(&:event_id).join(' ')})}) do 7 | xml.button("CSV",{:type=>:button}) 8 | end 9 | -------------------------------------------------------------------------------- /rails/app/views/shared/_modification_buttons.rxml: -------------------------------------------------------------------------------- 1 | xml.div( :id => 'buttons', :style => 'display: none;' ) do 2 | xml.button( local('form::cancel'), {:type=>'button',:id=>'cancel-button',:accesskey=>'c',:onclick=>'clear_tainting();window.location.reload( true );'} ) 3 | xml.button( local('form::save'), {:type=>'submit',:id=>'submit-button',:accesskey=>'s',:onclick=>'clear_tainting();'} ) 4 | end 5 | -------------------------------------------------------------------------------- /rails/app/views/submission/_event_description.rxml: -------------------------------------------------------------------------------- 1 | xml.div(:id=>'content-description') do 2 | 3 | xml << text_area_fieldset( @event, :abstract, {:rows=>5,:counter=>@conference.abstract_length,:markup_help=>true} ) 4 | xml << text_area_fieldset( @event, :description, {:rows=>12,:counter=>@conference.description_length,:markup_help=>true} ) 5 | 6 | end 7 | 8 | -------------------------------------------------------------------------------- /rails/app/views/submission/_event_resources.rxml: -------------------------------------------------------------------------------- 1 | xml.div(:id=>'content-resources') do 2 | 3 | xml << text_area_fieldset( @event, :resources, {:rows=>12} ) 4 | 5 | end 6 | -------------------------------------------------------------------------------- /rails/app/views/submission/_person_description.rxml: -------------------------------------------------------------------------------- 1 | xml.div(:id=>'content-description') do 2 | 3 | xml << text_area_fieldset( @conference_person, :abstract, {:rows=>5,:counter=>@conference.abstract_length,:markup_help=>true, 4 | :hint=>"Required. One or two sentences or a short paragraph about yourself."} ) 5 | xml << text_area_fieldset( @conference_person, :description, {:rows=>12,:counter=>@conference.description_length,:markup_help=>true, 6 | :hint=>"Optional. Another paragraph about yourself. Please don't duplicate the brief biography!"} ) 7 | 8 | end 9 | 10 | -------------------------------------------------------------------------------- /rails/app/views/submission/_submission_comment.rxml: -------------------------------------------------------------------------------- 1 | xml.div(:id=>'content-comment') do 2 | xml.img( :src=>url_for(:controller=>'image',:action=>:event,:id=>@event.event_id,:size=>'128x128'),:style=>'float: right;') if not @event.new_record? 3 | xml << text_area_fieldset( @event, :submission_notes, {:rows=>5,:cols=>60}) 4 | end 5 | 6 | -------------------------------------------------------------------------------- /rails/app/views/user/account_activated.rxml: -------------------------------------------------------------------------------- 1 | 2 | xml.h3 local('user::thank_you') 3 | xml.p local('user::account_activated_please_login') 4 | 5 | xml.a( local('user::proceed_to_submission'),{:href=>url_for(:controller=>'submission',:conference=> params[:id] ),:style=>"color:blue;text-decoration:underline;margin-left: 5em;"}) 6 | 7 | -------------------------------------------------------------------------------- /rails/app/views/user/account_done.rxml: -------------------------------------------------------------------------------- 1 | 2 | xml.p local('user::thanks_for_registering') 3 | 4 | -------------------------------------------------------------------------------- /rails/app/views/user/forgot_password.rxml: -------------------------------------------------------------------------------- 1 | xml.div(:id=>:data) do 2 | xml.p local('user::forgot_password_heading') 3 | xml.form(:action=>url_for(:action=>:save_forgot_password)) do 4 | xml.table do 5 | xml.tr do 6 | xml.td( local('account::login_name') ) 7 | xml.td do xml.input({:type=>:text,:name=>'login_name'}) end 8 | end 9 | end 10 | xml.input(:type=>:submit) 11 | end 12 | end 13 | 14 | -------------------------------------------------------------------------------- /rails/app/views/user/index.rxml: -------------------------------------------------------------------------------- 1 | xml.div do 2 | xml.h3 do 3 | xml.a( local('user::index_heading'),{:href=>url_for(:action=>:new_account,:id=>params[:id]),:style=>"text-decoration:underline;color:blue;"}) 4 | end 5 | if @conferences 6 | xml.p local('user::use_account_for_these_conferences') 7 | xml.div do 8 | xml.ul do 9 | @conferences.each do | conf | 10 | xml.li do 11 | xml.a(conf.title, {:style=>"text-decoration: underline;color: blue;",:href=>url_for(:controller=>'submission',:conference=>conf.acronym,:action=>:index)}) 12 | end 13 | end 14 | end 15 | end 16 | end 17 | 18 | end 19 | -------------------------------------------------------------------------------- /rails/app/views/user/reset_link_sent.rxml: -------------------------------------------------------------------------------- 1 | xml.div(:id=>:data) do 2 | xml.p local('user::reset_link_has_been_sent') 3 | end 4 | 5 | -------------------------------------------------------------------------------- /rails/app/views/user/reset_password.rxml: -------------------------------------------------------------------------------- 1 | xml.div(:id=>:data) do 2 | xml.p local('user::enter_new_password') 3 | xml.form(:action=>url_for(:action=>:save_reset_password,:id=>params[:id]),:id=>'content_form',:method=>'post',:enctype=>'multipart/form-data') do 4 | 5 | xml.table do 6 | xml.tr do 7 | xml.td local('account::password') 8 | xml.td do xml.input(:type=>:password,:name=>:password) end 9 | end 10 | xml.tr do 11 | xml.td local('account::repeat_password') 12 | xml.td do xml.input(:type=>:password,:name=>:password2) end 13 | end 14 | end 15 | 16 | xml.input({:type=>:submit}) 17 | 18 | end 19 | end 20 | -------------------------------------------------------------------------------- /rails/config/.gitignore: -------------------------------------------------------------------------------- 1 | *.yml 2 | -------------------------------------------------------------------------------- /rails/config/compass.config: -------------------------------------------------------------------------------- 1 | # Require any additional compass plugins here. 2 | project_type = :rails 3 | project_path = RAILS_ROOT if defined?(RAILS_ROOT) 4 | # Set this to the root of your project when deployed: 5 | http_path = "/" 6 | css_dir = "public/stylesheets" 7 | sass_dir = "app/stylesheets" 8 | images_dir = "public/images" 9 | javascripts_dir = "public/javascripts" 10 | # To enable relative paths to assets via compass helper functions. Uncomment: 11 | # relative_assets = true 12 | http_images_path = "/images" 13 | http_stylesheets_path = "/stylesheets" 14 | http_javascripts_path = "/javascripts" 15 | -------------------------------------------------------------------------------- /rails/config/database.yml.template: -------------------------------------------------------------------------------- 1 | production: 2 | adapter: postgresql 3 | database: pentabarf 4 | username: pentabarf 5 | password: 6 | host: localhost 7 | 8 | development: 9 | adapter: postgresql 10 | database: pentabarf 11 | username: pentabarf 12 | password: 13 | host: localhost 14 | 15 | # Warning: The database defined as 'test' will be erased and 16 | # re-generated from your development database when you run 'rake'. 17 | # Do not set this db to the same as development or production. 18 | test: 19 | adapter: postgresql 20 | database: pentabarf_test 21 | username: pentabarf 22 | password: 23 | host: localhost 24 | 25 | -------------------------------------------------------------------------------- /rails/config/initializers/security_fix.rb: -------------------------------------------------------------------------------- 1 | ActionController::Base.param_parsers.delete(Mime::XML) 2 | -------------------------------------------------------------------------------- /rails/config/jabber.yml.template: -------------------------------------------------------------------------------- 1 | daemon: 2 | jid: 3 | server: 4 | port: 5 | password: 6 | socket_path: /tmp/xmpp 7 | 8 | recipients: 9 | - sven@pentabarf.org 10 | 11 | -------------------------------------------------------------------------------- /rails/config/mail.yml.template: -------------------------------------------------------------------------------- 1 | address: localhost 2 | port: 25 3 | domain: localhost 4 | #user_name: 5 | #password: 6 | #authentication: login 7 | from: noreply@pentabarf.org 8 | always_cc: 9 | 10 | exception_recipients: 11 | - foo@example.com 12 | 13 | exception_subject: 'Pentabarf Exception' 14 | 15 | -------------------------------------------------------------------------------- /rails/doc/README_FOR_APP: -------------------------------------------------------------------------------- 1 | Use this README file to introduce your application and point to useful places in the API for learning more. 2 | Run "rake appdoc" to generate API documentation for your models and controllers. -------------------------------------------------------------------------------- /rails/lib/builder_enhancements.rb: -------------------------------------------------------------------------------- 1 | 2 | require 'builder' 3 | 4 | module Builder 5 | 6 | class XmlMarkup 7 | 8 | def input( options, &block ) 9 | options[:id] ||= options[:name] 10 | method_missing(:input, options, &block) 11 | end 12 | 13 | def textarea( value, options, &block ) 14 | options[:id] ||= options[:name] 15 | method_missing(:textarea, value, options, &block) 16 | end 17 | 18 | def form( options, &block ) 19 | options[:method] ||= :post 20 | method_missing(:form, options) do | xml | 21 | xml.input({:type=>:hidden,:name=>:token,:id=>"token#{options[:action]}",:value=>Token.generate(options[:action])}) 22 | yield( xml ) 23 | end 24 | end 25 | 26 | end 27 | 28 | end 29 | 30 | -------------------------------------------------------------------------------- /rails/lib/maillogger.rb: -------------------------------------------------------------------------------- 1 | 2 | class MailLogger 3 | 4 | class << self 5 | 6 | def init 7 | @@config = YAML.load_file( File.join( RAILS_ROOT, 'config', 'mail.yml' ) ) 8 | 9 | raise 'Mail not configured' if !( @@config['from'] && @@config['exception_recipients'] ) 10 | 11 | return true 12 | rescue Exception 13 | return false 14 | end 15 | 16 | def log( subject, text ) 17 | return if !class_variables.member?(:@@config) && !init 18 | 19 | subject = @@config['exception_subject'].to_s + ': ' + subject 20 | 21 | @@config['exception_recipients'].each do | recipient | 22 | Notifier::deliver_general(recipient, subject, text, @@config['from']) 23 | end 24 | 25 | end 26 | 27 | end 28 | 29 | end 30 | 31 | -------------------------------------------------------------------------------- /rails/lib/momomoto_auth.rb: -------------------------------------------------------------------------------- 1 | 2 | module Momomoto 3 | 4 | class Table 5 | 6 | class << self 7 | 8 | alias_method( :__select, :select ) 9 | 10 | def select( *args ) 11 | results = __select( *args ) 12 | return POPE.table_select( self, results ) 13 | end 14 | 15 | 16 | alias_method( :__write, :write ) 17 | 18 | def write( *args ) 19 | if args[0].dirty? 20 | POPE.table_write( self, *args ) 21 | return __write( *args ) 22 | end 23 | false 24 | end 25 | 26 | alias_method( :__delete, :delete ) 27 | 28 | def delete( *args ) 29 | POPE.table_delete( self, *args ) 30 | __delete( *args ) 31 | end 32 | 33 | end 34 | 35 | end 36 | 37 | end 38 | -------------------------------------------------------------------------------- /rails/lib/token.rb: -------------------------------------------------------------------------------- 1 | 2 | require 'digest/sha1' 3 | 4 | # class that handles token generation 5 | class Token 6 | class << self 7 | 8 | def generate( url ) 9 | salt = POPE.user.password[0..15] rescue "" 10 | Digest::SHA1.hexdigest( url + Digest::SHA1.hexdigest( salt ) ) 11 | end 12 | 13 | end 14 | end 15 | -------------------------------------------------------------------------------- /rails/log/.gitignore: -------------------------------------------------------------------------------- 1 | *.log 2 | -------------------------------------------------------------------------------- /rails/public/404.html: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 |

File not found

6 | 7 | 8 | -------------------------------------------------------------------------------- /rails/public/500.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Server Error 6 | 7 | 8 | 9 |
10 |
11 | 12 |
13 |

The server is having technical difficulties please try again later.

14 |
15 | 16 | 17 | -------------------------------------------------------------------------------- /rails/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FOSDEM/pentabarf/d3cea552a46b8ff70662c9a5edeac228fc8918d0/rails/public/favicon.ico -------------------------------------------------------------------------------- /rails/public/images/bullet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FOSDEM/pentabarf/d3cea552a46b8ff70662c9a5edeac228fc8918d0/rails/public/images/bullet.png -------------------------------------------------------------------------------- /rails/public/images/erisdiscordia-128x128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FOSDEM/pentabarf/d3cea552a46b8ff70662c9a5edeac228fc8918d0/rails/public/images/erisdiscordia-128x128.png -------------------------------------------------------------------------------- /rails/public/images/erisdiscordia-160x160.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FOSDEM/pentabarf/d3cea552a46b8ff70662c9a5edeac228fc8918d0/rails/public/images/erisdiscordia-160x160.png -------------------------------------------------------------------------------- /rails/public/images/erisdiscordia-bug-160x160.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FOSDEM/pentabarf/d3cea552a46b8ff70662c9a5edeac228fc8918d0/rails/public/images/erisdiscordia-bug-160x160.png -------------------------------------------------------------------------------- /rails/public/images/icon-clock-128x128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FOSDEM/pentabarf/d3cea552a46b8ff70662c9a5edeac228fc8918d0/rails/public/images/icon-clock-128x128.png -------------------------------------------------------------------------------- /rails/public/images/icon-clock-256x256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FOSDEM/pentabarf/d3cea552a46b8ff70662c9a5edeac228fc8918d0/rails/public/images/icon-clock-256x256.png -------------------------------------------------------------------------------- /rails/public/images/icon-clock-64x64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FOSDEM/pentabarf/d3cea552a46b8ff70662c9a5edeac228fc8918d0/rails/public/images/icon-clock-64x64.png -------------------------------------------------------------------------------- /rails/public/images/icon-conference-128x128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FOSDEM/pentabarf/d3cea552a46b8ff70662c9a5edeac228fc8918d0/rails/public/images/icon-conference-128x128.png -------------------------------------------------------------------------------- /rails/public/images/icon-conference-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FOSDEM/pentabarf/d3cea552a46b8ff70662c9a5edeac228fc8918d0/rails/public/images/icon-conference-32x32.png -------------------------------------------------------------------------------- /rails/public/images/icon-conference-64x64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FOSDEM/pentabarf/d3cea552a46b8ff70662c9a5edeac228fc8918d0/rails/public/images/icon-conference-64x64.png -------------------------------------------------------------------------------- /rails/public/images/icon-event-128x128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FOSDEM/pentabarf/d3cea552a46b8ff70662c9a5edeac228fc8918d0/rails/public/images/icon-event-128x128.png -------------------------------------------------------------------------------- /rails/public/images/icon-event-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FOSDEM/pentabarf/d3cea552a46b8ff70662c9a5edeac228fc8918d0/rails/public/images/icon-event-32x32.png -------------------------------------------------------------------------------- /rails/public/images/icon-event-64x64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FOSDEM/pentabarf/d3cea552a46b8ff70662c9a5edeac228fc8918d0/rails/public/images/icon-event-64x64.png -------------------------------------------------------------------------------- /rails/public/images/icon-find-conference-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FOSDEM/pentabarf/d3cea552a46b8ff70662c9a5edeac228fc8918d0/rails/public/images/icon-find-conference-32x32.png -------------------------------------------------------------------------------- /rails/public/images/icon-find-event-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FOSDEM/pentabarf/d3cea552a46b8ff70662c9a5edeac228fc8918d0/rails/public/images/icon-find-event-32x32.png -------------------------------------------------------------------------------- /rails/public/images/icon-find-person-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FOSDEM/pentabarf/d3cea552a46b8ff70662c9a5edeac228fc8918d0/rails/public/images/icon-find-person-32x32.png -------------------------------------------------------------------------------- /rails/public/images/icon-im-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FOSDEM/pentabarf/d3cea552a46b8ff70662c9a5edeac228fc8918d0/rails/public/images/icon-im-32x32.png -------------------------------------------------------------------------------- /rails/public/images/icon-link-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FOSDEM/pentabarf/d3cea552a46b8ff70662c9a5edeac228fc8918d0/rails/public/images/icon-link-32x32.png -------------------------------------------------------------------------------- /rails/public/images/icon-list-64x64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FOSDEM/pentabarf/d3cea552a46b8ff70662c9a5edeac228fc8918d0/rails/public/images/icon-list-64x64.png -------------------------------------------------------------------------------- /rails/public/images/icon-minus-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FOSDEM/pentabarf/d3cea552a46b8ff70662c9a5edeac228fc8918d0/rails/public/images/icon-minus-16x16.png -------------------------------------------------------------------------------- /rails/public/images/icon-new-conference-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FOSDEM/pentabarf/d3cea552a46b8ff70662c9a5edeac228fc8918d0/rails/public/images/icon-new-conference-32x32.png -------------------------------------------------------------------------------- /rails/public/images/icon-new-event-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FOSDEM/pentabarf/d3cea552a46b8ff70662c9a5edeac228fc8918d0/rails/public/images/icon-new-event-32x32.png -------------------------------------------------------------------------------- /rails/public/images/icon-new-person-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FOSDEM/pentabarf/d3cea552a46b8ff70662c9a5edeac228fc8918d0/rails/public/images/icon-new-person-32x32.png -------------------------------------------------------------------------------- /rails/public/images/icon-person-128x128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FOSDEM/pentabarf/d3cea552a46b8ff70662c9a5edeac228fc8918d0/rails/public/images/icon-person-128x128.png -------------------------------------------------------------------------------- /rails/public/images/icon-person-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FOSDEM/pentabarf/d3cea552a46b8ff70662c9a5edeac228fc8918d0/rails/public/images/icon-person-32x32.png -------------------------------------------------------------------------------- /rails/public/images/icon-person-64x64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FOSDEM/pentabarf/d3cea552a46b8ff70662c9a5edeac228fc8918d0/rails/public/images/icon-person-64x64.png -------------------------------------------------------------------------------- /rails/public/images/icon-phone-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FOSDEM/pentabarf/d3cea552a46b8ff70662c9a5edeac228fc8918d0/rails/public/images/icon-phone-32x32.png -------------------------------------------------------------------------------- /rails/public/images/icon-plus-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FOSDEM/pentabarf/d3cea552a46b8ff70662c9a5edeac228fc8918d0/rails/public/images/icon-plus-16x16.png -------------------------------------------------------------------------------- /rails/public/javascripts/jscalendar/img.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FOSDEM/pentabarf/d3cea552a46b8ff70662c9a5edeac228fc8918d0/rails/public/javascripts/jscalendar/img.gif -------------------------------------------------------------------------------- /rails/public/javascripts/jscalendar/lang/calendar-bg.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FOSDEM/pentabarf/d3cea552a46b8ff70662c9a5edeac228fc8918d0/rails/public/javascripts/jscalendar/lang/calendar-bg.js -------------------------------------------------------------------------------- /rails/public/javascripts/jscalendar/lang/calendar-big5.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FOSDEM/pentabarf/d3cea552a46b8ff70662c9a5edeac228fc8918d0/rails/public/javascripts/jscalendar/lang/calendar-big5.js -------------------------------------------------------------------------------- /rails/public/javascripts/jscalendar/lang/calendar-ca.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FOSDEM/pentabarf/d3cea552a46b8ff70662c9a5edeac228fc8918d0/rails/public/javascripts/jscalendar/lang/calendar-ca.js -------------------------------------------------------------------------------- /rails/public/javascripts/jscalendar/lang/calendar-cs-win.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FOSDEM/pentabarf/d3cea552a46b8ff70662c9a5edeac228fc8918d0/rails/public/javascripts/jscalendar/lang/calendar-cs-win.js -------------------------------------------------------------------------------- /rails/public/javascripts/jscalendar/lang/calendar-es.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FOSDEM/pentabarf/d3cea552a46b8ff70662c9a5edeac228fc8918d0/rails/public/javascripts/jscalendar/lang/calendar-es.js -------------------------------------------------------------------------------- /rails/public/javascripts/jscalendar/lang/calendar-fr.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FOSDEM/pentabarf/d3cea552a46b8ff70662c9a5edeac228fc8918d0/rails/public/javascripts/jscalendar/lang/calendar-fr.js -------------------------------------------------------------------------------- /rails/public/javascripts/jscalendar/lang/calendar-hr.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FOSDEM/pentabarf/d3cea552a46b8ff70662c9a5edeac228fc8918d0/rails/public/javascripts/jscalendar/lang/calendar-hr.js -------------------------------------------------------------------------------- /rails/public/javascripts/jscalendar/lang/calendar-hu.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FOSDEM/pentabarf/d3cea552a46b8ff70662c9a5edeac228fc8918d0/rails/public/javascripts/jscalendar/lang/calendar-hu.js -------------------------------------------------------------------------------- /rails/public/javascripts/jscalendar/lang/calendar-jp.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FOSDEM/pentabarf/d3cea552a46b8ff70662c9a5edeac228fc8918d0/rails/public/javascripts/jscalendar/lang/calendar-jp.js -------------------------------------------------------------------------------- /rails/public/javascripts/jscalendar/lang/calendar-ko.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FOSDEM/pentabarf/d3cea552a46b8ff70662c9a5edeac228fc8918d0/rails/public/javascripts/jscalendar/lang/calendar-ko.js -------------------------------------------------------------------------------- /rails/public/javascripts/jscalendar/lang/calendar-lt.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FOSDEM/pentabarf/d3cea552a46b8ff70662c9a5edeac228fc8918d0/rails/public/javascripts/jscalendar/lang/calendar-lt.js -------------------------------------------------------------------------------- /rails/public/javascripts/jscalendar/lang/calendar-lv.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FOSDEM/pentabarf/d3cea552a46b8ff70662c9a5edeac228fc8918d0/rails/public/javascripts/jscalendar/lang/calendar-lv.js -------------------------------------------------------------------------------- /rails/public/javascripts/jscalendar/lang/calendar-ru_win_.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FOSDEM/pentabarf/d3cea552a46b8ff70662c9a5edeac228fc8918d0/rails/public/javascripts/jscalendar/lang/calendar-ru_win_.js -------------------------------------------------------------------------------- /rails/public/javascripts/jscalendar/lang/calendar-sp.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FOSDEM/pentabarf/d3cea552a46b8ff70662c9a5edeac228fc8918d0/rails/public/javascripts/jscalendar/lang/calendar-sp.js -------------------------------------------------------------------------------- /rails/public/javascripts/jscalendar/lang/calendar-sv.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FOSDEM/pentabarf/d3cea552a46b8ff70662c9a5edeac228fc8918d0/rails/public/javascripts/jscalendar/lang/calendar-sv.js -------------------------------------------------------------------------------- /rails/public/javascripts/jscalendar/lang/calendar-tr.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FOSDEM/pentabarf/d3cea552a46b8ff70662c9a5edeac228fc8918d0/rails/public/javascripts/jscalendar/lang/calendar-tr.js -------------------------------------------------------------------------------- /rails/public/javascripts/jscalendar/lang/calendar-zh.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FOSDEM/pentabarf/d3cea552a46b8ff70662c9a5edeac228fc8918d0/rails/public/javascripts/jscalendar/lang/calendar-zh.js -------------------------------------------------------------------------------- /rails/public/javascripts/jscalendar/menuarrow.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FOSDEM/pentabarf/d3cea552a46b8ff70662c9a5edeac228fc8918d0/rails/public/javascripts/jscalendar/menuarrow.gif -------------------------------------------------------------------------------- /rails/public/javascripts/jscalendar/menuarrow2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FOSDEM/pentabarf/d3cea552a46b8ff70662c9a5edeac228fc8918d0/rails/public/javascripts/jscalendar/menuarrow2.gif -------------------------------------------------------------------------------- /rails/public/javascripts/jscalendar/skins/aqua/active-bg.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FOSDEM/pentabarf/d3cea552a46b8ff70662c9a5edeac228fc8918d0/rails/public/javascripts/jscalendar/skins/aqua/active-bg.gif -------------------------------------------------------------------------------- /rails/public/javascripts/jscalendar/skins/aqua/dark-bg.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FOSDEM/pentabarf/d3cea552a46b8ff70662c9a5edeac228fc8918d0/rails/public/javascripts/jscalendar/skins/aqua/dark-bg.gif -------------------------------------------------------------------------------- /rails/public/javascripts/jscalendar/skins/aqua/hover-bg.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FOSDEM/pentabarf/d3cea552a46b8ff70662c9a5edeac228fc8918d0/rails/public/javascripts/jscalendar/skins/aqua/hover-bg.gif -------------------------------------------------------------------------------- /rails/public/javascripts/jscalendar/skins/aqua/menuarrow.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FOSDEM/pentabarf/d3cea552a46b8ff70662c9a5edeac228fc8918d0/rails/public/javascripts/jscalendar/skins/aqua/menuarrow.gif -------------------------------------------------------------------------------- /rails/public/javascripts/jscalendar/skins/aqua/normal-bg.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FOSDEM/pentabarf/d3cea552a46b8ff70662c9a5edeac228fc8918d0/rails/public/javascripts/jscalendar/skins/aqua/normal-bg.gif -------------------------------------------------------------------------------- /rails/public/javascripts/jscalendar/skins/aqua/rowhover-bg.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FOSDEM/pentabarf/d3cea552a46b8ff70662c9a5edeac228fc8918d0/rails/public/javascripts/jscalendar/skins/aqua/rowhover-bg.gif -------------------------------------------------------------------------------- /rails/public/javascripts/jscalendar/skins/aqua/status-bg.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FOSDEM/pentabarf/d3cea552a46b8ff70662c9a5edeac228fc8918d0/rails/public/javascripts/jscalendar/skins/aqua/status-bg.gif -------------------------------------------------------------------------------- /rails/public/javascripts/jscalendar/skins/aqua/title-bg.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FOSDEM/pentabarf/d3cea552a46b8ff70662c9a5edeac228fc8918d0/rails/public/javascripts/jscalendar/skins/aqua/title-bg.gif -------------------------------------------------------------------------------- /rails/public/javascripts/jscalendar/skins/aqua/today-bg.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FOSDEM/pentabarf/d3cea552a46b8ff70662c9a5edeac228fc8918d0/rails/public/javascripts/jscalendar/skins/aqua/today-bg.gif -------------------------------------------------------------------------------- /rails/public/javascripts/sortable.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FOSDEM/pentabarf/d3cea552a46b8ff70662c9a5edeac228fc8918d0/rails/public/javascripts/sortable.js -------------------------------------------------------------------------------- /rails/public/logout.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Logout 6 | 7 | 8 |

You are logged out now.

9 | 10 | 11 | -------------------------------------------------------------------------------- /rails/public/robots.txt: -------------------------------------------------------------------------------- 1 | # See http://www.robotstxt.org/wc/norobots.html for documentation on how to use the robots.txt file -------------------------------------------------------------------------------- /rails/script/about: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | require File.dirname(__FILE__) + '/../config/boot' 3 | require 'commands/about' -------------------------------------------------------------------------------- /rails/script/breakpointer: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | require File.dirname(__FILE__) + '/../config/boot' 3 | require 'commands/breakpointer' -------------------------------------------------------------------------------- /rails/script/console: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | require File.dirname(__FILE__) + '/../config/boot' 3 | require 'commands/console' -------------------------------------------------------------------------------- /rails/script/dbconsole: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | require File.dirname(__FILE__) + '/../config/boot' 3 | require 'commands/dbconsole' 4 | -------------------------------------------------------------------------------- /rails/script/destroy: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | require File.dirname(__FILE__) + '/../config/boot' 3 | require 'commands/destroy' -------------------------------------------------------------------------------- /rails/script/generate: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | require File.dirname(__FILE__) + '/../config/boot' 3 | require 'commands/generate' -------------------------------------------------------------------------------- /rails/script/pentacards: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | 3 | require 'config/environment.rb' 4 | require 'lib/pentacards' 5 | 6 | if ARGV.length != 1 7 | puts "Usage: #{$0} " 8 | exit 9 | end 10 | 11 | conference = Conference.select_single({:acronym=>ARGV[0]}) 12 | 13 | # find all events 14 | events = View_event.select({:translated => 'en', :conference_id => conference.conference_id}) 15 | 16 | puts "creating pentacards for #{events.length} events" 17 | 18 | pc = Pentacards.new( events, 2, 2 ) 19 | 20 | File.open("pentacards.pdf", "wb") do |f| 21 | f.write( pc.render ) 22 | end 23 | 24 | -------------------------------------------------------------------------------- /rails/script/performance/benchmarker: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | require File.dirname(__FILE__) + '/../../config/boot' 3 | require 'commands/performance/benchmarker' 4 | -------------------------------------------------------------------------------- /rails/script/performance/profiler: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | require File.dirname(__FILE__) + '/../../config/boot' 3 | require 'commands/performance/profiler' 4 | -------------------------------------------------------------------------------- /rails/script/plugin: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | require File.dirname(__FILE__) + '/../config/boot' 3 | require 'commands/plugin' -------------------------------------------------------------------------------- /rails/script/process/inspector: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | require File.dirname(__FILE__) + '/../../config/boot' 3 | require 'commands/process/inspector' 4 | -------------------------------------------------------------------------------- /rails/script/process/reaper: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | require File.dirname(__FILE__) + '/../../config/boot' 3 | require 'commands/process/reaper' 4 | -------------------------------------------------------------------------------- /rails/script/process/spawner: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | require File.dirname(__FILE__) + '/../../config/boot' 3 | require 'commands/process/spawner' 4 | -------------------------------------------------------------------------------- /rails/script/runner: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | require File.dirname(__FILE__) + '/../config/boot' 3 | require 'commands/runner' -------------------------------------------------------------------------------- /rails/script/server: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | require File.dirname(__FILE__) + '/../config/boot' 3 | require 'commands/server' -------------------------------------------------------------------------------- /rails/test/functional/atom_controller_test.rb: -------------------------------------------------------------------------------- 1 | require File.dirname(__FILE__) + '/../test_helper' 2 | require 'atom_controller' 3 | 4 | # Re-raise errors caught by the controller. 5 | class AtomController; def rescue_action(e) raise e end; end 6 | 7 | class AtomControllerTest < ActionController::TestCase 8 | def setup 9 | @controller = AtomController.new 10 | @request = ActionController::TestRequest.new 11 | @response = ActionController::TestResponse.new 12 | authenticate_user( Account.select_single(:login_name=>'committee') ) 13 | end 14 | 15 | def test_recent_changes 16 | get :recent_changes 17 | assert_response :success 18 | end 19 | 20 | end 21 | -------------------------------------------------------------------------------- /rails/test/functional/csv_controller_test.rb: -------------------------------------------------------------------------------- 1 | require File.dirname(__FILE__) + '/../test_helper' 2 | require 'csv_controller' 3 | 4 | # Re-raise errors caught by the controller. 5 | class CsvController; def rescue_action(e) raise e end; end 6 | 7 | class CsvControllerTest < ActionController::TestCase 8 | def setup 9 | @controller = CsvController.new 10 | @request = ActionController::TestRequest.new 11 | @response = ActionController::TestResponse.new 12 | end 13 | 14 | # Replace this with your real tests. 15 | def test_truth 16 | assert true 17 | end 18 | end 19 | -------------------------------------------------------------------------------- /rails/test/functional/feedback_controller_test.rb: -------------------------------------------------------------------------------- 1 | require File.dirname(__FILE__) + '/../test_helper' 2 | require 'feedback_controller' 3 | 4 | # Re-raise errors caught by the controller. 5 | class FeedbackController; def rescue_action(e) raise e end; end 6 | 7 | class FeedbackControllerTest < ActionController::TestCase 8 | def setup 9 | @controller = FeedbackController.new 10 | @request = ActionController::TestRequest.new 11 | @response = ActionController::TestResponse.new 12 | end 13 | 14 | # Replace this with your real tests. 15 | def test_truth 16 | assert true 17 | end 18 | end 19 | -------------------------------------------------------------------------------- /rails/test/functional/ical_controller_test.rb: -------------------------------------------------------------------------------- 1 | require File.dirname(__FILE__) + '/../test_helper' 2 | require 'ical_controller' 3 | 4 | # Re-raise errors caught by the controller. 5 | class IcalController; def rescue_action(e) raise e end; end 6 | 7 | class IcalControllerTest < ActionController::TestCase 8 | def setup 9 | @controller = IcalController.new 10 | @request = ActionController::TestRequest.new 11 | @response = ActionController::TestResponse.new 12 | authenticate_user( Account.select_single(:login_name=>'committee') ) 13 | end 14 | 15 | def teardown 16 | POPE.deauth 17 | end 18 | 19 | def test_conference 20 | get :conference, {:conference_id => 1} 21 | assert_response :success 22 | end 23 | 24 | end 25 | -------------------------------------------------------------------------------- /rails/test/functional/search_controller_test.rb: -------------------------------------------------------------------------------- 1 | require 'test_helper' 2 | 3 | class SearchControllerTest < ActionController::TestCase 4 | # Replace this with your real tests. 5 | test "the truth" do 6 | assert true 7 | end 8 | end 9 | -------------------------------------------------------------------------------- /rails/test/functional/xcal_controller_test.rb: -------------------------------------------------------------------------------- 1 | require File.dirname(__FILE__) + '/../test_helper' 2 | require 'xcal_controller' 3 | 4 | # Re-raise errors caught by the controller. 5 | class XcalController; def rescue_action(e) raise e end; end 6 | 7 | class XcalControllerTest < ActionController::TestCase 8 | def setup 9 | @controller = XcalController.new 10 | @request = ActionController::TestRequest.new 11 | @response = ActionController::TestResponse.new 12 | authenticate_user( Account.select_single(:login_name=>'committee') ) 13 | end 14 | 15 | def teardown 16 | POPE.deauth 17 | end 18 | 19 | def test_conference 20 | get :conference, {:conference_id => 1} 21 | assert_response :success 22 | end 23 | 24 | end 25 | -------------------------------------------------------------------------------- /rails/test/functional/xml_controller_test.rb: -------------------------------------------------------------------------------- 1 | require File.dirname(__FILE__) + '/../test_helper' 2 | require 'xml_controller' 3 | 4 | # Re-raise errors caught by the controller. 5 | class XmlController; def rescue_action(e) raise e end; end 6 | 7 | class XmlControllerTest < ActionController::TestCase 8 | def setup 9 | @controller = XmlController.new 10 | @request = ActionController::TestRequest.new 11 | @response = ActionController::TestResponse.new 12 | authenticate_user( Account.select_single(:login_name=>'committee') ) 13 | end 14 | 15 | def teardown 16 | POPE.deauth 17 | end 18 | 19 | def test_schedule 20 | get :schedule, {:conference_id=>1} 21 | assert_response :success 22 | end 23 | 24 | end 25 | -------------------------------------------------------------------------------- /rails/test/unit/pentacards_test.rb: -------------------------------------------------------------------------------- 1 | require File.dirname(__FILE__) + '/../test_helper' 2 | 3 | class PentacardsTest < Test::Unit::TestCase 4 | 5 | def test_pentacards_generation 6 | conference = Conference.select_single({:conference_id=>1}) 7 | events = View_event.select({:translated => 'en', :conference_id => conference.conference_id}) 8 | pc = Pentacards.new( events, 2, 2 ) 9 | pc.render 10 | end 11 | 12 | end 13 | -------------------------------------------------------------------------------- /rails/test/unit/pope_test.rb: -------------------------------------------------------------------------------- 1 | require File.dirname(__FILE__) + '/../test_helper' 2 | 3 | class PopeTest < Test::Unit::TestCase 4 | 5 | def setup 6 | POPE.send( :instance_variable_set, :@user, Pope::User.new( Account.select_single(:login_name=>'testcase_norole') )) 7 | end 8 | 9 | def test_single_domain_permissions 10 | chunky = Person.new 11 | chunky.public_name = 'Chunky Bacon' 12 | assert_raise( Pope::PermissionError ) { chunky.write } 13 | 14 | POPE.instance_eval{ @permissions = [:'person::create'] } 15 | assert_nothing_raised{ chunky.write } 16 | assert_raise( Pope::PermissionError ) { chunky.delete } 17 | 18 | POPE.instance_eval{ @permissions = [:'person::delete'] } 19 | assert_nothing_raised{ chunky.delete } 20 | end 21 | 22 | end 23 | -------------------------------------------------------------------------------- /rails/tmp/html-export/.gitignore: -------------------------------------------------------------------------------- 1 | */* 2 | -------------------------------------------------------------------------------- /rails/tmp/pids/.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FOSDEM/pentabarf/d3cea552a46b8ff70662c9a5edeac228fc8918d0/rails/tmp/pids/.gitignore -------------------------------------------------------------------------------- /rails/vendor/plugins/rails-dev-boost/TODO.txt: -------------------------------------------------------------------------------- 1 | * Update ActiveRecord reflections for which the module passed as the :extend option has been unloaded. 2 | - update reference: MacroReflection#@options[:extend] 3 | -------------------------------------------------------------------------------- /rails/vendor/plugins/rails-dev-boost/init.rb: -------------------------------------------------------------------------------- 1 | if Rails.env.development? || (config.respond_to?(:soft_reload) && config.soft_reload) 2 | require 'rails_development_boost' 3 | RailsDevelopmentBoost.apply! 4 | end 5 | -------------------------------------------------------------------------------- /rails/vendor/plugins/rails-dev-boost/lib/rails_development_boost.rb: -------------------------------------------------------------------------------- 1 | module RailsDevelopmentBoost 2 | def self.apply! 3 | [DispatcherPatch, DependenciesPatch, ViewHelpersPatch].each &:apply! 4 | end 5 | 6 | autoload :DispatcherPatch, 'rails_development_boost/dispatcher_patch' 7 | autoload :DependenciesPatch, 'rails_development_boost/dependencies_patch' 8 | autoload :LoadedFile, 'rails_development_boost/loaded_file' 9 | autoload :ViewHelpersPatch, 'rails_development_boost/view_helpers_patch' 10 | end 11 | -------------------------------------------------------------------------------- /rails/vendor/plugins/rails-dev-boost/lib/rails_development_boost/loaded_file.rb: -------------------------------------------------------------------------------- 1 | module RailsDevelopmentBoost 2 | class LoadedFile 3 | attr_accessor :path, :constants 4 | 5 | def initialize(path, constants=[]) 6 | @path = path 7 | @constants = constants 8 | @mtime = current_mtime 9 | end 10 | 11 | def changed? 12 | previous_mtime, @mtime = @mtime, current_mtime 13 | previous_mtime != @mtime 14 | end 15 | 16 | private 17 | 18 | def current_mtime 19 | File.file?(@path) ? File.mtime(@path) : nil 20 | end 21 | end 22 | end 23 | -------------------------------------------------------------------------------- /rails/vendor/plugins/rails-dev-boost/lib/rails_development_boost/view_helpers_patch.rb: -------------------------------------------------------------------------------- 1 | module RailsDevelopmentBoost 2 | module ViewHelpersPatch 3 | def self.apply! 4 | [ActionController, ActionMailer].each {|mod| mod::Helpers::ClassMethods.send(:include, self)} 5 | end 6 | 7 | # we need to explicitly associate helpers to their including controllers/mailers 8 | def add_template_helper_with_const_association_tracking(helper_module) 9 | ActiveSupport::Dependencies.add_explicit_dependency(helper_module, self) 10 | add_template_helper_without_const_association_tracking(helper_module) 11 | end 12 | 13 | def self.included(base) 14 | base.alias_method_chain :add_template_helper, :const_association_tracking 15 | end 16 | end 17 | end 18 | -------------------------------------------------------------------------------- /rails/vendor/plugins/rails-dev-boost/test/constants/active_record/comment.rb: -------------------------------------------------------------------------------- 1 | class Comment < Message 2 | end 3 | -------------------------------------------------------------------------------- /rails/vendor/plugins/rails-dev-boost/test/constants/active_record/message.rb: -------------------------------------------------------------------------------- 1 | class Message < ActiveRecord::Base 2 | end 3 | -------------------------------------------------------------------------------- /rails/vendor/plugins/rails-dev-boost/test/constants/active_record/other.rb: -------------------------------------------------------------------------------- 1 | class Other < ActiveRecord::Base 2 | end 3 | -------------------------------------------------------------------------------- /rails/vendor/plugins/rails-dev-boost/test/constants/active_record/post.rb: -------------------------------------------------------------------------------- 1 | class Post < Message 2 | has_many :comments 3 | end 4 | -------------------------------------------------------------------------------- /rails/vendor/plugins/rails-dev-boost/test/constants/deep_nesting/a.rb: -------------------------------------------------------------------------------- 1 | module A 2 | end 3 | -------------------------------------------------------------------------------- /rails/vendor/plugins/rails-dev-boost/test/constants/deep_nesting/a/b.rb: -------------------------------------------------------------------------------- 1 | module A::B 2 | end 3 | -------------------------------------------------------------------------------- /rails/vendor/plugins/rails-dev-boost/test/constants/deep_nesting/a/b/c.rb: -------------------------------------------------------------------------------- 1 | module A::B::C 2 | end 3 | -------------------------------------------------------------------------------- /rails/vendor/plugins/rails-dev-boost/test/constants/deep_nesting/a/b/c/d.rb: -------------------------------------------------------------------------------- 1 | module A::B::C::D 2 | end 3 | -------------------------------------------------------------------------------- /rails/vendor/plugins/rails-dev-boost/test/constants/double_removal/ns.rb: -------------------------------------------------------------------------------- 1 | class Ns 2 | include M 3 | end 4 | -------------------------------------------------------------------------------- /rails/vendor/plugins/rails-dev-boost/test/constants/double_removal/ns/c.rb: -------------------------------------------------------------------------------- 1 | class Ns::C 2 | include Ns::M 3 | end 4 | -------------------------------------------------------------------------------- /rails/vendor/plugins/rails-dev-boost/test/constants/double_removal/ns/m.rb: -------------------------------------------------------------------------------- 1 | module Ns::M 2 | end 3 | -------------------------------------------------------------------------------- /rails/vendor/plugins/rails-dev-boost/test/constants/mixins/client.rb: -------------------------------------------------------------------------------- 1 | class Client 2 | include Mixin 3 | end 4 | -------------------------------------------------------------------------------- /rails/vendor/plugins/rails-dev-boost/test/constants/mixins/mixin.rb: -------------------------------------------------------------------------------- 1 | module Mixin 2 | def from_mixin 3 | end 4 | end 5 | -------------------------------------------------------------------------------- /rails/vendor/plugins/rails-dev-boost/test/constants/mixins/update/mixin.rb: -------------------------------------------------------------------------------- 1 | module Mixin 2 | def from_mixin_update 3 | end 4 | end 5 | -------------------------------------------------------------------------------- /rails/vendor/plugins/rails-dev-boost/test/constants/nested_mixins/b.rb: -------------------------------------------------------------------------------- 1 | module B 2 | end 3 | -------------------------------------------------------------------------------- /rails/vendor/plugins/rails-dev-boost/test/constants/nested_mixins/b/c.rb: -------------------------------------------------------------------------------- 1 | class B::C 2 | end 3 | -------------------------------------------------------------------------------- /rails/vendor/plugins/rails-dev-boost/test/constants/nested_mixins/ma.rb: -------------------------------------------------------------------------------- 1 | module Ma 2 | include Mb 3 | end 4 | -------------------------------------------------------------------------------- /rails/vendor/plugins/rails-dev-boost/test/constants/nested_mixins/ma/mb.rb: -------------------------------------------------------------------------------- 1 | module Ma::Mb 2 | include Mc 3 | end 4 | -------------------------------------------------------------------------------- /rails/vendor/plugins/rails-dev-boost/test/constants/nested_mixins/ma/mb/mc.rb: -------------------------------------------------------------------------------- 1 | module Ma::Mb::Mc 2 | end 3 | -------------------------------------------------------------------------------- /rails/vendor/plugins/rails-dev-boost/test/constants/nested_mixins/oa.rb: -------------------------------------------------------------------------------- 1 | module Oa 2 | include Ma::Mb 3 | Ob 4 | end 5 | -------------------------------------------------------------------------------- /rails/vendor/plugins/rails-dev-boost/test/constants/nested_mixins/oa/ob.rb: -------------------------------------------------------------------------------- 1 | module Oa::Ob 2 | Oc 3 | end 4 | -------------------------------------------------------------------------------- /rails/vendor/plugins/rails-dev-boost/test/constants/nested_mixins/oa/ob/oc.rb: -------------------------------------------------------------------------------- 1 | class Oa::Ob::Oc < B::C 2 | end 3 | -------------------------------------------------------------------------------- /rails/vendor/plugins/rails-dev-boost/test/constants/single_removal/a.rb: -------------------------------------------------------------------------------- 1 | class A 2 | end 3 | -------------------------------------------------------------------------------- /rails/vendor/plugins/rails-dev-boost/test/constants/single_removal/b.rb: -------------------------------------------------------------------------------- 1 | class B 2 | end 3 | -------------------------------------------------------------------------------- /rails/vendor/plugins/rails-dev-boost/test/constants/singleton_mixins/a.rb: -------------------------------------------------------------------------------- 1 | module A 2 | extend B 3 | end 4 | -------------------------------------------------------------------------------- /rails/vendor/plugins/rails-dev-boost/test/constants/singleton_mixins/b.rb: -------------------------------------------------------------------------------- 1 | module B 2 | end 3 | -------------------------------------------------------------------------------- /rails/vendor/plugins/rails-dev-boost/test/constants/subclass/a.rb: -------------------------------------------------------------------------------- 1 | class A 2 | end 3 | -------------------------------------------------------------------------------- /rails/vendor/plugins/rails-dev-boost/test/constants/subclass/b.rb: -------------------------------------------------------------------------------- 1 | class B < A 2 | end 3 | -------------------------------------------------------------------------------- /rails/vendor/plugins/rails-dev-boost/test/constants/subclass/c.rb: -------------------------------------------------------------------------------- 1 | class C 2 | end 3 | -------------------------------------------------------------------------------- /sql/Makefile: -------------------------------------------------------------------------------- 1 | 2 | PSQL=psql 3 | 4 | LOG_TARGETS = install all import user 5 | LOG_FILE = install.log 6 | 7 | ifneq ($(LOGGING_ENABLED),y) 8 | $(LOG_TARGETS): 9 | @$(MAKE) LOGGING_ENABLED=y $@ 2>&1 | tee "$(LOG_FILE)" 10 | else 11 | 12 | all: install import 13 | 14 | install: 15 | -createlang plpgsql 16 | ${PSQL} -f schema.sql 17 | ${PSQL} -f tables.sql 18 | ${PSQL} -f index.sql 19 | ${PSQL} -f views.sql 20 | ${PSQL} -f types.sql 21 | ${PSQL} -f functions.sql 22 | ${PSQL} -f trigger.sql 23 | ${PSQL} -f activate_trigger.sql 24 | ${PSQL} -c 'SELECT log.activate_logging();' 25 | 26 | import: 27 | cd data && ${PSQL} -f import.sql 28 | 29 | user: 30 | ${PSQL} -f pentabarf-user.sql 31 | 32 | endif 33 | -------------------------------------------------------------------------------- /sql/activate_trigger.sql: -------------------------------------------------------------------------------- 1 | 2 | CREATE TRIGGER related_event_after_insert AFTER INSERT ON event_related FOR STATEMENT EXECUTE PROCEDURE event_related_trigger_insert(); 3 | 4 | CREATE TRIGGER related_event_after_delete AFTER DELETE ON event_related FOR STATEMENT EXECUTE PROCEDURE event_related_trigger_delete(); 5 | 6 | CREATE TRIGGER conference_release_after_insert AFTER INSERT ON conference_release FOR EACH ROW EXECUTE PROCEDURE conference_release_trigger_insert(); 7 | 8 | CREATE TRIGGER custom_fields_trigger BEFORE INSERT OR UPDATE OR DELETE ON custom.custom_fields FOR EACH ROW EXECUTE PROCEDURE custom_field_trigger(); 9 | 10 | -------------------------------------------------------------------------------- /sql/data/attachment_type.sql: -------------------------------------------------------------------------------- 1 | 2 | SET client_encoding = 'UTF8'; 3 | SET search_path = public, pg_catalog; 4 | 5 | INSERT INTO attachment_type (attachment_type, rank) VALUES ('audio', 4); 6 | INSERT INTO attachment_type (attachment_type, rank) VALUES ('other', 3); 7 | INSERT INTO attachment_type (attachment_type, rank) VALUES ('paper', 2); 8 | INSERT INTO attachment_type (attachment_type, rank) VALUES ('slides', 1); 9 | INSERT INTO attachment_type (attachment_type, rank) VALUES ('video', 5); 10 | -------------------------------------------------------------------------------- /sql/data/auth.conference_role.sql: -------------------------------------------------------------------------------- 1 | 2 | SET client_encoding = 'UTF8'; 3 | SET search_path = auth, pg_catalog; 4 | 5 | INSERT INTO conference_role (conference_role, rank) VALUES ('admin', NULL); 6 | INSERT INTO conference_role (conference_role, rank) VALUES ('committee', NULL); 7 | INSERT INTO conference_role (conference_role, rank) VALUES ('reviewer', NULL); 8 | -------------------------------------------------------------------------------- /sql/data/auth.conference_role_localized.sql: -------------------------------------------------------------------------------- 1 | 2 | SET client_encoding = 'UTF8'; 3 | SET search_path = auth, pg_catalog; 4 | 5 | -------------------------------------------------------------------------------- /sql/data/auth.role.sql: -------------------------------------------------------------------------------- 1 | 2 | SET client_encoding = 'UTF8'; 3 | SET search_path = auth, pg_catalog; 4 | 5 | INSERT INTO role (role, rank) VALUES ('admin', 2); 6 | INSERT INTO role (role, rank) VALUES ('committee', 3); 7 | INSERT INTO role (role, rank) VALUES ('developer', 1); 8 | INSERT INTO role (role, rank) VALUES ('reviewer', 4); 9 | INSERT INTO role (role, rank) VALUES ('submitter', 7); 10 | -------------------------------------------------------------------------------- /sql/data/conference_phase.sql: -------------------------------------------------------------------------------- 1 | 2 | SET client_encoding = 'UTF8'; 3 | SET search_path = public, pg_catalog; 4 | 5 | INSERT INTO conference_phase (conference_phase, rank) VALUES ('aftermath', 5); 6 | INSERT INTO conference_phase (conference_phase, rank) VALUES ('bureaucracy', 4); 7 | INSERT INTO conference_phase (conference_phase, rank) VALUES ('chaos', 1); 8 | INSERT INTO conference_phase (conference_phase, rank) VALUES ('confusion', 3); 9 | INSERT INTO conference_phase (conference_phase, rank) VALUES ('discord', 2); 10 | -------------------------------------------------------------------------------- /sql/data/conflict.conflict_level.sql: -------------------------------------------------------------------------------- 1 | 2 | SET client_encoding = 'UTF8'; 3 | SET search_path = conflict, pg_catalog; 4 | 5 | INSERT INTO conflict_level (conflict_level, rank) VALUES ('error', 4); 6 | INSERT INTO conflict_level (conflict_level, rank) VALUES ('fatal', 5); 7 | INSERT INTO conflict_level (conflict_level, rank) VALUES ('note', 2); 8 | INSERT INTO conflict_level (conflict_level, rank) VALUES ('silent', 1); 9 | INSERT INTO conflict_level (conflict_level, rank) VALUES ('warning', 3); 10 | -------------------------------------------------------------------------------- /sql/data/conflict.conflict_type.sql: -------------------------------------------------------------------------------- 1 | 2 | SET client_encoding = 'UTF8'; 3 | SET search_path = conflict, pg_catalog; 4 | 5 | INSERT INTO conflict_type (conflict_type) VALUES ('event'); 6 | INSERT INTO conflict_type (conflict_type) VALUES ('event_event'); 7 | INSERT INTO conflict_type (conflict_type) VALUES ('event_person'); 8 | INSERT INTO conflict_type (conflict_type) VALUES ('event_person_event'); 9 | INSERT INTO conflict_type (conflict_type) VALUES ('person'); 10 | -------------------------------------------------------------------------------- /sql/data/currency_localized.sql: -------------------------------------------------------------------------------- 1 | 2 | SET client_encoding = 'UTF8'; 3 | SET search_path = public, pg_catalog; 4 | 5 | INSERT INTO currency_localized (currency, translated, name) VALUES ('JPY', 'de', 'Yen'); 6 | INSERT INTO currency_localized (currency, translated, name) VALUES ('JPY', 'en', 'Yen'); 7 | -------------------------------------------------------------------------------- /sql/data/event_origin.sql: -------------------------------------------------------------------------------- 1 | 2 | SET client_encoding = 'UTF8'; 3 | SET search_path = public, pg_catalog; 4 | 5 | INSERT INTO event_origin (event_origin, rank) VALUES ('idea', 1); 6 | INSERT INTO event_origin (event_origin, rank) VALUES ('submission', 2); 7 | -------------------------------------------------------------------------------- /sql/data/event_origin_localized.sql: -------------------------------------------------------------------------------- 1 | 2 | SET client_encoding = 'UTF8'; 3 | SET search_path = public, pg_catalog; 4 | 5 | INSERT INTO event_origin_localized (event_origin, translated, name) VALUES ('idea', 'de', 'Idee'); 6 | INSERT INTO event_origin_localized (event_origin, translated, name) VALUES ('idea', 'en', 'Idea'); 7 | INSERT INTO event_origin_localized (event_origin, translated, name) VALUES ('idea', 'pt', 'Idéia'); 8 | INSERT INTO event_origin_localized (event_origin, translated, name) VALUES ('submission', 'de', 'Submission'); 9 | INSERT INTO event_origin_localized (event_origin, translated, name) VALUES ('submission', 'en', 'Submission'); 10 | INSERT INTO event_origin_localized (event_origin, translated, name) VALUES ('submission', 'pt', 'Submissão'); 11 | -------------------------------------------------------------------------------- /sql/data/event_state.sql: -------------------------------------------------------------------------------- 1 | 2 | SET client_encoding = 'UTF8'; 3 | SET search_path = public, pg_catalog; 4 | 5 | INSERT INTO event_state (event_state, rank) VALUES ('accepted', 2); 6 | INSERT INTO event_state (event_state, rank) VALUES ('rejected', 3); 7 | INSERT INTO event_state (event_state, rank) VALUES ('undecided', 1); 8 | -------------------------------------------------------------------------------- /sql/data/im_type.sql: -------------------------------------------------------------------------------- 1 | 2 | SET client_encoding = 'UTF8'; 3 | SET search_path = public, pg_catalog; 4 | 5 | INSERT INTO im_type (im_type, scheme, rank) VALUES ('aim', 'aim', 3); 6 | INSERT INTO im_type (im_type, scheme, rank) VALUES ('gadugadu', 'gadugadu', 6); 7 | INSERT INTO im_type (im_type, scheme, rank) VALUES ('icq', 'icq', 2); 8 | INSERT INTO im_type (im_type, scheme, rank) VALUES ('jabber', 'jabber', 1); 9 | INSERT INTO im_type (im_type, scheme, rank) VALUES ('msn', 'msn', 4); 10 | INSERT INTO im_type (im_type, scheme, rank) VALUES ('yahoo', 'yahoo', 5); 11 | -------------------------------------------------------------------------------- /sql/data/link_type.sql: -------------------------------------------------------------------------------- 1 | 2 | SET client_encoding = 'UTF8'; 3 | SET search_path = public, pg_catalog; 4 | 5 | INSERT INTO link_type (link_type, template, rank) VALUES ('orga wiki', 'https://22c3.cccv.de/wiki/', NULL); 6 | INSERT INTO link_type (link_type, template, rank) VALUES ('rt cccv', 'https://rt.cccv.de/Ticket/Display.html?id=', NULL); 7 | INSERT INTO link_type (link_type, template, rank) VALUES ('rt entheovision', 'https://rt.entheovision.de/Ticket/Display.html?id=', NULL); 8 | INSERT INTO link_type (link_type, template, rank) VALUES ('url', NULL, 1); 9 | -------------------------------------------------------------------------------- /sql/data/link_type_localized.sql: -------------------------------------------------------------------------------- 1 | 2 | SET client_encoding = 'UTF8'; 3 | SET search_path = public, pg_catalog; 4 | 5 | INSERT INTO link_type_localized (link_type, translated, name) VALUES ('orga wiki', 'de', 'Orga-Wiki'); 6 | INSERT INTO link_type_localized (link_type, translated, name) VALUES ('orga wiki', 'en', 'Orga-Wiki'); 7 | INSERT INTO link_type_localized (link_type, translated, name) VALUES ('rt cccv', 'de', 'Request Tracker'); 8 | INSERT INTO link_type_localized (link_type, translated, name) VALUES ('rt cccv', 'en', 'Request Tracker'); 9 | INSERT INTO link_type_localized (link_type, translated, name) VALUES ('url', 'de', 'URL'); 10 | INSERT INTO link_type_localized (link_type, translated, name) VALUES ('url', 'en', 'URL'); 11 | -------------------------------------------------------------------------------- /sql/data/phone_type.sql: -------------------------------------------------------------------------------- 1 | 2 | SET client_encoding = 'UTF8'; 3 | SET search_path = public, pg_catalog; 4 | 5 | INSERT INTO phone_type (phone_type, scheme, rank) VALUES ('dect', 'tel', NULL); 6 | INSERT INTO phone_type (phone_type, scheme, rank) VALUES ('fax', 'fax', NULL); 7 | INSERT INTO phone_type (phone_type, scheme, rank) VALUES ('mobile', 'tel', NULL); 8 | INSERT INTO phone_type (phone_type, scheme, rank) VALUES ('phone', 'tel', NULL); 9 | INSERT INTO phone_type (phone_type, scheme, rank) VALUES ('private', 'tel', NULL); 10 | INSERT INTO phone_type (phone_type, scheme, rank) VALUES ('secretary', 'tel', NULL); 11 | INSERT INTO phone_type (phone_type, scheme, rank) VALUES ('skype', 'skype', NULL); 12 | INSERT INTO phone_type (phone_type, scheme, rank) VALUES ('work', 'tel', NULL); 13 | -------------------------------------------------------------------------------- /sql/data/transport.sql: -------------------------------------------------------------------------------- 1 | 2 | SET client_encoding = 'UTF8'; 3 | SET search_path = public, pg_catalog; 4 | 5 | INSERT INTO transport (transport, rank) VALUES ('car', NULL); 6 | INSERT INTO transport (transport, rank) VALUES ('plane', NULL); 7 | INSERT INTO transport (transport, rank) VALUES ('submarine', NULL); 8 | INSERT INTO transport (transport, rank) VALUES ('train', NULL); 9 | INSERT INTO transport (transport, rank) VALUES ('ufo', NULL); 10 | -------------------------------------------------------------------------------- /sql/functions/account/own_conference_persons.sql: -------------------------------------------------------------------------------- 1 | 2 | -- get conference_person_ids of all conference_persons with a specific person_id 3 | CREATE OR REPLACE FUNCTION own_conference_persons( person_id INTEGER ) RETURNS SETOF INTEGER AS $$ 4 | SELECT conference_person_id 5 | FROM conference_person 6 | WHERE person_id = $1; 7 | $$ LANGUAGE SQL RETURNS NULL ON NULL INPUT; 8 | 9 | -------------------------------------------------------------------------------- /sql/functions/auth/account_conference_permissions.sql: -------------------------------------------------------------------------------- 1 | 2 | -- returns list of permissions an account has in a certain conference 3 | 4 | CREATE OR REPLACE FUNCTION auth.account_conference_permissions( account_id INTEGER ) RETURNS SETOF auth.conference_permission AS $$ 5 | SELECT DISTINCT conference_id, permission 6 | FROM auth.account_conference_role 7 | INNER JOIN auth.conference_role_permission USING( conference_role ) 8 | WHERE 9 | account_conference_role.account_id = $1; 10 | $$ LANGUAGE SQL; 11 | 12 | -------------------------------------------------------------------------------- /sql/functions/auth/account_permissions.sql: -------------------------------------------------------------------------------- 1 | 2 | -- function for getting the global permissions of an account 3 | 4 | CREATE OR REPLACE FUNCTION auth.account_permissions( account_id INTEGER ) RETURNS SETOF TEXT AS $$ 5 | SELECT DISTINCT permission 6 | FROM auth.account_role 7 | INNER JOIN auth.role_permission USING( role ) 8 | WHERE account_role.account_id = $1; 9 | $$ LANGUAGE SQL; 10 | 11 | -------------------------------------------------------------------------------- /sql/functions/auth/forgot_password.sql: -------------------------------------------------------------------------------- 1 | 2 | CREATE OR REPLACE FUNCTION auth.forgot_password( p_account_id INTEGER, p_activation_string CHAR(64)) RETURNS INTEGER AS $$ 3 | BEGIN 4 | 5 | PERFORM account_id FROM auth.account_password_reset WHERE account_id = p_account_id; 6 | IF FOUND THEN 7 | RAISE EXCEPTION 'This account has already been reset in the last 24 hours.'; 8 | END IF; 9 | INSERT INTO auth.account_password_reset(account_id, activation_string, reset_time) VALUES (p_account_id, p_activation_string, now()); 10 | 11 | RETURN p_account_id; 12 | END; 13 | $$ LANGUAGE plpgsql RETURNS NULL ON NULL INPUT; 14 | 15 | -------------------------------------------------------------------------------- /sql/functions/conflict/event/abstract_length.sql: -------------------------------------------------------------------------------- 1 | 2 | CREATE OR REPLACE FUNCTION conflict.conflict_event_abstract_length(INTEGER) RETURNS SETOF conflict.conflict_event AS $$ 3 | SELECT 4 | event_id 5 | FROM 6 | event 7 | INNER JOIN conference ON ( 8 | conference.conference_id = event.conference_id AND 9 | conference.abstract_length IS NOT NULL ) 10 | WHERE 11 | conference.conference_id = $1 AND 12 | length( event.abstract ) > conference.abstract_length; 13 | $$ LANGUAGE SQL; 14 | 15 | -------------------------------------------------------------------------------- /sql/functions/conflict/event/accepted_without_timeslot.sql: -------------------------------------------------------------------------------- 1 | 2 | CREATE OR REPLACE FUNCTION conflict.conflict_event_accepted_without_timeslot(INTEGER) RETURNS SETOF conflict.conflict_event AS $$ 3 | SELECT event_id 4 | FROM event 5 | WHERE event.conference_id = $1 AND 6 | event.event_state = 'accepted' AND 7 | event.event_state_progress = 'reconfirmed' AND 8 | ( event.start_time IS NULL OR 9 | event.conference_room_id IS NULL ) 10 | $$ LANGUAGE SQL; 11 | 12 | -------------------------------------------------------------------------------- /sql/functions/conflict/event/conference_language.sql: -------------------------------------------------------------------------------- 1 | 2 | -- returns all events with a language not in conference_language 3 | CREATE OR REPLACE FUNCTION conflict.conflict_event_conference_language(INTEGER) RETURNS SETOF conflict.conflict_event AS $$ 4 | SELECT 5 | event_id 6 | FROM 7 | event 8 | WHERE 9 | event.conference_id = $1 AND 10 | event.language IS NOT NULL AND 11 | NOT EXISTS (SELECT 1 12 | FROM conference_language 13 | WHERE conference_id = $1 AND 14 | language = event.language); 15 | $$ LANGUAGE SQL; 16 | 17 | -------------------------------------------------------------------------------- /sql/functions/conflict/event/description_length.sql: -------------------------------------------------------------------------------- 1 | 2 | CREATE OR REPLACE FUNCTION conflict.conflict_event_description_length(INTEGER) RETURNS SETOF conflict.conflict_event AS $$ 3 | DECLARE 4 | cur_conference_id ALIAS FOR $1; 5 | cur_conference RECORD; 6 | cur_event RECORD; 7 | BEGIN 8 | SELECT INTO cur_conference abstract_length, description_length FROM conference WHERE conference_id = cur_conference_id; 9 | FOR cur_event IN 10 | SELECT event_id 11 | FROM event 12 | WHERE conference_id = cur_conference_id AND 13 | length(description) > cur_conference.description_length 14 | LOOP 15 | RETURN NEXT cur_event; 16 | END LOOP; 17 | END; 18 | $$ LANGUAGE 'plpgsql' RETURNS NULL ON NULL INPUT; 19 | 20 | -------------------------------------------------------------------------------- /sql/functions/conflict/event/incomplete.sql: -------------------------------------------------------------------------------- 1 | 2 | -- returns all accepted events with incomplete conference_day/time/room 3 | CREATE OR REPLACE FUNCTION conflict.conflict_event_incomplete(INTEGER) RETURNS SETOF conflict.conflict_event AS $$ 4 | SELECT event_id 5 | FROM event 6 | WHERE conference_id = $1 AND 7 | event_state = 'accepted' AND 8 | event_state_progress = 'reconfirmed' AND 9 | (conference_day_id IS NULL OR 10 | conference_room_id IS NULL OR 11 | start_time IS NULL) AND 12 | (conference_day_id IS NOT NULL OR 13 | conference_room_id IS NOT NULL OR 14 | start_time IS NOT NULL) 15 | $$ LANGUAGE SQL; 16 | 17 | -------------------------------------------------------------------------------- /sql/functions/conflict/event/inconsistent_public_link.sql: -------------------------------------------------------------------------------- 1 | 2 | -- returns all events with inconsistent public links 3 | CREATE OR REPLACE FUNCTION conflict.conflict_event_inconsistent_public_link(INTEGER) RETURNS SETOF conflict.conflict_event AS $$ 4 | SELECT event_id 5 | FROM event 6 | WHERE conference_id = $1 AND 7 | EXISTS (SELECT 1 FROM event_link 8 | WHERE event_id = event.event_id AND 9 | url NOT SIMILAR TO '[a-z]+:%'); 10 | $$ LANGUAGE SQL; 11 | 12 | -------------------------------------------------------------------------------- /sql/functions/conflict/event/inconsistent_tag.sql: -------------------------------------------------------------------------------- 1 | 2 | -- returns all accepted events with inconsistent slug 3 | CREATE OR REPLACE FUNCTION conflict.conflict_event_inconsistent_tag(INTEGER) RETURNS SETOF conflict.conflict_event AS $$ 4 | SELECT event_id 5 | FROM event 6 | WHERE event.slug IS NOT NULL AND 7 | conference_id = $1 AND 8 | event.event_state = 'accepted' AND 9 | event.slug NOT SIMILAR TO E'[a-z0-9\\_]+' 10 | $$ LANGUAGE SQL; 11 | 12 | -------------------------------------------------------------------------------- /sql/functions/conflict/event/missing_tag.sql: -------------------------------------------------------------------------------- 1 | 2 | -- returns all accepted events with missing tag (slug) 3 | CREATE OR REPLACE FUNCTION conflict.conflict_event_missing_tag(INTEGER) RETURNS SETOF conflict.conflict_event AS $$ 4 | SELECT event_id 5 | FROM event 6 | WHERE conference_id = $1 AND 7 | event_state = 'accepted' AND 8 | event.slug IS NULL 9 | $$ LANGUAGE SQL; 10 | 11 | -------------------------------------------------------------------------------- /sql/functions/conflict/event/no_abstract.sql: -------------------------------------------------------------------------------- 1 | 2 | CREATE OR REPLACE FUNCTION conflict.conflict_event_no_abstract(INTEGER) RETURNS SETOF conflict.conflict_event AS $$ 3 | SELECT 4 | event_id 5 | FROM event 6 | WHERE 7 | event.abstract IS NULL AND 8 | event.conference_id = $1; 9 | $$ LANGUAGE SQL; 10 | 11 | -------------------------------------------------------------------------------- /sql/functions/conflict/event/no_coordinator.sql: -------------------------------------------------------------------------------- 1 | 2 | -- returns all events without coordinator 3 | CREATE OR REPLACE FUNCTION conflict.conflict_event_no_coordinator(integer) RETURNS setof conflict.conflict_event AS $$ 4 | SELECT event_id FROM event 5 | WHERE event.conference_id = $1 6 | AND NOT EXISTS (SELECT 1 FROM event_person 7 | WHERE event_person.event_id = event.event_id AND 8 | event_role = 'coordinator'); 9 | $$ LANGUAGE SQL; 10 | 11 | -------------------------------------------------------------------------------- /sql/functions/conflict/event/no_description.sql: -------------------------------------------------------------------------------- 1 | 2 | CREATE OR REPLACE FUNCTION conflict.conflict_event_no_description(INTEGER) RETURNS SETOF conflict.conflict_event AS $$ 3 | SELECT event_id 4 | FROM event 5 | WHERE event.description IS NULL AND 6 | event.conference_id = $1; 7 | $$ LANGUAGE SQL; 8 | 9 | -------------------------------------------------------------------------------- /sql/functions/conflict/event/no_language_sql.sql: -------------------------------------------------------------------------------- 1 | 2 | -- returns all accepted events with no language set 3 | CREATE OR REPLACE FUNCTION conflict.conflict_event_no_language(INTEGER) RETURNS SETOF conflict.conflict_event AS $$ 4 | SELECT event_id 5 | FROM event 6 | WHERE conference_id = $1 AND 7 | event_state = 'accepted' AND 8 | language IS NULL 9 | $$ LANGUAGE SQL; 10 | 11 | -------------------------------------------------------------------------------- /sql/functions/conflict/event/no_paper.sql: -------------------------------------------------------------------------------- 1 | 2 | -- returns all accepted events with no paper but the f_paper flag set 3 | CREATE OR REPLACE FUNCTION conflict.conflict_event_no_paper(INTEGER) RETURNS SETOF conflict.conflict_event AS $$ 4 | SELECT event_id 5 | FROM event 6 | WHERE conference_id = $1 AND 7 | event.event_state = 'accepted' AND 8 | event.event_state_progress = 'reconfirmed' AND 9 | paper = 't' AND 10 | NOT EXISTS (SELECT 1 FROM event_attachment 11 | WHERE event_attachment.event_id = event.event_id AND 12 | event_attachment.attachment_type = 'paper' AND 13 | event_attachment.public = 't') 14 | $$ LANGUAGE SQL; 15 | 16 | -------------------------------------------------------------------------------- /sql/functions/conflict/event/no_slides.sql: -------------------------------------------------------------------------------- 1 | 2 | -- returns all accepted events with no paper but the f_slides flag set 3 | CREATE OR REPLACE FUNCTION conflict.conflict_event_no_slides(INTEGER) RETURNS SETOF conflict.conflict_event AS $$ 4 | SELECT event_id 5 | FROM event 6 | WHERE conference_id = $1 AND 7 | event_state = 'accepted' AND 8 | event_state_progress = 'reconfirmed' AND 9 | slides = 't' AND 10 | NOT EXISTS (SELECT 1 FROM event_attachment 11 | WHERE event_id = event.event_id AND 12 | event_attachment.attachment_type = 'slides' AND 13 | event_attachment.public = 't') 14 | $$ LANGUAGE SQL; 15 | 16 | -------------------------------------------------------------------------------- /sql/functions/conflict/event/no_speaker.sql: -------------------------------------------------------------------------------- 1 | 2 | -- returns all confirmed events without confirmed speaker/moderator 3 | CREATE OR REPLACE FUNCTION conflict.conflict_event_no_speaker(integer) RETURNS SETOF conflict.conflict_event AS $$ 4 | SELECT event_id 5 | FROM event 6 | WHERE event.conference_id = $1 AND 7 | event_state = 'accepted' AND 8 | event_state_progress = 'reconfirmed' AND 9 | NOT EXISTS (SELECT 1 10 | FROM event_person 11 | INNER JOIN event_role USING (event_role) 12 | WHERE event_person.event_id = event.event_id AND 13 | event_role.public = true AND 14 | event_role_state = 'confirmed'); 15 | $$ LANGUAGE SQL; 16 | 17 | -------------------------------------------------------------------------------- /sql/functions/conflict/event/no_track.sql: -------------------------------------------------------------------------------- 1 | 2 | -- returns all accepted events with no conference track set 3 | CREATE OR REPLACE FUNCTION conflict.conflict_event_no_track(INTEGER) RETURNS SETOF conflict.conflict_event AS $$ 4 | SELECT event_id 5 | FROM event 6 | WHERE conference_id = $1 AND 7 | event_state = 'accepted' AND 8 | conference_track_id IS NULL 9 | $$ LANGUAGE SQL; 10 | 11 | -------------------------------------------------------------------------------- /sql/functions/conflict/event/paper_unknown.sql: -------------------------------------------------------------------------------- 1 | 2 | CREATE OR REPLACE FUNCTION conflict.conflict_event_paper_unknown( conference_id INTEGER ) RETURNS SETOF conflict.conflict_event AS $$ 3 | SELECT event_id 4 | FROM event 5 | WHERE event.conference_id = $1 AND 6 | event.event_state = 'accepted' AND 7 | event.paper IS NULL 8 | $$ LANGUAGE SQL; 9 | 10 | -------------------------------------------------------------------------------- /sql/functions/conflict/event/slides_unknown.sql: -------------------------------------------------------------------------------- 1 | 2 | CREATE OR REPLACE FUNCTION conflict.conflict_event_slides_unknown( conference_id INTEGER ) RETURNS SETOF conflict.conflict_event AS $$ 3 | SELECT event_id 4 | FROM event 5 | WHERE event.conference_id = $1 AND 6 | event.event_state = 'accepted' AND 7 | event.slides IS NULL 8 | $$ LANGUAGE SQL; 9 | 10 | -------------------------------------------------------------------------------- /sql/functions/conflict/event/unconfirmed_with_timeslot.sql: -------------------------------------------------------------------------------- 1 | 2 | CREATE OR REPLACE FUNCTION conflict.conflict_event_unconfirmed_with_timeslot(INTEGER) RETURNS SETOF conflict.conflict_event AS $$ 3 | SELECT event_id 4 | FROM event 5 | WHERE event.conference_id = $1 AND 6 | event.event_state = 'accepted' AND 7 | event.event_state_progress <> 'reconfirmed' AND 8 | event.start_time IS NOT NULL AND 9 | event.conference_room_id IS NOT NULL 10 | $$ LANGUAGE SQL; 11 | 12 | -------------------------------------------------------------------------------- /sql/functions/conflict/person/inconsistent_public_link.sql: -------------------------------------------------------------------------------- 1 | 2 | -- returns all persons with inconsistent public links 3 | CREATE OR REPLACE FUNCTION conflict.conflict_person_inconsistent_public_link(integer) RETURNS SETOF conflict.conflict_person AS $$ 4 | SELECT person_id 5 | FROM person 6 | INNER JOIN conference_person USING (person_id) 7 | WHERE conference_person.conference_id = $1 AND 8 | EXISTS (SELECT 1 FROM conference_person_link 9 | WHERE conference_person_id = conference_person.conference_person_id AND 10 | url NOT SIMILAR TO '[a-z]+:%') 11 | $$ LANGUAGE SQL; 12 | 13 | -------------------------------------------------------------------------------- /sql/functions/conflict/person/no_mail.sql: -------------------------------------------------------------------------------- 1 | 2 | -- returns all speaker/moderator without email 3 | CREATE OR REPLACE FUNCTION conflict.conflict_person_no_email(integer) RETURNS SETOF conflict.conflict_person AS $$ 4 | SELECT person_id FROM person 5 | INNER JOIN event_person USING (person_id) 6 | INNER JOIN event USING (event_id) 7 | WHERE person.email IS NULL AND 8 | event.conference_id = $1; 9 | $$ LANGUAGE SQL; 10 | 11 | -------------------------------------------------------------------------------- /sql/functions/remove_attendee.sql: -------------------------------------------------------------------------------- 1 | 2 | CREATE OR REPLACE FUNCTION remove_attendee(person_id INTEGER, event_id INTEGER) RETURNS INTEGER AS $$ 3 | DELETE FROM event_person 4 | WHERE event_id = $2 AND 5 | person_id = $1 AND 6 | event_role = 'attendee'; 7 | SELECT $1; 8 | $$ LANGUAGE SQL RETURNS NULL ON NULL INPUT; 9 | 10 | -------------------------------------------------------------------------------- /sql/maintenance/upgrade_0.3.12_to_0.3.13.sql: -------------------------------------------------------------------------------- 1 | 2 | BEGIN; 3 | 4 | ALTER TABLE base.event_role ADD COLUMN participant BOOL NOT NULL DEFAULT FALSE; 5 | UPDATE event_role set participant = TRUE WHERE event_role IN ('speaker','visitor','reporter','attendee'); 6 | 7 | DROP TABLE log.person_availability; 8 | DROP TRIGGER person_availability_log_trigger ON person_availability; 9 | 10 | COMMIT; 11 | 12 | -------------------------------------------------------------------------------- /sql/maintenance/upgrade_0.3.13_to_0.3.14.sql: -------------------------------------------------------------------------------- 1 | 2 | BEGIN; 3 | 4 | ALTER TABLE base.account DROP CONSTRAINT account_login_name_key; 5 | ALTER TABLE auth.account ADD CONSTRAINT account_login_name_key UNIQUE(login_name); 6 | 7 | COMMIT; 8 | 9 | -------------------------------------------------------------------------------- /sql/maintenance/upgrade_0.4.0_to_0.4.1.sql: -------------------------------------------------------------------------------- 1 | 2 | BEGIN; 3 | 4 | INSERT INTO auth.conference_role_permission (conference_role, permission) VALUES ('reviewer', 'review::modify'); 5 | 6 | ALTER TABLE event_role ADD COLUMN public BOOL NOT NULL DEFAULT false; 7 | UPDATE event_role SET public = true WHERE event_role IN ('moderator','speaker'); 8 | 9 | ALTER TABLE event_type ADD COLUMN public_role_required BOOL NOT NULL DEFAULT TRUE; 10 | 11 | SELECT log.activate_logging(); 12 | 13 | COMMIT; 14 | 15 | -------------------------------------------------------------------------------- /sql/maintenance/upgrade_0.4.1_to_0.4.2.sql: -------------------------------------------------------------------------------- 1 | 2 | BEGIN; 3 | 4 | DROP TABLE event_transaction; 5 | DROP TABLE conference_transaction; 6 | DROP TABLE person_transaction; 7 | 8 | COMMIT; 9 | 10 | -------------------------------------------------------------------------------- /sql/pentabarf-user.sql: -------------------------------------------------------------------------------- 1 | 2 | -- create a first user for logging into pentabarf password pentabarf 3 | 4 | INSERT INTO person( nickname ) VALUES ( 'pentabarf' ); 5 | INSERT INTO auth.account( login_name, email, salt, password, person_id ) VALUES ( 'pentabarf', 'pentabarf@localhost', 'dc0e832c22403520','19ab65831813936c9cea5800bb7e3ccc', currval( pg_get_serial_sequence('base.person','person_id'))); 6 | 7 | 8 | -- give this user admin privileges 9 | 10 | INSERT INTO auth.account_role VALUES ( currval( pg_get_serial_sequence( 'base.account', 'account_id' ) ), 'admin' ); 11 | 12 | 13 | -------------------------------------------------------------------------------- /sql/schema.sql: -------------------------------------------------------------------------------- 1 | 2 | CREATE SCHEMA auth; 3 | CREATE SCHEMA base; 4 | CREATE SCHEMA log; 5 | CREATE SCHEMA conflict; 6 | CREATE SCHEMA release; 7 | CREATE SCHEMA custom; 8 | 9 | -------------------------------------------------------------------------------- /sql/tables/attachment_type.sql: -------------------------------------------------------------------------------- 1 | 2 | CREATE TABLE base.attachment_type ( 3 | attachment_type TEXT NOT NULL, 4 | rank INTEGER 5 | ); 6 | 7 | CREATE TABLE attachment_type ( 8 | PRIMARY KEY (attachment_type) 9 | ) INHERITS( base.attachment_type ); 10 | 11 | CREATE TABLE log.attachment_type ( 12 | ) INHERITS( base.logging, base.attachment_type ); 13 | 14 | CREATE INDEX log_attachment_type_attachment_type_idx ON log.attachment_type( attachment_type ); 15 | CREATE INDEX log_attachment_type_log_transaction_id_idx ON log.attachment_type( log_transaction_id ); 16 | 17 | -------------------------------------------------------------------------------- /sql/tables/auth/account_role.sql: -------------------------------------------------------------------------------- 1 | 2 | CREATE TABLE base.account_role ( 3 | account_id INTEGER NOT NULL, 4 | role TEXT NOT NULL 5 | ); 6 | 7 | CREATE TABLE auth.account_role ( 8 | PRIMARY KEY( account_id, role ), 9 | FOREIGN KEY( account_id) REFERENCES auth.account( account_id ) ON UPDATE CASCADE ON DELETE CASCADE, 10 | FOREIGN KEY( role ) REFERENCES auth.role( role ) ON UPDATE CASCADE ON DELETE CASCADE 11 | ) INHERITS( base.account_role ); 12 | 13 | CREATE TABLE log.account_role() INHERITS( base.logging, base.account_role ); 14 | 15 | CREATE INDEX log_account_role_account_id_idx ON log.account_role( account_id ); 16 | CREATE INDEX log_account_role_log_transaction_id_idx ON log.account_role( log_transaction_id ); 17 | 18 | -------------------------------------------------------------------------------- /sql/tables/auth/account_settings.sql: -------------------------------------------------------------------------------- 1 | 2 | CREATE TABLE base.account_settings ( 3 | account_id INTEGER NOT NULL, 4 | current_language TEXT NOT NULL DEFAULT 'en', 5 | current_conference_id INTEGER, 6 | preferences TEXT, 7 | last_login TIMESTAMP 8 | ); 9 | 10 | CREATE TABLE auth.account_settings ( 11 | FOREIGN KEY( account_id ) REFERENCES auth.account( account_id ) ON UPDATE CASCADE ON DELETE CASCADE, 12 | FOREIGN KEY( current_conference_id ) REFERENCES conference( conference_id ) ON UPDATE CASCADE ON DELETE CASCADE, 13 | PRIMARY KEY( account_id ) 14 | ) INHERITS( base.account_settings ); 15 | 16 | -------------------------------------------------------------------------------- /sql/tables/auth/conference_role.sql: -------------------------------------------------------------------------------- 1 | 2 | CREATE TABLE base.conference_role ( 3 | conference_role TEXT NOT NULL, 4 | rank INTEGER 5 | ); 6 | 7 | CREATE TABLE auth.conference_role ( 8 | PRIMARY KEY( conference_role ) 9 | ) INHERITS( base.conference_role ); 10 | 11 | CREATE TABLE log.conference_role ( 12 | ) INHERITS( base.logging, base.conference_role ); 13 | 14 | CREATE INDEX log_conference_role_conference_role_idx ON log.conference_role( conference_role ); 15 | CREATE INDEX log_conference_role_log_transaction_id_idx ON log.conference_role( log_transaction_id ); 16 | 17 | -------------------------------------------------------------------------------- /sql/tables/auth/domain.sql: -------------------------------------------------------------------------------- 1 | 2 | CREATE TABLE base.domain( 3 | domain TEXT NOT NULL 4 | ); 5 | 6 | CREATE TABLE auth.domain( 7 | PRIMARY KEY(domain) 8 | ) INHERITS( base.domain ); 9 | 10 | CREATE TABLE log.domain( 11 | ) INHERITS( base.logging,base.domain ); 12 | 13 | CREATE INDEX log_domain_domain_idx ON log.domain( domain ); 14 | CREATE INDEX log_domain_log_transaction_id_idx ON log.domain( log_transaction_id ); 15 | 16 | -------------------------------------------------------------------------------- /sql/tables/auth/object_domain.sql: -------------------------------------------------------------------------------- 1 | 2 | CREATE TABLE base.object_domain( 3 | object TEXT NOT NULL, 4 | domain TEXT NOT NULL 5 | ); 6 | 7 | CREATE TABLE auth.object_domain( 8 | PRIMARY KEY(object, domain), 9 | FOREIGN KEY(domain) REFERENCES auth.domain(domain) ON UPDATE CASCADE ON DELETE CASCADE 10 | ) INHERITS( base.object_domain ); 11 | 12 | CREATE TABLE log.object_domain( 13 | ) INHERITS( base.logging, base.object_domain ); 14 | 15 | CREATE INDEX log_object_domain_object_idx ON log.object_domain( object ); 16 | CREATE INDEX log_object_domain_log_transaction_id_idx ON log.object_domain( log_transaction_id ); 17 | 18 | -------------------------------------------------------------------------------- /sql/tables/auth/permission.sql: -------------------------------------------------------------------------------- 1 | 2 | -- table containing possible permissions 3 | 4 | CREATE TABLE base.permission ( 5 | permission TEXT NOT NULL, 6 | conference_permission BOOL NOT NULL DEFAULT FALSE, 7 | rank INTEGER 8 | ); 9 | 10 | CREATE TABLE auth.permission ( 11 | PRIMARY KEY(permission) 12 | ) INHERITS( base.permission ); 13 | 14 | CREATE TABLE log.permission ( 15 | PRIMARY KEY(log_transaction_id,permission) 16 | ) INHERITS( base.logging, base.permission ); 17 | 18 | CREATE INDEX log_permission_permission_idx ON log.permission( permission ); 19 | CREATE INDEX log_permission_log_transaction_id_idx ON log.permission( log_transaction_id ); 20 | 21 | -------------------------------------------------------------------------------- /sql/tables/auth/role.sql: -------------------------------------------------------------------------------- 1 | 2 | CREATE TABLE base.role ( 3 | role TEXT NOT NULL, 4 | rank INTEGER 5 | ); 6 | 7 | CREATE TABLE auth.role ( 8 | PRIMARY KEY( role ) 9 | ) INHERITS( base.role ); 10 | 11 | CREATE TABLE log.role ( 12 | ) INHERITS( base.logging, base.role ); 13 | 14 | CREATE INDEX log_role_role_idx ON log.role( role ); 15 | CREATE INDEX log_role_log_transaction_id_idx ON log.role( log_transaction_id ); 16 | 17 | -------------------------------------------------------------------------------- /sql/tables/auth/role_localized.sql: -------------------------------------------------------------------------------- 1 | 2 | CREATE TABLE base.role_localized ( 3 | role TEXT NOT NULL, 4 | translated TEXT NOT NULL, 5 | name TEXT NOT NULL 6 | ); 7 | 8 | CREATE TABLE auth.role_localized ( 9 | PRIMARY KEY( role, translated ), 10 | FOREIGN KEY( role ) REFERENCES auth.role( role ) ON UPDATE CASCADE ON DELETE CASCADE, 11 | FOREIGN KEY( translated ) REFERENCES language( language ) ON UPDATE CASCADE ON DELETE CASCADE 12 | ) INHERITS( base.role_localized ); 13 | 14 | CREATE TABLE log.role_localized ( 15 | ) INHERITS( base.logging, base.role_localized ); 16 | 17 | CREATE INDEX log_role_localized_role_idx ON log.role_localized( role ); 18 | CREATE INDEX log_role_localized_log_transaction_id_idx ON log.role_localized( log_transaction_id ); 19 | 20 | -------------------------------------------------------------------------------- /sql/tables/base/logging.sql: -------------------------------------------------------------------------------- 1 | 2 | -- all logging tables are inherited from this table 3 | 4 | CREATE TABLE base.logging ( 5 | log_transaction_id BIGINT, 6 | log_operation char(1) 7 | ); 8 | 9 | CREATE SEQUENCE log.log_transaction_id_seq; 10 | 11 | 12 | -------------------------------------------------------------------------------- /sql/tables/base/release.sql: -------------------------------------------------------------------------------- 1 | 2 | -- all release tables are inherited from this table 3 | 4 | CREATE TABLE base.release ( 5 | conference_release_id INTEGER 6 | ); 7 | 8 | -------------------------------------------------------------------------------- /sql/tables/conference_day.sql: -------------------------------------------------------------------------------- 1 | 2 | CREATE TABLE base.conference_day ( 3 | conference_day_id SERIAL NOT NULL, 4 | conference_id INTEGER NOT NULL, 5 | conference_day DATE NOT NULL, 6 | name TEXT, 7 | public BOOL NOT NULL DEFAULT TRUE 8 | ); 9 | 10 | CREATE TABLE conference_day ( 11 | FOREIGN KEY( conference_id ) REFERENCES conference( conference_id ) ON UPDATE CASCADE ON DELETE CASCADE, 12 | PRIMARY KEY( conference_day_id ) 13 | ) INHERITS( base.conference_day ); 14 | 15 | CREATE TABLE log.conference_day ( 16 | ) INHERITS( base.logging, base.conference_day ); 17 | 18 | CREATE INDEX log_conference_day_conference_day_id_idx ON log.conference_day( conference_day_id ); 19 | CREATE INDEX log_conference_day_log_transaction_id_idx ON log.conference_day( log_transaction_id ); 20 | 21 | -------------------------------------------------------------------------------- /sql/tables/conference_link.sql: -------------------------------------------------------------------------------- 1 | 2 | CREATE TABLE base.conference_link ( 3 | conference_link_id SERIAL NOT NULL, 4 | conference_id INTEGER NOT NULL, 5 | url TEXT NOT NULL, 6 | title TEXT, 7 | rank INTEGER 8 | ); 9 | 10 | CREATE TABLE conference_link ( 11 | FOREIGN KEY (conference_id) REFERENCES conference (conference_id) ON UPDATE CASCADE ON DELETE CASCADE, 12 | PRIMARY KEY (conference_link_id) 13 | ) INHERITS( base.conference_link ); 14 | 15 | CREATE TABLE log.conference_link ( 16 | ) INHERITS( base.logging,base.conference_link ); 17 | 18 | CREATE INDEX log_conference_link_conference_id_idx ON log.conference_link( conference_id ); 19 | CREATE INDEX log_conference_link_log_transaction_id_idx ON log.conference_link( log_transaction_id ); 20 | 21 | -------------------------------------------------------------------------------- /sql/tables/conference_phase.sql: -------------------------------------------------------------------------------- 1 | 2 | CREATE TABLE base.conference_phase ( 3 | conference_phase TEXT NOT NULL, 4 | rank INTEGER 5 | ); 6 | 7 | CREATE TABLE conference_phase ( 8 | PRIMARY KEY (conference_phase) 9 | ) INHERITS( base.conference_phase ); 10 | 11 | CREATE TABLE log.conference_phase ( 12 | ) INHERITS( base.logging, base.conference_phase ); 13 | 14 | CREATE INDEX log_conference_phase_conference_phase_idx ON log.conference_phase( conference_phase ); 15 | CREATE INDEX log_conference_phase_log_transaction_id_idx ON log.conference_phase( log_transaction_id ); 16 | 17 | -------------------------------------------------------------------------------- /sql/tables/conference_team.sql: -------------------------------------------------------------------------------- 1 | 2 | CREATE TABLE base.conference_team ( 3 | conference_id INTEGER NOT NULL, 4 | conference_team TEXT NOT NULL, 5 | rank INTEGER 6 | ); 7 | 8 | CREATE TABLE conference_team ( 9 | FOREIGN KEY (conference_id) REFERENCES conference(conference_id) ON UPDATE CASCADE ON DELETE CASCADE, 10 | PRIMARY KEY (conference_id,conference_team) 11 | ) INHERITS (base.conference_team); 12 | 13 | CREATE TABLE log.conference_team ( 14 | ) INHERITS( base.logging, base.conference_team ); 15 | 16 | CREATE INDEX log_conference_team_conference_team_idx ON log.conference_team( conference_team ); 17 | CREATE INDEX log_conference_team_log_transaction_id_idx ON log.conference_team( log_transaction_id ); 18 | 19 | -------------------------------------------------------------------------------- /sql/tables/conflict/conflict.sql: -------------------------------------------------------------------------------- 1 | 2 | CREATE TABLE base.conflict ( 3 | conflict TEXT NOT NULL, 4 | conflict_type TEXT NOT NULL, 5 | CHECK (conflict ~ '^[a-z_]+$') 6 | ); 7 | 8 | CREATE TABLE conflict.conflict ( 9 | FOREIGN KEY (conflict_type) REFERENCES conflict.conflict_type (conflict_type) ON UPDATE CASCADE ON DELETE RESTRICT, 10 | PRIMARY KEY (conflict) 11 | ) INHERITS( base.conflict ); 12 | 13 | CREATE TABLE log.conflict ( 14 | ) INHERITS( base.logging, base.conflict ); 15 | 16 | CREATE INDEX log_conflict_conflict_idx ON log.conflict( conflict ); 17 | CREATE INDEX log_conflict_log_transaction_id_idx ON log.conflict( log_transaction_id ); 18 | 19 | -------------------------------------------------------------------------------- /sql/tables/conflict/conflict_level.sql: -------------------------------------------------------------------------------- 1 | 2 | CREATE TABLE base.conflict_level ( 3 | conflict_level TEXT NOT NULL, 4 | rank INTEGER 5 | ); 6 | 7 | CREATE TABLE conflict.conflict_level ( 8 | PRIMARY KEY (conflict_level) 9 | ) INHERITS( base.conflict_level ); 10 | 11 | CREATE TABLE log.conflict_level ( 12 | ) INHERITS( base.logging, base.conflict_level ); 13 | 14 | CREATE INDEX log_conflict_level_conflict_level_idx ON log.conflict_level( conflict_level ); 15 | CREATE INDEX log_conflict_level_log_transaction_id_idx ON log.conflict_level( log_transaction_id ); 16 | 17 | -------------------------------------------------------------------------------- /sql/tables/conflict/conflict_type.sql: -------------------------------------------------------------------------------- 1 | 2 | CREATE TABLE base.conflict_type ( 3 | conflict_type TEXT 4 | ); 5 | 6 | CREATE TABLE conflict.conflict_type ( 7 | PRIMARY KEY (conflict_type) 8 | ) INHERITS( base.conflict_type ); 9 | 10 | CREATE TABLE log.conflict_type ( 11 | ) INHERITS( base.logging, base.conflict_type ); 12 | 13 | CREATE INDEX log_conflict_type_conflict_type_idx ON log.conflict_type( conflict_type ); 14 | CREATE INDEX log_conflict_type_log_transaction_id_idx ON log.conflict_type( log_transaction_id ); 15 | 16 | -------------------------------------------------------------------------------- /sql/tables/country.sql: -------------------------------------------------------------------------------- 1 | 2 | CREATE TABLE base.country ( 3 | country TEXT NOT NULL 4 | ); 5 | 6 | CREATE TABLE country ( 7 | PRIMARY KEY( country ) 8 | ) INHERITS( base.country ); 9 | 10 | CREATE TABLE log.country ( 11 | ) INHERITS( base.logging, base.country ); 12 | 13 | CREATE INDEX log_country_country_idx ON log.country( country ); 14 | CREATE INDEX log_country_log_transaction_id_idx ON log.country( log_transaction_id ); 15 | 16 | -------------------------------------------------------------------------------- /sql/tables/country_localized.sql: -------------------------------------------------------------------------------- 1 | 2 | CREATE TABLE base.country_localized ( 3 | country TEXT NOT NULL, 4 | translated TEXT NOT NULL, 5 | name TEXT NOT NULL 6 | ); 7 | 8 | CREATE TABLE country_localized ( 9 | FOREIGN KEY( country ) REFERENCES country( country ) ON UPDATE CASCADE ON DELETE CASCADE, 10 | FOREIGN KEY( translated ) REFERENCES language( language ) ON UPDATE CASCADE ON DELETE CASCADE, 11 | PRIMARY KEY( country, translated ) 12 | ) INHERITS( base.country_localized ); 13 | 14 | CREATE TABLE log.country_localized ( 15 | ) INHERITS( base.logging, base.country_localized ); 16 | 17 | CREATE INDEX log_country_localized_country_idx ON log.country_localized( country ); 18 | CREATE INDEX log_country_localized_log_transaction_id_idx ON log.country_localized( log_transaction_id ); 19 | 20 | -------------------------------------------------------------------------------- /sql/tables/currency.sql: -------------------------------------------------------------------------------- 1 | 2 | CREATE TABLE base.currency ( 3 | currency TEXT NOT NULL, 4 | exchange_rate DECIMAL(15,5) 5 | ); 6 | 7 | CREATE TABLE currency ( 8 | PRIMARY KEY( currency ) 9 | ) INHERITS( base.currency ); 10 | 11 | CREATE TABLE log.currency ( 12 | ) INHERITS( base.logging, base.currency ); 13 | 14 | CREATE INDEX log_currency_currency_idx ON log.currency( currency ); 15 | CREATE INDEX log_currency_log_transaction_id_idx ON log.currency( log_transaction_id ); 16 | 17 | -------------------------------------------------------------------------------- /sql/tables/custom/custom_conference.sql: -------------------------------------------------------------------------------- 1 | 2 | CREATE TABLE base.custom_conference ( 3 | conference_id INTEGER NOT NULL 4 | ); 5 | 6 | CREATE TABLE custom.custom_conference ( 7 | PRIMARY KEY( conference_id ), 8 | FOREIGN KEY( conference_id) REFERENCES conference(conference_id) ON UPDATE CASCADE ON DELETE CASCADE 9 | ) INHERITS( base.custom_conference ); 10 | 11 | CREATE TABLE log.custom_conference ( 12 | ) INHERITS( base.logging, base.custom_conference ); 13 | 14 | CREATE INDEX log_custom_conference_conference_id_idx ON log.custom_conference( conference_id ); 15 | CREATE INDEX log_custom_conference_log_transaction_id_idx ON log.custom_conference( log_transaction_id ); 16 | 17 | -------------------------------------------------------------------------------- /sql/tables/custom/custom_event.sql: -------------------------------------------------------------------------------- 1 | 2 | CREATE TABLE base.custom_event ( 3 | event_id INTEGER NOT NULL 4 | ); 5 | 6 | CREATE TABLE custom.custom_event ( 7 | PRIMARY KEY( event_id ), 8 | FOREIGN KEY( event_id) REFERENCES event(event_id) ON UPDATE CASCADE ON DELETE CASCADE 9 | ) INHERITS( base.custom_event ); 10 | 11 | CREATE TABLE log.custom_event ( 12 | ) INHERITS( base.logging, base.custom_event ); 13 | 14 | CREATE INDEX log_custom_event_event_id_idx ON log.custom_event( event_id ); 15 | CREATE INDEX log_custom_event_log_transaction_id_idx ON log.custom_event( log_transaction_id ); 16 | 17 | -------------------------------------------------------------------------------- /sql/tables/custom/custom_person.sql: -------------------------------------------------------------------------------- 1 | 2 | CREATE TABLE base.custom_person ( 3 | person_id INTEGER NOT NULL 4 | ); 5 | 6 | CREATE TABLE custom.custom_person ( 7 | PRIMARY KEY( person_id ), 8 | FOREIGN KEY( person_id) REFERENCES person(person_id) ON UPDATE CASCADE ON DELETE CASCADE 9 | ) INHERITS( base.custom_person ); 10 | 11 | CREATE TABLE log.custom_person ( 12 | ) INHERITS( base.logging, base.custom_person ); 13 | 14 | CREATE INDEX log_custom_person_person_id_idx ON log.custom_person( person_id ); 15 | CREATE INDEX log_custom_person_log_transaction_id_idx ON log.custom_person( log_transaction_id ); 16 | 17 | -------------------------------------------------------------------------------- /sql/tables/dinner_menu.sql: -------------------------------------------------------------------------------- 1 | 2 | CREATE TABLE base.dinner_menu ( 3 | dinner_menu_id SERIAL NOT NULL, 4 | conference_id INTEGER NOT NULL, 5 | title TEXT NOT NULL, 6 | description TEXT, 7 | vegetarian BOOL, 8 | rank INTEGER 9 | ); 10 | 11 | CREATE TABLE dinner_menu ( 12 | FOREIGN KEY (conference_id) REFERENCES conference (conference_id) ON UPDATE CASCADE ON DELETE RESTRICT, 13 | PRIMARY KEY (dinner_menu_id) 14 | ) INHERITS( base.dinner_menu ); 15 | 16 | CREATE TABLE log.dinner_menu ( 17 | ) INHERITS( base.logging, base.dinner_menu ); 18 | 19 | CREATE INDEX log_dinner_menu_dinner_menu_id_idx ON log.dinner_menu( dinner_menu_id ); 20 | CREATE INDEX log_dinner_menu_log_transaction_id_idx ON log.dinner_menu( log_transaction_id ); 21 | 22 | -------------------------------------------------------------------------------- /sql/tables/event_image.sql: -------------------------------------------------------------------------------- 1 | 2 | CREATE TABLE base.event_image ( 3 | event_id INTEGER NOT NULL, 4 | mime_type TEXT NOT NULL, 5 | image BYTEA NOT NULL 6 | ); 7 | 8 | CREATE TABLE event_image ( 9 | FOREIGN KEY (event_id) REFERENCES event (event_id) ON UPDATE CASCADE ON DELETE CASCADE, 10 | FOREIGN KEY (mime_type) REFERENCES mime_type (mime_type) ON UPDATE CASCADE ON DELETE RESTRICT, 11 | PRIMARY KEY (event_id) 12 | ) INHERITS( base.event_image ); 13 | 14 | CREATE TABLE log.event_image ( 15 | ) INHERITS( base.logging, base.event_image ); 16 | 17 | CREATE INDEX log_event_image_event_id_idx ON log.event_image( event_id ); 18 | CREATE INDEX log_event_image_log_transaction_id_idx ON log.event_image( log_transaction_id ); 19 | 20 | -------------------------------------------------------------------------------- /sql/tables/event_link.sql: -------------------------------------------------------------------------------- 1 | 2 | CREATE TABLE base.event_link ( 3 | event_link_id SERIAL NOT NULL, 4 | event_id INTEGER NOT NULL, 5 | url TEXT NOT NULL, 6 | title TEXT, 7 | rank INTEGER 8 | ); 9 | 10 | CREATE TABLE event_link ( 11 | FOREIGN KEY (event_id) REFERENCES event (event_id) ON UPDATE CASCADE ON DELETE CASCADE, 12 | PRIMARY KEY (event_link_id) 13 | ) INHERITS( base.event_link ); 14 | 15 | CREATE TABLE log.event_link ( 16 | ) INHERITS( base.logging, base.event_link ); 17 | 18 | CREATE INDEX log_event_link_event_link_id_idx ON log.event_link( event_link_id ); 19 | CREATE INDEX log_event_link_log_transaction_id_idx ON log.event_link( log_transaction_id ); 20 | 21 | -------------------------------------------------------------------------------- /sql/tables/event_origin.sql: -------------------------------------------------------------------------------- 1 | 2 | CREATE TABLE base.event_origin ( 3 | event_origin TEXT NOT NULL, 4 | rank INTEGER 5 | ); 6 | 7 | CREATE TABLE event_origin ( 8 | PRIMARY KEY (event_origin) 9 | ) INHERITS( base.event_origin ); 10 | 11 | CREATE TABLE log.event_origin ( 12 | ) INHERITS( base.logging, base.event_origin ); 13 | 14 | CREATE INDEX log_event_origin_event_origin_idx ON log.event_origin( event_origin ); 15 | CREATE INDEX log_event_origin_log_transaction_id_idx ON log.event_origin( log_transaction_id ); 16 | 17 | -------------------------------------------------------------------------------- /sql/tables/event_role.sql: -------------------------------------------------------------------------------- 1 | 2 | CREATE TABLE base.event_role ( 3 | event_role TEXT NOT NULL, 4 | participant BOOL NOT NULL DEFAULT FALSE, 5 | rank INTEGER, 6 | public BOOL NOT NULL DEFAULT FALSE 7 | ); 8 | 9 | CREATE TABLE event_role ( 10 | PRIMARY KEY (event_role) 11 | ) INHERITS( base.event_role ); 12 | 13 | CREATE TABLE log.event_role ( 14 | ) INHERITS( base.logging, base.event_role ); 15 | 16 | CREATE INDEX log_event_role_event_role_idx ON log.event_role( event_role ); 17 | CREATE INDEX log_event_role_log_transaction_id_idx ON log.event_role( log_transaction_id ); 18 | 19 | -------------------------------------------------------------------------------- /sql/tables/event_role_state.sql: -------------------------------------------------------------------------------- 1 | 2 | CREATE TABLE base.event_role_state ( 3 | event_role_state TEXT NOT NULL, 4 | event_role TEXT NOT NULL, 5 | rank INTEGER 6 | ); 7 | 8 | CREATE TABLE event_role_state ( 9 | FOREIGN KEY (event_role) REFERENCES event_role (event_role) ON UPDATE CASCADE ON DELETE CASCADE, 10 | PRIMARY KEY (event_role,event_role_state) 11 | ) INHERITS( base.event_role_state ); 12 | 13 | CREATE TABLE log.event_role_state ( 14 | ) INHERITS( base.logging, base.event_role_state ); 15 | 16 | CREATE INDEX log_event_role_state_event_role_event_role_state_idx ON log.event_role_state( event_role, event_role_state ); 17 | CREATE INDEX log_event_role_state_log_transaction_id_idx ON log.event_role_state( log_transaction_id ); 18 | 19 | -------------------------------------------------------------------------------- /sql/tables/event_state.sql: -------------------------------------------------------------------------------- 1 | 2 | CREATE TABLE base.event_state ( 3 | event_state TEXT, 4 | rank INTEGER 5 | ); 6 | 7 | CREATE TABLE event_state ( 8 | PRIMARY KEY (event_state) 9 | ) INHERITS( base.event_state ); 10 | 11 | CREATE TABLE log.event_state ( 12 | ) INHERITS( base.logging, base.event_state ); 13 | 14 | CREATE INDEX log_event_state_event_state_idx ON log.event_state( event_state ); 15 | CREATE INDEX log_event_state_log_transaction_id_idx ON log.event_state( log_transaction_id ); 16 | 17 | -------------------------------------------------------------------------------- /sql/tables/event_type.sql: -------------------------------------------------------------------------------- 1 | 2 | CREATE TABLE base.event_type ( 3 | event_type TEXT, 4 | public_role_required BOOL NOT NULL DEFAULT false, -- this event type requires a public event_role for schedule inclusion 5 | rank INTEGER 6 | ); 7 | 8 | CREATE TABLE event_type ( 9 | PRIMARY KEY (event_type) 10 | ) INHERITS( base.event_type ); 11 | 12 | CREATE TABLE log.event_type ( 13 | ) INHERITS( base.logging, base.event_type ); 14 | 15 | CREATE INDEX log_event_type_event_type_idx ON log.event_type( event_type ); 16 | CREATE INDEX log_event_type_log_transaction_id_idx ON log.event_type( log_transaction_id ); 17 | 18 | -------------------------------------------------------------------------------- /sql/tables/im_type.sql: -------------------------------------------------------------------------------- 1 | 2 | CREATE TABLE base.im_type ( 3 | im_type TEXT NOT NULL, 4 | scheme TEXT, 5 | rank INTEGER 6 | ); 7 | 8 | CREATE TABLE im_type ( 9 | PRIMARY KEY (im_type) 10 | ) INHERITS( base.im_type ); 11 | 12 | CREATE TABLE log.im_type ( 13 | ) INHERITS( base.logging, base.im_type ); 14 | 15 | CREATE INDEX log_im_type_im_type_idx ON log.im_type( im_type ); 16 | CREATE INDEX log_im_type_log_transaction_id_idx ON log.im_type( log_transaction_id ); 17 | 18 | -------------------------------------------------------------------------------- /sql/tables/im_type_localized.sql: -------------------------------------------------------------------------------- 1 | 2 | CREATE TABLE base.im_type_localized ( 3 | im_type TEXT NOT NULL, 4 | translated TEXT NOT NULL, 5 | name TEXT NOT NULL 6 | ); 7 | 8 | CREATE TABLE im_type_localized ( 9 | FOREIGN KEY (im_type) REFERENCES im_type (im_type) ON UPDATE CASCADE ON DELETE CASCADE, 10 | FOREIGN KEY (translated) REFERENCES language (language) ON UPDATE CASCADE ON DELETE CASCADE, 11 | PRIMARY KEY (im_type, translated) 12 | ) INHERITS( base.im_type_localized ); 13 | 14 | CREATE TABLE log.im_type_localized ( 15 | ) INHERITS( base.logging, base.im_type_localized ); 16 | 17 | CREATE INDEX log_im_type_localized_im_type_idx ON log.im_type_localized( im_type ); 18 | CREATE INDEX log_im_type_localized_log_transaction_id_idx ON log.im_type_localized( log_transaction_id ); 19 | 20 | -------------------------------------------------------------------------------- /sql/tables/language.sql: -------------------------------------------------------------------------------- 1 | 2 | -- the language column is the iso 639-1 code of the language 3 | CREATE TABLE base.language ( 4 | language TEXT NOT NULL, 5 | localized BOOL NOT NULL DEFAULT FALSE 6 | ); 7 | 8 | CREATE TABLE language ( 9 | PRIMARY KEY (language) 10 | ) INHERITS( base.language ); 11 | 12 | CREATE TABLE log.language ( 13 | ) INHERITS( base.logging, base.language ); 14 | 15 | CREATE INDEX log_language_language_idx ON log.language( language ); 16 | CREATE INDEX log_language_log_transaction_id_idx ON log.language( log_transaction_id ); 17 | 18 | -------------------------------------------------------------------------------- /sql/tables/link_type.sql: -------------------------------------------------------------------------------- 1 | 2 | CREATE TABLE base.link_type ( 3 | link_type TEXT NOT NULL, 4 | template TEXT, 5 | rank INTEGER 6 | ); 7 | 8 | CREATE TABLE link_type ( 9 | PRIMARY KEY (link_type) 10 | ) INHERITS( base.link_type ); 11 | 12 | CREATE TABLE log.link_type ( 13 | ) INHERITS( base.logging, base.link_type ); 14 | 15 | CREATE INDEX log_link_type_link_type_idx ON log.link_type( link_type ); 16 | CREATE INDEX log_link_type_log_transaction_id_idx ON log.link_type( log_transaction_id ); 17 | 18 | -------------------------------------------------------------------------------- /sql/tables/log/log_transaction.sql: -------------------------------------------------------------------------------- 1 | 2 | CREATE TABLE base.log_transaction ( 3 | log_transaction_id SERIAL, 4 | log_timestamp TIMESTAMP DEFAULT now(), 5 | person_id INTEGER 6 | ); 7 | 8 | CREATE TABLE log.log_transaction ( 9 | FOREIGN KEY (person_id) REFERENCES person(person_id) ON UPDATE CASCADE ON DELETE SET NULL, 10 | PRIMARY KEY( log_transaction_id ) 11 | ) INHERITS( base.log_transaction ); 12 | 13 | CREATE INDEX log_log_transaction_log_transaction_id_idx ON log.log_transaction( log_transaction_id ); 14 | 15 | -------------------------------------------------------------------------------- /sql/tables/mime_type.sql: -------------------------------------------------------------------------------- 1 | 2 | CREATE TABLE base.mime_type ( 3 | mime_type TEXT NOT NULL, 4 | file_extension TEXT, 5 | image BOOL NOT NULL DEFAULT FALSE 6 | ); 7 | 8 | CREATE TABLE mime_type ( 9 | PRIMARY KEY (mime_type) 10 | ) INHERITS( base.mime_type ); 11 | 12 | CREATE TABLE log.mime_type ( 13 | ) INHERITS( base.logging, base.mime_type ); 14 | 15 | CREATE INDEX log_mime_type_mime_type_idx ON log.mime_type( mime_type ); 16 | CREATE INDEX log_mime_type_log_transaction_id_idx ON log.mime_type( log_transaction_id ); 17 | 18 | -------------------------------------------------------------------------------- /sql/tables/person_availability.sql: -------------------------------------------------------------------------------- 1 | 2 | CREATE TABLE base.person_availability ( 3 | person_availability_id SERIAL, 4 | person_id INTEGER NOT NULL, 5 | conference_id INTEGER NOT NULL, 6 | start_date TIMESTAMP WITH TIME ZONE NOT NULL, 7 | duration INTERVAL NOT NULL 8 | ); 9 | 10 | CREATE TABLE person_availability ( 11 | FOREIGN KEY (person_id) REFERENCES person (person_id) ON UPDATE CASCADE ON DELETE CASCADE, 12 | FOREIGN KEY (conference_id) REFERENCES conference (conference_id) ON UPDATE CASCADE ON DELETE CASCADE, 13 | PRIMARY KEY (person_availability_id), 14 | UNIQUE (person_id, conference_id, start_date) 15 | ) INHERITS( base.person_availability ); 16 | 17 | -------------------------------------------------------------------------------- /sql/tables/person_im.sql: -------------------------------------------------------------------------------- 1 | 2 | CREATE TABLE base.person_im ( 3 | person_im_id SERIAL NOT NULL, 4 | person_id INTEGER NOT NULL, 5 | im_type TEXT NOT NULL, 6 | im_address TEXT NOT NULL, 7 | rank INTEGER 8 | ); 9 | 10 | CREATE TABLE person_im ( 11 | FOREIGN KEY (person_id) REFERENCES person (person_id) ON UPDATE CASCADE ON DELETE CASCADE, 12 | FOREIGN KEY (im_type) REFERENCES im_type (im_type) ON UPDATE CASCADE ON DELETE RESTRICT, 13 | PRIMARY KEY (person_im_id) 14 | ) INHERITS( base.person_im ); 15 | 16 | CREATE TABLE log.person_im ( 17 | ) INHERITS( base.logging, base.person_im ); 18 | 19 | CREATE INDEX log_person_im_person_im_id_idx ON log.person_im( person_im_id ); 20 | CREATE INDEX log_person_im_log_transaction_id_idx ON log.person_im( log_transaction_id ); 21 | 22 | -------------------------------------------------------------------------------- /sql/tables/person_image.sql: -------------------------------------------------------------------------------- 1 | 2 | CREATE TABLE base.person_image ( 3 | person_id INTEGER NOT NULL, 4 | mime_type TEXT NOT NULL, 5 | public BOOL NOT NULL DEFAULT FALSE, 6 | image BYTEA NOT NULL 7 | ); 8 | 9 | CREATE TABLE person_image ( 10 | FOREIGN KEY (person_id) REFERENCES person (person_id) ON UPDATE CASCADE ON DELETE CASCADE, 11 | FOREIGN KEY (mime_type) REFERENCES mime_type (mime_type) ON UPDATE CASCADE ON DELETE RESTRICT, 12 | PRIMARY KEY (person_id) 13 | ) INHERITS( base.person_image ); 14 | 15 | CREATE TABLE log.person_image ( 16 | ) INHERITS( base.logging, base.person_image ); 17 | 18 | CREATE INDEX log_person_image_person_id_idx ON log.person_image( person_id ); 19 | CREATE INDEX log_person_image_log_transaction_id_idx ON log.person_image( log_transaction_id ); 20 | 21 | -------------------------------------------------------------------------------- /sql/tables/person_language.sql: -------------------------------------------------------------------------------- 1 | 2 | CREATE TABLE base.person_language ( 3 | person_id INTEGER NOT NULL, 4 | language TEXT NOT NULL, 5 | rank INTEGER 6 | ); 7 | 8 | CREATE TABLE person_language ( 9 | FOREIGN KEY (person_id) REFERENCES person (person_id) ON UPDATE CASCADE ON DELETE CASCADE, 10 | FOREIGN KEY (language) REFERENCES language (language) ON UPDATE CASCADE ON DELETE RESTRICT, 11 | PRIMARY KEY (person_id, language) 12 | ) INHERITS( base.person_language ); 13 | 14 | CREATE TABLE log.person_language ( 15 | ) INHERITS( base.logging, base.person_language ); 16 | 17 | CREATE INDEX log_person_language_person_id_idx ON log.person_language( person_id ); 18 | CREATE INDEX log_person_language_log_transaction_id_idx ON log.person_language( log_transaction_id ); 19 | 20 | -------------------------------------------------------------------------------- /sql/tables/person_rating.sql: -------------------------------------------------------------------------------- 1 | 2 | CREATE TABLE base.person_rating ( 3 | person_id INTEGER NOT NULL, 4 | evaluator_id INTEGER NOT NULL, 5 | speaker_quality SMALLINT CHECK (speaker_quality > 0 AND speaker_quality < 6), 6 | competence SMALLINT CHECK (competence > 0 AND competence < 6), 7 | remark TEXT, 8 | eval_time TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT now() 9 | ); 10 | 11 | CREATE TABLE person_rating ( 12 | FOREIGN KEY (person_id) REFERENCES person (person_id) ON UPDATE CASCADE ON DELETE CASCADE, 13 | FOREIGN KEY (evaluator_id) REFERENCES person (person_id) ON UPDATE CASCADE ON DELETE CASCADE, 14 | PRIMARY KEY (person_id, evaluator_id) 15 | ) INHERITS( base.person_rating ); 16 | 17 | -------------------------------------------------------------------------------- /sql/tables/phone_type.sql: -------------------------------------------------------------------------------- 1 | 2 | CREATE TABLE base.phone_type ( 3 | phone_type TEXT NOT NULL, 4 | scheme TEXT, 5 | rank INTEGER 6 | ); 7 | 8 | CREATE TABLE phone_type ( 9 | PRIMARY KEY( phone_type ) 10 | ) INHERITS( base.phone_type ); 11 | 12 | CREATE TABLE log.phone_type ( 13 | ) INHERITS( base.logging, base.phone_type ); 14 | 15 | CREATE INDEX log_phone_type_phone_type_idx ON log.phone_type( phone_type ); 16 | CREATE INDEX log_phone_type_log_transaction_id_idx ON log.phone_type( log_transaction_id ); 17 | 18 | -------------------------------------------------------------------------------- /sql/tables/release/conference.sql: -------------------------------------------------------------------------------- 1 | 2 | CREATE TABLE release.conference ( 3 | FOREIGN KEY (conference_release_id) REFERENCES conference_release ON UPDATE CASCADE ON DELETE CASCADE, 4 | PRIMARY KEY (conference_release_id,conference_id) 5 | ) INHERITS( base.release, base.conference ); 6 | 7 | -------------------------------------------------------------------------------- /sql/tables/release/conference_day.sql: -------------------------------------------------------------------------------- 1 | 2 | CREATE TABLE release.conference_day ( 3 | FOREIGN KEY (conference_release_id) REFERENCES conference_release ON UPDATE CASCADE ON DELETE CASCADE, 4 | PRIMARY KEY (conference_release_id,conference_day) 5 | ) INHERITS( base.release, base.conference_day ); 6 | 7 | -------------------------------------------------------------------------------- /sql/tables/release/conference_image.sql: -------------------------------------------------------------------------------- 1 | 2 | CREATE TABLE release.conference_image ( 3 | FOREIGN KEY (conference_release_id) REFERENCES conference_release ON UPDATE CASCADE ON DELETE CASCADE, 4 | PRIMARY KEY (conference_release_id,conference_id) 5 | ) INHERITS( base.release, base.conference_image ); 6 | 7 | -------------------------------------------------------------------------------- /sql/tables/release/conference_link.sql: -------------------------------------------------------------------------------- 1 | 2 | CREATE TABLE release.conference_link ( 3 | FOREIGN KEY (conference_release_id) REFERENCES conference_release ON UPDATE CASCADE ON DELETE CASCADE, 4 | PRIMARY KEY (conference_release_id,conference_link_id) 5 | ) INHERITS( base.release, base.conference_link ); 6 | 7 | -------------------------------------------------------------------------------- /sql/tables/release/conference_person.sql: -------------------------------------------------------------------------------- 1 | 2 | CREATE TABLE release.conference_person ( 3 | FOREIGN KEY (conference_release_id) REFERENCES conference_release ON UPDATE CASCADE ON DELETE CASCADE, 4 | PRIMARY KEY (conference_release_id,conference_person_id) 5 | ) INHERITS( base.release, base.conference_person ); 6 | 7 | -------------------------------------------------------------------------------- /sql/tables/release/conference_person_link.sql: -------------------------------------------------------------------------------- 1 | 2 | CREATE TABLE release.conference_person_link ( 3 | FOREIGN KEY (conference_release_id) REFERENCES conference_release ON UPDATE CASCADE ON DELETE CASCADE, 4 | PRIMARY KEY (conference_release_id,conference_person_link_id) 5 | ) INHERITS( base.release, base.conference_person_link ); 6 | 7 | -------------------------------------------------------------------------------- /sql/tables/release/conference_room.sql: -------------------------------------------------------------------------------- 1 | 2 | CREATE TABLE release.conference_room ( 3 | FOREIGN KEY (conference_release_id) REFERENCES conference_release ON UPDATE CASCADE ON DELETE CASCADE, 4 | PRIMARY KEY (conference_release_id,conference_room_id) 5 | ) INHERITS( base.release, base.conference_room ); 6 | 7 | -------------------------------------------------------------------------------- /sql/tables/release/conference_track.sql: -------------------------------------------------------------------------------- 1 | 2 | CREATE TABLE release.conference_track ( 3 | FOREIGN KEY (conference_release_id) REFERENCES conference_release ON UPDATE CASCADE ON DELETE CASCADE, 4 | PRIMARY KEY (conference_release_id,conference_track_id) 5 | ) INHERITS( base.release, base.conference_track ); 6 | 7 | -------------------------------------------------------------------------------- /sql/tables/release/event.sql: -------------------------------------------------------------------------------- 1 | 2 | CREATE TABLE release.event ( 3 | FOREIGN KEY (conference_release_id) REFERENCES conference_release ON UPDATE CASCADE ON DELETE CASCADE, 4 | PRIMARY KEY (conference_release_id,event_id) 5 | ) INHERITS( base.release, base.event ); 6 | 7 | -------------------------------------------------------------------------------- /sql/tables/release/event_attachment.sql: -------------------------------------------------------------------------------- 1 | 2 | CREATE TABLE release.event_attachment ( 3 | FOREIGN KEY (conference_release_id) REFERENCES conference_release ON UPDATE CASCADE ON DELETE CASCADE, 4 | PRIMARY KEY (conference_release_id,event_attachment_id) 5 | ) INHERITS( base.release, base.event_attachment ); 6 | 7 | -------------------------------------------------------------------------------- /sql/tables/release/event_image.sql: -------------------------------------------------------------------------------- 1 | 2 | CREATE TABLE release.event_image ( 3 | FOREIGN KEY (conference_release_id) REFERENCES conference_release ON UPDATE CASCADE ON DELETE CASCADE, 4 | PRIMARY KEY (conference_release_id,event_id) 5 | ) INHERITS( base.release, base.event_image ); 6 | 7 | -------------------------------------------------------------------------------- /sql/tables/release/event_link.sql: -------------------------------------------------------------------------------- 1 | 2 | CREATE TABLE release.event_link ( 3 | FOREIGN KEY (conference_release_id) REFERENCES conference_release ON UPDATE CASCADE ON DELETE CASCADE, 4 | PRIMARY KEY (conference_release_id,event_link_id) 5 | ) INHERITS( base.release, base.event_link ); 6 | 7 | -------------------------------------------------------------------------------- /sql/tables/release/event_person.sql: -------------------------------------------------------------------------------- 1 | 2 | CREATE TABLE release.event_person ( 3 | FOREIGN KEY (conference_release_id) REFERENCES conference_release ON UPDATE CASCADE ON DELETE CASCADE, 4 | PRIMARY KEY (conference_release_id,event_person_id) 5 | ) INHERITS( base.release, base.event_person ); 6 | 7 | -------------------------------------------------------------------------------- /sql/tables/release/person.sql: -------------------------------------------------------------------------------- 1 | 2 | CREATE TABLE release.person ( 3 | FOREIGN KEY (conference_release_id) REFERENCES conference_release ON UPDATE CASCADE ON DELETE CASCADE, 4 | PRIMARY KEY (conference_release_id,person_id) 5 | ) INHERITS( base.release, base.person ); 6 | 7 | -------------------------------------------------------------------------------- /sql/tables/release/person_image.sql: -------------------------------------------------------------------------------- 1 | 2 | CREATE TABLE release.person_image ( 3 | FOREIGN KEY (conference_release_id) REFERENCES conference_release ON UPDATE CASCADE ON DELETE CASCADE, 4 | PRIMARY KEY (conference_release_id,person_id) 5 | ) INHERITS( base.release, base.person_image ); 6 | 7 | -------------------------------------------------------------------------------- /sql/tables/timezone.sql: -------------------------------------------------------------------------------- 1 | 2 | CREATE TABLE base.timezone ( 3 | timezone TEXT NOT NULL, 4 | abbreviation TEXT NOT NULL, 5 | utc_offset INTERVAL NOT NULL 6 | ); 7 | 8 | CREATE TABLE timezone ( 9 | PRIMARY KEY( timezone ) 10 | ) INHERITS( base.timezone ); 11 | 12 | CREATE TABLE log.timezone ( 13 | ) INHERITS( base.logging, base.timezone ); 14 | 15 | CREATE INDEX log_timezone_timezone_idx ON log.timezone( timezone ); 16 | CREATE INDEX log_timezone_log_transaction_id_idx ON log.timezone( log_transaction_id ); 17 | 18 | -------------------------------------------------------------------------------- /sql/tables/transport.sql: -------------------------------------------------------------------------------- 1 | 2 | CREATE TABLE base.transport ( 3 | transport TEXT, 4 | rank INTEGER 5 | ); 6 | 7 | CREATE TABLE transport ( 8 | PRIMARY KEY (transport) 9 | ) INHERITS( base.transport ); 10 | 11 | CREATE TABLE log.transport ( 12 | ) INHERITS( base.logging, base.transport ); 13 | 14 | CREATE INDEX log_transport_transport_idx ON log.transport( transport ); 15 | CREATE INDEX log_transport_log_transaction_id_idx ON log.transport( log_transaction_id ); 16 | 17 | -------------------------------------------------------------------------------- /sql/tables/ui_message.sql: -------------------------------------------------------------------------------- 1 | 2 | CREATE TABLE base.ui_message ( 3 | ui_message TEXT NOT NULL 4 | ); 5 | 6 | CREATE TABLE ui_message ( 7 | PRIMARY KEY (ui_message) 8 | ) INHERITS( base.ui_message ); 9 | 10 | -------------------------------------------------------------------------------- /sql/views/conference_image_modification.sql: -------------------------------------------------------------------------------- 1 | 2 | CREATE OR REPLACE VIEW view_conference_image_modification AS 3 | SELECT 4 | conference_image.conference_id, 5 | coalesce(log_timestamp,now()) AS last_modified 6 | FROM 7 | conference_image 8 | LEFT OUTER JOIN ( 9 | SELECT 10 | conference_image.conference_id, 11 | log_timestamp 12 | FROM 13 | log.conference_image 14 | INNER JOIN log.log_transaction USING(log_transaction_id) 15 | ) AS log USING(conference_id) 16 | ; 17 | -------------------------------------------------------------------------------- /sql/views/conference_person.sql: -------------------------------------------------------------------------------- 1 | 2 | CREATE OR REPLACE VIEW view_conference_person AS 3 | SELECT conference_person_id, 4 | person_id, 5 | conference_id, 6 | name, 7 | abstract, 8 | description, 9 | remark, 10 | conference_person.email 11 | FROM conference_person 12 | INNER JOIN view_person USING (person_id) 13 | ; 14 | 15 | -------------------------------------------------------------------------------- /sql/views/conference_person_link_internal.sql: -------------------------------------------------------------------------------- 1 | 2 | CREATE OR REPLACE VIEW view_conference_person_link_internal AS 3 | SELECT conference_person_link_internal_id, 4 | conference_person_id, 5 | link_type, 6 | url, 7 | description, 8 | conference_person_link_internal.rank, 9 | translated, 10 | template, 11 | link_type_localized.name AS link_type_name 12 | FROM conference_person_link_internal 13 | INNER JOIN link_type USING (link_type) 14 | INNER JOIN link_type_localized USING (link_type); 15 | 16 | -------------------------------------------------------------------------------- /sql/views/event_feedback.sql: -------------------------------------------------------------------------------- 1 | 2 | CREATE OR REPLACE VIEW view_event_feedback AS 3 | SELECT event_feedback.event_id, 4 | event.conference_id, 5 | event_feedback.participant_knowledge, 6 | event_feedback.topic_importance, 7 | event_feedback.content_quality, 8 | event_feedback.presentation_quality, 9 | event_feedback.audience_involvement, 10 | event_feedback.remark, 11 | event_feedback.eval_time 12 | FROM event_feedback 13 | INNER JOIN event USING (event_id) 14 | ; 15 | 16 | -------------------------------------------------------------------------------- /sql/views/event_image_modification.sql: -------------------------------------------------------------------------------- 1 | 2 | CREATE OR REPLACE VIEW view_event_image_modification AS 3 | SELECT 4 | event_image.event_id, 5 | coalesce(log_timestamp,now()) AS last_modified 6 | FROM 7 | event_image 8 | LEFT OUTER JOIN ( 9 | SELECT 10 | event_image.event_id, 11 | log_timestamp 12 | FROM 13 | log.event_image 14 | INNER JOIN log.log_transaction USING(log_transaction_id) 15 | ) AS log USING(event_id) 16 | ; 17 | 18 | -------------------------------------------------------------------------------- /sql/views/event_link_internal.sql: -------------------------------------------------------------------------------- 1 | 2 | CREATE OR REPLACE VIEW view_event_link_internal AS 3 | SELECT event_link_internal_id, 4 | event_id, 5 | link_type, 6 | url, 7 | description, 8 | event_link_internal.rank, 9 | translated, 10 | template, 11 | link_type_localized.name AS link_type_name 12 | FROM event_link_internal 13 | INNER JOIN link_type USING (link_type) 14 | INNER JOIN link_type_localized USING (link_type); 15 | 16 | -------------------------------------------------------------------------------- /sql/views/event_related.sql: -------------------------------------------------------------------------------- 1 | 2 | CREATE OR REPLACE VIEW view_event_related AS 3 | SELECT event_id1, 4 | event_id2 AS event_id, 5 | title, 6 | subtitle 7 | FROM event_related 8 | INNER JOIN event ON (event_related.event_id2 = event.event_id); 9 | 10 | -------------------------------------------------------------------------------- /sql/views/find/find_conference.sql: -------------------------------------------------------------------------------- 1 | 2 | CREATE OR REPLACE VIEW view_find_conference AS 3 | SELECT conference.conference_id, 4 | conference.acronym, 5 | conference.title, 6 | conference.subtitle, 7 | conference_day.start_date, 8 | conference.venue, 9 | conference.city, 10 | conference_image.mime_type, 11 | mime_type.file_extension 12 | FROM conference 13 | LEFT OUTER JOIN ( SELECT conference_id, min(conference_day) AS start_date FROM conference_day GROUP BY conference_id ) AS conference_day USING (conference_id) 14 | LEFT OUTER JOIN conference_image USING (conference_id) 15 | LEFT OUTER JOIN mime_type USING (mime_type) 16 | ; 17 | 18 | -------------------------------------------------------------------------------- /sql/views/find/view_find_account.sql: -------------------------------------------------------------------------------- 1 | CREATE OR REPLACE VIEW view_find_account AS 2 | SELECT 3 | account.account_id, 4 | account.login_name, 5 | account.email AS account_email, 6 | account.person_id, 7 | view_person.first_name, 8 | view_person.last_name, 9 | view_person.public_name, 10 | view_person.nickname, 11 | view_person.email AS person_email, 12 | view_person.name 13 | FROM 14 | auth.account 15 | LEFT OUTER JOIN view_person USING(person_id) 16 | ORDER BY login_name 17 | ; 18 | -------------------------------------------------------------------------------- /sql/views/last_active.sql: -------------------------------------------------------------------------------- 1 | 2 | -- view for last active user 3 | CREATE OR REPLACE VIEW view_last_active AS 4 | SELECT account_id, 5 | person_id, 6 | login_name, 7 | name, 8 | last_login, 9 | date_trunc( 'second', now() - last_login) AS login_diff 10 | FROM auth.account 11 | INNER JOIN auth.account_settings USING(account_id) 12 | INNER JOIN view_person USING(person_id) 13 | WHERE last_login > now() + '-1 hour'::interval 14 | ORDER BY last_login DESC; 15 | 16 | -------------------------------------------------------------------------------- /sql/views/mail/mail_all_reviewer.sql: -------------------------------------------------------------------------------- 1 | 2 | -- returns all reviewer 3 | CREATE OR REPLACE VIEW view_mail_all_reviewer AS 4 | SELECT DISTINCT ON ( view_person.person_id ) 5 | view_person.person_id, 6 | view_person.name, 7 | view_person.email, 8 | view_person.spam 9 | FROM view_person 10 | INNER JOIN auth.account USING (person_id) 11 | INNER JOIN auth.account_role ON ( 12 | account_role.account_id = account.account_id AND 13 | account_role.role = 'reviewer' 14 | ) 15 | WHERE 16 | view_person.email IS NOT NULL 17 | ; 18 | 19 | -------------------------------------------------------------------------------- /sql/views/mail/mail_all_speaker.sql: -------------------------------------------------------------------------------- 1 | 2 | -- returns all speakers of all conferences 3 | CREATE OR REPLACE VIEW view_mail_all_speaker AS 4 | SELECT DISTINCT ON ( person.person_id ) 5 | person.person_id, 6 | view_person.name, 7 | view_person.email, 8 | view_person.spam 9 | FROM event_person 10 | INNER JOIN person ON ( 11 | person.person_id = event_person.person_id AND 12 | person.email IS NOT NULL) 13 | INNER JOIN view_person ON ( 14 | view_person.person_id = event_person.person_id ) 15 | WHERE event_role IN ('speaker','moderator') 16 | ; 17 | 18 | -------------------------------------------------------------------------------- /sql/views/person.sql: -------------------------------------------------------------------------------- 1 | 2 | -- view for persons with name 3 | CREATE OR REPLACE VIEW view_person AS 4 | SELECT person_id, 5 | coalesce(person.public_name, coalesce(person.first_name || ' ', '') || person.last_name, person.nickname) AS name, 6 | title, 7 | gender, 8 | first_name, 9 | last_name, 10 | public_name, 11 | nickname, 12 | address, 13 | street, 14 | street_postcode, 15 | po_box, 16 | po_box_postcode, 17 | city, 18 | country, 19 | email, 20 | spam, 21 | iban, 22 | bic, 23 | bank_name, 24 | account_owner 25 | FROM person; 26 | 27 | -------------------------------------------------------------------------------- /sql/views/person_image_modification.sql: -------------------------------------------------------------------------------- 1 | 2 | CREATE OR REPLACE VIEW view_person_image_modification AS 3 | SELECT 4 | person_image.person_id, 5 | coalesce(log_timestamp,now()) AS last_modified 6 | FROM 7 | person_image 8 | LEFT OUTER JOIN ( 9 | SELECT 10 | person_image.person_id, 11 | log_timestamp 12 | FROM 13 | log.person_image 14 | INNER JOIN log.log_transaction USING(log_transaction_id) 15 | ) AS log USING(person_id) 16 | ; 17 | -------------------------------------------------------------------------------- /sql/views/person_rating.sql: -------------------------------------------------------------------------------- 1 | 2 | CREATE OR REPLACE VIEW view_person_rating AS 3 | SELECT 4 | person_rating.person_id, 5 | person_rating.evaluator_id, 6 | person_rating.speaker_quality, 7 | person_rating.competence, 8 | person_rating.remark, 9 | person_rating.eval_time, 10 | view_person.name 11 | FROM 12 | person_rating 13 | INNER JOIN view_person ON (person_rating.evaluator_id = view_person.person_id) 14 | WHERE 15 | person_rating.speaker_quality IS NOT NULL OR 16 | person_rating.competence IS NOT NULL OR 17 | person_rating.remark IS NOT NULL 18 | ORDER BY person_rating.eval_time DESC 19 | ; 20 | 21 | -------------------------------------------------------------------------------- /sql/views/recent_changes.sql: -------------------------------------------------------------------------------- 1 | 2 | CREATE OR REPLACE VIEW view_recent_changes AS 3 | SELECT 4 | log_transaction_id, 5 | log_timestamp, 6 | person_id, 7 | name 8 | FROM log.log_transaction 9 | LEFT OUTER JOIN view_person USING(person_id) 10 | ORDER BY log_timestamp DESC 11 | ; 12 | 13 | -------------------------------------------------------------------------------- /sql/views/release/view_person.sql: -------------------------------------------------------------------------------- 1 | -- view for persons with name 2 | CREATE OR REPLACE VIEW release.view_person AS 3 | SELECT 4 | person_id, 5 | conference_release_id, 6 | coalesce(person.public_name, coalesce(person.first_name || ' ', '') || person.last_name, person.nickname) AS name, 7 | title, 8 | gender, 9 | first_name, 10 | last_name, 11 | public_name, 12 | nickname, 13 | address, 14 | street, 15 | street_postcode, 16 | po_box, 17 | po_box_postcode, 18 | city, 19 | country, 20 | email, 21 | spam, 22 | iban, 23 | bic, 24 | bank_name, 25 | account_owner 26 | FROM 27 | release.person 28 | ; 29 | 30 | -------------------------------------------------------------------------------- /sql/views/release/view_schedule_day.sql: -------------------------------------------------------------------------------- 1 | CREATE OR REPLACE VIEW release.view_schedule_day AS 2 | SELECT 3 | conference_release_id, 4 | conference_id, 5 | conference_day_id, 6 | conference_day, 7 | name 8 | FROM 9 | release.conference_day 10 | WHERE 11 | conference_day.public = TRUE 12 | ORDER BY conference_day.conference_day 13 | ; 14 | 15 | -------------------------------------------------------------------------------- /sql/views/release/view_schedule_event_attachment.sql: -------------------------------------------------------------------------------- 1 | 2 | CREATE OR REPLACE VIEW release.view_schedule_event_attachment AS 3 | SELECT 4 | conference_release_id, 5 | event_attachment_id, 6 | event_id, 7 | attachment_type, 8 | attachment_type_localized.name AS attachment_type_name, 9 | mime_type, 10 | mime_type_localized.name AS mime_type_name, 11 | filename, 12 | title, 13 | pages, 14 | public, 15 | octet_length( data ) AS filesize, 16 | attachment_type_localized.translated 17 | FROM 18 | release.event_attachment 19 | INNER JOIN attachment_type_localized USING (attachment_type) 20 | INNER JOIN mime_type_localized USING (mime_type, translated) 21 | WHERE 22 | event_attachment.public = TRUE 23 | ORDER BY title,filename 24 | ; 25 | 26 | -------------------------------------------------------------------------------- /sql/views/release/view_schedule_room.sql: -------------------------------------------------------------------------------- 1 | CREATE OR REPLACE VIEW release.view_schedule_room AS 2 | SELECT 3 | conference_release_id, 4 | conference_id, 5 | conference_room_id, 6 | conference_room, 7 | public, 8 | size, 9 | remark, 10 | rank 11 | FROM 12 | release.conference_room 13 | WHERE 14 | conference_room.public = TRUE 15 | ORDER BY rank, conference_room 16 | ; 17 | 18 | -------------------------------------------------------------------------------- /sql/views/release/view_schedule_track.sql: -------------------------------------------------------------------------------- 1 | CREATE OR REPLACE VIEW release.view_schedule_track AS 2 | SELECT 3 | conference_release_id, 4 | conference_id, 5 | conference_track_id, 6 | conference_track, 7 | rank 8 | FROM 9 | release.conference_track 10 | WHERE 11 | EXISTS ( 12 | SELECT 1 13 | FROM 14 | release.view_schedule_event 15 | WHERE 16 | view_schedule_event.conference_release_id = conference_track.conference_release_id AND 17 | view_schedule_event.conference_track_id = conference_track.conference_track_id 18 | ) 19 | ORDER BY rank, conference_track 20 | ; 21 | 22 | -------------------------------------------------------------------------------- /sql/views/report/report_events.sql: -------------------------------------------------------------------------------- 1 | CREATE OR REPLACE VIEW view_report_events AS 2 | SELECT 3 | event.conference_id, 4 | event.event_id, 5 | event.title, 6 | event.subtitle, 7 | array_to_string( ARRAY( 8 | SELECT view_person.name || '(' || event_person.event_role || ')' 9 | FROM event_person 10 | INNER JOIN view_person USING (person_id) 11 | WHERE event_person.event_id=event.event_id 12 | ), ', ' ) AS persons, 13 | event.resources, 14 | CASE event.slides WHEN TRUE THEN 'yes' WHEN FALSE THEN 'no' ELSE 'unknown' END AS slides 15 | 16 | FROM event; 17 | 18 | -------------------------------------------------------------------------------- /sql/views/report/report_schedule_coordinator.sql: -------------------------------------------------------------------------------- 1 | 2 | CREATE OR REPLACE VIEW view_report_schedule_coordinator AS 3 | SELECT count(person_id) AS count, 4 | person_id, 5 | conference_id, 6 | name 7 | FROM event_person 8 | INNER JOIN event ON ( 9 | event.event_id = event_person.event_id AND 10 | event.event_state = 'accepted' ) 11 | INNER JOIN view_person USING (person_id) 12 | WHERE event_person.event_role = 'coordinator' 13 | GROUP BY person_id, name, conference_id 14 | ORDER BY count(person_id) DESC 15 | ; 16 | 17 | -------------------------------------------------------------------------------- /sql/views/report/report_schedule_gender.sql: -------------------------------------------------------------------------------- 1 | 2 | CREATE OR REPLACE VIEW view_report_schedule_gender AS 3 | SELECT DISTINCT ON (person_id, conference_id) 4 | person_id, 5 | conference_id, 6 | gender 7 | FROM event_person 8 | INNER JOIN person USING (person_id) 9 | INNER JOIN event USING (event_id) 10 | WHERE event.event_state = 'accepted' AND 11 | event_person.event_role IN ('speaker','moderator') AND 12 | event_person.event_role_state = 'confirmed' 13 | ; 14 | 15 | -------------------------------------------------------------------------------- /sql/views/schedule/view_schedule_day.sql: -------------------------------------------------------------------------------- 1 | CREATE OR REPLACE VIEW view_schedule_day AS 2 | SELECT 3 | conference_id, 4 | conference_day_id, 5 | conference_day, 6 | name 7 | FROM 8 | conference_day 9 | WHERE 10 | conference_day.public = TRUE 11 | ORDER BY conference_day.conference_day 12 | ; 13 | 14 | -------------------------------------------------------------------------------- /sql/views/schedule/view_schedule_event_attachment.sql: -------------------------------------------------------------------------------- 1 | 2 | CREATE OR REPLACE VIEW view_schedule_event_attachment AS 3 | SELECT 4 | event_attachment_id, 5 | event_id, 6 | attachment_type, 7 | attachment_type_localized.name AS attachment_type_name, 8 | mime_type, 9 | mime_type_localized.name AS mime_type_name, 10 | filename, 11 | title, 12 | pages, 13 | public, 14 | octet_length( data ) AS filesize, 15 | attachment_type_localized.translated 16 | FROM 17 | event_attachment 18 | INNER JOIN attachment_type_localized USING (attachment_type) 19 | INNER JOIN mime_type_localized USING (mime_type, translated) 20 | WHERE 21 | event_attachment.public = TRUE 22 | ORDER BY title,filename 23 | ; 24 | 25 | -------------------------------------------------------------------------------- /sql/views/schedule/view_schedule_room.sql: -------------------------------------------------------------------------------- 1 | CREATE OR REPLACE VIEW view_schedule_room AS 2 | SELECT 3 | conference_id, 4 | conference_room_id, 5 | conference_room, 6 | public, 7 | size, 8 | remark, 9 | rank 10 | FROM 11 | conference_room 12 | WHERE 13 | conference_room.public = TRUE 14 | ORDER BY rank, conference_room 15 | ; 16 | 17 | -------------------------------------------------------------------------------- /sql/views/schedule/view_schedule_track.sql: -------------------------------------------------------------------------------- 1 | CREATE OR REPLACE VIEW view_schedule_track AS 2 | SELECT 3 | conference_id, 4 | conference_track_id, 5 | conference_track, 6 | rank 7 | FROM 8 | conference_track 9 | WHERE 10 | EXISTS( SELECT 1 FROM view_schedule_event WHERE view_schedule_event.conference_track_id = conference_track.conference_track_id ) 11 | ORDER BY rank, conference_track 12 | ; 13 | 14 | -------------------------------------------------------------------------------- /sql/views/view_conference_language.sql: -------------------------------------------------------------------------------- 1 | 2 | CREATE OR REPLACE VIEW view_conference_language AS 3 | SELECT 4 | conference_language.language, 5 | conference_language.conference_id, 6 | language_localized.translated, 7 | language_localized.name 8 | FROM 9 | conference_language 10 | INNER JOIN language_localized USING (language) 11 | ; 12 | 13 | -------------------------------------------------------------------------------- /sql/views/view_event_category_rating.sql: -------------------------------------------------------------------------------- 1 | 2 | CREATE OR REPLACE VIEW view_event_category_rating AS 3 | SELECT 4 | event_rating.event_id, 5 | event_rating.person_id, 6 | view_person.name, 7 | event_rating_category.event_rating_category_id, 8 | event_rating_category.event_rating_category, 9 | event_rating.rating, 10 | event_rating.eval_time 11 | FROM 12 | event_rating 13 | INNER JOIN event_rating_category USING (event_rating_category_id) 14 | INNER JOIN view_person USING (person_id) 15 | ORDER BY event_rating_category.rank, event_rating_category.event_rating_category 16 | ; 17 | 18 | -------------------------------------------------------------------------------- /sql/views/view_event_duration.sql: -------------------------------------------------------------------------------- 1 | CREATE OR REPLACE VIEW view_event_duration AS 2 | SELECT DISTINCT duration FROM event ORDER BY duration; 3 | 4 | -------------------------------------------------------------------------------- /sql/views/view_event_state_progress_statistic.sql: -------------------------------------------------------------------------------- 1 | 2 | CREATE OR REPLACE VIEW view_event_state_progress_statistic AS 3 | SELECT 4 | conference_id, 5 | event_state, 6 | event_state_progress, 7 | count(event_state_progress) AS count, 8 | sum(duration) AS duration 9 | FROM 10 | event_state_progress 11 | INNER JOIN event USING( event_state, event_state_progress ) 12 | GROUP BY 13 | conference_id, 14 | event_state, 15 | event_state_progress, 16 | event_state_progress.rank 17 | ORDER BY event_state_progress.rank; 18 | 19 | -------------------------------------------------------------------------------- /sql/views/view_event_state_statistic.sql: -------------------------------------------------------------------------------- 1 | 2 | CREATE OR REPLACE VIEW view_event_state_statistic AS 3 | SELECT 4 | conference_id, 5 | event_state, 6 | count(event_state) AS count, 7 | sum(duration) AS duration 8 | FROM 9 | event_state 10 | INNER JOIN event USING( event_state ) 11 | GROUP BY 12 | conference_id, 13 | event_state, 14 | event_state.rank 15 | ORDER BY event_state.rank; 16 | 17 | --------------------------------------------------------------------------------