diff --git a/app_chatgpt/i18n/zh_CN.po b/app_chatgpt/i18n/zh_CN.po index 0e4beede..9988265c 100644 --- a/app_chatgpt/i18n/zh_CN.po +++ b/app_chatgpt/i18n/zh_CN.po @@ -962,7 +962,7 @@ msgid "ChatGPT4 Azure" msgstr "" #. module: app_chatgpt -#: model:mail.channel,description:app_chatgpt.channel_chatgpt +#: model:discuss.channel,description:app_chatgpt.channel_chatgpt msgid "ChatGPT话题" msgstr "" diff --git a/app_odoo_customize/__manifest__.py b/app_odoo_customize/__manifest__.py index 8f4f9c70..5efedb34 100644 --- a/app_odoo_customize/__manifest__.py +++ b/app_odoo_customize/__manifest__.py @@ -23,7 +23,7 @@ { 'name': 'odoo18 Tweak,Ai Employee,Boost,Customize All in One. Customize,UI,Boost,Security,Data,Development Enhance', - 'version': '18.0.24.12.16', + 'version': '18.0.24.12.20', 'author': 'odooai.cn', 'category': 'Extra Tools', 'website': 'https://www.odooai.cn', @@ -50,7 +50,6 @@ 'security/res_groups.xml', 'security/ir.model.access.csv', 'views/app_odoo_customize_views.xml', - 'views/app_theme_config_settings_views.xml', 'views/res_config_settings_views.xml', 'views/ir_views.xml', 'views/ir_module_module_views.xml', @@ -75,12 +74,10 @@ 'app_odoo_customize/static/src/js/user_menu.js', 'app_odoo_customize/static/src/js/ribbon.js', 'app_odoo_customize/static/src/js/dialog.js', - 'app_odoo_customize/static/src/js/navbar.js', + 'app_odoo_customize/static/src/js/base_import_list_renderer.js', 'app_odoo_customize/static/src/webclient/*.js', 'app_odoo_customize/static/src/webclient/user_menu.xml', 'app_odoo_customize/static/src/xml/res_config_edition.xml', - 'app_odoo_customize/static/src/xml/debug_templates.xml', - 'app_odoo_customize/static/src/xml/base_import.xml', ], }, 'pre_init_hook': 'pre_init_hook', diff --git a/app_website_blog_editor/__init__.py b/app_website_blog_editor/__init__.py new file mode 100644 index 00000000..0bdffc76 --- /dev/null +++ b/app_website_blog_editor/__init__.py @@ -0,0 +1,7 @@ +# -*- coding: utf-8 -*- + +from . import models +from . import controllers +from .hooks import pre_init_hook +from .hooks import post_init_hook +from .hooks import uninstall_hook diff --git a/app_website_blog_editor/__manifest__.py b/app_website_blog_editor/__manifest__.py new file mode 100644 index 00000000..2b459a95 --- /dev/null +++ b/app_website_blog_editor/__manifest__.py @@ -0,0 +1,95 @@ +# -*- coding: utf-8 -*- + +# Created on 2022-09-01 +# author: 欧度智能,https://www.odooai.cn +# email: 300883@qq.com +# resource of odooai +# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl). + +# Odoo16在线用户手册(长期更新) +# https://www.odooai.cn/documentation/16.0/zh_CN/index.html + +# Odoo16在线开发者手册(长期更新) +# https://www.odooai.cn/documentation/16.0/zh_CN/developer.html + +# Odoo13在线用户手册(长期更新) +# https://www.odooai.cn/documentation/user/13.0/zh_CN/index.html + +# Odoo13在线开发者手册(长期更新) +# https://www.odooai.cn/documentation/13.0/index.html + +# Odoo10在线中文用户手册(长期更新) +# https://www.odooai.cn/documentation/user/10.0/zh_CN/index.html + +# Odoo10离线中文用户手册下载 +# https://www.odooai.cn/odoo10_user_manual_document_offline/ +# Odoo10离线开发手册下载-含python教程,jquery参考,Jinja2模板,PostgresSQL参考(odoo开发必备) +# https://www.odooai.cn/odoo10_developer_document_offline/ + +############################################################################## +# Copyright (C) 2009-TODAY odooai.cn Ltd. https://www.odooai.cn +# Author: Ivan Deng,300883@qq.com +# You can modify it under the terms of the GNU LESSER +# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. +# See . +# +# It is forbidden to publish, distribute, sublicense, or sell copies +# of the Software or modified copies of the Software. +############################################################################## + +{ + 'name': "Website Blogs,Page Editor in source code. mass edit blog and page.Odoo网页与博文源码编辑器", + 'version': '18.0.24.12.20', + 'author': 'odooai.cn', + 'category': 'Website', + 'website': 'https://www.odooai.cn', + 'live_test_url': 'https://demo.odooapp.cn', + 'license': 'LGPL-3', + 'sequence': 2, + 'price': 0.00, + 'currency': 'EUR', + 'images': ['static/description/banner.gif'], + 'depends': [ + 'website_blog', + ], + 'summary': ''' + Make developer to easy build website. Edit odoo page in source code. Quick edit website page, Quick clone website blog. + Quick seo website page and blog. mass edit page and blog. + ''', + 'description': ''' + Make developer to easy build website. + 1. Edit website page and website blog in source code mode + 2. Mass edit website page and blog property like url key and name, etc.. + 3. Mass translate website page, website blog, website product to any language. this need extra pay for app_ai_seo + 4. Easy mass seo builder. Use AI to edit website. mass setup seo. this need extra pay for app_ai_seo + 11. Multi-language Support. Multi-Company Support. + 12. Support Odoo 18,17,16,15,14,13,12, Enterprise and Community and odoo.sh Edition. + 13. Full Open Source. + ========== + 程序员网站开发专用 + 1. 快速网页编辑,博客编辑,源码方式编辑网站内容 + 2. 批量网页内容编辑,批量博客编辑 + 3. 批量翻译网站页面,博客,产品信息。快速生成全球化网站,需要额外付费模块 app_ai_seo + 4. 批量SEO,提升网站排名。使用Ai编辑及优化网站,需要额外付费模块 app_ai_seo + 11. 多语言支持,多公司支持 + 12. Odoo 18,17,16,15,14,13,12, 企业版,社区版,在线SaaS.sh版,等全版本支持 + 13. 代码完全开源 + ''', + 'data': [ + 'views/blog_blog_views.xml', + 'views/blog_tag_category_views.xml', + 'views/blog_tag_views.xml', + 'views/blog_post_views.xml', + 'views/website_views.xml', + 'views/website_page_views.xml', + 'views/res_config_settings_views.xml' + # 'report/.xml', + ], + 'demo': [], + # 'pre_init_hook': 'pre_init_hook', + # 'post_init_hook': 'post_init_hook', + # 'uninstall_hook': 'uninstall_hook', + 'installable': True, + 'application': True, + 'auto_install': False, +} diff --git a/app_website_blog_editor/controllers/__init__.py b/app_website_blog_editor/controllers/__init__.py new file mode 100644 index 00000000..757b12a1 --- /dev/null +++ b/app_website_blog_editor/controllers/__init__.py @@ -0,0 +1,2 @@ +# -*- coding: utf-8 -*- +from . import main diff --git a/app_website_blog_editor/controllers/main.py b/app_website_blog_editor/controllers/main.py new file mode 100644 index 00000000..0bef8d3e --- /dev/null +++ b/app_website_blog_editor/controllers/main.py @@ -0,0 +1,17 @@ +# -*- coding: utf-8 -*- + +import re +import werkzeug +from odoo import http, fields, tools +from odoo.addons.website.controllers.main import QueryURL +from odoo.http import request +from odoo.addons.website_blog.controllers.main import WebsiteBlog + + +class WebsiteBlog(WebsiteBlog): + + def _prepare_blog_values(self, blogs, blog=False, date_begin=False, date_end=False, tags=False, state=False, page=False, search=None): + blogs = blogs.sorted(key='sequence') + res = super(WebsiteBlog, self)._prepare_blog_values(blogs, blog, date_begin, date_end, tags, state, page, search) + return res + diff --git a/app_website_blog_editor/data/product_attribute_value_group_data.xml b/app_website_blog_editor/data/product_attribute_value_group_data.xml new file mode 100644 index 00000000..ad0a23e1 --- /dev/null +++ b/app_website_blog_editor/data/product_attribute_value_group_data.xml @@ -0,0 +1,17 @@ + + + + + CHN + CN + + + Eur + EU + + + US + US + + + \ No newline at end of file diff --git a/app_website_blog_editor/hooks.py b/app_website_blog_editor/hooks.py new file mode 100644 index 00000000..b1901857 --- /dev/null +++ b/app_website_blog_editor/hooks.py @@ -0,0 +1,28 @@ +# -*- coding: utf-8 -*- + +# Created on 2018-10-12 +# author: 欧度智能,https://www.odooai.cn +# email: 300883@qq.com +# resource of odooai +# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl). + +# Odoo在线中文用户手册(长期更新) +# https://www.odooai.cn/documentation/user/10.0/zh_CN/index.html + +# Odoo10离线中文用户手册下载 +# https://www.odooai.cn/odoo10_user_manual_document_offline/ +# Odoo10离线开发手册下载-含python教程,jquery参考,Jinja2模板,PostgresSQL参考(odoo开发必备) +# https://www.odooai.cn/odoo10_developer_document_offline/ +# description: + +from odoo import api, SUPERUSER_ID, _ + + +def pre_init_hook(env): + pass + +def post_init_hook(env): + pass + +def uninstall_hook(env): + pass diff --git a/app_website_blog_editor/i18n/zh_CN.po b/app_website_blog_editor/i18n/zh_CN.po new file mode 100644 index 00000000..1620a568 --- /dev/null +++ b/app_website_blog_editor/i18n/zh_CN.po @@ -0,0 +1,160 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * app_website_blog_editor +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0+e-20231112\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-08-04 14:52+0000\n" +"PO-Revision-Date: 2024-08-04 14:52+0000\n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: app_website_blog_editor +#: model:ir.model,name:app_website_blog_editor.model_blog_blog +#: model:ir.model.fields,field_description:app_website_blog_editor.field_blog_post__blog_id +msgid "Blog" +msgstr "博客分类" + +#. module: app_website_blog_editor +#: model:ir.model,name:app_website_blog_editor.model_blog_post +msgid "Blog Post" +msgstr "博文" + +#. module: app_website_blog_editor +#: model:ir.model,name:app_website_blog_editor.model_blog_tag +msgid "Blog Tag" +msgstr "博客标签" + +#. module: app_website_blog_editor +#: model:ir.model,name:app_website_blog_editor.model_blog_tag_category +msgid "Blog Tag Category" +msgstr "博客标签分类" + +#. module: app_website_blog_editor +#: model:ir.model,name:app_website_blog_editor.model_res_config_settings +msgid "Config Settings" +msgstr "配置设置" + +#. module: app_website_blog_editor +#: model_terms:ir.ui.view,arch_db:app_website_blog_editor.app_view_blog_post_form +#: model_terms:ir.ui.view,arch_db:app_website_blog_editor.app_view_blog_post_search +msgid "Content" +msgstr "博客图文" + +#. module: app_website_blog_editor +#: model_terms:ir.ui.view,arch_db:app_website_blog_editor.app_website_pages_tree_view +msgid "Content View and edit with relate ir.ui.view" +msgstr "可视化内容编辑与查看,设置关联ir.ui.view对象内容" + +#. module: app_website_blog_editor +#: model:ir.model.fields,help:app_website_blog_editor.field_blog_blog__sequence +#: model:ir.model.fields,help:app_website_blog_editor.field_blog_tag__sequence +#: model:ir.model.fields,help:app_website_blog_editor.field_blog_tag_category__sequence +msgid "Determine the display order" +msgstr "确定显示顺序,值越小越靠前" + +#. module: app_website_blog_editor +#: model:ir.model.fields,field_description:app_website_blog_editor.field_website_page__is_force_all +msgid "Force All Website" +msgstr "用于站群" + +#. module: app_website_blog_editor +#: model_terms:ir.ui.view,arch_db:app_website_blog_editor.app_website_pages_view_search +msgid "Group By" +msgstr "分组依据" + +#. module: app_website_blog_editor +#: model:ir.model.fields,help:app_website_blog_editor.field_website_page__is_force_all +msgid "" +"If check, the page would use to all website, even u change.\n" +" Important, The page url must be uniq in all website" +msgstr "如果选中,该页面将用于所有网站。注意在勾选模式下,页面的 url 必须全局唯一。" + +#. module: app_website_blog_editor +#: model_terms:ir.ui.view,arch_db:app_website_blog_editor.app_res_config_settings_form_view +msgid "If set, replaces the blog post background image as the meta image." +msgstr "如果设置,默认将博文背景图片替换为元图像。" + +#. module: app_website_blog_editor +#: model_terms:ir.ui.view,arch_db:app_website_blog_editor.app_website_pages_form_view +msgid "Menu Items" +msgstr "菜单项" + +#. module: app_website_blog_editor +#: model_terms:ir.ui.view,arch_db:app_website_blog_editor.app_view_blog_post_search +msgid "Not Published" +msgstr "未发布" + +#. module: app_website_blog_editor +#: model:ir.model,name:app_website_blog_editor.model_website_page +msgid "Page" +msgstr "网页" + +#. module: app_website_blog_editor +#: model_terms:ir.ui.view,arch_db:app_website_blog_editor.app_view_blog_post_search +msgid "Published" +msgstr "已发布" + +#. module: app_website_blog_editor +#: model_terms:ir.ui.view,arch_db:app_website_blog_editor.app_website_pages_form_view +msgid "SEO" +msgstr "SEO优化" + +#. module: app_website_blog_editor +#: model_terms:ir.ui.view,arch_db:app_website_blog_editor.app_website_pages_tree_view +msgid "SEO Properties Set of Website Page" +msgstr "网页SEO及关键属性设置" + +#. module: app_website_blog_editor +#: model:ir.model.fields,field_description:app_website_blog_editor.field_blog_blog__seo_name +msgid "Seo name" +msgstr "SEO链接URL" + +#. module: app_website_blog_editor +#: model:ir.model.fields,field_description:app_website_blog_editor.field_blog_blog__sequence +#: model:ir.model.fields,field_description:app_website_blog_editor.field_blog_tag__sequence +#: model:ir.model.fields,field_description:app_website_blog_editor.field_blog_tag_category__sequence +msgid "Sequence" +msgstr "顺序" + +#. module: app_website_blog_editor +#: model_terms:ir.ui.view,arch_db:app_website_blog_editor.app_view_blog_post_list +msgid "Settings" +msgstr "设置" + +#. module: app_website_blog_editor +#: model_terms:ir.ui.view,arch_db:app_website_blog_editor.app_view_blog_post_list +msgid "Source Code" +msgstr "源代码" + +#. module: app_website_blog_editor +#: model_terms:ir.ui.view,arch_db:app_website_blog_editor.app_website_pages_tree_view +msgid "Source Code View and edit with relate ir.ui.view" +msgstr "源代码查看和编辑,编辑关联ir.ui.view对象" + +#. module: app_website_blog_editor +#: model_terms:ir.ui.view,arch_db:app_website_blog_editor.app_view_blog_post_search +msgid "Title" +msgstr "标题" + +#. module: app_website_blog_editor +#: model:ir.model.fields,field_description:app_website_blog_editor.field_res_config_settings__sync_blog_meta_background_img +#: model_terms:ir.ui.view,arch_db:app_website_blog_editor.app_res_config_settings_form_view +msgid "Use a meta image by default for blog post background" +msgstr "博客文章背景默认使用元图像" + +#. module: app_website_blog_editor +#: model:ir.model,name:app_website_blog_editor.model_ir_ui_view +msgid "View" +msgstr "视图" + +#. module: app_website_blog_editor +#: model_terms:ir.ui.view,arch_db:app_website_blog_editor.app_website_pages_view_search +msgid "Website" +msgstr "网站" diff --git a/app_website_blog_editor/models/__init__.py b/app_website_blog_editor/models/__init__.py new file mode 100644 index 00000000..78a2e3b9 --- /dev/null +++ b/app_website_blog_editor/models/__init__.py @@ -0,0 +1,31 @@ +# -*- coding: utf-8 -*- +# Part of odooai.cn. See LICENSE file for full copyright and licensing details. + +# Created on 2019-04-20 +# author: 欧度智能,http://www.odooai.cn +# email: 300883@qq.com +# resource of odooai +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +# Odoo12在线用户手册(长期更新) +# http://www.odooai.cn/documentation/user/12.0/en/index.html + +# Odoo12在线开发者手册(长期更新) +# http://www.odooai.cn/documentation/12.0/index.html + +# Odoo10在线中文用户手册(长期更新) +# http://www.odooai.cn/documentation/user/10.0/zh_CN/index.html + +# Odoo10离线中文用户手册下载 +# http://www.odooai.cn/odoo10_user_manual_document_offline/ +# Odoo10离线开发手册下载-含python教程,jquery参考,Jinja2模板,PostgresSQL参考(odoo开发必备) +# http://www.odooai.cn/odoo10_developer_document_offline/ +# description: + +from . import blog_tag_category +from . import blog_tag +from . import blog_blog +from . import blog_post +from . import ir_ui_view +from . import website_page +from . import res_config_settings diff --git a/app_website_blog_editor/models/blog_blog.py b/app_website_blog_editor/models/blog_blog.py new file mode 100644 index 00000000..c1e342ec --- /dev/null +++ b/app_website_blog_editor/models/blog_blog.py @@ -0,0 +1,32 @@ +# -*- coding: utf-8 -*- + +from odoo import api, models, fields, _ +from odoo.tools.safe_eval import safe_eval + + +class BlogBlog(models.Model): + _inherit = 'blog.blog' + _order = 'sequence, name' + + seo_name = fields.Char(tracking=True) + + # 排序 + sequence = fields.Integer(string='Sequence', default=20, index=True, help="Determine the display order") + + def action_view_blog_post(self): + self.ensure_one() + action = self.env.ref('website_blog.action_blog_post').sudo().read()[0] + action['domain'] = [('blog_id', '=', self.id)] + return action + + # def unlink(self): + # # active的先不删除,设置为 deactive + # to_deactive = self.filtered(lambda r: r.active) + # self = self - to_deactive + # to_deactive.write({ + # 'active': False, + # }) + # if self: + # return super(BlogBlog, self).unlink() + # else: + # return False diff --git a/app_website_blog_editor/models/blog_post.py b/app_website_blog_editor/models/blog_post.py new file mode 100644 index 00000000..c59ba44b --- /dev/null +++ b/app_website_blog_editor/models/blog_post.py @@ -0,0 +1,51 @@ +# -*- coding: utf-8 -*- + +import json +from odoo import api, models, fields, _ +from odoo.http import request +from odoo.tools.safe_eval import safe_eval + + +class BlogPost(models.Model): + _inherit = 'blog.post' + + # 不允许暴力删除 + blog_id = fields.Many2one('blog.blog', ondelete='restrict') + + def write(self, vals): + website = request.env['website'].get_current_website() + if 'website_meta_og_img' in vals and not vals.get('cover_properties'): + sync_blog_meta_background_img = self.env['ir.config_parameter'].sudo().get_param('app_website_blog_editor.sync_blog_meta_background_img') + if sync_blog_meta_background_img: + web_base_url = self.env['ir.config_parameter'].sudo().get_param('web.base.url', default='') + for rec in self: + if not vals.get('website_meta_og_img') and website.has_social_default_image and website.social_default_image: + # 设置为空值则用 社媒seo图 + img_url = website.image_url(website, 'social_default_image') + else: + img_url = vals.get('website_meta_og_img').replace(web_base_url, '').replace(website.domain, '') + if img_url: + cover_properties = json.loads(rec.cover_properties) + cover_properties.update({ + 'background-image': 'url("%s")' % img_url, + }) + vals.update({ + 'cover_properties': json.dumps(cover_properties) + }) + return super(BlogPost, self).write(vals) + + def action_post_debug_view(self): + self.ensure_one() + action = self.env.ref('website_blog.action_blog_post').sudo().read()[0] + + action['views'] = [(self.env.ref('website_blog.view_blog_post_form').id, 'form')] + action['res_id'] = self.id + return action + + def action_post_code_view(self): + self.ensure_one() + action = self.env.ref('website_blog.action_blog_post').sudo().read()[0] + + action['views'] = [(self.env.ref('app_website_blog_editor.app_blog_post_form_view_code').id, 'form')] + action['res_id'] = self.id + return action diff --git a/app_website_blog_editor/models/blog_tag.py b/app_website_blog_editor/models/blog_tag.py new file mode 100644 index 00000000..46e2700a --- /dev/null +++ b/app_website_blog_editor/models/blog_tag.py @@ -0,0 +1,11 @@ +# -*- coding: utf-8 -*- + +from odoo import api, models, fields, _ + + +class BlogTag(models.Model): + _inherit = 'blog.tag' + _order = 'sequence, name' + + # 排序 + sequence = fields.Integer(string='Sequence', default=20, index=True, help="Determine the display order") diff --git a/app_website_blog_editor/models/blog_tag_category.py b/app_website_blog_editor/models/blog_tag_category.py new file mode 100644 index 00000000..b448bbdd --- /dev/null +++ b/app_website_blog_editor/models/blog_tag_category.py @@ -0,0 +1,12 @@ +# -*- coding: utf-8 -*- + +from odoo import api, models, fields, _ + + +class BlogTagCategory(models.Model): + _inherit = 'blog.tag.category' + _order = 'sequence, name' + + # 排序 + sequence = fields.Integer(string='Sequence', default=20, index=True, help="Determine the display order") + diff --git a/app_website_blog_editor/models/ir_ui_view.py b/app_website_blog_editor/models/ir_ui_view.py new file mode 100644 index 00000000..7ca3d54a --- /dev/null +++ b/app_website_blog_editor/models/ir_ui_view.py @@ -0,0 +1,16 @@ +# -*- coding: utf-8 -*- + +from odoo import api, fields, models + + +class IrUiView(models.Model): + _inherit = 'ir.ui.view' + + def write(self, vals): + # 处理强制全局, Create时不管 + for view in self: + if len(view.page_ids) == 1: + page = view.page_ids[0] + if page.is_force_all: + self = self.with_context(no_cow=1) + return super(IrUiView, self).write(vals) diff --git a/app_website_blog_editor/models/res_config_settings.py b/app_website_blog_editor/models/res_config_settings.py new file mode 100644 index 00000000..194bd9ac --- /dev/null +++ b/app_website_blog_editor/models/res_config_settings.py @@ -0,0 +1,14 @@ +# -*- coding: utf-8 -*- + +from odoo import fields, models, _ + + +class ResConfigSettings(models.TransientModel): + _inherit = "res.config.settings" + + sync_blog_meta_background_img = fields.Boolean('Use a meta image by default for blog post background', config_parameter='app_website_blog_editor.sync_blog_meta_background_img') + + def set_values(self): + res = super().set_values() + self.env['ir.config_parameter'].set_param('app_website_blog_editor.sync_blog_meta_background_img', self.sync_blog_meta_background_img) + return res diff --git a/app_website_blog_editor/models/website_page.py b/app_website_blog_editor/models/website_page.py new file mode 100644 index 00000000..3c159d56 --- /dev/null +++ b/app_website_blog_editor/models/website_page.py @@ -0,0 +1,51 @@ +# -*- coding: utf-8 -*- + +from odoo import api, fields, models + + +class WebsitePage(models.Model): + _inherit = 'website.page' + + + is_force_all = fields.Boolean('Force All Website', default=False, + help='If check, the page would use to all website, even u change.\n Important, The page url must be uniq in all website') + + def write(self, vals): + # 处理强制全局, Create时不管 + for page in self: + if page.is_force_all or vals.get('is_force_all'): + vals.update({ + 'website_id': False + }) + return super(WebsitePage, self).write(vals) + + def action_page_debug_view(self): + # 直接覆盖原生 + self.ensure_one() + return { + 'type': 'ir.actions.act_window', + 'res_model': 'ir.ui.view', + 'res_id': self.view_id.id, + 'view_mode': 'form', + 'view_id': self.env.ref('app_website_blog_editor.app_view_view_form_extend_debug').id, + } + + def action_page_code_view(self): + self.ensure_one() + return { + 'type': 'ir.actions.act_window', + 'res_model': 'ir.ui.view', + 'res_id': self.view_id.id, + 'view_mode': 'form', + 'view_id': self.env.ref('website.view_view_form_extend').id, + } + + def action_page_form_view(self): + self.ensure_one() + return { + 'type': 'ir.actions.act_window', + 'res_model': 'website.page', + 'res_id': self.id, + 'view_mode': 'form', + 'view_id': self.env.ref('website.website_pages_form_view').id, + } diff --git a/app_website_blog_editor/report/__init__.py b/app_website_blog_editor/report/__init__.py new file mode 100644 index 00000000..633f8661 --- /dev/null +++ b/app_website_blog_editor/report/__init__.py @@ -0,0 +1,2 @@ +# -*- coding: utf-8 -*- + diff --git a/app_website_blog_editor/security/app_security.xml b/app_website_blog_editor/security/app_security.xml new file mode 100644 index 00000000..a4b85605 --- /dev/null +++ b/app_website_blog_editor/security/app_security.xml @@ -0,0 +1,51 @@ + + + + + + acc_module_user + + + + + + + + + + App... + Helps you manage your ... + 8 + + + + + App User + + + The user will be able to ... + + + + + App Admin + + + The user will be able to config ... + + + + + + + + + + Users are allowed to access their own m/// + + ['|', ('partner_id', 'in', [user.partner_id.id]), ('user_id.id', '=', user.id)] + + + + + diff --git a/app_website_blog_editor/security/ir.model.access.csv b/app_website_blog_editor/security/ir.model.access.csv new file mode 100644 index 00000000..64f91fa5 --- /dev/null +++ b/app_website_blog_editor/security/ir.model.access.csv @@ -0,0 +1,3 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +access_product_attribute_value_group_user,product_attribute_value_group.user,app_product_variant_pro.model_product_attribute_value_group,base.group_user,1,0,0,0 +access_product_attribute_value_group_manager,product_attribute_value_group.manager,app_product_variant_pro.model_product_attribute_value_group,base.group_erp_manager,1,1,1,1 \ No newline at end of file diff --git a/app_website_blog_editor/static/description/banner.gif b/app_website_blog_editor/static/description/banner.gif new file mode 100644 index 00000000..e8740015 Binary files /dev/null and b/app_website_blog_editor/static/description/banner.gif differ diff --git a/app_website_blog_editor/static/description/banner.png b/app_website_blog_editor/static/description/banner.png new file mode 100644 index 00000000..c1ac1744 Binary files /dev/null and b/app_website_blog_editor/static/description/banner.png differ diff --git a/app_website_blog_editor/static/description/banner1.png b/app_website_blog_editor/static/description/banner1.png new file mode 100644 index 00000000..b363c60a Binary files /dev/null and b/app_website_blog_editor/static/description/banner1.png differ diff --git a/app_website_blog_editor/static/description/demo1.jpg b/app_website_blog_editor/static/description/demo1.jpg new file mode 100644 index 00000000..1c29be40 Binary files /dev/null and b/app_website_blog_editor/static/description/demo1.jpg differ diff --git a/app_website_blog_editor/static/description/demo2.jpg b/app_website_blog_editor/static/description/demo2.jpg new file mode 100644 index 00000000..53806943 Binary files /dev/null and b/app_website_blog_editor/static/description/demo2.jpg differ diff --git a/app_website_blog_editor/static/description/demo3.jpg b/app_website_blog_editor/static/description/demo3.jpg new file mode 100644 index 00000000..aac0145e Binary files /dev/null and b/app_website_blog_editor/static/description/demo3.jpg differ diff --git a/app_website_blog_editor/static/description/demo4.jpg b/app_website_blog_editor/static/description/demo4.jpg new file mode 100644 index 00000000..1ed34a1d Binary files /dev/null and b/app_website_blog_editor/static/description/demo4.jpg differ diff --git a/app_website_blog_editor/static/description/demo5.jpg b/app_website_blog_editor/static/description/demo5.jpg new file mode 100644 index 00000000..d06b9d12 Binary files /dev/null and b/app_website_blog_editor/static/description/demo5.jpg differ diff --git a/app_website_blog_editor/static/description/demo6.jpg b/app_website_blog_editor/static/description/demo6.jpg new file mode 100644 index 00000000..fa525b1b Binary files /dev/null and b/app_website_blog_editor/static/description/demo6.jpg differ diff --git a/app_website_blog_editor/static/description/demo7.jpg b/app_website_blog_editor/static/description/demo7.jpg new file mode 100644 index 00000000..7eddeb0c Binary files /dev/null and b/app_website_blog_editor/static/description/demo7.jpg differ diff --git a/app_website_blog_editor/static/description/icon.png b/app_website_blog_editor/static/description/icon.png new file mode 100644 index 00000000..ad6a2b10 Binary files /dev/null and b/app_website_blog_editor/static/description/icon.png differ diff --git a/app_website_blog_editor/static/description/index.html b/app_website_blog_editor/static/description/index.html new file mode 100644 index 00000000..a8a8144b --- /dev/null +++ b/app_website_blog_editor/static/description/index.html @@ -0,0 +1,190 @@ + + + + +
+

