diff --git a/addons/website/__openerp__.py b/addons/website/__openerp__.py
index 240109d005a..fe5042f4794 100644
--- a/addons/website/__openerp__.py
+++ b/addons/website/__openerp__.py
@@ -14,6 +14,7 @@ OpenERP Website CMS
'installable': True,
'data': [
'data/data.xml',
+ 'data/demo.xml',
'security/ir.model.access.csv',
'security/ir_ui_view.xml',
'views/website_templates.xml',
diff --git a/addons/website/controllers/main.py b/addons/website/controllers/main.py
index bd9e2df6bf7..7c7833703f3 100644
--- a/addons/website/controllers/main.py
+++ b/addons/website/controllers/main.py
@@ -163,7 +163,8 @@ class Website(openerp.addons.web.controllers.main.Home):
def pagenew(self, path, noredirect=False, add_menu=None):
xml_id = request.registry['website'].new_page(request.cr, request.uid, path, context=request.context)
if add_menu:
- request.registry['website.menu'].create(request.cr, request.uid, {
+ request.registry['website.menu'].create(
+ request.cr, request.uid, {
'name': path,
'url': "/page/" + xml_id,
'parent_id': request.website.menu_id.id,
@@ -202,10 +203,10 @@ class Website(openerp.addons.web.controllers.main.Home):
return request.redirect(redirect)
@http.route('/website/customize_template_get', type='json', auth='user', website=True)
- def customize_template_get(self, xml_id, full=False, bundles=False):
- """ Lists the templates customizing ``xml_id``. By default, only
- returns optional templates (which can be toggled on and off), if
- ``full=True`` returns all templates customizing ``xml_id``
+ def customize_template_get(self, key, full=False, bundles=False, **kw):
+ """ Get inherit view's informations of the template ``xml_id``. By default, only
+ returns ``customize_show`` templates (which can be active or not), if
+ ``full=True`` returns inherit view's informations of the template ``xml_id``.
``bundles=True`` returns also the asset bundles
"""
imd = request.registry['ir.model.data']
@@ -215,9 +216,8 @@ class Website(openerp.addons.web.controllers.main.Home):
user = request.registry['res.users']\
.browse(request.cr, request.uid, request.uid, request.context)
user_groups = set(user.groups_id)
-
views = request.registry["ir.ui.view"]\
- ._views_get(request.cr, request.uid, xml_id, bundles=bundles, context=dict(request.context or {}, active_test=False))
+ ._views_get(request.cr, request.uid, key, bundles=bundles, context=dict(request.context or {}, active_test=False))
done = set()
result = []
for v in views:
@@ -228,7 +228,7 @@ class Website(openerp.addons.web.controllers.main.Home):
result.append({
'name': v.inherit_id.name,
'id': v.id,
- 'xml_id': v.xml_id,
+ 'key': v.key,
'inherit_id': v.inherit_id.id,
'header': True,
'active': False
@@ -237,7 +237,7 @@ class Website(openerp.addons.web.controllers.main.Home):
result.append({
'name': v.name,
'id': v.id,
- 'xml_id': v.xml_id,
+ 'key': v.key,
'inherit_id': v.inherit_id.id,
'header': False,
'active': v.active,
diff --git a/addons/website/data/demo.xml b/addons/website/data/demo.xml
index 70fe9fbb47e..23729e58a0a 100644
--- a/addons/website/data/demo.xml
+++ b/addons/website/data/demo.xml
@@ -135,7 +135,7 @@ response = request.render("website.template_partner_comment", values)
0.0.0.0
- https://twitter.com/Odoo
+ 0.0.0.0
https://www.facebook.com/Odoo
https://plus.google.com/+Odooapps
https://www.linkedin.com/company/odoo
diff --git a/addons/website/models/ir_http.py b/addons/website/models/ir_http.py
index 6f7c650bdbd..80d7f5e52b6 100644
--- a/addons/website/models/ir_http.py
+++ b/addons/website/models/ir_http.py
@@ -38,9 +38,13 @@ class ir_http(orm.AbstractModel):
)
def _auth_method_public(self):
- # TODO: select user_id from matching website
if not request.session.uid:
- request.uid = self.pool['ir.model.data'].xmlid_to_res_id(request.cr, openerp.SUPERUSER_ID, 'base.public_user')
+ domain_name = request.httprequest.environ.get('HTTP_HOST', '').split(':')[0]
+ website_id = self.pool['website']._get_current_website_id(request.cr, openerp.SUPERUSER_ID, domain_name, context=request.context)
+ if website_id:
+ request.uid = self.pool['website'].browse(request.cr, openerp.SUPERUSER_ID, website_id, request.context).user_id.id
+ else:
+ dummy, request.uid = self.pool['ir.model.data'].get_object_reference(request.cr, openerp.SUPERUSER_ID, 'base', 'public_user')
else:
request.uid = request.session.uid
diff --git a/addons/website/models/ir_ui_view.py b/addons/website/models/ir_ui_view.py
index 51116683eb6..4018edb2c2b 100644
--- a/addons/website/models/ir_ui_view.py
+++ b/addons/website/models/ir_ui_view.py
@@ -23,11 +23,6 @@ class view(osv.osv):
'website_id': fields.many2one('website', ondelete='cascade', string="Website"),
}
- _sql_constraints = [
- ('key_website_id_uniq', 'unique(key, website_id)',
- 'Key must be unique per website.'),
- ]
-
_defaults = {
'page': False,
'customize_show': False,
diff --git a/addons/website/models/website.py b/addons/website/models/website.py
index 1feb04b2f86..e3565e9425d 100644
--- a/addons/website/models/website.py
+++ b/addons/website/models/website.py
@@ -279,16 +279,16 @@ class website(osv.osv):
@openerp.tools.ormcache(skiparg=4)
def _get_current_website_id(self, cr, uid, domain_name, context=None):
- website_id = 1
- if request:
- ids = self.search(cr, uid, [('domain', '=', domain_name)], context=context)
- if ids:
- website_id = ids[0]
- return website_id
+ ids = self.search(cr, uid, [('name', '=', domain_name)], context=context)
+ if ids:
+ return ids[0]
+ else:
+ return self.search(cr, uid, [], context=context)[0]
def get_current_website(self, cr, uid, context=None):
domain_name = request.httprequest.environ.get('HTTP_HOST', '').split(':')[0]
website_id = self._get_current_website_id(cr, uid, domain_name, context=context)
+ request.context['website_id'] = website_id
return self.browse(cr, uid, website_id, context=context)
def is_publisher(self, cr, uid, ids, context=None):
diff --git a/addons/website/static/src/js/website.ace.js b/addons/website/static/src/js/website.ace.js
index ce9fe1b4662..ad39ac92025 100644
--- a/addons/website/static/src/js/website.ace.js
+++ b/addons/website/static/src/js/website.ace.js
@@ -135,7 +135,7 @@
loadTemplates: function () {
var self = this;
var args = {
- xml_id: $(document.documentElement).data('view-xmlid'),
+ key: $(document.documentElement).data('view-xmlid'),
full: true,
bundles: !!$('script[src*=".assets_common"]').length
};
diff --git a/addons/website/static/src/js/website.editor.js b/addons/website/static/src/js/website.editor.js
index 28e2829e029..12d1b157736 100644
--- a/addons/website/static/src/js/website.editor.js
+++ b/addons/website/static/src/js/website.editor.js
@@ -901,7 +901,7 @@ define(['summernote/summernote'], function () {
rte_changed: function () {
this.$buttons.save.prop('disabled', false);
},
- save: function () {
+ _save: function () {
var self = this;
var saved = {}; // list of allready saved views and data
@@ -969,9 +969,17 @@ define(['summernote/summernote'], function () {
});
});
},
+ save: function () {
+ return this._save().then(function () {
+ website.reload();
+ });
+ },
/**
* Saves an RTE content, which always corresponds to a view section (?).
*/
+ save_without_reload: function () {
+ return this._save();
+ },
saveElement: function ($el) {
var markup = $el.prop('outerHTML');
return openerp.jsonRpc('/web/dataset/call', 'call', {
@@ -1020,10 +1028,10 @@ define(['summernote/summernote'], function () {
if(this.loaded) {
return;
}
- openerp.jsonRpc('/website/customize_template_get', 'call', { 'xml_id': this.view_name }).then(
+ openerp.jsonRpc('/website/customize_template_get', 'call', { 'key': this.view_name }).then(
function(result) {
_.each(result, function (item) {
- if (item.xml_id === "website.debugger" && !window.location.search.match(/[&?]debug(&|$)/)) return;
+ if (item.key === "website.debugger" && !window.location.search.match(/[&?]debug(&|$)/)) return;
if (item.header) {
self.$menu.append('');
} else {
diff --git a/addons/website/static/src/js/website.snippets.editor.js b/addons/website/static/src/js/website.snippets.editor.js
index 644065f5f83..5a689155392 100644
--- a/addons/website/static/src/js/website.snippets.editor.js
+++ b/addons/website/static/src/js/website.snippets.editor.js
@@ -102,7 +102,7 @@
var self = this;
this.$button = $(openerp.qweb.render('website.snippets_button'))
- .prependTo(this.parent.$("#website-top-edit ul"))
+ .prependTo(this.parent.$(".js_editor_placeholder"))
.find("button");
this.$button.click(_.bind(this.show_blocks, this));
diff --git a/addons/website/views/website_templates.xml b/addons/website/views/website_templates.xml
index cddfba663a4..fc407ac2e9e 100644
--- a/addons/website/views/website_templates.xml
+++ b/addons/website/views/website_templates.xml
@@ -59,7 +59,7 @@
t-att-data-website-id="website.id if editable and website else None"
t-att-data-editable="'1' if editable else None"
t-att-data-translatable="'1' if translatable else None"
- t-att-data-view-xmlid="xmlid if editable else None"
+ t-att-data-view-xmlid="xmlid"
t-att-data-main-object="repr(main_object) if editable else None"
t-att-data-oe-company-name="res_company.name">
@@ -88,10 +88,21 @@
-
-
+
+
+
+
+
@@ -133,28 +144,16 @@