diff --git a/addons/website/__openerp__.py b/addons/website/__openerp__.py
index fe5042f4794..240109d005a 100644
--- a/addons/website/__openerp__.py
+++ b/addons/website/__openerp__.py
@@ -14,7 +14,6 @@ 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 7c7833703f3..bd9e2df6bf7 100644
--- a/addons/website/controllers/main.py
+++ b/addons/website/controllers/main.py
@@ -163,8 +163,7 @@ 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,
@@ -203,10 +202,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, 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``.
+ 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``
``bundles=True`` returns also the asset bundles
"""
imd = request.registry['ir.model.data']
@@ -216,8 +215,9 @@ 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, key, bundles=bundles, context=dict(request.context or {}, active_test=False))
+ ._views_get(request.cr, request.uid, xml_id, 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,
- 'key': v.key,
+ 'xml_id': v.xml_id,
'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,
- 'key': v.key,
+ 'xml_id': v.xml_id,
'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 23729e58a0a..70fe9fbb47e 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
- 0.0.0.0
+ https://twitter.com/Odoo
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 75433da2b27..02857ed5cb6 100644
--- a/addons/website/models/ir_http.py
+++ b/addons/website/models/ir_http.py
@@ -38,13 +38,9 @@ class ir_http(orm.AbstractModel):
)
def _auth_method_public(self):
+ # TODO: select user_id from matching website
if not request.session.uid:
- 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')
+ request.uid = self.pool['ir.model.data'].xmlid_to_res_id(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 4018edb2c2b..51116683eb6 100644
--- a/addons/website/models/ir_ui_view.py
+++ b/addons/website/models/ir_ui_view.py
@@ -23,6 +23,11 @@ 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 d262a254b45..1feb04b2f86 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):
- ids = self.search(cr, uid, [('name', '=', domain_name)], context=context)
- if ids:
- return ids[0]
- else:
- return self.search(cr, uid, [], context=context)[0]
+ website_id = 1
+ if request:
+ ids = self.search(cr, uid, [('domain', '=', domain_name)], context=context)
+ if ids:
+ website_id = ids[0]
+ return website_id
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):
@@ -635,8 +635,6 @@ class website(osv.osv):
size = '' if size is None else '/%s' % size
return '/website/image/%s/%s/%s%s' % (model, id, field, size)
- def google_analytics_data(self, cr, uid, main_object, context=None):
- return {}
class website_menu(osv.osv):
_name = "website.menu"
diff --git a/addons/website/static/src/js/website.ace.js b/addons/website/static/src/js/website.ace.js
index ad39ac92025..ce9fe1b4662 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 = {
- key: $(document.documentElement).data('view-xmlid'),
+ xml_id: $(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 cc80c8e1710..849c31f9dd5 100644
--- a/addons/website/static/src/js/website.editor.js
+++ b/addons/website/static/src/js/website.editor.js
@@ -911,7 +911,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
@@ -979,17 +979,9 @@ 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', {
@@ -1038,10 +1030,10 @@ define(['summernote/summernote'], function () {
if(this.loaded) {
return;
}
- openerp.jsonRpc('/website/customize_template_get', 'call', { 'key': this.view_name }).then(
+ openerp.jsonRpc('/website/customize_template_get', 'call', { 'xml_id': this.view_name }).then(
function(result) {
_.each(result, function (item) {
- if (item.key === "website.debugger" && !window.location.search.match(/[&?]debug(&|$)/)) return;
+ if (item.xml_id === "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 fe54c4e9236..82d2022ba02 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.$(".js_editor_placeholder"))
+ .prependTo(this.parent.$("#website-top-edit ul"))
.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 8b019438e23..5169a57563e 100644
--- a/addons/website/views/website_templates.xml
+++ b/addons/website/views/website_templates.xml
@@ -85,8 +85,9 @@
-
-
+
+
+
@@ -130,21 +131,20 @@