Products.CMFPlone/4.3.x: Merge pull request #2101 from plone/issue_2051
GitHub <jenkins-z4DKO/[email protected]> Sat, 29 Jul 2017 14:33:33 -0700 (PDT)
| Newsgroups | gmane.comp.web.zope.plone.cvs |
|---|---|
| Message-ID | <[email protected]> |
Repository: Products.CMFPlone Branch: refs/heads/4.3.x Date: 2017-07-29T23:33:14+02:00 Author: Gil Forcada Codinachs (gforcada) <[email protected]> Commit: https://github.com/plone/Products.CMFPlone/commit/a6cb121a4f48ac62753babd37f58b313869f5050 Merge pull request #2101 from plone/issue_2051 * Add data-base-url attribute in body tag closes #2051 Files changed: M Products/CMFPlone/browser/jsvariables.py M Products/CMFPlone/skins/plone_ecmascript/kss-bbb.js M Products/CMFPlone/skins/plone_ecmascript/unlockOnFormUnload.js M Products/CMFPlone/skins/plone_templates/main_template.pt M Products/CMFPlone/tests/browser.txt M docs/CHANGES.rst diff --git a/Products/CMFPlone/browser/jsvariables.py b/Products/CMFPlone/browser/jsvariables.py index a2d205aa6..7215a9189 100644 --- a/Products/CMFPlone/browser/jsvariables.py +++ b/Products/CMFPlone/browser/jsvariables.py @@ -7,6 +7,7 @@ TEMPLATE = """\ var portal_url = '%(portal_url)s'; +var base_url = '%(base_url)s'; var form_modified_message = '%(form_modified)s'; var form_resubmit_message = '%(form_resubmit)s'; var external_links_open_new_window = '%(open_links)s'; @@ -36,6 +37,7 @@ def __call__(self, *args, **kwargs): props = getToolByName(context, 'portal_properties').site_properties portal_url = getToolByName(context, 'portal_url')() + base_url = self.request['HTTP_REFERER'] # the following are flags for mark_special_links.js # links get the target="_blank" attribute @@ -54,6 +56,7 @@ def __call__(self, *args, **kwargs): return TEMPLATE % dict( portal_url=portal_url, + base_url=base_url, open_links=open_links, mark_links=mark_links, form_modified=form_modified, diff --git a/Products/CMFPlone/skins/plone_ecmascript/kss-bbb.js b/Products/CMFPlone/skins/plone_ecmascript/kss-bbb.js index 305e9f715..255268cbc 100644 --- a/Products/CMFPlone/skins/plone_ecmascript/kss-bbb.js +++ b/Products/CMFPlone/skins/plone_ecmascript/kss-bbb.js @@ -1,17 +1,17 @@ (function($){ -function createURL(view){ - // using this method we keep the get parameters used with plone protect - // https://gist.github.com/jlong/2428561 - if (typeof view === 'undefined') { - view = ''; +/** +* Polyfill to add data attributes as fallback if main_template.pt is customized +*/ +$(function(){ + if (typeof($('body').attr('data-portal-url')) !== 'undefined' && + typeof($('body').attr('data-base-url')) !== 'undefined') { + // Data attributes already processed by backend + return; } - var parser = document.createElement('a'); - parser.href = location.href; - parser.pathname = parser.pathname.replace(/\/@@.*/, ''); - parser.pathname += view; - return parser.href; -} + $('body').attr('data-portal-url', portal_url); + $('body').attr('data-base-url', base_url); +}); function refreshPortlet(hash, _options){ var options = { @@ -22,7 +22,7 @@ function refreshPortlet(hash, _options){ $.extend(options, _options); options.data.portlethash = hash; ajaxOptions = options.ajaxOptions; - ajaxOptions.url = createURL('/@@render-portlet'); + ajaxOptions.url = $('body').attr('data-base-url') + '/@@render-portlet'; ajaxOptions.success = function(data){ var container = $('[data-portlethash="' + hash + '"]'); var portlet = $(data); @@ -116,7 +116,7 @@ $(document).ready(function(){ $('#content-core').delegate('#sharing-search-button', 'click', function(){ $.ajax({ - url: createURL('/@@updateSharingInfo'), + url: $('body').attr('data-base-url') + '/@@updateSharingInfo', data: { search_term: $('#sharing-user-group-search').val(), 'form.button.Search': 'Search' @@ -135,7 +135,7 @@ $(document).ready(function(){ var data = form.serializeArray(); data.push({name: 'form.button.Save', value: 'Save'}); $.ajax({ - url: createURL('/@@updateSharingInfo'), + url: $('body').attr('data-base-url') + '/@@updateSharingInfo', data: data, type: 'POST', dataType: 'json', diff --git a/Products/CMFPlone/skins/plone_ecmascript/unlockOnFormUnload.js b/Products/CMFPlone/skins/plone_ecmascript/unlockOnFormUnload.js index 4498af2d7..73239273c 100644 --- a/Products/CMFPlone/skins/plone_ecmascript/unlockOnFormUnload.js +++ b/Products/CMFPlone/skins/plone_ecmascript/unlockOnFormUnload.js @@ -34,24 +34,15 @@ plone.UnlockHandler = { // form submit process. This means: no unlock needed, // and it also would be harmful (ConflictError) if (plone.UnlockHandler.submitting) {return;} - $.ajax({url: plone.UnlockHandler._baseUrl() + '/@@plone_lock_operations/safe_unlock', async: false}); + $.ajax({ + url: $('body').attr('data-base-url') + '/@@plone_lock_operations/safe_unlock', + async: false + }); }, refresh: function() { if (plone.UnlockHandler.submitting) {return;} - $.get(plone.UnlockHandler._baseUrl() + '/@@plone_lock_operations/refresh_lock'); - }, - - _baseUrl: function() { - var baseUrl, pieces; - - baseUrl = $('base').attr('href'); - if (!baseUrl) { - pieces = window.location.href.split('/'); - pieces.pop(); - baseUrl = pieces.join('/'); - } - return baseUrl; + $.get($('body').attr('data-base-url') + '/@@plone_lock_operations/refresh_lock'); } }; diff --git a/Products/CMFPlone/skins/plone_templates/main_template.pt b/Products/CMFPlone/skins/plone_templates/main_template.pt index c637e35b2..ca538320e 100644 --- a/Products/CMFPlone/skins/plone_templates/main_template.pt +++ b/Products/CMFPlone/skins/plone_templates/main_template.pt @@ -63,7 +63,9 @@ sr python:plone_view.have_portlets('plone.rightcolumn', view); body_class python:plone_view.bodyClass(template, view);" tal:attributes="class body_class; - dir python: isRTL and 'rtl' or 'ltr'"> + dir python: isRTL and 'rtl' or 'ltr'; + data-portal-url portal_url; + data-base-url context/absolute_url"> <div id="visual-portal-wrapper"> <div id="portal-top" i18n:domain="plone"> diff --git a/Products/CMFPlone/tests/browser.txt b/Products/CMFPlone/tests/browser.txt index 2a3c64f97..d044c1cae 100644 --- a/Products/CMFPlone/tests/browser.txt +++ b/Products/CMFPlone/tests/browser.txt @@ -13,10 +13,10 @@ Test for "template id" in <body> tag. See tickets #9111/#8777 >>> browser.open('http://nohost/plone/front-page') >>> browser.contents - '...<body class="template-document_view portaltype-document site-plone section-front-page...' + '...<body data-portal-url="http://nohost/plone" class="template-document_view portaltype-document site-plone section-front-page...' >>> browser.open('http://nohost/plone/news') >>> browser.contents - '...<body class="template-folder_summary_view portaltype-collection site-plone section-news...' + '...<body data-portal-url="http://nohost/plone" class="template-folder_summary_view portaltype-collection site-plone section-news...' Login @@ -29,4 +29,4 @@ Test explicit browser view >>> browser.open('http://nohost/plone/@@dashboard') >>> browser.contents - '...<body class="template-dashboard portaltype-plone-site site-plone...' + '...<body data-portal-url="http://nohost/plone" class="template-dashboard portaltype-plone-site site-plone...' diff --git a/docs/CHANGES.rst b/docs/CHANGES.rst index 364b084c3..3006c4330 100644 --- a/docs/CHANGES.rst +++ b/docs/CHANGES.rst @@ -9,7 +9,19 @@ Changelog 4.3.16 (unreleased) ------------------- -- Nothing changed yet. +Bug fixes: + +- Add data-base-url attribute in body tag. + Closes `issue 2051 <https://github.com/plone/Products.CMFPlone/issues/2051>`_ + [rodfersou] + +- Fix @@plone_lock_operations. + Fixes `issue 2061 <https://github.com/plone/Products.CMFPlone/issues/2061>`_ + [rodfersou] + +- Review @@sharing + Fixes `issue 2053 <https://github.com/plone/Products.CMFPlone/issues/2053>`_. + [rodfersou] 4.3.15 (2017-07-03) ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot