diff --git a/app_odoo_customize/static/description/index.html b/app_odoo_customize/static/description/index.html
index 7559d58f..4bc4c66b 100644
--- a/app_odoo_customize/static/description/index.html
+++ b/app_odoo_customize/static/description/index.html
@@ -290,7 +290,7 @@
If you want to change the login page.
diff --git a/app_web_enterprise/__manifest__.py b/app_web_enterprise/__manifest__.py
index a4a6bb34..9493e3d0 100644
--- a/app_web_enterprise/__manifest__.py
+++ b/app_web_enterprise/__manifest__.py
@@ -45,7 +45,7 @@
5. Add grid line form list view. Easy to read list data.
为表格list增加行列分隔线,易于看数据。
11. Multi-language Support. Multi-Company Support.
- 12. Support Odoo 16,15,14,13,12, Enterprise and Community and odoo.sh Edition.
+ 12. Support Odoo 17,16,15,14,13,12, Enterprise and Community and odoo.sh Edition.
13. Full Open Source.
==========
1.
diff --git a/app_website_blog_editor/__init__.py b/app_website_blog_editor/__init__.py
new file mode 100644
index 00000000..9ea74431
--- /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
\ No newline at end of file
diff --git a/app_website_blog_editor/__manifest__.py b/app_website_blog_editor/__manifest__.py
new file mode 100644
index 00000000..eedc9032
--- /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': '24.03.12',
+ '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 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 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..5c278a77
--- /dev/null
+++ b/app_website_blog_editor/controllers/main.py
@@ -0,0 +1,18 @@
+# -*- coding: utf-8 -*-
+
+import re
+import werkzeug
+from odoo import http, fields, tools
+from odoo.addons.http_routing.models.ir_http import slug, unslug
+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..40a5ccf5
--- /dev/null
+++ b/app_website_blog_editor/hooks.py
@@ -0,0 +1,32 @@
+# -*- 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(cr):
+ pass
+ # cr.execute("")
+
+def post_init_hook(cr, registry):
+ pass
+ # cr.execute("")
+
+def uninstall_hook(cr, registry):
+ pass
+ # cr.execute("")
+
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..2b5975ff
--- /dev/null
+++ b/app_website_blog_editor/i18n/zh_CN.po
@@ -0,0 +1,129 @@
+# 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-20230721\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2023-10-01 19:15+0000\n"
+"PO-Revision-Date: 2023-10-01 19:15+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: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."
+msgstr "如果选中,该页面将用于所有网站,甚至 u 更改。"
+
+#. 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_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:ir.model.fields,field_description:app_website_blog_editor.field_blog_blog__seo_name
+msgid "Seo name"
+msgstr "SEO链接名"
+
+#. 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
+#: model_terms:ir.ui.view,arch_db:app_website_blog_editor.app_website_pages_tree_view
+msgid "Source Code"
+msgstr "源代码"
+
+#. 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_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..5b3d8b89
--- /dev/null
+++ b/app_website_blog_editor/models/blog_post.py
@@ -0,0 +1,44 @@
+# -*- coding: utf-8 -*-
+
+import json
+from odoo import api, models, fields, _
+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):
+ if vals.get('website_meta_og_img'):
+ 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='')
+ img_url = vals.get('website_meta_og_img').replace(web_base_url, '')
+ for rec in self:
+ 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..4d39cc9f
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..0219469f
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..0faf0b7c
--- /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网页与博文源码编辑
+
+
+
+
+
+
+
+
+
+
+
+
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 17,16,15,14,13,12, Enterprise and Community and odoo.sh Edition.
+
代码完全开源,多语言支持,多公司支持。Odoo 16,15,14,13,12, 企业版,社区版,在线SaaS.sh版,等全版本支持
+
+
+
+
+
+
+
+
+
+
+
+
+
+
1. Edit website page and website blog in source code mode
+
editor for website page
+
+

+
+
editor for website blog
+
+

+
+
editor source code
+
+

+
+
editor visual 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_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 module. 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
+
+
+
+
+
+
\ No newline at end of file
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
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ app.blog.post.form
+ blog.post
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+ app.blog.post.code
+ blog.post
+ 99
+ primary
+
+
+
+
+
+
+
+
+
+ app.blog.post.search
+ blog.post
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app_website_blog_editor/views/blog_tag_category_views.xml b/app_website_blog_editor/views/blog_tag_category_views.xml
new file mode 100644
index 00000000..673d3010
--- /dev/null
+++ b/app_website_blog_editor/views/blog_tag_category_views.xml
@@ -0,0 +1,16 @@
+
+
+
+ app.blog_tag_category_tree
+ blog.tag.category
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app_website_blog_editor/views/blog_tag_views.xml b/app_website_blog_editor/views/blog_tag_views.xml
new file mode 100644
index 00000000..a3ca5868
--- /dev/null
+++ b/app_website_blog_editor/views/blog_tag_views.xml
@@ -0,0 +1,16 @@
+
+
+
+ app.blog_tag_tree
+ blog.tag
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app_website_blog_editor/views/res_config_settings_views.xml b/app_website_blog_editor/views/res_config_settings_views.xml
new file mode 100644
index 00000000..9aedf356
--- /dev/null
+++ b/app_website_blog_editor/views/res_config_settings_views.xml
@@ -0,0 +1,23 @@
+
+
+
+ app.res.config.settings.form
+ res.config.settings
+
+
+
+
+
+
+
+
+
+
+ If set, replaces the blog post background image as the meta image.
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app_website_blog_editor/views/website_page_views.xml b/app_website_blog_editor/views/website_page_views.xml
new file mode 100644
index 00000000..dbee45f3
--- /dev/null
+++ b/app_website_blog_editor/views/website_page_views.xml
@@ -0,0 +1,106 @@
+
+
+
+ app.website.page.list
+ website.page
+
+
+
+
+
+
+ show
+
+
+ show
+
+
+ show
+
+
+ show
+
+
+ show
+
+
+ show
+
+
+ show
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ app.website.page.properties.form.view
+ website.page
+ extension
+
+
+
+
+
+
+
+
+
+ app.website.page.form
+ website.page
+ extension
+
+
+
+
+
+
+
+
+
+ app.website.page.form
+ website.page
+ primary
+
+
+
+ html
+
+
+
+
+
+ app.website.page.search
+ website.page
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app_website_blog_editor/views/website_views.xml b/app_website_blog_editor/views/website_views.xml
new file mode 100644
index 00000000..66363298
--- /dev/null
+++ b/app_website_blog_editor/views/website_views.xml
@@ -0,0 +1,36 @@
+
+
+
+
+ app.website.tree
+ website
+
+
+
+
+
+
+
+
+
+
+ hide
+
+
+ show
+
+
+
+
+
+ app.website.form
+ website
+
+
+
+
+
+
+
+
+
diff --git a/app_website_blog_editor/wizard/sunpop.cn b/app_website_blog_editor/wizard/sunpop.cn
new file mode 100644
index 00000000..e69de29b
diff --git a/app_website_sale_editor/__init__.py b/app_website_sale_editor/__init__.py
new file mode 100644
index 00000000..9ea74431
--- /dev/null
+++ b/app_website_sale_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
\ No newline at end of file
diff --git a/app_website_sale_editor/__manifest__.py b/app_website_sale_editor/__manifest__.py
new file mode 100644
index 00000000..8978080c
--- /dev/null
+++ b/app_website_sale_editor/__manifest__.py
@@ -0,0 +1,84 @@
+# -*- 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 Product Editor in Backend",
+ 'version': '24.03.12',
+ '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.png'],
+ 'depends': [
+ 'website_sale',
+ ],
+ 'summary': '''
+ Odoo App of odooai.cn
+ ''',
+ 'description': '''
+ Support Odoo 17,16,15,14,13,12, Enterprise and Community and odoo.sh Edition
+ 1.
+ 2.
+ 11. Multi-language Support. Multi-Company Support.
+ 12. Support Odoo 17,16,15,14,13,12, Enterprise and Community and odoo.sh Edition.
+ 13. Full Open Source.
+ ==========
+ 1.
+ 2.
+ 11. 多语言支持,多公司支持
+ 12. Odoo 16,15,14,13,12, 企业版,社区版,在线SaaS.sh版,等全版本支持
+ 13. 代码完全开源
+ ''',
+ 'data': [
+ 'views/product_template_views.xml',
+ 'views/product_public_category_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_sale_editor/controllers/__init__.py b/app_website_sale_editor/controllers/__init__.py
new file mode 100644
index 00000000..221005dc
--- /dev/null
+++ b/app_website_sale_editor/controllers/__init__.py
@@ -0,0 +1,2 @@
+# -*- coding: utf-8 -*-
+# from . import main
\ No newline at end of file
diff --git a/app_website_sale_editor/hooks.py b/app_website_sale_editor/hooks.py
new file mode 100644
index 00000000..40a5ccf5
--- /dev/null
+++ b/app_website_sale_editor/hooks.py
@@ -0,0 +1,32 @@
+# -*- 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(cr):
+ pass
+ # cr.execute("")
+
+def post_init_hook(cr, registry):
+ pass
+ # cr.execute("")
+
+def uninstall_hook(cr, registry):
+ pass
+ # cr.execute("")
+
diff --git a/app_website_sale_editor/i18n/zh_CN.po b/app_website_sale_editor/i18n/zh_CN.po
new file mode 100644
index 00000000..47374323
--- /dev/null
+++ b/app_website_sale_editor/i18n/zh_CN.po
@@ -0,0 +1,21 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * app_website_sale_editor
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 16.0-20230320\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2023-04-10 17:30+0000\n"
+"PO-Revision-Date: 2023-04-10 17:30+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_sale_editor
+#: model_terms:ir.ui.view,arch_db:app_website_sale_editor.app_product_template_form_view
+msgid "Website Description"
+msgstr "网站图文"
diff --git a/app_website_sale_editor/models/__init__.py b/app_website_sale_editor/models/__init__.py
new file mode 100644
index 00000000..c9f7b3bd
--- /dev/null
+++ b/app_website_sale_editor/models/__init__.py
@@ -0,0 +1,25 @@
+# -*- 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 product_template
diff --git a/app_website_sale_editor/models/product_template.py b/app_website_sale_editor/models/product_template.py
new file mode 100644
index 00000000..49c0052a
--- /dev/null
+++ b/app_website_sale_editor/models/product_template.py
@@ -0,0 +1,26 @@
+# -*- coding: utf-8 -*-
+
+from odoo import api, models, fields, _
+from odoo.tools.safe_eval import safe_eval
+
+
+class ProductTemplate(models.Model):
+ _inherit = 'product.template'
+
+ def action_product_debug_view(self):
+ self.ensure_one()
+ action = self.env.ref('website_sale.product_template_action_website').sudo().read()[0]
+
+ action['views'] = [(self.env.ref('app_website_sale_editor.app_product_template_form_view_debug').id, 'form')]
+ action['res_id'] = self.id
+ return action
+
+ def action_product_code_view(self):
+ self.ensure_one()
+
+ action = self.env.ref('website_sale.action_product_pages_list').sudo().read()[0]
+
+ action['views'] = [(self.env.ref('app_website_sale_editor.app_product_template_form_view_code').id, 'form')]
+ action['res_id'] = self.id
+ return action
+
diff --git a/app_website_sale_editor/report/__init__.py b/app_website_sale_editor/report/__init__.py
new file mode 100644
index 00000000..633f8661
--- /dev/null
+++ b/app_website_sale_editor/report/__init__.py
@@ -0,0 +1,2 @@
+# -*- coding: utf-8 -*-
+
diff --git a/app_website_sale_editor/security/app_security.xml b/app_website_sale_editor/security/app_security.xml
new file mode 100644
index 00000000..a4b85605
--- /dev/null
+++ b/app_website_sale_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_sale_editor/security/ir.model.access.csv b/app_website_sale_editor/security/ir.model.access.csv
new file mode 100644
index 00000000..64f91fa5
--- /dev/null
+++ b/app_website_sale_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_sale_editor/static/description/banner.png b/app_website_sale_editor/static/description/banner.png
new file mode 100644
index 00000000..f2059fb7
Binary files /dev/null and b/app_website_sale_editor/static/description/banner.png differ
diff --git a/app_website_sale_editor/static/description/icon.png b/app_website_sale_editor/static/description/icon.png
new file mode 100644
index 00000000..03dd92b7
Binary files /dev/null and b/app_website_sale_editor/static/description/icon.png differ
diff --git a/app_website_sale_editor/static/description/index.html b/app_website_sale_editor/static/description/index.html
new file mode 100644
index 00000000..c5a3a974
--- /dev/null
+++ b/app_website_sale_editor/static/description/index.html
@@ -0,0 +1,95 @@
+
+
+
+
+
+
+
Latest update: v13.23.03.23
+
+

+
+
+
+
Key features:
+
+ -
+
+ Put key function here.
+
+ -
+
+ 1.
+
+ -
+
+ 11. Multi-language Support. Multi-Company Support.
+
+ -
+
+ 12. Support Odoo 17,16,15,14,13,12, Enterprise and Community and odoo.sh Edition.
+
+
+
+
+
+
+
+
+
+
+
+
So Easy to navigator and search any data.
+
+
+

+
+
+
+
+
+
+
Multi-language Support..
+
+
+

+
+
+
+
+
+
+
+
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
+
+
+
+
+
+
More Powerful addons, Make your odoo very easy to use, easy customize:
+ odooai.cn Odoo Addons
+
+
+
+
diff --git a/app_website_sale_editor/static/img/icon_sunpop.png b/app_website_sale_editor/static/img/icon_sunpop.png
new file mode 100644
index 00000000..aa490954
Binary files /dev/null and b/app_website_sale_editor/static/img/icon_sunpop.png differ
diff --git a/app_website_sale_editor/static/img/logo_sunpop.png b/app_website_sale_editor/static/img/logo_sunpop.png
new file mode 100644
index 00000000..bc32c24e
Binary files /dev/null and b/app_website_sale_editor/static/img/logo_sunpop.png differ
diff --git a/app_website_sale_editor/static/src/js/sunpop.cn b/app_website_sale_editor/static/src/js/sunpop.cn
new file mode 100644
index 00000000..e69de29b
diff --git a/app_website_sale_editor/static/src/xml/sunpop.cn b/app_website_sale_editor/static/src/xml/sunpop.cn
new file mode 100644
index 00000000..e69de29b
diff --git a/app_website_sale_editor/views/product_public_category_views.xml b/app_website_sale_editor/views/product_public_category_views.xml
new file mode 100644
index 00000000..6068d434
--- /dev/null
+++ b/app_website_sale_editor/views/product_public_category_views.xml
@@ -0,0 +1,22 @@
+
+
+
+ app.product.public.category.tree
+ product.public.category
+
+
+
+ 1
+
+
+ hide
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app_website_sale_editor/views/product_template_views.xml b/app_website_sale_editor/views/product_template_views.xml
new file mode 100644
index 00000000..7f20ba63
--- /dev/null
+++ b/app_website_sale_editor/views/product_template_views.xml
@@ -0,0 +1,135 @@
+
+
+
+
+ app.product.template.tree
+ product.template
+
+ tree
+
+
+
+
+
+
+ hide
+
+
+ show
+
+
+ show
+
+
+
+
+
+
+
+
+
+
+
+ app.product.template.common.form
+ product.template
+
+ form
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ app.product.template.website.code
+ product.template
+ 99
+ primary
+
+
+
+
+
+
+ app.product.template.website.debug
+ product.template
+ 99
+ primary
+
+ form
+
+
+ html
+
+
+
+
+
+ app.product.template.website.search
+ product.template
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app_website_sale_editor/wizard/sunpop.cn b/app_website_sale_editor/wizard/sunpop.cn
new file mode 100644
index 00000000..e69de29b