Website Blogs,Page Editor in source code.

+

Mass edit blog and page

+

Odoo网页与博文源码编辑

+
+ + + +
+

- Features -

+
+
+
+
+
+
+
+ 1 +
+

+ Edit website page and website blog in source code mode +

+
+
+
+ 2 +
+

+ Mass edit website page and blog property like url key and name, etc.. +

+
+
+
+ 3 +
+

+ Mass translate website page, blog, product to any language. +

+

this need extra pay for app_ai_seo

+
+
+
+
+
+
+
+ 4 +
+

+ Easy mass SEO builder +

+

Mass setup seo. this need extra pay for app_ai_seo

+
+
+
+ 11 +
+

+ Full Open Source.Multi-language Support. Multi-Company Support +

+

Support Odoo 18,17,16,15,14,13,12, Enterprise and Community and odoo.sh Edition.

+

代码完全开源,多语言支持,多公司支持。Odoo 18,17,16,15,14,13,12, 企业版,社区版,在线SaaS.sh版,等全版本支持

+
+
+
+
+
+
+
+ + + + +
+
+

1. Edit website page and website blog in source code mode

+

editor for website page (Switch to Developer Mode)

+
+ +
+

editor for website blog

+
+ +
+

editor source code

+
+ +
+

editor visual mode

