Initial commit: Core packages
|
|
@ -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);
|
||||
|
|
@ -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>
|
||||
|
After Width: | Height: | Size: 9.6 KiB |
|
After Width: | Height: | Size: 10 KiB |
|
After Width: | Height: | Size: 7.1 KiB |
|
After Width: | Height: | Size: 38 KiB |
|
After Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 4.6 KiB |
|
After Width: | Height: | Size: 3.4 KiB |
|
After Width: | Height: | Size: 10 KiB |
|
After Width: | Height: | Size: 6.4 KiB |
|
After Width: | Height: | Size: 4.1 KiB |
|
|
@ -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));
|
||||
|
||||
});
|
||||
61
odoo-bringout-oca-ocb-event/event/static/src/scss/event.scss
Normal 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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
@ -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)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -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;
|
||||
}
|
||||