我正在尝试向顶部导航栏添加徽标,并且正在寻找要继承的视图ID,该ID将允许我使用xpath定位属性。
我在查找负责保存两个相邻元素的导航栏布局的视图时遇到了麻烦。
我发现了类似这样的内容:private void comboBox2_SelectedIndexChanged(object sender, EventArgs e)
{
using (SqlConnection conn = new SqlConnection("DataSource=10.6.9.58;Initial Catalog=DBNew;User ID=qwertyuiop;Password=1234567890"))
{
try
{
string query = "select ID,HRName from HRTable";
SqlDataAdapter da = new SqlDataAdapter(query, conn);
conn.Open();
DataSet ds = new DataSet();
da.Fill(ds, "HRTable");
comboBox1.DisplayMember = "HRName";
comboBox1.ValueMember = "ID";
comboBox1.DataSource = ds.Tables["HRTable"];
}
catch (Exception ex)
{
// write exception info to log or anything else
MessageBox.Show("Error occured!");
}
}
。但是它没有定义这两个相邻的节点(在浏览器中的检阅元素工具中):
addons\website\views\website_navbar_templates.xml
和
<ul class="o_menu_apps">
它们仅存在于静态xml:<a class="o_menu_brand" role="button">
中。 ``但是我不知道我是否可以用我的自定义模块和xpath修改这个xml。
内部:addons\web\static\src\xml\menu.xml
我看到了这段代码:
addons\website\views\website_templates.xml
该徽标在哪里?我在Odoo12中看不到任何徽标。我认为没有所谓的“ navbar-brand”类。
答案 0 :(得分:1)
我最终用我的自定义模块覆盖了静态xml文件,如下所示:
function previewImages(cID){
var ciCode = window.localStorage.getItem('ciCode');
var xdata = ({'cIDs': cID, 'ciCodes': ciCode });
$.ajax({
type: 'GET',
url: '../back_php_Code/pPrevImages.php',
dataType: 'json',
data: xdata,
contentType: 'application/json; charset=utf-8',
success: function (response) {
var cells = eval(response);
alert(JSON.stringify(cells));
for (var i=0; i < cells.length ; i ++){
$('#iSet').append('<div class="col-lg-4 col-sm-6">'
+ '<div class="thumbnail">'
+ '<div class="thumb">'
+ '<a href="..\files\assets\images\gallery-grid\1.png" data-lightbox="9" data-title="' + + '">'
+ '<img src="'+ + '" alt="" class="img-fluid img-thumbnail">'
+ '</a>'
+ '</div></div></div>');
}
},
error: function (error) {
console.log(error);
}
});
}
我将此文件放在$ mysql -u root -p -e 'SHOW VARIABLES LIKE "%version%";'
中,并在manifest.py中将其命名
+-------------------------+-------------------------+
| Variable_name | Value |
+-------------------------+-------------------------+
| innodb_version | 5.5.49 |
| protocol_version | 10 |
| slave_type_conversions | |
| version | 5.5.49-0ubuntu0.14.04.1 |
| version_comment | (Ubuntu) |
| version_compile_machine | x86_64 |
| version_compile_os | debian-linux-gnu |
+-------------------------+-------------------------+
答案 1 :(得分:0)
这也可以动态完成。在这种情况下,我们将在前端使用JavaScript代码,并使用控制器通知前端是否存在该公司的公司徽标,然后我们使用前端的get请求获取公司徽标。>
首先,我们添加img标签以显示XML中的公司徽标。
<?xml version="1.0" encoding="UTF-8"?>
<templates id="template" xml:space="preserve">
<t t-extend="Menu">
<t t-jquery=".o_menu_apps" t-operation="prepend">
<a id="company-logo-link" href="/web">
<img id="company-logo" alt="Logo"/>
</a>
</t>
</t>
</templates>
此后,我们添加JavaScript以显示当前用户公司的徽标。我们从当前用户的会话中获取公司ID。
odoo.define('web_company_logo.Menu', function (require) {
'use strict';
var session = require('web.session');
var Menu = require('web.Menu');
Menu.include({
/**
* @override
*/
start: function (parent, options) {
this._super.apply(this, arguments);
// current url, <domain_name>:<port_number>
var url = window.location.origin;
// company id from the session
var companyId = session.company_id;
// use ajax to check if the company has a logo.
// if there is no logo, remove the anchor, else
// use the company's logo as the img src
$.ajax({
type: 'GET',
data: {'company_id': companyId},
url: `${url}/check_company_logo`,
success: function (result) {
console.log('Inside the success function');
var result = JSON.parse(result);
if (result.has_logo == true) {
$('#company-logo')[0].src = `${url}/web/image?model=res.company&id=${companyId}&field=logo`;
}
else {
$('#company-logo-link')[0].remove();
}
},
error: function (xhr, ajaxOptions, thrownError) {
console.log('Error encountered');
},
});
},
});
});
要使此JavaScript代码正常工作,应添加以下控制器,以告知前端该公司是否有徽标。
import json
from odoo import http
from odoo.http import request
class WebCompanyLogoController(http.Controller):
@http.route(['/check_company_logo'], type='http',
auth="public", methods=['GET'],
website=True, sitemap=False)
def check_company_logo(self, company_id=0):
"""
Check if company has a logo
:param company_id: ID of the company as an integer
:return: bool
"""
has_logo = bool(request.env['res.company'].browse(int(company_id)).logo)
return json.dumps({
'has_logo': has_logo,
}, ensure_ascii=False)