Initial commit: Core packages

This commit is contained in:
Ernad Husremovic 2025-08-29 15:20:45 +02:00
commit 12c29a983b
9512 changed files with 8379910 additions and 0 deletions

View file

@ -0,0 +1,30 @@
/** @odoo-module **/
import { registry } from "@web/core/registry";
import { _lt } from "@web/core/l10n/translation";
import { standardFieldProps } from "@web/views/fields/standard_field_props";
const { Component } = owl;
export class IconSelectionField extends Component {
get icon() {
return this.props.icons[this.props.value];
}
get title() {
return this.props.value.charAt(0).toUpperCase() + this.props.value.slice(1);
}
}
IconSelectionField.template = "event.IconSelectionField";
IconSelectionField.props = {
...standardFieldProps,
icons: Object,
};
IconSelectionField.displayName = _lt("Icon Selection");
IconSelectionField.supportedTypes = ["char", "text", "selection"];
IconSelectionField.extractProps = ({ attrs }) => ({
icons: attrs.options,
});
registry.category("fields").add("event_icon_selection", IconSelectionField);

View file

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<templates xml:space="preserve">
<t t-name="event.IconSelectionField" owl="1">
<i t-att-class="icon" t-att-data-tooltip="title"/>
</t>
</templates>

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

View file

@ -0,0 +1,78 @@
odoo.define('event.event_steps', function (require) {
"use strict";
var core = require('web.core');
var EventAdditionalTourSteps = core.Class.extend({
_get_website_event_steps: function () {
return [false];
},
});
return EventAdditionalTourSteps;
});
odoo.define('event.event_tour', function (require) {
"use strict";
const {_t} = require('web.core');
const {Markup} = require('web.utils');
var tour = require('web_tour.tour');
var EventAdditionalTourSteps = require('event.event_steps');
tour.register('event_tour', {
url: '/web',
rainbowManMessage: _t("Great! Now all you have to do is wait for your attendees to show up!"),
sequence: 210,
}, [tour.stepUtils.showAppsMenuItem(), {
trigger: '.o_app[data-menu-xmlid="event.event_main_menu"]',
content: Markup(_t("Ready to <b>organize events</b> in a few minutes? Let's get started!")),
position: 'bottom',
edition: 'enterprise',
}, {
trigger: '.o_app[data-menu-xmlid="event.event_main_menu"]',
content: Markup(_t("Ready to <b>organize events</b> in a few minutes? Let's get started!")),
edition: 'community',
}, {
trigger: '.o-kanban-button-new',
extra_trigger: '.o_event_kanban_view',
content: Markup(_t("Let's create your first <b>event</b>.")),
position: 'bottom',
width: 175,
}, {
trigger: '.o_event_form_view input[id="name"]',
content: Markup(_t("This is the <b>name</b> your guests will see when registering.")),
run: 'text Odoo Experience 2020',
}, {
trigger: '.o_event_form_view div[name="date_end"]',
content: _t("Open date range picker. Pick a Start date for your event"),
run: function () {
$('input[id="date_begin"]').val('09/30/2020 08:00:00').change();
$('input[id="date_end"]').val('10/02/2020 23:00:00').change();
$('.o_event_form_view input[id="date_end"]').click();
},
}, {
content: _t("Apply change."),
trigger: '.daterangepicker .applyBtn',
in_modal: false,
}, {
trigger: '.o_event_form_view div[name="event_ticket_ids"] .o_field_x2many_list_row_add a',
content: Markup(_t("Ticket types allow you to distinguish your attendees. Let's <b>create</b> a new one.")),
}, tour.stepUtils.autoExpandMoreButtons(),
...new EventAdditionalTourSteps()._get_website_event_steps(), {
trigger: '.o_event_form_view div[name="stage_id"]',
content: _t("Now that your event is ready, click here to move it to another stage."),
position: 'bottom',
}, {
trigger: 'ol.breadcrumb li.breadcrumb-item:first',
extra_trigger: '.o_event_form_view div[name="stage_id"]',
content: Markup(_t("Use the <b>breadcrumbs</b> to go back to your kanban overview.")),
position: 'bottom',
run: 'click',
}].filter(Boolean));
});

View file

