[Libreoffice-commits] online.git: Branch 'distro/collabora/collabora-online-1-0' - 2 commits - loleaflet/dist loleaflet/src loolwsd/LOOLWSD.cpp loolwsd/test
Pranav Kant
pranavk at collabora.co.uk
Sat Oct 1 04:59:21 UTC 2016
loleaflet/dist/l10n/help-localizations.json | 232 ++++++++++++-------------
loleaflet/dist/l10n/localizations.json | 232 ++++++++++++-------------
loleaflet/dist/l10n/styles-localizations.json | 238 +++++++++++++-------------
loleaflet/dist/l10n/uno-localizations.json | 238 +++++++++++++-------------
loleaflet/dist/toolbar.css | 108 +++++------
loleaflet/src/core/Socket.js | 8
loleaflet/src/layer/marker/ProgressOverlay.js | 3
loleaflet/src/layer/tile/TileLayer.js | 2
loleaflet/src/map/Map.js | 35 ++-
loleaflet/src/map/handler/Map.FileInserter.js | 3
loolwsd/LOOLWSD.cpp | 63 ++++--
loolwsd/test/UnitAdmin.cpp | 9
loolwsd/test/helpers.hpp | 5
loolwsd/test/httpwstest.cpp | 16 -
14 files changed, 617 insertions(+), 575 deletions(-)
New commits:
commit 998f68d0ccf9313f783223d7cfd573d5b2123910
Author: Pranav Kant <pranavk at collabora.co.uk>
Date: Tue Sep 20 15:15:56 2016 +0530
Fix leaked connecting spinner; smooth reconnection
Also, if doc is already loaded, and we try to reconnect a
disconnected session, show spinner on bottom toolbar instead of
on the document.
List of cherry-picked commits:
loleaflet: Fix some cases of leaked connecting spinner
(cherry picked from commit f84cad1e8d8ac18cc39e68a156ed06961875e349)
loleaflet: Set permission to default after reconnecting
(cherry picked from commit 7db798992fac2975e7b785ef4c6c42bf5b3c0e21)
loleaflet: Smooth reconnection of documents
(cherry picked from commit 460ca57dab5aae99f10439dd0f66e7ebe89396c3)
loleaflet: Start spinner when added to map
(cherry picked from commit afe14df0476835b49d4d12a56e263a52c86dbd9b)
loleaflet: Better to have 'reconnected' signal here
(cherry picked from commit c23b37f352ec3ddf83f4d4d4a8ab1290368113fa)
loleaflet: Move loading spinner to toolbar-down when doc loaded
(cherry picked from commit b6448a8864aa05a9f779447cc43abcd47158e5dd)
diff --git a/loleaflet/src/core/Socket.js b/loleaflet/src/core/Socket.js
index 0c3c89f..abf9165 100644
--- a/loleaflet/src/core/Socket.js
+++ b/loleaflet/src/core/Socket.js
@@ -75,7 +75,6 @@ L.Socket = L.Class.extend({
if (this._map._docLayer) {
// we are reconnecting after a lost connection
msg += ' part=' + this._map.getCurrentPartNumber();
- this._map.fire('statusindicator', {statusType : 'reconnected'});
}
if (this._map.options.timestamp) {
msg += ' timestamp=' + this._map.options.timestamp;
@@ -263,6 +262,11 @@ L.Socket = L.Class.extend({
this._map._docLayer = docLayer;
this._map.addLayer(docLayer);
this._map.fire('doclayerinit');
+ } else if (textMsg.startsWith('status:')) {
+ // we are reconnecting ...
+ this._map._docLayer._onMessage('invalidatetiles: EMPTY', null);
+ this._map.fire('statusindicator', {statusType: 'reconnected'});
+ this._map.setPermission(this._map.options.permission);
}
// these can arrive very early during the startup
diff --git a/loleaflet/src/layer/marker/ProgressOverlay.js b/loleaflet/src/layer/marker/ProgressOverlay.js
index 91785e9..a6f7e35 100644
--- a/loleaflet/src/layer/marker/ProgressOverlay.js
+++ b/loleaflet/src/layer/marker/ProgressOverlay.js
@@ -20,6 +20,7 @@ L.ProgressOverlay = L.Layer.extend({
this.update();
}
+ this._spinnerInterval = L.LOUtil.startSpinner(this._spinnerCanvas, this.options.spinnerSpeed);
this._map.on('moveend', this.update, this);
},
@@ -56,8 +57,6 @@ L.ProgressOverlay = L.Layer.extend({
this._container.style.width = this._size.x + 'px';
- this._spinnerInterval = L.LOUtil.startSpinner(this._spinnerCanvas, this.options.spinnerSpeed);
-
L.DomEvent
.disableClickPropagation(this._progress)
.disableScrollPropagation(this._container);
diff --git a/loleaflet/src/map/Map.js b/loleaflet/src/map/Map.js
index 7467a8e..ea3f06f 100644
--- a/loleaflet/src/map/Map.js
+++ b/loleaflet/src/map/Map.js
@@ -2,7 +2,7 @@
* L.Map is the central class of the API - it is used to create a map.
*/
-/* global vex $ */
+/* global vex $ w2ui w2utils */
L.Map = L.Evented.extend({
options: {
@@ -129,6 +129,13 @@ L.Map = L.Evented.extend({
},
showBusy: function(label, bar) {
+ // If document is already loaded, ask the toolbar widget to show busy
+ // status on the bottom statusbar
+ if (this._docLayer) {
+ w2utils.lock(w2ui['toolbar-down'].box, label, true);
+ return;
+ }
+
this._progressBar.setLabel(label);
this._progressBar.setBar(bar);
this._progressBar.setValue(0);
@@ -139,7 +146,13 @@ L.Map = L.Evented.extend({
},
hideBusy: function () {
- this.removeLayer(this._progressBar);
+ if (w2ui['toolbar-down'].box.firstChild.className === 'w2ui-lock') {
+ w2utils.unlock(w2ui['toolbar-down'].box);
+ }
+
+ if (this.hasLayer(this._progressBar)) {
+ this.removeLayer(this._progressBar);
+ }
},
setZoom: function (zoom, options) {
@@ -696,18 +709,20 @@ L.Map = L.Evented.extend({
clearTimeout(vex.timer);
if (!this._active) {
- this._socket.sendMessage('useractive');
-
// Only activate when we are connected.
if (this._socket.connected()) {
+ this._socket.sendMessage('useractive');
this._active = true;
this._docLayer._onMessage('invalidatetiles: EMPTY', null);
+ } else {
+ this._active = true;
+ this._socket.initialize(this);
+ }
- if (vex.dialogID > 0) {
- var id = vex.dialogID;
- vex.dialogID = -1;
- return vex.close(id);
- }
+ if (vex.dialogID > 0) {
+ var id = vex.dialogID;
+ vex.dialogID = -1;
+ return vex.close(id);
}
}
@@ -809,7 +824,7 @@ L.Map = L.Evented.extend({
else if (e.statusType === 'setvalue') {
this._progressBar.setValue(e.value);
}
- else if (e.statusType === 'finish' || e.statusType === 'loleafletloaded') {
+ else if (e.statusType === 'finish' || e.statusType === 'loleafletloaded' || e.statusType === 'reconnected') {
this.hideBusy();
}
},
commit c330438526d6b90c829c90d1685b9d9d5751bdbd
Author: Pranav Kant <pranavk at collabora.co.uk>
Date: Thu Sep 29 08:22:01 2016 +0530
HA: Consistent url scheme to support load-balancing
The main purpose behind changing these urls is
to help in load-balancing. The first two parts of the URL can now
be used in a hash-based load-balancing algorithm which decides which
slave gets to serve the requests. Requests such as insertfile,
downloadas need to end up in the same slave in which document was opened.
/lool/docurl/ i.e first two parts of the URL are constant for all
the requests that should be served by a single slave.
List of cherry-picked commits:
Serve all assets (l10n, images etc.) versioned
(cherry picked from commit 12dee85ef8c4c8a2d849f32b13c6ccc5053af84a)
Change insertfile URI to include doc key in it
(cherry picked from commit 8c61ee3c949cb654eb1d36393c7776290a28d26a)
Include docurl in document download requests
(cherry picked from commit 8330341a8a6c66353f787b2136ccc44287f85dbc)
Change main websocket url for consistency with other urls
(cherry picked from commit d5f8c5b2e62f279d52673f297515fadcd1a6915c)
Additionally, also fix testEditLock to adapt to new ws url
Change-Id: I6deb9ce52ec0c9316f0b1ec2ec3cc4953a8e5845
diff --git a/loleaflet/dist/l10n/help-localizations.json b/loleaflet/dist/l10n/help-localizations.json
index 43b1bc4..8499ea7 100644
--- a/loleaflet/dist/l10n/help-localizations.json
+++ b/loleaflet/dist/l10n/help-localizations.json
@@ -1,119 +1,119 @@
{
"en": false,
- "ab": "/loleaflet/dist/l10n/help-ab.json",
- "af": "/loleaflet/dist/l10n/help-af.json",
- "am": "/loleaflet/dist/l10n/help-am.json",
- "an": "/loleaflet/dist/l10n/help-an.json",
- "ar": "/loleaflet/dist/l10n/help-ar.json",
- "as": "/loleaflet/dist/l10n/help-as.json",
- "ast": "/loleaflet/dist/l10n/help-ast.json",
- "az": "/loleaflet/dist/l10n/help-az.json",
- "be": "/loleaflet/dist/l10n/help-be.json",
- "bg": "/loleaflet/dist/l10n/help-bg.json",
- "bn-in": "/loleaflet/dist/l10n/help-bn_IN.json",
- "bn": "/loleaflet/dist/l10n/help-bn.json",
- "bo": "/loleaflet/dist/l10n/help-bo.json",
- "br": "/loleaflet/dist/l10n/help-br.json",
- "brx": "/loleaflet/dist/l10n/help-brx.json",
- "bs": "/loleaflet/dist/l10n/help-bs.json",
- "ca": "/loleaflet/dist/l10n/help-ca.json",
- "cs": "/loleaflet/dist/l10n/help-cs.json",
- "cy": "/loleaflet/dist/l10n/help-cy.json",
- "da": "/loleaflet/dist/l10n/help-da.json",
- "de": "/loleaflet/dist/l10n/help-de.json",
- "dgo": "/loleaflet/dist/l10n/help-dgo.json",
- "dz": "/loleaflet/dist/l10n/help-dz.json",
- "el": "/loleaflet/dist/l10n/help-el.json",
- "en-gb": "/loleaflet/dist/l10n/help-en_GB.json",
- "en-za": "/loleaflet/dist/l10n/help-en_ZA.json",
- "eo": "/loleaflet/dist/l10n/help-eo.json",
- "es": "/loleaflet/dist/l10n/help-es.json",
- "et": "/loleaflet/dist/l10n/help-et.json",
- "eu": "/loleaflet/dist/l10n/help-eu.json",
- "fa": "/loleaflet/dist/l10n/help-fa.json",
- "fi": "/loleaflet/dist/l10n/help-fi.json",
- "fr": "/loleaflet/dist/l10n/help-fr.json",
- "ga": "/loleaflet/dist/l10n/help-ga.json",
- "gd": "/loleaflet/dist/l10n/help-gd.json",
- "gl": "/loleaflet/dist/l10n/help-gl.json",
- "gn": "/loleaflet/dist/l10n/help-gug.json",
- "gu": "/loleaflet/dist/l10n/help-gu.json",
- "he": "/loleaflet/dist/l10n/help-he.json",
- "hi": "/loleaflet/dist/l10n/help-hi.json",
- "hr": "/loleaflet/dist/l10n/help-hr.json",
- "hu": "/loleaflet/dist/l10n/help-hu.json",
- "id": "/loleaflet/dist/l10n/help-id.json",
- "is": "/loleaflet/dist/l10n/help-is.json",
- "it": "/loleaflet/dist/l10n/help-it.json",
- "ja": "/loleaflet/dist/l10n/help-ja.json",
- "jv": "/loleaflet/dist/l10n/help-jv.json",
- "ka": "/loleaflet/dist/l10n/help-ka.json",
- "kk": "/loleaflet/dist/l10n/help-kk.json",
- "kl": "/loleaflet/dist/l10n/help-kl.json",
- "km": "/loleaflet/dist/l10n/help-km.json",
- "kn": "/loleaflet/dist/l10n/help-kn.json",
- "kok": "/loleaflet/dist/l10n/help-kok.json",
- "ko": "/loleaflet/dist/l10n/help-ko.json",
- "ks": "/loleaflet/dist/l10n/help-ks.json",
- "ky": "/loleaflet/dist/l10n/help-ky.json",
- "lb": "/loleaflet/dist/l10n/help-lb.json",
- "lo": "/loleaflet/dist/l10n/help-lo.json",
- "lt": "/loleaflet/dist/l10n/help-lt.json",
- "lv": "/loleaflet/dist/l10n/help-lv.json",
- "mai": "/loleaflet/dist/l10n/help-mai.json",
- "mk": "/loleaflet/dist/l10n/help-mk.json",
- "ml": "/loleaflet/dist/l10n/help-ml.json",
- "mni": "/loleaflet/dist/l10n/help-mni.json",
- "mn": "/loleaflet/dist/l10n/help-mn.json",
- "mr": "/loleaflet/dist/l10n/help-mr.json",
- "my": "/loleaflet/dist/l10n/help-my.json",
- "nb": "/loleaflet/dist/l10n/help-nb.json",
- "ne": "/loleaflet/dist/l10n/help-ne.json",
- "nl": "/loleaflet/dist/l10n/help-nl.json",
- "nn": "/loleaflet/dist/l10n/help-nn.json",
- "nr": "/loleaflet/dist/l10n/help-nr.json",
- "nso": "/loleaflet/dist/l10n/help-nso.json",
- "oc": "/loleaflet/dist/l10n/help-oc.json",
- "om": "/loleaflet/dist/l10n/help-om.json",
- "or": "/loleaflet/dist/l10n/help-or.json",
- "pa-in": "/loleaflet/dist/l10n/help-pa_IN.json",
- "pl": "/loleaflet/dist/l10n/help-pl.json",
- "pt-br": "/loleaflet/dist/l10n/help-pt_BR.json",
- "pt": "/loleaflet/dist/l10n/help-pt.json",
- "ro": "/loleaflet/dist/l10n/help-ro.json",
- "ru": "/loleaflet/dist/l10n/help-ru.json",
- "rw": "/loleaflet/dist/l10n/help-rw.json",
- "sah": "/loleaflet/dist/l10n/help-sah.json",
- "sa": "/loleaflet/dist/l10n/help-sa_IN.json",
- "sat": "/loleaflet/dist/l10n/help-sat.json",
- "sd": "/loleaflet/dist/l10n/help-sd.json",
- "sid": "/loleaflet/dist/l10n/help-sid.json",
- "si": "/loleaflet/dist/l10n/help-si.json",
- "sk": "/loleaflet/dist/l10n/help-sk.json",
- "sl": "/loleaflet/dist/l10n/help-sl.json",
- "sq": "/loleaflet/dist/l10n/help-sq.json",
- "sr": "/loleaflet/dist/l10n/help-sr.json",
- "ss": "/loleaflet/dist/l10n/help-ss.json",
- "st": "/loleaflet/dist/l10n/help-st.json",
- "sv": "/loleaflet/dist/l10n/help-sv.json",
- "sw": "/loleaflet/dist/l10n/help-sw_TZ.json",
- "ta": "/loleaflet/dist/l10n/help-ta.json",
- "te": "/loleaflet/dist/l10n/help-te.json",
- "tg": "/loleaflet/dist/l10n/help-tg.json",
- "th": "/loleaflet/dist/l10n/help-th.json",
- "ti": "/loleaflet/dist/l10n/help-ti.json",
- "tn": "/loleaflet/dist/l10n/help-tn.json",
- "tr": "/loleaflet/dist/l10n/help-tr.json",
- "ts": "/loleaflet/dist/l10n/help-ts.json",
- "tt": "/loleaflet/dist/l10n/help-tt.json",
- "ug": "/loleaflet/dist/l10n/help-ug.json",
- "uk": "/loleaflet/dist/l10n/help-uk.json",
- "ur": "/loleaflet/dist/l10n/help-ur.json",
- "uz": "/loleaflet/dist/l10n/help-uz.json",
- "ve": "/loleaflet/dist/l10n/help-ve.json",
- "vi": "/loleaflet/dist/l10n/help-vi.json",
- "xh": "/loleaflet/dist/l10n/help-xh.json",
- "zh-cn": "/loleaflet/dist/l10n/help-zh_CN.json",
- "zh-tw": "/loleaflet/dist/l10n/help-zh_TW.json",
- "zu": "/loleaflet/dist/l10n/help-zu.json"
+ "ab": "l10n/help-ab.json",
+ "af": "l10n/help-af.json",
+ "am": "l10n/help-am.json",
+ "an": "l10n/help-an.json",
+ "ar": "l10n/help-ar.json",
+ "as": "l10n/help-as.json",
+ "ast": "l10n/help-ast.json",
+ "az": "l10n/help-az.json",
+ "be": "l10n/help-be.json",
+ "bg": "l10n/help-bg.json",
+ "bn-in": "l10n/help-bn_IN.json",
+ "bn": "l10n/help-bn.json",
+ "bo": "l10n/help-bo.json",
+ "br": "l10n/help-br.json",
+ "brx": "l10n/help-brx.json",
+ "bs": "l10n/help-bs.json",
+ "ca": "l10n/help-ca.json",
+ "cs": "l10n/help-cs.json",
+ "cy": "l10n/help-cy.json",
+ "da": "l10n/help-da.json",
+ "de": "l10n/help-de.json",
+ "dgo": "l10n/help-dgo.json",
+ "dz": "l10n/help-dz.json",
+ "el": "l10n/help-el.json",
+ "en-gb": "l10n/help-en_GB.json",
+ "en-za": "l10n/help-en_ZA.json",
+ "eo": "l10n/help-eo.json",
+ "es": "l10n/help-es.json",
+ "et": "l10n/help-et.json",
+ "eu": "l10n/help-eu.json",
+ "fa": "l10n/help-fa.json",
+ "fi": "l10n/help-fi.json",
+ "fr": "l10n/help-fr.json",
+ "ga": "l10n/help-ga.json",
+ "gd": "l10n/help-gd.json",
+ "gl": "l10n/help-gl.json",
+ "gn": "l10n/help-gug.json",
+ "gu": "l10n/help-gu.json",
+ "he": "l10n/help-he.json",
+ "hi": "l10n/help-hi.json",
+ "hr": "l10n/help-hr.json",
+ "hu": "l10n/help-hu.json",
+ "id": "l10n/help-id.json",
+ "is": "l10n/help-is.json",
+ "it": "l10n/help-it.json",
+ "ja": "l10n/help-ja.json",
+ "jv": "l10n/help-jv.json",
+ "ka": "l10n/help-ka.json",
+ "kk": "l10n/help-kk.json",
+ "kl": "l10n/help-kl.json",
+ "km": "l10n/help-km.json",
+ "kn": "l10n/help-kn.json",
+ "kok": "l10n/help-kok.json",
+ "ko": "l10n/help-ko.json",
+ "ks": "l10n/help-ks.json",
+ "ky": "l10n/help-ky.json",
+ "lb": "l10n/help-lb.json",
+ "lo": "l10n/help-lo.json",
+ "lt": "l10n/help-lt.json",
+ "lv": "l10n/help-lv.json",
+ "mai": "l10n/help-mai.json",
+ "mk": "l10n/help-mk.json",
+ "ml": "l10n/help-ml.json",
+ "mni": "l10n/help-mni.json",
+ "mn": "l10n/help-mn.json",
+ "mr": "l10n/help-mr.json",
+ "my": "l10n/help-my.json",
+ "nb": "l10n/help-nb.json",
+ "ne": "l10n/help-ne.json",
+ "nl": "l10n/help-nl.json",
+ "nn": "l10n/help-nn.json",
+ "nr": "l10n/help-nr.json",
+ "nso": "l10n/help-nso.json",
+ "oc": "l10n/help-oc.json",
+ "om": "l10n/help-om.json",
+ "or": "l10n/help-or.json",
+ "pa-in": "l10n/help-pa_IN.json",
+ "pl": "l10n/help-pl.json",
+ "pt-br": "l10n/help-pt_BR.json",
+ "pt": "l10n/help-pt.json",
+ "ro": "l10n/help-ro.json",
+ "ru": "l10n/help-ru.json",
+ "rw": "l10n/help-rw.json",
+ "sah": "l10n/help-sah.json",
+ "sa": "l10n/help-sa_IN.json",
+ "sat": "l10n/help-sat.json",
+ "sd": "l10n/help-sd.json",
+ "sid": "l10n/help-sid.json",
+ "si": "l10n/help-si.json",
+ "sk": "l10n/help-sk.json",
+ "sl": "l10n/help-sl.json",
+ "sq": "l10n/help-sq.json",
+ "sr": "l10n/help-sr.json",
+ "ss": "l10n/help-ss.json",
+ "st": "l10n/help-st.json",
+ "sv": "l10n/help-sv.json",
+ "sw": "l10n/help-sw_TZ.json",
+ "ta": "l10n/help-ta.json",
+ "te": "l10n/help-te.json",
+ "tg": "l10n/help-tg.json",
+ "th": "l10n/help-th.json",
+ "ti": "l10n/help-ti.json",
+ "tn": "l10n/help-tn.json",
+ "tr": "l10n/help-tr.json",
+ "ts": "l10n/help-ts.json",
+ "tt": "l10n/help-tt.json",
+ "ug": "l10n/help-ug.json",
+ "uk": "l10n/help-uk.json",
+ "ur": "l10n/help-ur.json",
+ "uz": "l10n/help-uz.json",
+ "ve": "l10n/help-ve.json",
+ "vi": "l10n/help-vi.json",
+ "xh": "l10n/help-xh.json",
+ "zh-cn": "l10n/help-zh_CN.json",
+ "zh-tw": "l10n/help-zh_TW.json",
+ "zu": "l10n/help-zu.json"
}
diff --git a/loleaflet/dist/l10n/localizations.json b/loleaflet/dist/l10n/localizations.json
index 836b344..c0964d4 100644
--- a/loleaflet/dist/l10n/localizations.json
+++ b/loleaflet/dist/l10n/localizations.json
@@ -1,119 +1,119 @@
{
"en": false,
- "ab": "/loleaflet/dist/l10n/ui-ab.json",
- "af": "/loleaflet/dist/l10n/ui-af.json",
- "am": "/loleaflet/dist/l10n/ui-am.json",
- "an": "/loleaflet/dist/l10n/ui-an.json",
- "ar": "/loleaflet/dist/l10n/ui-ar.json",
- "as": "/loleaflet/dist/l10n/ui-as.json",
- "ast": "/loleaflet/dist/l10n/ui-ast.json",
- "az": "/loleaflet/dist/l10n/ui-az.json",
- "be": "/loleaflet/dist/l10n/ui-be.json",
- "bg": "/loleaflet/dist/l10n/ui-bg.json",
- "bn-in": "/loleaflet/dist/l10n/ui-bn_IN.json",
- "bn": "/loleaflet/dist/l10n/ui-bn.json",
- "bo": "/loleaflet/dist/l10n/ui-bo.json",
- "br": "/loleaflet/dist/l10n/ui-br.json",
- "brx": "/loleaflet/dist/l10n/ui-brx.json",
- "bs": "/loleaflet/dist/l10n/ui-bs.json",
- "ca": "/loleaflet/dist/l10n/ui-ca.json",
- "cs": "/loleaflet/dist/l10n/ui-cs.json",
- "cy": "/loleaflet/dist/l10n/ui-cy.json",
- "da": "/loleaflet/dist/l10n/ui-da.json",
- "de": "/loleaflet/dist/l10n/ui-de.json",
- "dgo": "/loleaflet/dist/l10n/ui-dgo.json",
- "dz": "/loleaflet/dist/l10n/ui-dz.json",
- "el": "/loleaflet/dist/l10n/ui-el.json",
- "en-gb": "/loleaflet/dist/l10n/ui-en_GB.json",
- "en-za": "/loleaflet/dist/l10n/ui-en_ZA.json",
- "eo": "/loleaflet/dist/l10n/ui-eo.json",
- "es": "/loleaflet/dist/l10n/ui-es.json",
- "et": "/loleaflet/dist/l10n/ui-et.json",
- "eu": "/loleaflet/dist/l10n/ui-eu.json",
- "fa": "/loleaflet/dist/l10n/ui-fa.json",
- "fi": "/loleaflet/dist/l10n/ui-fi.json",
- "fr": "/loleaflet/dist/l10n/ui-fr.json",
- "ga": "/loleaflet/dist/l10n/ui-ga.json",
- "gd": "/loleaflet/dist/l10n/ui-gd.json",
- "gl": "/loleaflet/dist/l10n/ui-gl.json",
- "gn": "/loleaflet/dist/l10n/ui-gug.json",
- "gu": "/loleaflet/dist/l10n/ui-gu.json",
- "he": "/loleaflet/dist/l10n/ui-he.json",
- "hi": "/loleaflet/dist/l10n/ui-hi.json",
- "hr": "/loleaflet/dist/l10n/ui-hr.json",
- "hu": "/loleaflet/dist/l10n/ui-hu.json",
- "id": "/loleaflet/dist/l10n/ui-id.json",
- "is": "/loleaflet/dist/l10n/ui-is.json",
- "it": "/loleaflet/dist/l10n/ui-it.json",
- "ja": "/loleaflet/dist/l10n/ui-ja.json",
- "jv": "/loleaflet/dist/l10n/ui-jv.json",
- "ka": "/loleaflet/dist/l10n/ui-ka.json",
- "kk": "/loleaflet/dist/l10n/ui-kk.json",
- "kl": "/loleaflet/dist/l10n/ui-kl.json",
- "km": "/loleaflet/dist/l10n/ui-km.json",
- "kn": "/loleaflet/dist/l10n/ui-kn.json",
- "kok": "/loleaflet/dist/l10n/ui-kok.json",
- "ko": "/loleaflet/dist/l10n/ui-ko.json",
- "ks": "/loleaflet/dist/l10n/ui-ks.json",
- "ky": "/loleaflet/dist/l10n/ui-ky.json",
- "lb": "/loleaflet/dist/l10n/ui-lb.json",
- "lo": "/loleaflet/dist/l10n/ui-lo.json",
- "lt": "/loleaflet/dist/l10n/ui-lt.json",
- "lv": "/loleaflet/dist/l10n/ui-lv.json",
- "mai": "/loleaflet/dist/l10n/ui-mai.json",
- "mk": "/loleaflet/dist/l10n/ui-mk.json",
- "ml": "/loleaflet/dist/l10n/ui-ml.json",
- "mni": "/loleaflet/dist/l10n/ui-mni.json",
- "mn": "/loleaflet/dist/l10n/ui-mn.json",
- "mr": "/loleaflet/dist/l10n/ui-mr.json",
- "my": "/loleaflet/dist/l10n/ui-my.json",
- "nb": "/loleaflet/dist/l10n/ui-nb.json",
- "ne": "/loleaflet/dist/l10n/ui-ne.json",
- "nl": "/loleaflet/dist/l10n/ui-nl.json",
- "nn": "/loleaflet/dist/l10n/ui-nn.json",
- "nr": "/loleaflet/dist/l10n/ui-nr.json",
- "nso": "/loleaflet/dist/l10n/ui-nso.json",
- "oc": "/loleaflet/dist/l10n/ui-oc.json",
- "om": "/loleaflet/dist/l10n/ui-om.json",
- "or": "/loleaflet/dist/l10n/ui-or.json",
- "pa-in": "/loleaflet/dist/l10n/ui-pa_IN.json",
- "pl": "/loleaflet/dist/l10n/ui-pl.json",
- "pt-br": "/loleaflet/dist/l10n/ui-pt_BR.json",
- "pt": "/loleaflet/dist/l10n/ui-pt.json",
- "ro": "/loleaflet/dist/l10n/ui-ro.json",
- "ru": "/loleaflet/dist/l10n/ui-ru.json",
- "rw": "/loleaflet/dist/l10n/ui-rw.json",
- "sah": "/loleaflet/dist/l10n/ui-sah.json",
- "sa": "/loleaflet/dist/l10n/ui-sa_IN.json",
- "sat": "/loleaflet/dist/l10n/ui-sat.json",
- "sd": "/loleaflet/dist/l10n/ui-sd.json",
- "sid": "/loleaflet/dist/l10n/ui-sid.json",
- "si": "/loleaflet/dist/l10n/ui-si.json",
- "sk": "/loleaflet/dist/l10n/ui-sk.json",
- "sl": "/loleaflet/dist/l10n/ui-sl.json",
- "sq": "/loleaflet/dist/l10n/ui-sq.json",
- "sr": "/loleaflet/dist/l10n/ui-sr.json",
- "ss": "/loleaflet/dist/l10n/ui-ss.json",
- "st": "/loleaflet/dist/l10n/ui-st.json",
- "sv": "/loleaflet/dist/l10n/ui-sv.json",
- "sw": "/loleaflet/dist/l10n/ui-sw_TZ.json",
- "ta": "/loleaflet/dist/l10n/ui-ta.json",
- "te": "/loleaflet/dist/l10n/ui-te.json",
- "tg": "/loleaflet/dist/l10n/ui-tg.json",
- "th": "/loleaflet/dist/l10n/ui-th.json",
- "ti": "/loleaflet/dist/l10n/ui-ti.json",
- "tn": "/loleaflet/dist/l10n/ui-tn.json",
- "tr": "/loleaflet/dist/l10n/ui-tr.json",
- "ts": "/loleaflet/dist/l10n/ui-ts.json",
- "tt": "/loleaflet/dist/l10n/ui-tt.json",
- "ug": "/loleaflet/dist/l10n/ui-ug.json",
- "uk": "/loleaflet/dist/l10n/ui-uk.json",
- "ur": "/loleaflet/dist/l10n/ui-ur.json",
- "uz": "/loleaflet/dist/l10n/ui-uz.json",
- "ve": "/loleaflet/dist/l10n/ui-ve.json",
- "vi": "/loleaflet/dist/l10n/ui-vi.json",
- "xh": "/loleaflet/dist/l10n/ui-xh.json",
- "zh-cn": "/loleaflet/dist/l10n/ui-zh_CN.json",
- "zh-tw": "/loleaflet/dist/l10n/ui-zh_TW.json",
- "zu": "/loleaflet/dist/l10n/ui-zu.json"
+ "ab": "l10n/ui-ab.json",
+ "af": "l10n/ui-af.json",
+ "am": "l10n/ui-am.json",
+ "an": "l10n/ui-an.json",
+ "ar": "l10n/ui-ar.json",
+ "as": "l10n/ui-as.json",
+ "ast": "l10n/ui-ast.json",
+ "az": "l10n/ui-az.json",
+ "be": "l10n/ui-be.json",
+ "bg": "l10n/ui-bg.json",
+ "bn-in": "l10n/ui-bn_IN.json",
+ "bn": "l10n/ui-bn.json",
+ "bo": "l10n/ui-bo.json",
+ "br": "l10n/ui-br.json",
+ "brx": "l10n/ui-brx.json",
+ "bs": "l10n/ui-bs.json",
+ "ca": "l10n/ui-ca.json",
+ "cs": "l10n/ui-cs.json",
+ "cy": "l10n/ui-cy.json",
+ "da": "l10n/ui-da.json",
+ "de": "l10n/ui-de.json",
+ "dgo": "l10n/ui-dgo.json",
+ "dz": "l10n/ui-dz.json",
+ "el": "l10n/ui-el.json",
+ "en-gb": "l10n/ui-en_GB.json",
+ "en-za": "l10n/ui-en_ZA.json",
+ "eo": "l10n/ui-eo.json",
+ "es": "l10n/ui-es.json",
+ "et": "l10n/ui-et.json",
+ "eu": "l10n/ui-eu.json",
+ "fa": "l10n/ui-fa.json",
+ "fi": "l10n/ui-fi.json",
+ "fr": "l10n/ui-fr.json",
+ "ga": "l10n/ui-ga.json",
+ "gd": "l10n/ui-gd.json",
+ "gl": "l10n/ui-gl.json",
+ "gn": "l10n/ui-gug.json",
+ "gu": "l10n/ui-gu.json",
+ "he": "l10n/ui-he.json",
+ "hi": "l10n/ui-hi.json",
+ "hr": "l10n/ui-hr.json",
+ "hu": "l10n/ui-hu.json",
+ "id": "l10n/ui-id.json",
+ "is": "l10n/ui-is.json",
+ "it": "l10n/ui-it.json",
+ "ja": "l10n/ui-ja.json",
+ "jv": "l10n/ui-jv.json",
+ "ka": "l10n/ui-ka.json",
+ "kk": "l10n/ui-kk.json",
+ "kl": "l10n/ui-kl.json",
+ "km": "l10n/ui-km.json",
+ "kn": "l10n/ui-kn.json",
+ "kok": "l10n/ui-kok.json",
+ "ko": "l10n/ui-ko.json",
+ "ks": "l10n/ui-ks.json",
+ "ky": "l10n/ui-ky.json",
+ "lb": "l10n/ui-lb.json",
+ "lo": "l10n/ui-lo.json",
+ "lt": "l10n/ui-lt.json",
+ "lv": "l10n/ui-lv.json",
+ "mai": "l10n/ui-mai.json",
+ "mk": "l10n/ui-mk.json",
+ "ml": "l10n/ui-ml.json",
+ "mni": "l10n/ui-mni.json",
+ "mn": "l10n/ui-mn.json",
+ "mr": "l10n/ui-mr.json",
+ "my": "l10n/ui-my.json",
+ "nb": "l10n/ui-nb.json",
+ "ne": "l10n/ui-ne.json",
+ "nl": "l10n/ui-nl.json",
+ "nn": "l10n/ui-nn.json",
+ "nr": "l10n/ui-nr.json",
+ "nso": "l10n/ui-nso.json",
+ "oc": "l10n/ui-oc.json",
+ "om": "l10n/ui-om.json",
+ "or": "l10n/ui-or.json",
+ "pa-in": "l10n/ui-pa_IN.json",
+ "pl": "l10n/ui-pl.json",
+ "pt-br": "l10n/ui-pt_BR.json",
+ "pt": "l10n/ui-pt.json",
+ "ro": "l10n/ui-ro.json",
+ "ru": "l10n/ui-ru.json",
+ "rw": "l10n/ui-rw.json",
+ "sah": "l10n/ui-sah.json",
+ "sa": "l10n/ui-sa_IN.json",
+ "sat": "l10n/ui-sat.json",
+ "sd": "l10n/ui-sd.json",
+ "sid": "l10n/ui-sid.json",
+ "si": "l10n/ui-si.json",
+ "sk": "l10n/ui-sk.json",
+ "sl": "l10n/ui-sl.json",
+ "sq": "l10n/ui-sq.json",
+ "sr": "l10n/ui-sr.json",
+ "ss": "l10n/ui-ss.json",
+ "st": "l10n/ui-st.json",
+ "sv": "l10n/ui-sv.json",
+ "sw": "l10n/ui-sw_TZ.json",
+ "ta": "l10n/ui-ta.json",
+ "te": "l10n/ui-te.json",
+ "tg": "l10n/ui-tg.json",
+ "th": "l10n/ui-th.json",
+ "ti": "l10n/ui-ti.json",
+ "tn": "l10n/ui-tn.json",
+ "tr": "l10n/ui-tr.json",
+ "ts": "l10n/ui-ts.json",
+ "tt": "l10n/ui-tt.json",
+ "ug": "l10n/ui-ug.json",
+ "uk": "l10n/ui-uk.json",
+ "ur": "l10n/ui-ur.json",
+ "uz": "l10n/ui-uz.json",
+ "ve": "l10n/ui-ve.json",
+ "vi": "l10n/ui-vi.json",
+ "xh": "l10n/ui-xh.json",
+ "zh-cn": "l10n/ui-zh_CN.json",
+ "zh-tw": "l10n/ui-zh_TW.json",
+ "zu": "l10n/ui-zu.json"
}
diff --git a/loleaflet/dist/l10n/styles-localizations.json b/loleaflet/dist/l10n/styles-localizations.json
index c706d58..355255d 100644
--- a/loleaflet/dist/l10n/styles-localizations.json
+++ b/loleaflet/dist/l10n/styles-localizations.json
@@ -1,122 +1,122 @@
{
"en": false,
- "ab": "/loleaflet/dist/l10n/styles/ab.json",
- "af": "/loleaflet/dist/l10n/styles/af.json",
- "am": "/loleaflet/dist/l10n/styles/am.json",
- "an": "/loleaflet/dist/l10n/styles/an.json",
- "ar": "/loleaflet/dist/l10n/styles/ar.json",
- "as": "/loleaflet/dist/l10n/styles/as.json",
- "ast": "/loleaflet/dist/l10n/styles/ast.json",
- "az": "/loleaflet/dist/l10n/styles/az.json",
- "be": "/loleaflet/dist/l10n/styles/be.json",
- "bg": "/loleaflet/dist/l10n/styles/bg.json",
- "bn-in": "/loleaflet/dist/l10n/styles/bn-IN.json",
- "bn": "/loleaflet/dist/l10n/styles/bn.json",
- "bo": "/loleaflet/dist/l10n/styles/bo.json",
- "br": "/loleaflet/dist/l10n/styles/br.json",
- "brx": "/loleaflet/dist/l10n/styles/brx.json",
- "bs": "/loleaflet/dist/l10n/styles/bs.json",
- "ca": "/loleaflet/dist/l10n/styles/ca.json",
- "ca-valencia": "/loleaflet/dist/l10n/styles/ca-valencia.json",
- "cs": "/loleaflet/dist/l10n/styles/cs.json",
- "cy": "/loleaflet/dist/l10n/styles/cy.json",
- "da": "/loleaflet/dist/l10n/styles/da.json",
- "de": "/loleaflet/dist/l10n/styles/de.json",
- "dgo": "/loleaflet/dist/l10n/styles/dgo.json",
- "dz": "/loleaflet/dist/l10n/styles/dz.json",
- "el": "/loleaflet/dist/l10n/styles/el.json",
- "en-gb": "/loleaflet/dist/l10n/styles/en-GB.json",
- "en-za": "/loleaflet/dist/l10n/styles/en-ZA.json",
- "eo": "/loleaflet/dist/l10n/styles/eo.json",
- "es": "/loleaflet/dist/l10n/styles/es.json",
- "et": "/loleaflet/dist/l10n/styles/et.json",
- "eu": "/loleaflet/dist/l10n/styles/eu.json",
- "fa": "/loleaflet/dist/l10n/styles/fa.json",
- "fi": "/loleaflet/dist/l10n/styles/fi.json",
- "fr": "/loleaflet/dist/l10n/styles/fr.json",
- "ga": "/loleaflet/dist/l10n/styles/ga.json",
- "gd": "/loleaflet/dist/l10n/styles/gd.json",
- "gl": "/loleaflet/dist/l10n/styles/gl.json",
- "gn": "/loleaflet/dist/l10n/styles/gug.json",
- "gu": "/loleaflet/dist/l10n/styles/gu.json",
- "he": "/loleaflet/dist/l10n/styles/he.json",
- "hi": "/loleaflet/dist/l10n/styles/hi.json",
- "hr": "/loleaflet/dist/l10n/styles/hr.json",
- "hu": "/loleaflet/dist/l10n/styles/hu.json",
- "id": "/loleaflet/dist/l10n/styles/id.json",
- "is": "/loleaflet/dist/l10n/styles/is.json",
- "it": "/loleaflet/dist/l10n/styles/it.json",
- "ja": "/loleaflet/dist/l10n/styles/ja.json",
- "jv": "/loleaflet/dist/l10n/styles/jv.json",
- "ka": "/loleaflet/dist/l10n/styles/ka.json",
- "kk": "/loleaflet/dist/l10n/styles/kk.json",
- "kl": "/loleaflet/dist/l10n/styles/kl.json",
- "km": "/loleaflet/dist/l10n/styles/km.json",
- "kmr-Latn": "/loleaflet/dist/l10n/styles/kmr-Latn.json",
- "kn": "/loleaflet/dist/l10n/styles/kn.json",
- "kok": "/loleaflet/dist/l10n/styles/kok.json",
- "ko": "/loleaflet/dist/l10n/styles/ko.json",
- "ks": "/loleaflet/dist/l10n/styles/ks.json",
- "ky": "/loleaflet/dist/l10n/styles/ky.json",
- "lb": "/loleaflet/dist/l10n/styles/lb.json",
- "lo": "/loleaflet/dist/l10n/styles/lo.json",
- "lt": "/loleaflet/dist/l10n/styles/lt.json",
- "lv": "/loleaflet/dist/l10n/styles/lv.json",
- "mai": "/loleaflet/dist/l10n/styles/mai.json",
- "mk": "/loleaflet/dist/l10n/styles/mk.json",
- "ml": "/loleaflet/dist/l10n/styles/ml.json",
- "mni": "/loleaflet/dist/l10n/styles/mni.json",
- "mn": "/loleaflet/dist/l10n/styles/mn.json",
- "mr": "/loleaflet/dist/l10n/styles/mr.json",
- "my": "/loleaflet/dist/l10n/styles/my.json",
- "nb": "/loleaflet/dist/l10n/styles/nb.json",
- "ne": "/loleaflet/dist/l10n/styles/ne.json",
- "nl": "/loleaflet/dist/l10n/styles/nl.json",
- "nn": "/loleaflet/dist/l10n/styles/nn.json",
- "nr": "/loleaflet/dist/l10n/styles/nr.json",
- "nso": "/loleaflet/dist/l10n/styles/nso.json",
- "oc": "/loleaflet/dist/l10n/styles/oc.json",
- "om": "/loleaflet/dist/l10n/styles/om.json",
- "or": "/loleaflet/dist/l10n/styles/or.json",
- "pa-in": "/loleaflet/dist/l10n/styles/pa-IN.json",
- "pl": "/loleaflet/dist/l10n/styles/pl.json",
- "pt-br": "/loleaflet/dist/l10n/styles/pt-BR.json",
- "pt": "/loleaflet/dist/l10n/styles/pt.json",
- "ro": "/loleaflet/dist/l10n/styles/ro.json",
- "ru": "/loleaflet/dist/l10n/styles/ru.json",
- "rw": "/loleaflet/dist/l10n/styles/rw.json",
- "sah": "/loleaflet/dist/l10n/styles/sah.json",
- "sa": "/loleaflet/dist/l10n/styles/sa-IN.json",
- "sat": "/loleaflet/dist/l10n/styles/sat.json",
- "sd": "/loleaflet/dist/l10n/styles/sd.json",
- "sid": "/loleaflet/dist/l10n/styles/sid.json",
- "si": "/loleaflet/dist/l10n/styles/si.json",
- "sk": "/loleaflet/dist/l10n/styles/sk.json",
- "sl": "/loleaflet/dist/l10n/styles/sl.json",
- "sq": "/loleaflet/dist/l10n/styles/sq.json",
- "sr-Latn": "/loleaflet/dist/l10n/styles/sr-Latn.json",
- "sr": "/loleaflet/dist/l10n/styles/sr.json",
- "ss": "/loleaflet/dist/l10n/styles/ss.json",
- "st": "/loleaflet/dist/l10n/styles/st.json",
- "sv": "/loleaflet/dist/l10n/styles/sv.json",
- "sw": "/loleaflet/dist/l10n/styles/sw-TZ.json",
- "ta": "/loleaflet/dist/l10n/styles/ta.json",
- "te": "/loleaflet/dist/l10n/styles/te.json",
- "tg": "/loleaflet/dist/l10n/styles/tg.json",
- "th": "/loleaflet/dist/l10n/styles/th.json",
- "ti": "/loleaflet/dist/l10n/styles/ti.json",
- "tn": "/loleaflet/dist/l10n/styles/tn.json",
- "tr": "/loleaflet/dist/l10n/styles/tr.json",
- "ts": "/loleaflet/dist/l10n/styles/ts.json",
- "tt": "/loleaflet/dist/l10n/styles/tt.json",
- "ug": "/loleaflet/dist/l10n/styles/ug.json",
- "uk": "/loleaflet/dist/l10n/styles/uk.json",
- "ur": "/loleaflet/dist/l10n/styles/ur.json",
- "uz": "/loleaflet/dist/l10n/styles/uz.json",
- "ve": "/loleaflet/dist/l10n/styles/ve.json",
- "vi": "/loleaflet/dist/l10n/styles/vi.json",
- "xh": "/loleaflet/dist/l10n/styles/xh.json",
- "zh-cn": "/loleaflet/dist/l10n/styles/zh-CN.json",
- "zh-tw": "/loleaflet/dist/l10n/styles/zh-TW.json",
- "zu": "/loleaflet/dist/l10n/styles/zu.json"
+ "ab": "l10n/styles/ab.json",
+ "af": "l10n/styles/af.json",
+ "am": "l10n/styles/am.json",
+ "an": "l10n/styles/an.json",
+ "ar": "l10n/styles/ar.json",
+ "as": "l10n/styles/as.json",
+ "ast": "l10n/styles/ast.json",
+ "az": "l10n/styles/az.json",
+ "be": "l10n/styles/be.json",
+ "bg": "l10n/styles/bg.json",
+ "bn-in": "l10n/styles/bn-IN.json",
+ "bn": "l10n/styles/bn.json",
+ "bo": "l10n/styles/bo.json",
+ "br": "l10n/styles/br.json",
+ "brx": "l10n/styles/brx.json",
+ "bs": "l10n/styles/bs.json",
+ "ca": "l10n/styles/ca.json",
+ "ca-valencia": "l10n/styles/ca-valencia.json",
+ "cs": "l10n/styles/cs.json",
+ "cy": "l10n/styles/cy.json",
+ "da": "l10n/styles/da.json",
+ "de": "l10n/styles/de.json",
+ "dgo": "l10n/styles/dgo.json",
+ "dz": "l10n/styles/dz.json",
+ "el": "l10n/styles/el.json",
+ "en-gb": "l10n/styles/en-GB.json",
+ "en-za": "l10n/styles/en-ZA.json",
+ "eo": "l10n/styles/eo.json",
+ "es": "l10n/styles/es.json",
+ "et": "l10n/styles/et.json",
+ "eu": "l10n/styles/eu.json",
+ "fa": "l10n/styles/fa.json",
+ "fi": "l10n/styles/fi.json",
+ "fr": "l10n/styles/fr.json",
+ "ga": "l10n/styles/ga.json",
+ "gd": "l10n/styles/gd.json",
+ "gl": "l10n/styles/gl.json",
+ "gn": "l10n/styles/gug.json",
+ "gu": "l10n/styles/gu.json",
+ "he": "l10n/styles/he.json",
+ "hi": "l10n/styles/hi.json",
+ "hr": "l10n/styles/hr.json",
+ "hu": "l10n/styles/hu.json",
+ "id": "l10n/styles/id.json",
+ "is": "l10n/styles/is.json",
+ "it": "l10n/styles/it.json",
+ "ja": "l10n/styles/ja.json",
+ "jv": "l10n/styles/jv.json",
+ "ka": "l10n/styles/ka.json",
+ "kk": "l10n/styles/kk.json",
+ "kl": "l10n/styles/kl.json",
+ "km": "l10n/styles/km.json",
+ "kmr-Latn": "l10n/styles/kmr-Latn.json",
+ "kn": "l10n/styles/kn.json",
+ "kok": "l10n/styles/kok.json",
+ "ko": "l10n/styles/ko.json",
+ "ks": "l10n/styles/ks.json",
+ "ky": "l10n/styles/ky.json",
+ "lb": "l10n/styles/lb.json",
+ "lo": "l10n/styles/lo.json",
+ "lt": "l10n/styles/lt.json",
+ "lv": "l10n/styles/lv.json",
+ "mai": "l10n/styles/mai.json",
+ "mk": "l10n/styles/mk.json",
+ "ml": "l10n/styles/ml.json",
+ "mni": "l10n/styles/mni.json",
+ "mn": "l10n/styles/mn.json",
+ "mr": "l10n/styles/mr.json",
+ "my": "l10n/styles/my.json",
+ "nb": "l10n/styles/nb.json",
+ "ne": "l10n/styles/ne.json",
+ "nl": "l10n/styles/nl.json",
+ "nn": "l10n/styles/nn.json",
+ "nr": "l10n/styles/nr.json",
+ "nso": "l10n/styles/nso.json",
+ "oc": "l10n/styles/oc.json",
+ "om": "l10n/styles/om.json",
+ "or": "l10n/styles/or.json",
+ "pa-in": "l10n/styles/pa-IN.json",
+ "pl": "l10n/styles/pl.json",
+ "pt-br": "l10n/styles/pt-BR.json",
+ "pt": "l10n/styles/pt.json",
+ "ro": "l10n/styles/ro.json",
+ "ru": "l10n/styles/ru.json",
+ "rw": "l10n/styles/rw.json",
+ "sah": "l10n/styles/sah.json",
+ "sa": "l10n/styles/sa-IN.json",
+ "sat": "l10n/styles/sat.json",
+ "sd": "l10n/styles/sd.json",
+ "sid": "l10n/styles/sid.json",
+ "si": "l10n/styles/si.json",
+ "sk": "l10n/styles/sk.json",
+ "sl": "l10n/styles/sl.json",
+ "sq": "l10n/styles/sq.json",
+ "sr-Latn": "l10n/styles/sr-Latn.json",
+ "sr": "l10n/styles/sr.json",
+ "ss": "l10n/styles/ss.json",
+ "st": "l10n/styles/st.json",
+ "sv": "l10n/styles/sv.json",
+ "sw": "l10n/styles/sw-TZ.json",
+ "ta": "l10n/styles/ta.json",
+ "te": "l10n/styles/te.json",
+ "tg": "l10n/styles/tg.json",
+ "th": "l10n/styles/th.json",
+ "ti": "l10n/styles/ti.json",
+ "tn": "l10n/styles/tn.json",
+ "tr": "l10n/styles/tr.json",
+ "ts": "l10n/styles/ts.json",
+ "tt": "l10n/styles/tt.json",
+ "ug": "l10n/styles/ug.json",
+ "uk": "l10n/styles/uk.json",
+ "ur": "l10n/styles/ur.json",
+ "uz": "l10n/styles/uz.json",
+ "ve": "l10n/styles/ve.json",
+ "vi": "l10n/styles/vi.json",
+ "xh": "l10n/styles/xh.json",
+ "zh-cn": "l10n/styles/zh-CN.json",
+ "zh-tw": "l10n/styles/zh-TW.json",
+ "zu": "l10n/styles/zu.json"
}
diff --git a/loleaflet/dist/l10n/uno-localizations.json b/loleaflet/dist/l10n/uno-localizations.json
index 179cecc..ca9d80c 100644
--- a/loleaflet/dist/l10n/uno-localizations.json
+++ b/loleaflet/dist/l10n/uno-localizations.json
@@ -1,122 +1,122 @@
{
"en": false,
- "ab": "/loleaflet/dist/l10n/uno/ab.json",
- "af": "/loleaflet/dist/l10n/uno/af.json",
- "am": "/loleaflet/dist/l10n/uno/am.json",
- "an": "/loleaflet/dist/l10n/uno/an.json",
- "ar": "/loleaflet/dist/l10n/uno/ar.json",
- "as": "/loleaflet/dist/l10n/uno/as.json",
- "ast": "/loleaflet/dist/l10n/uno/ast.json",
- "az": "/loleaflet/dist/l10n/uno/az.json",
- "be": "/loleaflet/dist/l10n/uno/be.json",
- "bg": "/loleaflet/dist/l10n/uno/bg.json",
- "bn-in": "/loleaflet/dist/l10n/uno/bn-IN.json",
- "bn": "/loleaflet/dist/l10n/uno/bn.json",
- "bo": "/loleaflet/dist/l10n/uno/bo.json",
- "br": "/loleaflet/dist/l10n/uno/br.json",
- "brx": "/loleaflet/dist/l10n/uno/brx.json",
- "bs": "/loleaflet/dist/l10n/uno/bs.json",
- "ca": "/loleaflet/dist/l10n/uno/ca.json",
- "ca-valencia": "/loleaflet/dist/l10n/uno/ca-valencia.json",
- "cs": "/loleaflet/dist/l10n/uno/cs.json",
- "cy": "/loleaflet/dist/l10n/uno/cy.json",
- "da": "/loleaflet/dist/l10n/uno/da.json",
- "de": "/loleaflet/dist/l10n/uno/de.json",
- "dgo": "/loleaflet/dist/l10n/uno/dgo.json",
- "dz": "/loleaflet/dist/l10n/uno/dz.json",
- "el": "/loleaflet/dist/l10n/uno/el.json",
- "en-gb": "/loleaflet/dist/l10n/uno/en-GB.json",
- "en-za": "/loleaflet/dist/l10n/uno/en-ZA.json",
- "eo": "/loleaflet/dist/l10n/uno/eo.json",
- "es": "/loleaflet/dist/l10n/uno/es.json",
- "et": "/loleaflet/dist/l10n/uno/et.json",
- "eu": "/loleaflet/dist/l10n/uno/eu.json",
- "fa": "/loleaflet/dist/l10n/uno/fa.json",
- "fi": "/loleaflet/dist/l10n/uno/fi.json",
- "fr": "/loleaflet/dist/l10n/uno/fr.json",
- "ga": "/loleaflet/dist/l10n/uno/ga.json",
- "gd": "/loleaflet/dist/l10n/uno/gd.json",
- "gl": "/loleaflet/dist/l10n/uno/gl.json",
- "gn": "/loleaflet/dist/l10n/uno/gug.json",
- "gu": "/loleaflet/dist/l10n/uno/gu.json",
- "he": "/loleaflet/dist/l10n/uno/he.json",
- "hi": "/loleaflet/dist/l10n/uno/hi.json",
- "hr": "/loleaflet/dist/l10n/uno/hr.json",
- "hu": "/loleaflet/dist/l10n/uno/hu.json",
- "id": "/loleaflet/dist/l10n/uno/id.json",
- "is": "/loleaflet/dist/l10n/uno/is.json",
- "it": "/loleaflet/dist/l10n/uno/it.json",
- "ja": "/loleaflet/dist/l10n/uno/ja.json",
- "jv": "/loleaflet/dist/l10n/uno/jv.json",
- "ka": "/loleaflet/dist/l10n/uno/ka.json",
- "kk": "/loleaflet/dist/l10n/uno/kk.json",
- "kl": "/loleaflet/dist/l10n/uno/kl.json",
- "km": "/loleaflet/dist/l10n/uno/km.json",
- "kmr-Latn": "/loleaflet/dist/l10n/uno/kmr-Latn.json",
- "kn": "/loleaflet/dist/l10n/uno/kn.json",
- "kok": "/loleaflet/dist/l10n/uno/kok.json",
- "ko": "/loleaflet/dist/l10n/uno/ko.json",
- "ks": "/loleaflet/dist/l10n/uno/ks.json",
- "ky": "/loleaflet/dist/l10n/uno/ky.json",
- "lb": "/loleaflet/dist/l10n/uno/lb.json",
- "lo": "/loleaflet/dist/l10n/uno/lo.json",
- "lt": "/loleaflet/dist/l10n/uno/lt.json",
- "lv": "/loleaflet/dist/l10n/uno/lv.json",
- "mai": "/loleaflet/dist/l10n/uno/mai.json",
- "mk": "/loleaflet/dist/l10n/uno/mk.json",
- "ml": "/loleaflet/dist/l10n/uno/ml.json",
- "mni": "/loleaflet/dist/l10n/uno/mni.json",
- "mn": "/loleaflet/dist/l10n/uno/mn.json",
- "mr": "/loleaflet/dist/l10n/uno/mr.json",
- "my": "/loleaflet/dist/l10n/uno/my.json",
- "nb": "/loleaflet/dist/l10n/uno/nb.json",
- "ne": "/loleaflet/dist/l10n/uno/ne.json",
- "nl": "/loleaflet/dist/l10n/uno/nl.json",
- "nn": "/loleaflet/dist/l10n/uno/nn.json",
- "nr": "/loleaflet/dist/l10n/uno/nr.json",
- "nso": "/loleaflet/dist/l10n/uno/nso.json",
- "oc": "/loleaflet/dist/l10n/uno/oc.json",
- "om": "/loleaflet/dist/l10n/uno/om.json",
- "or": "/loleaflet/dist/l10n/uno/or.json",
- "pa-in": "/loleaflet/dist/l10n/uno/pa-IN.json",
- "pl": "/loleaflet/dist/l10n/uno/pl.json",
- "pt-br": "/loleaflet/dist/l10n/uno/pt-BR.json",
- "pt": "/loleaflet/dist/l10n/uno/pt.json",
- "ro": "/loleaflet/dist/l10n/uno/ro.json",
- "ru": "/loleaflet/dist/l10n/uno/ru.json",
- "rw": "/loleaflet/dist/l10n/uno/rw.json",
- "sah": "/loleaflet/dist/l10n/uno/sah.json",
- "sa": "/loleaflet/dist/l10n/uno/sa-IN.json",
- "sat": "/loleaflet/dist/l10n/uno/sat.json",
- "sd": "/loleaflet/dist/l10n/uno/sd.json",
- "sid": "/loleaflet/dist/l10n/uno/sid.json",
- "si": "/loleaflet/dist/l10n/uno/si.json",
- "sk": "/loleaflet/dist/l10n/uno/sk.json",
- "sl": "/loleaflet/dist/l10n/uno/sl.json",
- "sq": "/loleaflet/dist/l10n/uno/sq.json",
- "sr-Latn": "/loleaflet/dist/l10n/uno/sr-Latn.json",
- "sr": "/loleaflet/dist/l10n/uno/sr.json",
- "ss": "/loleaflet/dist/l10n/uno/ss.json",
- "st": "/loleaflet/dist/l10n/uno/st.json",
- "sv": "/loleaflet/dist/l10n/uno/sv.json",
- "sw": "/loleaflet/dist/l10n/uno/sw-TZ.json",
- "ta": "/loleaflet/dist/l10n/uno/ta.json",
- "te": "/loleaflet/dist/l10n/uno/te.json",
- "tg": "/loleaflet/dist/l10n/uno/tg.json",
- "th": "/loleaflet/dist/l10n/uno/th.json",
- "ti": "/loleaflet/dist/l10n/uno/ti.json",
- "tn": "/loleaflet/dist/l10n/uno/tn.json",
- "tr": "/loleaflet/dist/l10n/uno/tr.json",
- "ts": "/loleaflet/dist/l10n/uno/ts.json",
- "tt": "/loleaflet/dist/l10n/uno/tt.json",
- "ug": "/loleaflet/dist/l10n/uno/ug.json",
- "uk": "/loleaflet/dist/l10n/uno/uk.json",
- "ur": "/loleaflet/dist/l10n/uno/ur.json",
- "uz": "/loleaflet/dist/l10n/uno/uz.json",
- "ve": "/loleaflet/dist/l10n/uno/ve.json",
- "vi": "/loleaflet/dist/l10n/uno/vi.json",
- "xh": "/loleaflet/dist/l10n/uno/xh.json",
- "zh-cn": "/loleaflet/dist/l10n/uno/zh-CN.json",
- "zh-tw": "/loleaflet/dist/l10n/uno/zh-TW.json",
- "zu": "/loleaflet/dist/l10n/uno/zu.json"
+ "ab": "l10n/uno/ab.json",
+ "af": "l10n/uno/af.json",
+ "am": "l10n/uno/am.json",
+ "an": "l10n/uno/an.json",
+ "ar": "l10n/uno/ar.json",
+ "as": "l10n/uno/as.json",
+ "ast": "l10n/uno/ast.json",
+ "az": "l10n/uno/az.json",
+ "be": "l10n/uno/be.json",
+ "bg": "l10n/uno/bg.json",
+ "bn-in": "l10n/uno/bn-IN.json",
+ "bn": "l10n/uno/bn.json",
+ "bo": "l10n/uno/bo.json",
+ "br": "l10n/uno/br.json",
+ "brx": "l10n/uno/brx.json",
+ "bs": "l10n/uno/bs.json",
+ "ca": "l10n/uno/ca.json",
+ "ca-valencia": "l10n/uno/ca-valencia.json",
+ "cs": "l10n/uno/cs.json",
+ "cy": "l10n/uno/cy.json",
+ "da": "l10n/uno/da.json",
+ "de": "l10n/uno/de.json",
+ "dgo": "l10n/uno/dgo.json",
+ "dz": "l10n/uno/dz.json",
+ "el": "l10n/uno/el.json",
+ "en-gb": "l10n/uno/en-GB.json",
+ "en-za": "l10n/uno/en-ZA.json",
+ "eo": "l10n/uno/eo.json",
+ "es": "l10n/uno/es.json",
+ "et": "l10n/uno/et.json",
+ "eu": "l10n/uno/eu.json",
+ "fa": "l10n/uno/fa.json",
+ "fi": "l10n/uno/fi.json",
+ "fr": "l10n/uno/fr.json",
+ "ga": "l10n/uno/ga.json",
+ "gd": "l10n/uno/gd.json",
+ "gl": "l10n/uno/gl.json",
+ "gn": "l10n/uno/gug.json",
+ "gu": "l10n/uno/gu.json",
+ "he": "l10n/uno/he.json",
+ "hi": "l10n/uno/hi.json",
+ "hr": "l10n/uno/hr.json",
+ "hu": "l10n/uno/hu.json",
+ "id": "l10n/uno/id.json",
+ "is": "l10n/uno/is.json",
+ "it": "l10n/uno/it.json",
+ "ja": "l10n/uno/ja.json",
+ "jv": "l10n/uno/jv.json",
+ "ka": "l10n/uno/ka.json",
+ "kk": "l10n/uno/kk.json",
+ "kl": "l10n/uno/kl.json",
+ "km": "l10n/uno/km.json",
+ "kmr-Latn": "l10n/uno/kmr-Latn.json",
+ "kn": "l10n/uno/kn.json",
+ "kok": "l10n/uno/kok.json",
+ "ko": "l10n/uno/ko.json",
+ "ks": "l10n/uno/ks.json",
+ "ky": "l10n/uno/ky.json",
+ "lb": "l10n/uno/lb.json",
+ "lo": "l10n/uno/lo.json",
+ "lt": "l10n/uno/lt.json",
+ "lv": "l10n/uno/lv.json",
+ "mai": "l10n/uno/mai.json",
+ "mk": "l10n/uno/mk.json",
+ "ml": "l10n/uno/ml.json",
+ "mni": "l10n/uno/mni.json",
+ "mn": "l10n/uno/mn.json",
+ "mr": "l10n/uno/mr.json",
+ "my": "l10n/uno/my.json",
+ "nb": "l10n/uno/nb.json",
+ "ne": "l10n/uno/ne.json",
+ "nl": "l10n/uno/nl.json",
+ "nn": "l10n/uno/nn.json",
+ "nr": "l10n/uno/nr.json",
+ "nso": "l10n/uno/nso.json",
+ "oc": "l10n/uno/oc.json",
+ "om": "l10n/uno/om.json",
+ "or": "l10n/uno/or.json",
+ "pa-in": "l10n/uno/pa-IN.json",
+ "pl": "l10n/uno/pl.json",
+ "pt-br": "l10n/uno/pt-BR.json",
+ "pt": "l10n/uno/pt.json",
+ "ro": "l10n/uno/ro.json",
+ "ru": "l10n/uno/ru.json",
+ "rw": "l10n/uno/rw.json",
+ "sah": "l10n/uno/sah.json",
+ "sa": "l10n/uno/sa-IN.json",
+ "sat": "l10n/uno/sat.json",
+ "sd": "l10n/uno/sd.json",
+ "sid": "l10n/uno/sid.json",
+ "si": "l10n/uno/si.json",
+ "sk": "l10n/uno/sk.json",
+ "sl": "l10n/uno/sl.json",
+ "sq": "l10n/uno/sq.json",
+ "sr-Latn": "l10n/uno/sr-Latn.json",
+ "sr": "l10n/uno/sr.json",
+ "ss": "l10n/uno/ss.json",
+ "st": "l10n/uno/st.json",
+ "sv": "l10n/uno/sv.json",
+ "sw": "l10n/uno/sw-TZ.json",
+ "ta": "l10n/uno/ta.json",
+ "te": "l10n/uno/te.json",
+ "tg": "l10n/uno/tg.json",
+ "th": "l10n/uno/th.json",
+ "ti": "l10n/uno/ti.json",
+ "tn": "l10n/uno/tn.json",
+ "tr": "l10n/uno/tr.json",
+ "ts": "l10n/uno/ts.json",
+ "tt": "l10n/uno/tt.json",
+ "ug": "l10n/uno/ug.json",
+ "uk": "l10n/uno/uk.json",
+ "ur": "l10n/uno/ur.json",
+ "uz": "l10n/uno/uz.json",
+ "ve": "l10n/uno/ve.json",
+ "vi": "l10n/uno/vi.json",
+ "xh": "l10n/uno/xh.json",
+ "zh-cn": "l10n/uno/zh-CN.json",
+ "zh-tw": "l10n/uno/zh-TW.json",
+ "zu": "l10n/uno/zu.json"
}
diff --git a/loleaflet/dist/toolbar.css b/loleaflet/dist/toolbar.css
index 8699372..7fc6660 100644
--- a/loleaflet/dist/toolbar.css
+++ b/loleaflet/dist/toolbar.css
@@ -213,60 +213,60 @@ button.leaflet-control-search-next
border-style: solid;
}
-.w2ui-icon.accepttrackedchanges{ background: url('/loleaflet/dist/images/lc_accepttrackedchanges.png') no-repeat center !important; }
-.w2ui-icon.alignblock{ background: url('/loleaflet/dist/images/lc_alignblock.png') no-repeat center !important; }
-.w2ui-icon.alignhorizontal{ background: url('/loleaflet/dist/images/lc_alignhorizontalcenter.png') no-repeat center !important; }
-.w2ui-icon.alignleft{ background: url('/loleaflet/dist/images/lc_alignleft.png') no-repeat center !important; }
-.w2ui-icon.alignright{ background: url('/loleaflet/dist/images/lc_alignright.png') no-repeat center !important; }
-.w2ui-icon.autosum{ background: url('/loleaflet/dist/images/lc_autosum.png') no-repeat center !important; }
-.w2ui-icon.backcolor{ background: url('/loleaflet/dist/images/lc_backcolor.png') no-repeat center !important; }
-.w2ui-icon.bold{ background: url('/loleaflet/dist/images/lc_bold.png') no-repeat center !important; }
-.w2ui-icon.annotation{ background: url('/loleaflet/dist/images/lc_showannotations.png') no-repeat center !important; }
-.w2ui-icon.bullet{ background: url('/loleaflet/dist/images/lc_defaultbullet.png') no-repeat center !important; }
-.w2ui-icon.cancel{ background: url('/loleaflet/dist/images/lc_cancel.png') no-repeat center !important; }
-.w2ui-icon.color{ background: url('/loleaflet/dist/images/lc_color.png') no-repeat center !important; }
-.w2ui-icon.closedoc{ background: url('/loleaflet/dist/images/lc_closedoc.png') no-repeat center !important; }
-.w2ui-icon.decrementindent{ background: url('/loleaflet/dist/images/lc_decrementindent.png') no-repeat center !important; }
-.w2ui-icon.deletepage{ background: url('/loleaflet/dist/images/lc_deletepage.png') no-repeat center !important; }
-.w2ui-icon.duplicatepage{ background: url('/loleaflet/dist/images/lc_duplicatepage.png') no-repeat center !important; }
-.w2ui-icon.edit{ background: url('/loleaflet/dist/images/lc_editdoc.png') no-repeat center !important; }
-.w2ui-icon.equal{ background: url('/loleaflet/dist/images/lc26049.png') no-repeat center !important; }
-.w2ui-icon.help{ background: url('/loleaflet/dist/images/lc_helpindex.png') no-repeat center !important; }
-.w2ui-icon.incrementindent{ background: url('/loleaflet/dist/images/lc_decrementlevel.png') no-repeat center !important; }
-.w2ui-icon.insertpage{ background: url('/loleaflet/dist/images/lc_insertpage.png') no-repeat center !important; }
-.w2ui-icon.italic{ background: url('/loleaflet/dist/images/lc_italic.png') no-repeat center !important; }
-.w2ui-icon.insertgraphic{ background: url('/loleaflet/dist/images/lc_gallery.png') no-repeat center !important; }
-.w2ui-icon.inserttable{ background: url('/loleaflet/dist/images/lc_inserttable.png') no-repeat center !important; }
-.w2ui-icon.next{ background: url('/loleaflet/dist/images/lc_downsearch.png') no-repeat center !important; }
-.w2ui-icon.numbering{ background: url('/loleaflet/dist/images/lc_defaultnumbering.png') no-repeat center !important; }
-.w2ui-icon.presentation{ background: url('/loleaflet/dist/images/lc_dia.png') no-repeat center !important; }
-.w2ui-icon.prev{ background: url('/loleaflet/dist/images/lc_upsearch.png') no-repeat center !important; }
-.w2ui-icon.print{ background: url('/loleaflet/dist/images/lc_print.png') no-repeat center !important; }
-.w2ui-icon.redo{ background: url('/loleaflet/dist/images/lc_redo.png') no-repeat center !important; }
-.w2ui-icon.save{ background: url('/loleaflet/dist/images/lc_save.png') no-repeat center !important; }
-.w2ui-icon.saveas{ background: url('/loleaflet/dist/images/lc_saveas.png') no-repeat center !important; }
-.w2ui-icon.strikeout{ background: url('/loleaflet/dist/images/lc_strikeout.png') no-repeat center !important; }
-.w2ui-icon.underline{ background: url('/loleaflet/dist/images/lc_underline.png') no-repeat center !important; }
-.w2ui-icon.undo{ background: url('/loleaflet/dist/images/lc_undo.png') no-repeat center !important; }
-.w2ui-icon.zoomin{ background: url('/loleaflet/dist/images/plus.png') no-repeat center !important; }
-.w2ui-icon.zoomout{ background: url('/loleaflet/dist/images/minus.png') no-repeat center !important; }
-.w2ui-icon.zoomreset{ background: url('/loleaflet/dist/images/lc_view100.png') no-repeat center !important; }
-.w2ui-icon.more{ background: url('/loleaflet/dist/images/lc_downsearch.png') no-repeat center !important; }
-.w2ui-icon.firstrecord{ background: url('/loleaflet/dist/images/lc_firstrecord.png') no-repeat center !important; }
-.w2ui-icon.nextrecord{ background: url('/loleaflet/dist/images/lc_nextrecord.png') no-repeat center !important; }
-.w2ui-icon.prevrecord{ background: url('/loleaflet/dist/images/lc_prevrecord.png') no-repeat center !important; }
-.w2ui-icon.lastrecord{ background: url('/loleaflet/dist/images/lc_lastrecord.png') no-repeat center !important; }
-.w2ui-icon.wraptext{ background: url('/loleaflet/dist/images/lc_wraptext.png') no-repeat center !important; }
-.w2ui-icon.togglemergecells{ background: url('/loleaflet/dist/images/lc_togglemergecells.png') no-repeat center !important; }
-.w2ui-icon.numberformatcurrency{ background: url('/loleaflet/dist/images/lc_currencyfield.png') no-repeat center !important; }
-.w2ui-icon.numberformatpercent{ background: url('/loleaflet/dist/images/lc_numberformatpercent.png') no-repeat center !important; }
-.w2ui-icon.numberformatdecimal{ background: url('/loleaflet/dist/images/lc_numberformatdecimal.png') no-repeat center !important; }
-.w2ui-icon.numberformatdate{ background: url('/loleaflet/dist/images/lc_datefield.png') no-repeat center !important; }
-.w2ui-icon.numberformatincdecimals{ background: url('/loleaflet/dist/images/lc_numberformatincdecimals.png') no-repeat center !important; }
-.w2ui-icon.numberformatdecdecimals{ background: url('/loleaflet/dist/images/lc_numberformatdecdecimals.png') no-repeat center !important; }
-.w2ui-icon.sortascending{ background: url('/loleaflet/dist/images/lc_sortascending.png') no-repeat center !important; }
-.w2ui-icon.sortdescending{ background: url('/loleaflet/dist/images/lc_sortdescending.png') no-repeat center !important; }
-.w2ui-icon.selected{ background: url('/loleaflet/dist/images/lc_ok.png') no-repeat center !important; }
+.w2ui-icon.accepttrackedchanges{ background: url('images/lc_accepttrackedchanges.png') no-repeat center !important; }
+.w2ui-icon.alignblock{ background: url('images/lc_alignblock.png') no-repeat center !important; }
+.w2ui-icon.alignhorizontal{ background: url('images/lc_alignhorizontalcenter.png') no-repeat center !important; }
+.w2ui-icon.alignleft{ background: url('images/lc_alignleft.png') no-repeat center !important; }
+.w2ui-icon.alignright{ background: url('images/lc_alignright.png') no-repeat center !important; }
+.w2ui-icon.autosum{ background: url('images/lc_autosum.png') no-repeat center !important; }
+.w2ui-icon.backcolor{ background: url('images/lc_backcolor.png') no-repeat center !important; }
+.w2ui-icon.bold{ background: url('images/lc_bold.png') no-repeat center !important; }
+.w2ui-icon.annotation{ background: url('images/lc_showannotations.png') no-repeat center !important; }
+.w2ui-icon.bullet{ background: url('images/lc_defaultbullet.png') no-repeat center !important; }
+.w2ui-icon.cancel{ background: url('images/lc_cancel.png') no-repeat center !important; }
+.w2ui-icon.color{ background: url('images/lc_color.png') no-repeat center !important; }
+.w2ui-icon.closedoc{ background: url('images/lc_closedoc.png') no-repeat center !important; }
+.w2ui-icon.decrementindent{ background: url('images/lc_decrementindent.png') no-repeat center !important; }
+.w2ui-icon.deletepage{ background: url('images/lc_deletepage.png') no-repeat center !important; }
+.w2ui-icon.duplicatepage{ background: url('images/lc_duplicatepage.png') no-repeat center !important; }
+.w2ui-icon.edit{ background: url('images/lc_editdoc.png') no-repeat center !important; }
+.w2ui-icon.equal{ background: url('images/lc26049.png') no-repeat center !important; }
+.w2ui-icon.help{ background: url('images/lc_helpindex.png') no-repeat center !important; }
+.w2ui-icon.incrementindent{ background: url('images/lc_decrementlevel.png') no-repeat center !important; }
+.w2ui-icon.insertpage{ background: url('images/lc_insertpage.png') no-repeat center !important; }
+.w2ui-icon.italic{ background: url('images/lc_italic.png') no-repeat center !important; }
+.w2ui-icon.insertgraphic{ background: url('images/lc_gallery.png') no-repeat center !important; }
+.w2ui-icon.inserttable{ background: url('images/lc_inserttable.png') no-repeat center !important; }
+.w2ui-icon.next{ background: url('images/lc_downsearch.png') no-repeat center !important; }
+.w2ui-icon.numbering{ background: url('images/lc_defaultnumbering.png') no-repeat center !important; }
+.w2ui-icon.presentation{ background: url('images/lc_dia.png') no-repeat center !important; }
+.w2ui-icon.prev{ background: url('images/lc_upsearch.png') no-repeat center !important; }
+.w2ui-icon.print{ background: url('images/lc_print.png') no-repeat center !important; }
+.w2ui-icon.redo{ background: url('images/lc_redo.png') no-repeat center !important; }
+.w2ui-icon.save{ background: url('images/lc_save.png') no-repeat center !important; }
+.w2ui-icon.saveas{ background: url('images/lc_saveas.png') no-repeat center !important; }
+.w2ui-icon.strikeout{ background: url('images/lc_strikeout.png') no-repeat center !important; }
+.w2ui-icon.underline{ background: url('images/lc_underline.png') no-repeat center !important; }
+.w2ui-icon.undo{ background: url('images/lc_undo.png') no-repeat center !important; }
+.w2ui-icon.zoomin{ background: url('images/plus.png') no-repeat center !important; }
+.w2ui-icon.zoomout{ background: url('images/minus.png') no-repeat center !important; }
+.w2ui-icon.zoomreset{ background: url('images/lc_view100.png') no-repeat center !important; }
+.w2ui-icon.more{ background: url('images/lc_downsearch.png') no-repeat center !important; }
+.w2ui-icon.firstrecord{ background: url('images/lc_firstrecord.png') no-repeat center !important; }
+.w2ui-icon.nextrecord{ background: url('images/lc_nextrecord.png') no-repeat center !important; }
+.w2ui-icon.prevrecord{ background: url('images/lc_prevrecord.png') no-repeat center !important; }
+.w2ui-icon.lastrecord{ background: url('images/lc_lastrecord.png') no-repeat center !important; }
+.w2ui-icon.wraptext{ background: url('images/lc_wraptext.png') no-repeat center !important; }
+.w2ui-icon.togglemergecells{ background: url('images/lc_togglemergecells.png') no-repeat center !important; }
+.w2ui-icon.numberformatcurrency{ background: url('images/lc_currencyfield.png') no-repeat center !important; }
+.w2ui-icon.numberformatpercent{ background: url('images/lc_numberformatpercent.png') no-repeat center !important; }
+.w2ui-icon.numberformatdecimal{ background: url('images/lc_numberformatdecimal.png') no-repeat center !important; }
+.w2ui-icon.numberformatdate{ background: url('images/lc_datefield.png') no-repeat center !important; }
+.w2ui-icon.numberformatincdecimals{ background: url('images/lc_numberformatincdecimals.png') no-repeat center !important; }
+.w2ui-icon.numberformatdecdecimals{ background: url('images/lc_numberformatdecdecimals.png') no-repeat center !important; }
+.w2ui-icon.sortascending{ background: url('images/lc_sortascending.png') no-repeat center !important; }
+.w2ui-icon.sortdescending{ background: url('images/lc_sortdescending.png') no-repeat center !important; }
+.w2ui-icon.selected{ background: url('images/lc_ok.png') no-repeat center !important; }
.inserttable-pop {
z-index: 100000;
diff --git a/loleaflet/src/core/Socket.js b/loleaflet/src/core/Socket.js
index 7cb235a..0c3c89f 100644
--- a/loleaflet/src/core/Socket.js
+++ b/loleaflet/src/core/Socket.js
@@ -9,7 +9,7 @@ L.Socket = L.Class.extend({
initialize: function (map) {
this._map = map;
try {
- this.socket = new WebSocket(map.options.server + '/lool/ws/' + map.options.doc);
+ this.socket = new WebSocket(map.options.server + '/lool/' + encodeURIComponent(map.options.doc) + '/ws');
} catch (e) {
this.fire('error', {msg: _('Oops, there is a problem connecting to LibreOffice Online : ' + e), cmd: 'socket', kind: 'failed', id: 3});
return null;
diff --git a/loleaflet/src/layer/tile/TileLayer.js b/loleaflet/src/layer/tile/TileLayer.js
index c11cc45..68fb0ff 100644
--- a/loleaflet/src/layer/tile/TileLayer.js
+++ b/loleaflet/src/layer/tile/TileLayer.js
@@ -380,7 +380,7 @@ L.TileLayer = L.GridLayer.extend({
var parser = document.createElement('a');
parser.href = this._map.options.server;
var url = this._map.options.webserver + '/' + this._map.options.urlPrefix + '/' +
- command.jail + '/' + command.dir + '/' + command.name;
+ encodeURIComponent(this._map.options.doc) + '/' + command.jail + '/' + command.dir + '/' + command.name;
this._map.hideBusy();
if (command.id === 'print') {
diff --git a/loleaflet/src/map/handler/Map.FileInserter.js b/loleaflet/src/map/handler/Map.FileInserter.js
index 7e90a2a..3b5401e 100644
--- a/loleaflet/src/map/handler/Map.FileInserter.js
+++ b/loleaflet/src/map/handler/Map.FileInserter.js
@@ -14,7 +14,8 @@ L.Map.FileInserter = L.Handler.extend({
this._toInsert = {};
var parser = document.createElement('a');
parser.href = map.options.server;
- this._url = map.options.webserver + '/' + map.options.urlPrefix + '/insertfile';
+ this._url = map.options.webserver + '/' + map.options.urlPrefix +
+ '/' + encodeURIComponent(map.options.doc) + '/insertfile';
},
addHooks: function () {
diff --git a/loolwsd/LOOLWSD.cpp b/loolwsd/LOOLWSD.cpp
index e9ce1d6..00e9471 100644
--- a/loolwsd/LOOLWSD.cpp
+++ b/loolwsd/LOOLWSD.cpp
@@ -459,7 +459,7 @@ private:
return true;
}
- else if (tokens.count() >= 3 && tokens[2] == "insertfile")
+ else if (tokens.count() >= 4 && tokens[3] == "insertfile")
{
Log::info("Insert file request.");
response.set("Access-Control-Allow-Origin", "*");
@@ -475,6 +475,20 @@ private:
const std::string formChildid(form.get("childid"));
const std::string formName(form.get("name"));
+ // Validate the docKey
+ std::unique_lock<std::mutex> docBrokersLock(docBrokersMutex);
+ std::string decodedUri;
+ URI::decode(tokens[2], decodedUri);
+ const auto docKey = DocumentBroker::getDocKey(DocumentBroker::sanitizeURI(decodedUri));
+ auto docBrokerIt = docBrokers.find(docKey);
+
+ // Maybe just free the client from sending childid in form ?
+ if (docBrokerIt == docBrokers.end() || docBrokerIt->second->getJailId() != formChildid)
+ {
+ throw BadRequestException("DocKey [" + docKey + "] or childid [" + formChildid + "] is invalid.");
+ }
+ docBrokersLock.unlock();
+
// protect against attempts to inject something funny here
if (formChildid.find('/') == std::string::npos && formName.find('/') == std::string::npos)
{
@@ -488,18 +502,30 @@ private:
}
}
}
- else if (tokens.count() >= 5)
+ else if (tokens.count() >= 6)
{
Log::info("File download request.");
- // The user might request a file to download
//TODO: Check that the user in question has access to this file!
- const std::string dirPath = LOOLWSD::ChildRoot + tokens[2]
- + JAILED_DOCUMENT_ROOT + tokens[3];
+ const std::string dirPath = LOOLWSD::ChildRoot + tokens[3]
+ + JAILED_DOCUMENT_ROOT + tokens[4];
std::string fileName;
- URI::decode(tokens[4], fileName);
+ URI::decode(tokens[5], fileName);
const std::string filePath = dirPath + "/" + fileName;
Log::info("HTTP request for: " + filePath);
File file(filePath);
+
+ // Validate the dockey
+ std::string decodedUri;
+ URI::decode(tokens[2], decodedUri);
+ const auto docKey = DocumentBroker::getDocKey(DocumentBroker::sanitizeURI(decodedUri));
+ std::unique_lock<std::mutex> docBrokersLock(docBrokersMutex);
+ auto docBrokerIt = docBrokers.find(docKey);
+ if (docBrokerIt == docBrokers.end())
+ {
+ throw BadRequestException("DocKey [" + docKey + "] is invalid.");
+ }
+ docBrokersLock.unlock();
+
if (file.exists())
{
response.set("Access-Control-Allow-Origin", "*");
@@ -522,7 +548,7 @@ private:
}
/// Handle GET requests.
- static void handleGetRequest(HTTPServerRequest& request, std::shared_ptr<WebSocket>& ws, const std::string& id)
+ static void handleGetRequest(const std::string& uri, std::shared_ptr<WebSocket>& ws, const std::string& id)
{
Log::info("Starting GET request handler for session [" + id + "].");
@@ -531,16 +557,6 @@ private:
Log::trace("Sending to Client [" + status + "].");
ws->sendFrame(status.data(), (int) status.size());
- // Remove the leading '/' in the GET URL.
- std::string uri = request.getURI();
- if (uri.size() > 0 && uri[0] == '/')
- uri.erase(0, 1);
-
- // Remove leading 'lool/ws/' from GET URL
- if (uri.size() > 0 && uri.compare(0, 8, "lool/ws/") == 0)
- uri.erase(0, 8);
-
-
const auto uriPublic = DocumentBroker::sanitizeURI(uri);
const auto docKey = DocumentBroker::getDocKey(uriPublic);
std::shared_ptr<DocumentBroker> docBroker;
@@ -841,8 +857,9 @@ public:
const auto id = LOOLWSD::GenSessionId();
Poco::URI requestUri(request.getURI());
- std::vector<std::string> reqPathSegs;
- requestUri.getPathSegments(reqPathSegs);
+ Log::debug("Handling GET: " + request.getURI());
+
+ StringTokenizer reqPathTokens(request.getURI(), "/?", StringTokenizer::TOK_IGNORE_EMPTY | StringTokenizer::TOK_TRIM);
Util::setThreadName("client_ws_" + id);
@@ -884,17 +901,19 @@ public:
}
// All post requests have url prefix, lool
else if (!(request.find("Upgrade") != request.end() && Poco::icompare(request["Upgrade"], "websocket") == 0) &&
- reqPathSegs.size() > 0 && reqPathSegs[0] == "lool")
+ reqPathTokens.count() > 0 && reqPathTokens[0] == "lool")
{
responded = handlePostRequest(request, response, id);
}
- else if (reqPathSegs.size() > 2 && reqPathSegs[0] == "lool" && reqPathSegs[1] == "ws")
+ else if (reqPathTokens.count() > 2 && reqPathTokens[0] == "lool" && reqPathTokens[2] == "ws")
{
auto ws = std::make_shared<WebSocket>(request, response);
try
{
responded = true; // After upgrading to WS we should not set HTTP response.
- handleGetRequest(request, ws, id);
+ std::string decodedUri;
+ URI::decode(reqPathTokens[1], decodedUri);
+ handleGetRequest(decodedUri, ws, id);
}
catch (const WebSocketErrorMessageException& exc)
{
diff --git a/loolwsd/test/UnitAdmin.cpp b/loolwsd/test/UnitAdmin.cpp
index 2ae8520..1f536a7 100644
--- a/loolwsd/test/UnitAdmin.cpp
+++ b/loolwsd/test/UnitAdmin.cpp
@@ -191,8 +191,9 @@ private:
const std::string subscribeMessage = "subscribe adddoc";
_adminWs->sendFrame(subscribeMessage.data(), subscribeMessage.size());
- const std::string documentPath1 = Util::getTempFilePath(TDOC, "hello.odt");
- const std::string documentURL1 = std::string("lool/ws/") + "file://" + Poco::Path(documentPath1).makeAbsolute().toString();
+
+ std::string documentPath1, documentURL1;
+ helpers::getDocumentPathAndURL("hello.odt", documentPath1, documentURL1);
HTTPRequest request1(HTTPRequest::HTTP_GET, documentURL1);
HTTPResponse response1;
const Poco::URI docUri1(helpers::getTestServerURI());
@@ -255,8 +256,8 @@ private:
}
// Open another document (different)
- const std::string documentPath2 = Util::getTempFilePath(TDOC, "insert-delete.odp");
- const std::string documentURL2 = std::string("lool/ws/") + "file://" + Poco::Path(documentPath2).makeAbsolute().toString();
+ std::string documentPath2, documentURL2;
+ helpers::getDocumentPathAndURL("insert-delete.odp", documentPath2, documentURL2);
HTTPRequest request2(HTTPRequest::HTTP_GET, documentURL2);
HTTPResponse response2;
const Poco::URI docUri2(helpers::getTestServerURI());
diff --git a/loolwsd/test/helpers.hpp b/loolwsd/test/helpers.hpp
index 3214e58..e676ff1 100644
--- a/loolwsd/test/helpers.hpp
+++ b/loolwsd/test/helpers.hpp
@@ -52,8 +52,9 @@ inline
void getDocumentPathAndURL(const char* document, std::string& documentPath, std::string& documentURL)
{
documentPath = Util::getTempFilePath(TDOC, document);
- documentURL = "lool/ws/file://" + Poco::Path(documentPath).makeAbsolute().toString();
-
+ std::string encodedUri;
+ Poco::URI::encode("file://" + Poco::Path(documentPath).makeAbsolute().toString(), ":/?", encodedUri);
+ documentURL = "lool/" + encodedUri + "/ws";
std::cerr << "Test file: " << documentPath << std::endl;
}
diff --git a/loolwsd/test/httpwstest.cpp b/loolwsd/test/httpwstest.cpp
index bd57d03..bf87306 100644
--- a/loolwsd/test/httpwstest.cpp
+++ b/loolwsd/test/httpwstest.cpp
@@ -192,8 +192,8 @@ void HTTPWSTest::testBadRequest()
{
try
{
- // Load a document and get its status.
- const std::string documentURL = "lool/ws/file:///fake.doc";
+ // Try to load a fake document and get its status.
+ const std::string documentURL = "/lool/file%3A%2F%2F%2Ffake.doc/ws";
Poco::Net::HTTPResponse response;
Poco::Net::HTTPRequest request(Poco::Net::HTTPRequest::HTTP_GET, documentURL);
@@ -905,8 +905,8 @@ void HTTPWSTest::testPasswordProtectedDocumentWithCorrectPassword()
{
try
{
- const std::string documentPath = Util::getTempFilePath(TDOC, "password-protected.ods");
- const std::string documentURL = "lool/ws/file://" + Poco::Path(documentPath).makeAbsolute().toString();
+ std::string documentPath, documentURL;
+ getDocumentPathAndURL("password-protected.ods", documentPath, documentURL);
Poco::Net::HTTPRequest request(Poco::Net::HTTPRequest::HTTP_GET, documentURL);
Poco::Net::WebSocket socket = *connectLOKit(_uri, request, _response);
@@ -1030,8 +1030,8 @@ void HTTPWSTest::testInsertDelete()
void HTTPWSTest::testEditLock()
{
- const std::string documentPath = Util::getTempFilePath(TDOC, "hello.odt");
- const std::string documentURL = "lool/ws/file://" + Poco::Path(documentPath).makeAbsolute().toString();
+ std::string documentPath, documentURL;
+ getDocumentPathAndURL("hello.odt", documentPath, documentURL);
std::mutex mutex;
std::condition_variable cv;
@@ -1179,7 +1179,9 @@ void HTTPWSTest::testSlideShow()
CPPUNIT_ASSERT_EQUAL(static_cast<int>(_uri.getPort()), port);
CPPUNIT_ASSERT_EQUAL(std::string("slideshow"), id);
- const std::string path = "/lool/" + jail + "/" + dir + "/" + name + "?mime_type=image/svg%2Bxml";
+ std::string encodedDoc;
+ Poco::URI::encode(documentPath, ":/?", encodedDoc);
+ const std::string path = "/lool/" + encodedDoc + "/" + jail + "/" + dir + "/" + name + "?mime_type=image/svg%2Bxml";
std::unique_ptr<Poco::Net::HTTPClientSession> session(helpers::createSession(_uri));
Poco::Net::HTTPRequest requestSVG(Poco::Net::HTTPRequest::HTTP_GET, path);
session->sendRequest(requestSVG);
More information about the Libreoffice-commits
mailing list