Products.CMFPlone/4.3.x: * Add data-base-url attribute in body tag #2051

Rodrigo Ferreira de Souza <jenkins-z4DKO/[email protected]> Sat, 29 Jul 2017 14:33:21 -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-21T16:05:57-03:00
Author: Rodrigo Ferreira de Souza (rodfersou) <[email protected]>
Commit: https://github.com/plone/Products.CMFPlone/commit/a8aace0b3a28dd7792b9af152717c549b7314958

* Add data-base-url attribute in body tag #2051
* Fix @@plone_lock_operations #2061
* Review @@sharing #2053

Files changed:
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 docs/CHANGES.rst

diff --git a/Products/CMFPlone/skins/plone_ecmascript/kss-bbb.js b/Products/CMFPlone/skins/plone_ecmascript/kss-bbb.js
index 305e9f715..afa622f38 100644
--- a/Products/CMFPlone/skins/plone_ecmascript/kss-bbb.js
+++ b/Products/CMFPlone/skins/plone_ecmascript/kss-bbb.js
@@ -1,18 +1,5 @@
 (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 = '';
-    }
-    var parser = document.createElement('a');
-    parser.href = location.href;
-    parser.pathname = parser.pathname.replace(/\/@@.*/, '');
-    parser.pathname += view;
-    return parser.href;
-}
-
 function refreshPortlet(hash, _options){
     var options = {
         data: {},
@@ -22,7 +9,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 +103,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 +122,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/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