@ -0,0 +1,61 @@
.o_kanban_view .o_event_kanban_view {
.o_kanban_record > div {
min-height: 140px;
}
.o_kanban_content {
.o_event_fontsize_09 {
font-size: .9rem;
}
.o_event_fontsize_11 {
font-size: 1.1rem;
}
.o_event_fontsize_20 {
font-size: 2rem;
}
}
}
.o_kanban_view .o_event_attendee_kanban_view {
@media (max-width: 768px) {
.o_event_registration_kanban {
min-height: 80px;
}
}
.oe_kanban_card_ribbon {
min-height: 95px;
.ribbon {
&::before, &::after {
display: none;
}
span {
padding: 5px;
font-size: small;
z-index: 0;
}
}
.ribbon-top-right {
margin-top: -1px;
span {
left: 7px;
right: 30px;
height: 25px;
top: 18px;
}
}
// Used for "Group By"
div.row {
min-height: 95px;
}
}
}
.o_event_registration_view_tree {
.o_list_button > .o_btn_cancel_registration {
color: $danger;
&:hover {
color: darken($danger, $link-shade-percentage);
}
}
}

View file

@ -0,0 +1,66 @@
.o_event_foldable_badge_container {
.o_event_foldable_badge_top {
height: 149.4mm;
&.o_event_foldable_badge_ticket {
border-left: 1px dashed black;
}
}
.o_event_foldable_badge_font_small {
font-size: .8rem;
}
.o_event_foldable_badge_bottom.o_event_foldable_badge_left {
border-top: 1px dashed black;
height: 148mm;
p {
margin: 0px; // to match editor style (.o_field_html p)
}
}
.o_event_foldable_badge_bottom.o_event_foldable_badge_right {
border-left: 1px dashed black;
border-top:1px dashed black;
height: 148mm;
background: white;
}
.o_event_foldable_badge_ticket {
background-repeat: no-repeat;
background-image: url(/event/static/src/img/report_foldable_badge_background.png);
.o_event_foldable_badge_ticket_wrapper {
background-color: white;
border: solid 1px #939393;
border-radius: .7rem;
margin: 0px 8px;
padding: 10px 3px;
font-size: 1.2rem;
box-shadow: -3px 3px 9px 0px rgba(0,0,0,0.51);
.o_event_foldable_badge_ticket_wrapper_top {
min-height: 80mm;
}
.o_event_foldable_badge_font_faded {
color: #939393;
}
.o_event_foldable_badge_barcode {
min-height: 35mm;
}
}
}
.o_event_foldable_badge_step {
position: absolute;
padding: 3px 9px;
top: 5mm;
left: 0mm;
border-radius: 50%;
background-color: black;
color: white;
}
}

View file

@ -0,0 +1,63 @@
.o_event_full_page_ticket_footer {
.o_event_full_page_ticket_powered_by {
font-size: .8rem;
line-height: 1rem;
}
}
.o_event_full_page_ticket_container {
z-index: 1;
background-repeat: no-repeat;
background-image: url(/event/static/src/img/report_full_page_ticket_background.png);
padding: 40px 40px 0px 40px;
.o_event_full_page_ticket_font_faded {
color: #939393;
}
.o_event_full_page_ticket_small {
font-size: .8rem;
}
.o_event_full_page_ticket_small_caps {
text-transform: uppercase;
font-size: .8rem;
}
.o_event_full_page_ticket_wrapper {
z-index: 2;
.o_event_full_page_ticket_details {
background-color: white;
border: solid 1px #939393;
border-radius: .7rem;
margin: 0px 8px;
padding: 10px 3px;
box-shadow: -3px 3px 9px 0px rgba(0,0,0,0.51);
.o_event_full_page_ticket_event_logo {
max-height: 50px;
}
.o_event_full_page_ticket_barcode {
padding-left: 30px;
.o_event_full_page_ticket_barcode_container {
-webkit-transform: rotate(90deg);
transform: rotate(90deg);
width: 67px;
img {
padding: 0px 10px;
}
}
}
}
}
.o_event_full_page_extra_instructions {
p {
margin: 0px; // to match editor style (.o_field_html p)
}
}
}

View file

@ -0,0 +1,6 @@
// The PDF layout behaves slightly differently from the layout shown in the report editor.
// This file gaps the differences with some additional custom rules to get a pixel perfect layout.
.o_event_full_page_ticket_footer {
// make sure to take entire with, including the margin imposed by "container-fluid"
width: calc(100% + 30px) !important;
}