Rename all cookies to be instance-independent (Requires relogin) - fixes #94
Change-Id: Icd8b58e4b6fbd99a93ee6972485ef77786b5764c
diff --git a/dev/js/src/init.js b/dev/js/src/init.js
index 6de66d8..bafa473 100644
--- a/dev/js/src/init.js
+++ b/dev/js/src/init.js
@@ -44,7 +44,10 @@
const d = document;
- KorAP.session = sessionClass.create('KalamarJS');
+ // Create suffix if KorAP is run in a subfolder
+ KorAP.session = sessionClass.create(
+ KorAP.URL.length > 0 ? 'kalamarJS-' + KorAP.URL.slugify() : 'kalamarJS'
+ );
// Override KorAP.log
window.alertify = alertifyClass;
diff --git a/dev/js/src/util.js b/dev/js/src/util.js
index cb60c2a..5df346b 100644
--- a/dev/js/src/util.js
+++ b/dev/js/src/util.js
@@ -9,16 +9,22 @@
};
};
-var _quoteRE = new RegExp("([\"\\\\])", 'g');
+const _quoteRE = new RegExp("([\"\\\\])", 'g');
String.prototype.quote = function () {
- return this.replace(_quoteRE, '\\$1');
+ return '"' + this.replace(_quoteRE, '\\$1') + '"';
};
-var _escapeRE = new RegExp("([\/\\\\])", 'g');
+const _escapeRE = new RegExp("([\/\\\\])", 'g');
String.prototype.escapeRegex = function () {
return this.replace(_escapeRE, '\\$1');
};
+const _slug1RE = new RegExp("[^-a-zA-Z0-9_\\s]+", 'g');
+const _slug2RE = new RegExp("[-\\s]+", 'g');
+String.prototype.slugify = function () {
+ return this.toLowerCase().replace(_slug1RE, '').replace(_slug2RE, '-');
+};
+
// Add toggleClass method similar to jquery
HTMLElement.prototype.toggleClass = function (c1, c2) {
var cl = this.classList;
diff --git a/dev/js/src/vc/doc.js b/dev/js/src/vc/doc.js
index b012e1f..8ea8364 100644
--- a/dev/js/src/vc/doc.js
+++ b/dev/js/src/vc/doc.js
@@ -667,7 +667,7 @@
return string + '/' + this.value().escapeRegex() + '/';
case "string":
case "text":
- return string + '"' + this.value().quote() + '"';
+ return string + this.value().quote();
};
return "";
diff --git a/dev/js/src/vc/docgroupref.js b/dev/js/src/vc/docgroupref.js
index 9425fb3..e72385a 100644
--- a/dev/js/src/vc/docgroupref.js
+++ b/dev/js/src/vc/docgroupref.js
@@ -273,7 +273,7 @@
return "";
// Build doc string based on key
- return 'referTo "' + this.ref().quote() + '"';
+ return 'referTo ' + this.ref().quote();
}
};
});
diff --git a/dev/js/src/vc/fragment.js b/dev/js/src/vc/fragment.js
index 2d2504d..f0c1397 100644
--- a/dev/js/src/vc/fragment.js
+++ b/dev/js/src/vc/fragment.js
@@ -176,7 +176,7 @@
if (item[2] === "date") {
return item[0] + ' in ' + item[1];
};
- return item[0] + ' = "' + new String(item[1]).quote() + '"';
+ return item[0] + ' = ' + new String(item[1]).quote();
}
).join(" & ");
}
diff --git a/dev/js/src/vc/rewrite.js b/dev/js/src/vc/rewrite.js
index eeec713..150ee87 100644
--- a/dev/js/src/vc/rewrite.js
+++ b/dev/js/src/vc/rewrite.js
@@ -87,14 +87,9 @@
str += ' of ' + (
this._scope === null ?
'object' :
- '"' +
- this.scope().quote() +
- '"'
+ this.scope().quote()
);
- str += ' by ' +
- '"' +
- this.src().quote() +
- '"';
+ str += ' by ' + this.src().quote();
return str;
}
};