[Libreoffice-commits] online.git: loleaflet/js

mert (via logerrit) logerrit at kemper.freedesktop.org
Mon Jun 29 06:33:46 UTC 2020


 loleaflet/js/global.js |   35 +++++++++++++++++++++++------------
 1 file changed, 23 insertions(+), 12 deletions(-)

New commits:
commit f8f6189bdd0c75b86d12268cfa97a7090ddbbe4d
Author:     mert <mert.tumer at collabora.com>
AuthorDate: Wed Jun 24 19:39:32 2020 +0300
Commit:     Andras Timar <andras.timar at collabora.com>
CommitDate: Mon Jun 29 08:33:27 2020 +0200

    Fix url errors on backgroundImage in css files for proxy
    
    Current replacing url strings method works fine,
    however, it does not cover all the rules
    for cases like when @media or @import are used.
    They have a subset of their own rules which must
    be covered as well.
    
    Change-Id: Ib10f7cc361aea5cd3b855f64e3a64566a6c51a12
    Signed-off-by: mert <mert.tumer at collabora.com>
    Reviewed-on: https://gerrit.libreoffice.org/c/online/+/97071
    Tested-by: Jenkins
    Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice at gmail.com>
    Reviewed-by: Andras Timar <andras.timar at collabora.com>

diff --git a/loleaflet/js/global.js b/loleaflet/js/global.js
index 3420b9c13..0ed660e69 100644
--- a/loleaflet/js/global.js
+++ b/loleaflet/js/global.js
@@ -571,20 +571,16 @@
 	{
 		// re-write relative URLs in CSS - somewhat grim.
 		window.addEventListener('load', function() {
-			var sheets = document.styleSheets;
-			for (var i = 0; i < sheets.length; ++i) {
-				var relBases = sheets[i].href.split('/');
-				relBases.pop(); // bin last - css name.
-				var replaceBase = 'url("' + relBases.join('/') + '/images/';
+			var replaceUrls = function(rules, replaceBase) {
+				if (!rules)
+					return;
 
-				var rules;
-				try {
-					rules = sheets[i].cssRules || sheets[i].rules;
-				} catch (err) {
-					console.log('Missing CSS from ' + sheets[i].href);
-					continue;
-				}
 				for (var r = 0; r < rules.length; ++r) {
+					// check subset of rules like @media or @import
+					if (rules[r] && rules[r].type != 1) {
+						replaceUrls(rules[r].cssRules || rules[r].rules, replaceBase);
+						continue;
+					}
 					if (!rules[r] || !rules[r].style)
 						continue;
 					var img = rules[r].style.backgroundImage;
@@ -596,6 +592,21 @@
 							img.replace('url("images/', replaceBase);
 					}
 				}
+			};
+			var sheets = document.styleSheets;
+			for (var i = 0; i < sheets.length; ++i) {
+				var relBases = sheets[i].href.split('/');
+				relBases.pop(); // bin last - css name.
+				var replaceBase = 'url("' + relBases.join('/') + '/images/';
+
+				var rules;
+				try {
+					rules = sheets[i].cssRules || sheets[i].rules;
+				} catch (err) {
+					console.log('Missing CSS from ' + sheets[i].href);
+					continue;
+				}
+				replaceUrls(rules, replaceBase);
 			}
 		}, false);
 	}


More information about the Libreoffice-commits mailing list