+
+ +
+
+
+ +
+
+

2. Mass edit website page and blog property like SEO, title, description, keyword, url key and name, etc..

+

this need extra pay for app_ai_seo

+
+ +
+
+
+ +
+
+

3. Mass translate website page, website blog, website product to any language.

+

this need extra pay for app_web_translator

+
+ +
+
+
+ +
+
+

4. Easy mass seo builder. Use AI to edit website. mass setup seo.

+

this need extra pay for app_ai_seo, also app_web_translator including

+
+ +
+
+
+ + + + +
+

- How to setup and use -

+

This app need no extra d:\pjweb\o16.erpapp.cn\app-odoo-paid\app_website_product_mass_publish. The price already included

+
+
+
+

+ 1. Free download and Install +

+

+ 2. Enjoy and easy use +

+

3. More information in our FAQ

+
+ https://www.odooai.cn/faq +
+
+
+ + + + + + +
+
+
+

Technical Help & Support

+
+
+
+

+ For any type of technical help & support requests, Feel free to contact us

+ + odoo@china.com +

+ Via QQ: 300883 (App user would not get QQ or any other IM support. Only for odoo project customize.)

+ + 300883@qq.com +
+
+

Visit our website for more support.

+

https://www.odooai.cn

+
+
+
+
+ + diff --git a/app_website_blog_editor/static/img/icon_sunpop.png b/app_website_blog_editor/static/img/icon_sunpop.png new file mode 100644 index 00000000..aa490954 Binary files /dev/null and b/app_website_blog_editor/static/img/icon_sunpop.png differ diff --git a/app_website_blog_editor/static/img/logo_sunpop.png b/app_website_blog_editor/static/img/logo_sunpop.png new file mode 100644 index 00000000..bc32c24e Binary files /dev/null and b/app_website_blog_editor/static/img/logo_sunpop.png differ diff --git a/app_website_blog_editor/static/src/js/sunpop.cn b/app_website_blog_editor/static/src/js/sunpop.cn new file mode 100644 index 00000000..e69de29b diff --git a/app_website_blog_editor/static/src/scss/sunpop.cn b/app_website_blog_editor/static/src/scss/sunpop.cn new file mode 100644 index 00000000..e69de29b diff --git a/app_website_blog_editor/static/src/xml/sunpop.cn b/app_website_blog_editor/static/src/xml/sunpop.cn new file mode 100644 index 00000000..e69de29b diff --git a/app_website_blog_editor/views/blog_blog_views.xml b/app_website_blog_editor/views/blog_blog_views.xml new file mode 100644 index 00000000..7bd97e91 --- /dev/null +++ b/app_website_blog_editor/views/blog_blog_views.xml @@ -0,0 +1,30 @@ + + + + app.blog.blog.list + blog.blog + + + + + + + + + + app.blog.blog.form + blog.blog + + + +
+ +
+
+
+
+
+ + diff --git a/app_website_blog_editor/views/blog_post_views.xml b/app_website_blog_editor/views/blog_post_views.xml new file mode 100644 index 00000000..a070f332 --- /dev/null +++ b/app_website_blog_editor/views/blog_post_views.xml @@ -0,0 +1,98 @@ + + + + app.blog.post.list + blog.post + + + + + + + show + + + hide + + + show + + + show + + + + + + + + + + + + + + + +