pengyuthon

This commit is contained in:
李鹏宇
2024-10-31 20:35:38 +08:00
parent 283330cfe4
commit 990daf730c
5 changed files with 270 additions and 0 deletions
+1
View File
@@ -0,0 +1 @@
# -*- coding: utf-8 -*-
+27
View File
@@ -0,0 +1,27 @@
# -*- coding: utf-8 -*-
{
'name': "awesome_tempalte_widget",
'summary': "tempalte widget for odoo",
'description': """
template widget for odoo
""",
'author': "crax",
'website': "https://www.openerpnext.com",
'category': 'Apps/list',
'version': '17.0.0.1',
'price': 9999,
'depends': ['base', 'web'],
'data': [],
'assets': {
'web.assets_backend': [
'awesome_template_widget/static/src/template_widget.js'
]
}
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 65 KiB

@@ -0,0 +1,128 @@
<div class="container">
<div class="oe_styling_v8">
<div class="shadow row my-5 p-3 pb-2 overflow-hidden">
<div class="container">
<div class="row">
<p style="width: 100%; font-size: 18px; text-indent:1em;" class="px-sm-4 p-2">
Anita theme setting is theme configer for our themes, it support to change theme color, font, background, header, footer, menu, etc. and also support to change theme layout, it is very easy to use and very useful for our themes.
</p>
</div>
<img src="./banner.png" style="width:100%; " />
</div>
</div>
<h2 class="w-100 text-center mb-3">(Current Release V16.0.0.1 -- 2022.11.22)</h2>
<div class="overflow-hidden mb-5 my-3 p-4 deep-3" style="background-color:#fbfcfd; border-radius:20px; border: 1px solid #d2caca66;">
<div class="container">
<h3 style="opacity:1; padding:10px 0px; color:#201111; letter-spacing:0.2em; text-transform:uppercase">
<b>Theme Settings</b>
</h3>
<hr class="mb-4 mt-0">
<h5>
there has a theme setting configer, it can set the button style\ input style \ radio style \ checkbox style etc
</h5>
<img src="./theme_setting.png" class="img img-fluid mt-3" loading="lazy">
</div>
</div>
<div class="overflow-hidden mb-5 my-3 p-4 deep-3" style="background-color:#fbfcfd; border-radius:20px; border: 1px solid #d2caca66;">
<div class="container">
<h3 style="opacity:1; padding:10px 0px; color:#201111; letter-spacing:0.2em; text-transform:uppercase">
<b>Theme Style</b>
</h3>
<hr class="mb-4 mt-0">
<h5>
there has a theme configer, it can set the theme color\ font\ background\ header\ footer\ menu etc
</h5>
<img src="./theme_style.png" class="img img-fluid mt-3" loading="lazy">
</div>
</div>
<div class="overflow-hidden mb-5 my-3 p-4 deep-3" style="background-color:#fbfcfd; border-radius:20px; border: 1px solid #d2caca66;">
<div class="container">
<h3 style="opacity:1; padding:10px 0px; color:#201111; letter-spacing:0.2em; text-transform:uppercase">
<b>Semi Trans Support</b>
</h3>
<hr class="mb-4 mt-0">
<h5>
user can set a bk image and set the alpha for elements, it will be very beautiful
</h5>
<img src="./transparent.png" class="img img-fluid mt-3" loading="lazy">
</div>
</div>
<div class="overflow-hidden mb-5 my-3 p-4 deep-3" style="background-color:#fbfcfd; border-radius:20px; border: 1px solid #d2caca66;">
<div class="container">
<h3 style="opacity:1; padding:10px 0px; color:#201111; letter-spacing:0.2em; text-transform:uppercase">
<b>Back Image Support</b>
</h3>
<hr class="mb-4 mt-0">
<h5>
user can set a bk image and set the alpha for elements, it will be very beautiful
</h5>
<img src="./transparent2.png" class="img img-fluid mt-3" loading="lazy">
</div>
</div>
<h2 style="text-align: center">
Our Other Popular Apps
</h2>
<div class="shadow row my-5 p-3 pb-2 overflow-hidden"
style="background-color:#fbfcfd; border-radius: 5px; border: 1px solid #d2caca66;">
<div class="container">
<h3 style="opacity:1; padding:10px 0px; color:#201111; letter-spacing:0.2em; text-transform:uppercase">
<b>Awesome theme Pro</b>
</h3>
<hr class="mb-4 mt-0">
<a href="https://apps.odoo.com/apps/themes/15.0/awesome_theme_pro/">
<img src="./awesome_theme.gif" class="img img-fluid mt-3" loading="lazy">
</a>
</div>
</div>
<div class="overflow-hidden mb-5 my-3 p-4 deep-3" style="background-color:#fbfcfd; border-radius:20px; border: 1px solid #d2caca66;">
<div class="container">
<h3 style="opacity:1; padding:10px 0px; color:#201111; letter-spacing:0.2em; text-transform:uppercase">
<b>Config Theme Styles</b>
</h3>
<hr class="mb-4 mt-0">
<h5>
there has a theme configer, you can change the color, image and icons of the theme
</h5>
<img src="./change_background.png" class="img img-fluid mt-3" loading="lazy">
</div>
</div>
<div class="shadow row my-5 p-3 pb-2 overflow-hidden"
style="background-color:#fbfcfd; border-radius: 5px; border: 1px solid #d2caca66;">
<div class="container">
<h3 style="opacity:1; padding:10px 0px; color:#201111; letter-spacing:0.2em; text-transform:uppercase">
<b>Anita Modeler</b>
</h3>
<hr class="mb-4 mt-0">
<a href="https://apps.odoo.com/apps/modules/14.0/anita_modeler/">
<img src="./anita_modeler.png" class="img img-fluid mt-3" loading="lazy">
</a>
</div>
</div>
<div class="shadow row my-5 p-3 pb-2 overflow-hidden"
style="background-color:#fbfcfd; border-radius: 5px; border: 1px solid #d2caca66;">
<div class="container">
<h3 style="opacity:1; padding:10px 0px; color:#201111; letter-spacing:0.2em; text-transform:uppercase">
<b>Anita List</b>
</h3>
<hr class="mb-4 mt-0">
<a href="https://apps.odoo.com/apps/modules/15.0/anita_list/">
<img src="./anita_list.gif" class="img img-fluid mt-3" loading="lazy">
</a>
</div>
</div>
</div>
</div>
@@ -0,0 +1,114 @@
/** @odoo-module **/
import { registry } from "@web/core/registry";
import { _t } from "@web/core/l10n/translation";
import { standardFieldProps } from "@web/views/fields/standard_field_props";
import { Component, xml, useEffect, useRef } from "@odoo/owl";
import { useService } from "@web/core/utils/hooks";
import { evaluateExpr } from "@web/core/py_js/py";
import { session } from "@web/session";
export class TemplateWidget extends Component {
get isReadonly() {
return true;
}
setup() {
super.setup();
this.action = useService("action");
this.rootRef = useRef("root");
this.uid = session.uid;
this.company_id = session.company_id;
useEffect(() => {
// listen to the button click event
this.rootRef.el.addEventListener("click", this._onButtonClick.bind(this));
return () => {
this.rootRef.el.removeEventListener("click", this._onButtonClick.bind(this));
}
}, () => [this.rootRef.el]);
}
_onButtonClick(ev) {
// check tag name
if (ev.target.tagName != 'BUTTON') {
return;
}
ev.preventDefault();
ev.stopPropagation();
let name = ev.target.attributes.name && ev.target.attributes.name.value
if (!name) {
return;
}
let type = ev.target.attributes.type.value
if (!type) {
return;
}
let context = ev.target.attributes.context && ev.target.attributes.context.value || '{}'
context = evaluateExpr(context, this.record.data)
// trigger up the button click message
this.action.doActionButton({
name: name,
type: type,
context: context,
resId: this.record.resId,
resModel: this.record.resModel,
onClose: async () => {
await this.record.model.root.load();
this.record.model.notify();
}
});
}
get data() {
return this.props.record.data;
}
get record() {
return this.props.record;
}
}
// props:
TemplateWidget.props = {
...standardFieldProps,
template: {
type: String,
optional: true,
}
};
TemplateWidget.displayName = _t("TemplateWidget");
TemplateWidget.template = xml`
<div t-ref="root">
<t t-call="{{this.props.template}}" />
</div>`
export const templateWidget = {
component: TemplateWidget,
displayName: _t("Template"),
supportedTypes: ["char", "Text"],
supportedOptions: [
{
label: _t("Template"),
name: "template",
type: "Char",
help: _t("The field template"),
},
],
extractProps: ({ attrs, options }) => ({
template: options.template,
})
};
registry.category("fields").add("template_widget", templateWidget);