From a8b8e36ad32f77812a7a1555ca2dd5c6d4f1260c Mon Sep 17 00:00:00 2001
From: mntmn <lukas@mntmn.com>
Date: Wed, 9 Sep 2020 17:20:35 +0200
Subject: [PATCH] wip: migrate from deprecated swig templates to ejs

---
 docs/adding_languages.md                  | 12 +++---
 helpers/mailer.js                         | 13 +-----
 package.json                              |  2 +-
 public/javascripts/backend.js             |  3 --
 routes/api/users.js                       |  1 -
 routes/root.js                            | 44 +++++++-------------
 spacedeck.js                              | 13 +-----
 views/artifact_list.html                  | 24 -----------
 views/emails/action.html                  | 11 -----
 views/error.ejs                           |  5 +++
 views/error.html                          |  3 --
 views/facebook.html                       | 26 ------------
 views/{index.html => index.ejs}           | 10 +----
 views/layouts/outer-footer.ejs            | 14 +++++++
 views/layouts/outer-header.ejs            | 29 +++++++++++++
 views/layouts/outer.html                  | 50 -----------------------
 views/not_found.ejs                       |  4 ++
 views/not_found.html                      | 11 -----
 views/partials/account.html               | 36 ++++++++--------
 views/partials/folders.html               | 42 +++++++++----------
 views/partials/login.html                 | 24 +++++------
 views/partials/meta-folder.html           | 16 ++++----
 views/partials/meta.html                  | 14 +++----
 views/partials/modal/access.html          | 42 +++++++++----------
 views/partials/modal/folder-settings.html |  8 ++--
 views/partials/space.html                 | 10 ++---
 views/partials/team.html                  | 30 +++++++-------
 views/partials/tool/background.html       | 10 ++---
 views/partials/tool/color.html            |  8 ++--
 views/partials/tool/object-options.html   | 12 +++---
 views/partials/tool/search.html           |  2 +-
 views/partials/tool/shapes.html           | 18 ++++----
 views/partials/tool/text-formats.html     | 14 +++----
 views/partials/tool/toolbar-elements.html | 30 +++++++-------
 views/partials/tool/toolbar-object.html   | 20 ++++-----
 views/partials/tool/toolbar-text.html     |  8 ++--
 views/partials/tool/zones.html            |  4 +-
 views/public/contact.html                 | 10 -----
 views/public/privacy.html                 |  9 ----
 views/public/terms.html                   |  8 ----
 views/space_list.html                     | 20 ---------
 views/{spacedeck.html => spacedeck.ejs}   | 42 +++++++++----------
 42 files changed, 272 insertions(+), 440 deletions(-)
 delete mode 100644 views/artifact_list.html
 delete mode 100644 views/emails/action.html
 create mode 100644 views/error.ejs
 delete mode 100644 views/error.html
 delete mode 100644 views/facebook.html
 rename views/{index.html => index.ejs} (90%)
 create mode 100644 views/layouts/outer-footer.ejs
 create mode 100644 views/layouts/outer-header.ejs
 delete mode 100644 views/layouts/outer.html
 create mode 100644 views/not_found.ejs
 delete mode 100644 views/not_found.html
 delete mode 100644 views/public/contact.html
 delete mode 100644 views/public/privacy.html
 delete mode 100644 views/public/terms.html
 delete mode 100644 views/space_list.html
 rename views/{spacedeck.html => spacedeck.ejs} (72%)

diff --git a/docs/adding_languages.md b/docs/adding_languages.md
index 5972973..490323b 100644
--- a/docs/adding_languages.md
+++ b/docs/adding_languages.md
@@ -2,23 +2,23 @@
 
 To add a new language to Spacedeck Open, follow these steps:
 
-*The steps are ilustrated with Spanish (locale 'es') as the new language*
+*The steps are illustrated with Spanish (locale 'es') as the new language*
 
-- Include the new locale ('es') at the locale list (./spacedeck.js)
+- Include the new locale ('es') in the locale list (./spacedeck.js):
 ```
     locales: ["en",..., "es"],
 ```
-- Create the new translation file (/locales/**es.js** thar it's a copy of /locales/en.js). and translate the entries.
-- Include the javascript for letting Spanish info accesible (at the end of /views/spacedeck.html)
+- Create the new translation file (/locales/**es.js**, a copy of /locales/en.js) and translate the entries.
+- Include the javascript for the new translation at the end of /views/spacedeck.ejs:
 
   ```
     ...
     window.locales.es = {};
     ...
-    window.locales.es.translation = {% include "./../locales/es.js" %};
+    window.locales.es.translation = <%- include "./../locales/es.js" %>;
   </script>
   ```
-- Include a radiobutton for users could seleect the new language (/views/partials/account.html)
+- Include a radio button for users to select the new language (/views/partials/account.html)
   ```
     <label class="radio" v-bind:class="{checked: user.prefs_language=='es'}" v-on:click="save_user_language('es')">
       <input type="radio" id="user-preferences_language" name="language" value="es"><span>Español</span>
diff --git a/helpers/mailer.js b/helpers/mailer.js
index 061c3b9..74f7359 100644
--- a/helpers/mailer.js
+++ b/helpers/mailer.js
@@ -2,8 +2,6 @@
 
 const config = require('config');
 const nodemailer = require('nodemailer');
-const swig = require('swig');
-//var AWS = require('aws-sdk');
 
 module.exports = {
   sendMail: (to_email, subject, body, options) => {
@@ -24,14 +22,9 @@ module.exports = {
       plaintext+="\n"+options.action.link+"\n\n";
     }
 
-    const htmlText = swig.renderFile('./views/emails/action.html', {
-      text: body.replace(/(?:\n)/g, '<br />'),
-      options: options
-    });
-
     if (config.get('mail_provider') === 'console') {
 
-      console.log("Email: to " + to_email + " in production.\nreply_to: " + reply_to + "\nsubject: " + subject + "\nbody: \n" + htmlText + "\n\n plaintext:\n" + plaintext);
+      console.log("Email: to " + to_email + " in production.\nreply_to: " + reply_to + "\nsubject: " + subject + "\nbody: \n" + plaintext + "\n\n plaintext:\n" + plaintext);
 
     } else if (config.get('mail_provider') === 'smtp') {
       let transporter;
@@ -55,14 +48,12 @@ module.exports = {
         });
       }
 
-
       transporter.sendMail({
         from: from,
         replyTo: reply_to,
         to: to_email,
         subject: subject,
-        text: plaintext,
-        html: htmlText,
+        text: plaintext
       }, function(err, info) {
         if (err) {
           console.error("Error sending email:", err);
diff --git a/package.json b/package.json
index b65e005..d53987b 100644
--- a/package.json
+++ b/package.json
@@ -16,6 +16,7 @@
     "cheerio": "0.22.0",
     "config": "1.25.1",
     "cookie-parser": "~1.4.3",
+    "ejs": "3.1.5",
     "execSync": "latest",
     "express": "^4.16.4",
     "file-type": "^7.6.0",
@@ -42,7 +43,6 @@
     "serve-static": "^1.13.1",
     "slug": "^1.1.0",
     "sqlite3": "^4.0.0",
-    "swig": "1.4.2",
     "umzug": "^2.1.0",
     "underscore": "1.8.3",
     "uuid": "^3.2.1",
diff --git a/public/javascripts/backend.js b/public/javascripts/backend.js
index 552f3e6..2eb76c3 100644
--- a/public/javascripts/backend.js
+++ b/public/javascripts/backend.js
@@ -59,9 +59,6 @@ function load_resource(method, path, data, on_success, on_error, on_progress) {
   if (channel_id) {
     req.setRequestHeader("X-Spacedeck-Channel", channel_id);
   }
-  if (csrf_token) {
-    req.setRequestHeader("X-csrf-token", csrf_token);
-  }
 
   try {
     if (data) {
diff --git a/routes/api/users.js b/routes/api/users.js
index 99ba793..e2e5b2b 100644
--- a/routes/api/users.js
+++ b/routes/api/users.js
@@ -11,7 +11,6 @@ var importer = require('../../helpers/importer');
 
 var bcrypt = require('bcryptjs');
 var crypto = require('crypto');
-var swig = require('swig');
 var async = require('async');
 var _ = require('underscore');
 var fs = require('fs');
diff --git a/routes/root.js b/routes/root.js
index 3c1cd70..f2e1856 100644
--- a/routes/root.js
+++ b/routes/root.js
@@ -15,7 +15,7 @@ const Op = Sequelize.Op;
 const uuidv4 = require('uuid/v4');
 
 router.get('/', (req, res) => {
-  res.render('index', { title: 'Spaces' });
+  res.render('index', { config:config, user:req.user });
 });
 
 router.get('/ping', (req, res) => {
@@ -23,35 +23,35 @@ router.get('/ping', (req, res) => {
 });
 
 router.get('/spaces', (req, res) => {
-  res.render('spacedeck', { title: 'Spaces' });
+  res.render('spacedeck', { config:config, user:req.user });
 });
 
 router.get('/not_found', (req, res) => {
-  res.render('not_found', { title: 'Spaces' });
+  res.render('not_found', {});
 });
 
 router.get('/confirm/:token', (req, res) => {
-  res.render('spacedeck', { title: 'Space' });
+  res.render('spacedeck', { config:config, user:req.user });
 });
 
 router.get('/folders/:id', (req, res) => {
-  res.render('spacedeck', {});
+  res.render('spacedeck', { config:config, user:req.user });
 });
 
 router.get('/signup', (req, res) => {
-  res.render('spacedeck', {});
+  res.render('spacedeck', { config:config, user:req.user });
 });
 
 router.get('/accept/:id', (req, res) => {
-  res.render('spacedeck', {});
+  res.render('spacedeck', { config:config, user:req.user });
 });
 
 router.get('/password-reset', (req, res) => {
-  res.render('spacedeck', { title: 'Signup' });
+  res.render('spacedeck', { config:config, user:req.user });
 });
 
 router.get('/password-confirm/:token', (req, res) => {
-  res.render('spacedeck', { title: 'Signup' });
+  res.render('spacedeck', { config:config, user:req.user });
 });
 
 router.get('/de/*', (req, res) => {
@@ -69,6 +69,7 @@ router.get('/fr/*', (req, res) => {
 router.get('/fr', (req, res) => {
   res.redirect("/t/fr");
 });
+
 router.get('/oc/*', (req, res) => {
   res.redirect("/t/oc");
 });
@@ -76,6 +77,7 @@ router.get('/oc/*', (req, res) => {
 router.get('/oc', (req, res) => {
   res.redirect("/t/oc");
 });
+
 router.get('/en/*', (req, res) => {
   res.redirect("/t/en");
 });
@@ -89,27 +91,11 @@ router.get('/account', (req, res) => {
 });
 
 router.get('/login', (req, res) => {
-  res.render('spacedeck');
+  res.render('spacedeck', { config:config, user:req.user });
 });
 
 router.get('/logout', (req, res) => {
-  res.render('spacedeck');
-});
-
-router.get('/contact', (req, res) => {
-  res.render('public/contact');
-});
-
-router.get('/about', (req, res) => {
-  res.render('public/about');
-});
-
-router.get('/terms', (req, res) => {
-  res.render('public/terms');
-});
-
-router.get('/privacy', (req, res) => {
-  res.render('public/privacy');
+  res.render('spacedeck', { config:config, user:req.user });
 });
 
 router.get('/t/:id', (req, res) => {
@@ -136,7 +122,7 @@ router.get('/s/:hash', (req, res) => {
       }
     } else {
       if (req.accepts('text/html')) {
-	      res.status(404).render('not_found', { title: 'Page Not Found.' });
+	      res.status(404).render('not_found', {});
       } else {
 	      res.status(404).json({});
       }
@@ -145,7 +131,7 @@ router.get('/s/:hash', (req, res) => {
 });
 
 router.get('/spaces/:id', (req, res) => {
-  res.render('spacedeck', { title: 'Space' });
+  res.render('spacedeck', { config:config, user:req.user });
 });
 
 module.exports = router;
diff --git a/spacedeck.js b/spacedeck.js
index 830ddd4..4cacaf2 100644
--- a/spacedeck.js
+++ b/spacedeck.js
@@ -16,7 +16,6 @@ const logger = require('morgan');
 const cookieParser = require('cookie-parser');
 const bodyParser = require('body-parser');
 
-const swig = require('swig');
 const i18n = require('i18n-2');
 const helmet = require('helmet');
 
@@ -40,16 +39,7 @@ i18n.expressBind(app, {
   devMode: (app.get('env') == 'development')
 });
 
-swig.setDefaults({
-  varControls: ["[[", "]]"] // otherwise it's not compatible with vue.js
-});
-
-swig.setFilter('cdn', function(input, idx) {
-  return input;
-});
-
-app.engine('html', swig.renderFile);
-app.set('view engine', 'html');
+app.set('view engine', 'ejs');
 
 if (isProduction) {
   app.set('views', path.join(__dirname, 'build', 'views'));
@@ -114,7 +104,6 @@ if (config.get('storage_local_path')) {
 //app.use(require('./middlewares/404'));
 if (app.get('env') == 'development') {
   app.set('view cache', false);
-  swig.setDefaults({cache: false});
 } else {
   app.use(require('./middlewares/500'));
 }
diff --git a/views/artifact_list.html b/views/artifact_list.html
deleted file mode 100644
index 14ea274..0000000
--- a/views/artifact_list.html
+++ /dev/null
@@ -1,24 +0,0 @@
-<html>
-<body>
-  <h2>[[space.name]]</h2>
-
-  <table class="table table-striped" border=1>
-  <tr>
-    <th>created</th>
-    <th>updated</th>
-    <th>filetype</th>
-    <th>filename</th>
-    <th>preview</th>
-  </tr>
-  {% for a in space.artifacts %}
-    <tr>
-      <td>[[ a.created_at | date('d.m.Y H:i') ]] by [[ a.user.email ]][[ a.editor_name ]]</td>
-      <td>[[ a.updated_at | date('d.m.Y H:i') ]] by [[ a.update_user.email ]][[ a.last_update_editor_name ]]</td>
-      <td>[[ a.mime ]]</td>
-      <td>{% if a.payload_uri %}<a href="[[a.payload_uri]]">[[ a.filename ]]</a>{% endif %}</td>
-      <td>[[ a.description ]]</td>
-    </tr>
-  {% endfor %}
-  </table>
-</body>
-</html>
diff --git a/views/emails/action.html b/views/emails/action.html
deleted file mode 100644
index ec6abfa..0000000
--- a/views/emails/action.html
+++ /dev/null
@@ -1,11 +0,0 @@
-[[ text | safe ]]
-
-{% if options.message %}
-<p>
-  <i>[[options.message]]</i>
-</p>
-{% endif %}
-{% if options.action %}<br><br>
-  <a href="[[options.action.link]]" target="_blank">[[options.action.name]]</a><br>
-{% endif %}
-
diff --git a/views/error.ejs b/views/error.ejs
new file mode 100644
index 0000000..f8fcc28
--- /dev/null
+++ b/views/error.ejs
@@ -0,0 +1,5 @@
+<%- include('layouts/outer-header') -%>
+<h1><%= message %></h1>
+<h2><%= error.status %></h2>
+<pre><%= error.stack %></pre>
+<%- include('layouts/outer-footer') -%>
diff --git a/views/error.html b/views/error.html
deleted file mode 100644
index 5263e42..0000000
--- a/views/error.html
+++ /dev/null
@@ -1,3 +0,0 @@
-<h1>[[ message ]]</h1>
-<h2>[[ error.status ]]</h2>
-<pre>[[ error.stack ]]</pre>
diff --git a/views/facebook.html b/views/facebook.html
deleted file mode 100644
index 4ba1f25..0000000
--- a/views/facebook.html
+++ /dev/null
@@ -1,26 +0,0 @@
-<!DOCTYPE html>
-<html>
-  <head>
-    <title>[[space.name]]</title>
-    <meta charset="utf-8" />
-    <meta property="og:title" content="[[space.name]]" />
-    <meta property="og:description" content="" />
-    <meta property="og:updated_time" content="[[space.updated_at.getTime()]]" />
-    <meta property="og:type" content="website" />
-    <meta property="og:image" content="[[space.thumbnail_url]]" />
-  </head>
-
-  <body>
-
-    <h1>[[space.name]]</h1>
-    {% for a in space.artifacts %}
-      <tr>
-        <td>[[ a.mime ]]</td>
-        <td>[[ a.description | striptags  ]]</td>
-        <td>{% if a.payload_uri %}<a href="[[ a.payload_uri ]]">download</a>{% endif %}</td>
-      </tr>
-    {% endfor %}
-
-  </body>
-
-</html>
diff --git a/views/index.html b/views/index.ejs
similarity index 90%
rename from views/index.html
rename to views/index.ejs
index 9cea15e..6f494a1 100644
--- a/views/index.html
+++ b/views/index.ejs
@@ -1,9 +1,4 @@
-{% extends 'layouts/outer.html' %}
-
-{% block title %}Spacedeck{% endblock %}
-
-{% block content %}
-
+<%- include('layouts/outer-header') %>
 <div id="landing">
   <section>
     <h1>Work Together, Visually.</h1>
@@ -30,5 +25,4 @@
     </p>
   </section>
 </div>
-
-{% endblock %}
+<%- include('layouts/outer-footer') %>
diff --git a/views/layouts/outer-footer.ejs b/views/layouts/outer-footer.ejs
new file mode 100644
index 0000000..cbbdcb2
--- /dev/null
+++ b/views/layouts/outer-footer.ejs
@@ -0,0 +1,14 @@
+
+    <div class="footer">
+      <p>
+        <div class="col-xs-6">
+          &copy; 2020 <a href="https://mntre.com">MNT Research GmbH</a>, Fehlerstr. 8, 12161 Berlin, Germany<br>
+          &copy; 2011–2020 Spacedeck GmbH (in liquidation)<br>
+          Source Code: <a href="https://github.com/mntmn/spacedeck-open">https://github.com/mntmn/spacedeck-open</a>
+          <br>
+          Font: <a href="https://rsms.me/inter/">Inter by rsms</a>
+        </div>
+      </p>
+    </div>
+  </body>
+</html>
diff --git a/views/layouts/outer-header.ejs b/views/layouts/outer-header.ejs
new file mode 100644
index 0000000..73eefac
--- /dev/null
+++ b/views/layouts/outer-header.ejs
@@ -0,0 +1,29 @@
+<!doctype html>
+<html class="no-js">
+  <head>
+    <meta charset="utf-8">
+    <title>Spacedeck Open</title>
+    <meta name="description" content="">
+    <meta name="viewport" content="width=device-width, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no" />
+    <meta name="apple-mobile-web-app-capable" content="yes">
+    <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
+    <link href="/images/favicon.png" rel="icon" type="image/x-icon" />
+    <link rel="stylesheet" href="/stylesheets/style.css">
+  </head>
+  <body>
+    <header id="landing-header" class="header">
+      <div class="header-left">
+        <a class="btn btn-transparent btn-nude" href="<%= config.endpoint %>/"><img src="/images/sd6-logo-black.svg" width="190"></a>
+      </div>
+
+      <div class="header-right pull-right">
+        <% if (!user) { %>
+          <a class="btn btn-md btn-dark btn-round" href="/login"><%=__("login")%></a>
+          <a class="btn btn-md btn-dark btn-round" href="/signup"><%=__("signup")%></a>
+        <% } else { %>
+          <a class="btn btn-md btn-dark btn-round" href="/spaces"><%=__("spaces")%></a>
+          <a class="btn btn-md btn-dark btn-round" href="/logout"><%=__("logout")%></a>
+        <% } %>
+
+      </div>
+    </header>
diff --git a/views/layouts/outer.html b/views/layouts/outer.html
deleted file mode 100644
index 43551fa..0000000
--- a/views/layouts/outer.html
+++ /dev/null
@@ -1,50 +0,0 @@
-<!doctype html>
-<html class="no-js">
-  <head>
-    <meta charset="utf-8">
-    <title>Spacedeck Open – {% block title %}{% endblock %}</title>
-    <meta name="description" content="">
-    <meta name="viewport" content="width=device-width, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no" />
-    <meta name="apple-mobile-web-app-capable" content="yes">
-    <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
-    <link href="[[ '/images/favicon.png' | cdn ]]" rel="icon" type="image/x-icon" />
-
-    <link rel="stylesheet" href="[[ '/stylesheets/style.css' | cdn ]]">
-    <script> var csrf_token = '[[ csrf_token ]]'; </script>
-    
-    <!--script src="[[ '/javascripts/jquery-2.1.4.min.js' | cdn ]]"></script-->
-  </head>
-
-  <body>
-    <header id="landing-header" class="header">
-      <div class="header-left">
-        <a class="btn btn-transparent btn-nude" href="[[config.endpoint]]/"><img src="[[ '/images/sd6-logo-black.svg' | cdn ]]" width="190"></a>
-      </div>
-
-      <div class="header-right pull-right">
-        {% if !user %}
-          <a class="btn btn-md btn-dark btn-round" href="/login">[[__("login")]]</a>
-          <a class="btn btn-md btn-dark btn-round" href="/signup">[[__("signup")]]</a>
-        {% else %}
-          <a class="btn btn-md btn-dark btn-round" href="/spaces">[[__("spaces")]]</a>
-          <a class="btn btn-md btn-dark btn-round" href="/logout">[[__("logout")]]</a>
-        {% endif %}
-
-      </div>
-    </header>
-
-    {% block content %}{% endblock %}
-
-    <div class="footer">
-      <p>
-        <div class="col-xs-6">
-          &copy; 2020 <a href="https://mntre.com">MNT Research GmbH</a>, Fehlerstr. 8, 12161 Berlin, Germany<br>
-          &copy; 2011–2019 Spacedeck GmbH (in liquidation)<br>
-          Source Code: <a href="https://github.com/mntmn/spacedeck-open">https://github.com/mntmn/spacedeck-open</a>
-          <br>
-          Font: <a href="https://rsms.me/inter/">Inter by rsms</a>
-        </div>
-      </p>
-    </div>
-  </body>
-</html>
diff --git a/views/not_found.ejs b/views/not_found.ejs
new file mode 100644
index 0000000..92bac5c
--- /dev/null
+++ b/views/not_found.ejs
@@ -0,0 +1,4 @@
+
+<div id="landing" style="padding-top:200px;margin:auto;width:300px;">
+    <h1><%=__("not_found")%></h1>
+</div>
diff --git a/views/not_found.html b/views/not_found.html
deleted file mode 100644
index aae8463..0000000
--- a/views/not_found.html
+++ /dev/null
@@ -1,11 +0,0 @@
-{% extends 'layouts/outer.html' %}
-
-{% block title %}[[ __("not_found") ]]{% endblock %}
-
-{% block content %}
-
-<div id="landing" style="padding-top:200px;margin:auto;width:300px;">
-    <h1>[[__("not_found")]]</h1>
-</div>
-
-{% endblock %}
diff --git a/views/partials/account.html b/views/partials/account.html
index 1eba3b6..ebffe75 100644
--- a/views/partials/account.html
+++ b/views/partials/account.html
@@ -17,11 +17,11 @@
 <div class="dialog-freestanding dialog in" v-if="active_view == 'account' && user" v-cloak>
 
   <div class="dialog-tabs" style="margin:auto">
-    <div class="dialog-tab" v-bind:class="{open:account=='profile'}" v-on:click="account='profile'"><span>[[__("profile_caption")]]</span></div>
-    <div class="dialog-tab" v-bind:class="{open:account=='language'}" v-on:click="account='language'"><span>[[__("language_caption")]]</span></div>
-    <div class="dialog-tab" v-bind:class="{open:account=='notifications'}" v-on:click="account='notifications'"><span>[[__("notifications_caption")]]</span></div>
-    <div class="dialog-tab" v-bind:class="{open:account=='password'}" v-on:click="account='password'"><span>[[__("password_caption")]]</span></div>
-    <div class="dialog-tab" v-bind:class="{open:account=='terminate'}" v-on:click="account='terminate'"><span>[[__("terminate_caption")]]</span></div>
+    <div class="dialog-tab" v-bind:class="{open:account=='profile'}" v-on:click="account='profile'"><span><%=__("profile_caption")%></span></div>
+    <div class="dialog-tab" v-bind:class="{open:account=='language'}" v-on:click="account='language'"><span><%=__("language_caption")%></span></div>
+    <div class="dialog-tab" v-bind:class="{open:account=='notifications'}" v-on:click="account='notifications'"><span><%=__("notifications_caption")%></span></div>
+    <div class="dialog-tab" v-bind:class="{open:account=='password'}" v-on:click="account='password'"><span><%=__("password_caption")%></span></div>
+    <div class="dialog-tab" v-bind:class="{open:account=='terminate'}" v-on:click="account='terminate'"><span><%=__("terminate_caption")%></span></div>
   </div>
 
   <div class="dialog-section text-left">
@@ -44,11 +44,11 @@
             <div class="form-group">
               <label class="file btn btn-md btn-darken" style="margin-right: 5px;">
                 <input type="file" v-on:change="save_user_avatar_image(this)">
-                <span v-if="!uploading_avatar">[[__("upload_avatar")]]</span>
-                <span v-if="uploading_avatar">[[__("uploading_avatar")]]</span>
+                <span v-if="!uploading_avatar"><%=__("upload_avatar")%></span>
+                <span v-if="uploading_avatar"><%=__("uploading_avatar")%></span>
               </label>
 
-              <p class="message">[[__("avatar_dimensions")]]</p>
+              <p class="message"><%=__("avatar_dimensions")%></p>
             </div>
           </div>
         </div>
@@ -66,7 +66,7 @@
         </div>
 
         <div class="form-group">
-          <label class="label" >[[__("profile_name")]]</label>
+          <label class="label" ><%=__("profile_name")%></label>
           <input type="text" id="user-nickname"
           pattern=".{3,}"
           required title="3 characters minimum"
@@ -75,7 +75,7 @@
         </div>
 
         <div class="form-group">
-          <label class="label">[[__("profile_email")]]</label>
+          <label class="label"><%=__("profile_email")%></label>
           <input
           type="email"
           id="new-email"
@@ -120,7 +120,7 @@
           <label class="checkbox"
             v-bind:class="{checked: user.prefs_email_notifications}"
             v-on:click="account_save_user_notifications(!user.prefs_email_notifications);">
-            <span>[[__('notifications_option_chat')]]</span>
+            <span><%=__('notifications_option_chat')%></span>
           </label>
         </div>
       </div>
@@ -130,15 +130,15 @@
       <h4>Change Password</h4>
       <div class="modal-section labels-inline">
         <div class="form-group">
-          <label class="label">[[__("current_password")]]</label>
+          <label class="label"><%=__("current_password")%></label>
           <input id="current-password" class="input input-white no-b" v-model="password_change_current" type="password">
         </div>
         <div class="form-group">
-          <label class="label">[[__("new_password")]]</label>
+          <label class="label"><%=__("new_password")%></label>
           <input id="new-password" class="input input-white no-b" v-model="password_change_new" type="password">
         </div>
         <div class="form-group">
-          <label class="label">[[__("verify_password")]]</label>
+          <label class="label"><%=__("verify_password")%></label>
           <input id="new-password-confirmation" class="input input-white no-b" v-model="password_change_new_confirmation" type="password">
         </div>
 
@@ -149,7 +149,7 @@
           <button
             class="btn btn-dark btn-md"
             v-on:click="save_user_password(password_change_current, password_change_new, password_change_new_confirmation);" >
-            [[__("change_password")]]
+            <%=__("change_password")%>
           </button>
       </div>
     </div>
@@ -158,14 +158,14 @@
       <h4>Terminate Account</h4>
       <div class="modal-section labels-inline">
         <div class="form-group">
-          <label class="label">[[__("current_password")]]</label>
+          <label class="label"><%=__("current_password")%></label>
           <input v-model="account_remove_password" class="input input-white no-b" type="password">
         </div>
         
         <div class="form-group">
-          <label class="label">[[__("terminate_reason")]]</label>
+          <label class="label"><%=__("terminate_reason")%></label>
           <textarea class="input input-white no-b" v-model="account_remove_feedback"></textarea>
-          <p class="message">[[__("terminate_reason_caption")]]</p>
+          <p class="message"><%=__("terminate_reason_caption")%></p>
         </div>
       </div>
       
diff --git a/views/partials/folders.html b/views/partials/folders.html
index e911aff..1069775 100644
--- a/views/partials/folders.html
+++ b/views/partials/folders.html
@@ -3,9 +3,9 @@
     <a class="btn btn-dark btn-md btn-round btn-icon" href="/spaces">
       <span class="icon icon-svg icon-sd6"></span>
     </a>
-    <button v-if="logged_in && (active_space_role == 'editor' || active_space_role == 'admin')" class="btn btn-dark btn-md btn-round" v-on:click="create_space('space')">[[ __('create_space') ]]</button>
+    <button v-if="logged_in && (active_space_role == 'editor' || active_space_role == 'admin')" class="btn btn-dark btn-md btn-round" v-on:click="create_space('space')"><%= __('create_space') %></button>
     <button v-if="logged_in && (active_space_role == 'editor' || active_space_role == 'admin')" class="btn btn-stroke-darken btn-md btn-round" v-on:click="create_space('folder')">
-      <span>[[  __('create_folder') ]]</span>
+      <span><%=  __('create_folder') %></span>
     </button>
 
     <label class="relative compact-hidden" v-if="logged_in">
@@ -13,33 +13,33 @@
       <input id="folder-search"
              type="search" name="search"
              style="padding-left: 40px !important; margin-right: 10px;"
-             placeholder="[[  __('search') ]]"
+             placeholder="<%=  __('search') %>"
              class="input input-md input-white input-round no-b w-2"
              v-model="folder_spaces_search" v-on:change="search_spaces">
     </label>
     
     <div class="dropdown top light m-r-20 compact-hidden" v-bind:class="{open : active_dropdown=='folder_sorting'}" v-if="logged_in">
       <button class="btn btn-sm btn-nude" v-on:click="activate_dropdown('folder_sorting')">
-        <span>[[  __('sort_by') ]]</span>:
-        <b v-if="folder_sorting=='updated_at'">[[  __('last_modified') ]]</b>
-        <b v-if="folder_sorting=='name'">[[  __('title') ]]</b>
-        <b v-if="folder_sorting=='space_type'">[[  __('type') ]]</b>
+        <span><%=  __('sort_by') %></span>:
+        <b v-if="folder_sorting=='updated_at'"><%=  __('last_modified') %></b>
+        <b v-if="folder_sorting=='name'"><%=  __('title') %></b>
+        <b v-if="folder_sorting=='space_type'"><%=  __('type') %></b>
       </button>
       <div class="dropdown-menu" role="menu">
         <ul class="select-list">
           <li v-bind:class="{checked:folder_sorting=='updated_at'}"
               v-on:click="set_folder_sorting('updated_at',true)">
-            <span>[[  __('last_modified') ]]</span>
+            <span><%=  __('last_modified') %></span>
           </li>
 
           <li v-bind:class="{checked:folder_sorting=='name'}"
               v-on:click="set_folder_sorting('name',false)">
-            <span>[[  __('title') ]]</span>
+            <span><%=  __('title') %></span>
           </li>
 
           <li v-bind:class="{checked:folder_sorting=='space_type'}"
               v-on:click="set_folder_sorting('space_type',false)">
-            <span>[[  __('type') ]]</span>
+            <span><%=  __('type') %></span>
           </li>
         </ul>
       </div>
@@ -60,21 +60,21 @@
           <li v-if="user.team && is_admin(user)">
             <a href="/team">
               <span class="icon icon-sm  icon-user-group"></span>
-              <span>[[  __('edit_team') ]]</span>
+              <span><%=  __('edit_team') %></span>
             </a>
           </li>
 
           <li>
             <a href="/account">
               <span class="icon icon-sm  icon-user"></span>
-              <span>[[  __('edit_account') ]]</span>
+              <span><%=  __('edit_account') %></span>
             </a>
           </li>
 
           <li v-on:click="logout()">
             <span>
               <span class="icon icon-sm  icon-logout"></span>
-              <span>[[  __('log_out') ]]</span>
+              <span><%=  __('log_out') %></span>
             </span>
           </li>
         </ul>
@@ -104,28 +104,28 @@
         </button>
         <div class="dropdown-menu" v-if="active_folder && active_folder._id != user.home_folder_id">
           <ul class="select-list">
-            <li><span class="tile-rename" v-on:click="rename_folder(active_folder)">[[__("rename")]]</span></li>
-            <li v-if="active_space_role == 'admin'"><span class="tile-share" v-on:click="activate_access()">[[__("share")]]</span></li>
+            <li><span class="tile-rename" v-on:click="rename_folder(active_folder)"><%=__("rename")%></span></li>
+            <li v-if="active_space_role == 'admin'"><span class="tile-share" v-on:click="activate_access()"><%=__("share")%></span></li>
           </ul>
         </div>
       </div>
 
       <div v-if="active_folder._id == user.home_folder_id">
-        <span>[[  __('home') ]]</span>
+        <span><%=  __('home') %></span>
       </div>
 
     </div>
 
     <div id="folder-empty" v-if="(active_profile_spaces.length == 0)">
       <div>
-        <p>[[  __('no_spaces_yet') ]]</p>
+        <p><%=  __('no_spaces_yet') %></p>
       </div>
     </div>
 
     <div id="folder-empty" v-if="folder_spaces_filter">
       <div v-if="active_profile_spaces | empty?">
-        <p><b>"{{folder_spaces_filter}}"</b>  <br/>[[  __('search_no_results') ]]</p>
-        <button type="button" class="btn btn-md btn-round btn-stroke-darken events" v-on:click=" folder_spaces_filter = ''">[[  __('search_clear') ]]</button>
+        <p><b>"{{folder_spaces_filter}}"</b>  <br/><%=  __('search_no_results') %></p>
+        <button type="button" class="btn btn-md btn-round btn-stroke-darken events" v-on:click=" folder_spaces_filter = ''"><%=  __('search_clear') %></button>
       </div>
     </div>
     <div id="folder-grid">
@@ -156,8 +156,8 @@
 
             <div class="dropdown-menu" role="menu">
               <ul class="select-list">
-                <li v-on:click="rename_space(item)"><span><span class="icon icon-sm icon-tag"></span>[[  __('rename') ]]</span></li>
-                <li v-on:click="delete_space(item)"><span><span class="icon icon-sm icon-trash"></span>[[  __('delete') ]]</span></li>
+                <li v-on:click="rename_space(item)"><span><span class="icon icon-sm icon-tag"></span><%=  __('rename') %></span></li>
+                <li v-on:click="delete_space(item)"><span><span class="icon icon-sm icon-trash"></span><%=  __('delete') %></span></li>
               </ul>
             </div>
           </div>
diff --git a/views/partials/login.html b/views/partials/login.html
index de19912..f2c8b7b 100644
--- a/views/partials/login.html
+++ b/views/partials/login.html
@@ -4,8 +4,8 @@
   </div>
 
   <div class="header-right pull-right">
-    <a v-if="active_view != 'login'" class="btn btn-md btn-dark btn-round" href="/login">[[__("login")]]</a>
-    <a v-if="active_view != 'signup'" class="btn btn-md btn-dark btn-round" href="/signup">[[__("signup")]]</a>
+    <a v-if="active_view != 'login'" class="btn btn-md btn-dark btn-round" href="/login"><%= __("login") %></a>
+    <a v-if="active_view != 'signup'" class="btn btn-md btn-dark btn-round" href="/signup"><%= __("signup") %></a>
   </div>
 </header>
 
@@ -21,10 +21,10 @@
 
         <div class="tight">
           <div class="form-group">
-            <input class="input" name="email" type="email" required v-model="user_forms_email" placeholder="[[__("email")]]">
+            <input class="input" name="email" type="email" required v-model="user_forms_email" placeholder="<%=__("email")%>">
           </div>
           <div class="form-group">
-            <input class="input" name="password" type="password" required v-model="login_password" placeholder="[[__("password")]]">
+            <input class="input" name="password" type="password" required v-model="login_password" placeholder="<%=__("password")%>">
           </div>
         </div>
 
@@ -45,15 +45,15 @@
   <div id="signup" v-bind:class="{active : active_view == 'signup'}">
     <div class="content">
       <form v-on:submit="signup_submit($event, user_forms_name, user_forms_email, signup_password, signup_password_confirmation, signup_invite_code)">
-        <h4>[[__("signup")]]</h4>
+        <h4><%=__("signup")%></h4>
 
         <div class="tight">
           <div class="form-group">
-            <input class="input" type="email" required id="user-email" v-model="user_forms_email" placeholder="[[__("email")]]" autofocus v-focus>
+            <input class="input" type="email" required id="user-email" v-model="user_forms_email" placeholder="<%=__("email")%>" autofocus v-focus>
           </div>
 
           <div class="form-group">
-            <input class="input" id="user-password" required type="password" v-model="signup_password" placeholder="[[__("password")]]">
+            <input class="input" id="user-password" required type="password" v-model="signup_password" placeholder="<%=__("password")%>">
           </div>
 
           <div class="form-group">
@@ -74,8 +74,8 @@
        </div-->
 
         <button class="btn btn-dark btn-block">
-          <span v-if="!creating_user">[[__("signup")]]</span>
-          <span v-if="creating_user">[[__("signing_up")]]</span>
+          <span v-if="!creating_user"><%=__("signup")%></span>
+          <span v-if="creating_user"><%=__("signing_up")%></span>
         </button>
 
         <div class="center alert alert-danger" style="width:100%;" v-if="signup_error">{{signup_error}}</div>
@@ -90,11 +90,11 @@
         <h4>Password Recovery</h4>
         <div class="tight">
           <div class="form-group">
-            <input class="input" type="email" id="user-email" v-model="reset_email" placeholder="[[__("email")]]">
+            <input class="input" type="email" id="user-email" v-model="reset_email" placeholder="<%=__("email")%>">
           </div>
         </div>
         <div class="text-center alert alert-danger" v-if="password_reset_error">{{password_reset_error}}</div>
-        <button class="btn btn-dark btn-block" v-on:click="password_reset_submit($event, reset_email)">[[__("reset_password")]]</button>
+        <button class="btn btn-dark btn-block" v-on:click="password_reset_submit($event, reset_email)"><%=__("reset_password")%></button>
       </form>
     </div>
     <div class="content" v-if="password_reset_send==true">
@@ -119,7 +119,7 @@
         </div>
 
         <div class="text-center alert alert-danger" v-if="password_reset_confirm_error">{{password_reset_confirm_error}}</div>
-        <button class="btn btn-dark btn-block" v-on:click="password_reset_confirm($event, signup_password, signup_password_confirmation)">[[__("save")]]</button>
+        <button class="btn btn-dark btn-block" v-on:click="password_reset_confirm($event, signup_password, signup_password_confirmation)"><%=__("save")%></button>
       </form>
     </div>
   </div>
diff --git a/views/partials/meta-folder.html b/views/partials/meta-folder.html
index 9cf40b7..2b69af6 100644
--- a/views/partials/meta-folder.html
+++ b/views/partials/meta-folder.html
@@ -9,23 +9,23 @@
 
     <div style="margin-bottom: 15px; margin-top: 8px" >
       <small>
-        [[__("created_by")]] <b>{{active_folder.creator.nickname||active_folder.creator.slug}}.</b>
-        <br/>[[__("last_updated")]] <b>{{active_folder.updated_at | date 'MMMM Do YYYY, HH:mm'}}.</b>
+        <%=__("created_by")%> <b>{{active_folder.creator.nickname||active_folder.creator.slug}}.</b>
+        <br/><%=__("last_updated")%> <b>{{active_folder.updated_at | date 'MMMM Do YYYY, HH:mm'}}.</b>
       </small>
     </div>
 
     <div v-if="logged_in && user.home_folder_id!=active_folder._id">
       <button class="btn btn-sm btn-round btn-primary m-r-5" v-on:click="activate_access()">
-        <span class="icon-label">[[__("share")]]</span>
+        <span class="icon-label"><%=__("share")%></span>
       </button>
     </div>
   </div>
 
   <div class="sidebar-section" v-if="is_pro(user)">
-    <h5>[[__("history_recently_updated")]]</h5>
+    <h5><%=__("history_recently_updated")%></h5>
 
     <div v-if="active_folder_history_items.length == 0">
-      [[__("history_recently_empty")]]
+      <%=__("history_recently_empty")%>
     </div>
 
     <ul id="updates">
@@ -33,7 +33,7 @@
         <a v-bind:href="'/spaces/' +  item.space._id">{{item.space.name}}</a>
 
         <small>
-        [[__("by")]]
+        <%=__("by")%>
           <span v-for="u in item.users">{{u}}<span v-if="$index < (item.users.length-1)">, </span></span>
         </small>
       </li>
@@ -41,10 +41,10 @@
   </div>
 
   <div class="sidebar-section" v-if="!is_pro(user)">
-    <h5>[[__("history_recently_updated")]]</h5>
+    <h5><%=__("history_recently_updated")%></h5>
     
     <p>
-      [[__("pro_ad_history_headline")]]
+      <%=__("pro_ad_history_headline")%>
     </p>
 
     <p>
diff --git a/views/partials/meta.html b/views/partials/meta.html
index 8ed1a6f..bb1a166 100644
--- a/views/partials/meta.html
+++ b/views/partials/meta.html
@@ -9,8 +9,8 @@
 
     <div style="margin-bottom: 15px; margin-top: 8px" >
       <small>
-        [[__("created_by")]] <b>{{active_space.creator.nickname}}.</b><br/>
-        [[__("last_updated")]] <b>{{active_space.updated_at | date 'MMMM Do YYYY, HH:mm'}}.</b>
+        <%=__("created_by")%> <b>{{active_space.creator.nickname}}.</b><br/>
+        <%=__("last_updated")%> <b>{{active_space.updated_at | date 'MMMM Do YYYY, HH:mm'}}.</b>
       </small>
     </div-->
 
@@ -21,18 +21,18 @@
       </button>
       <button class="btn btn-sm btn-round btn-primary m-r-5"
        v-on:click="guest_logout()">
-        [[__("logout")]]
+        <%=__("logout")%>
       </button>
     </div>
   </div>
 
   <div class="sidebar-section">
-    <h5>[[__("chat")]] &nbsp; <a v-if="active_space_role!='viewer'" v-on:click="activate_access()" class="btn btn-xs btn-darken">Add People</a></h5>
+    <h5><%=__("chat")%> &nbsp; <a v-if="active_space_role!='viewer'" v-on:click="activate_access()" class="btn btn-xs btn-darken">Add People</a></h5>
 
-    <textarea id="new-comment" style="min-height:80px;padding: 5px 9px;margin-bottom:10px" class="input input-darken no-b" v-if="can_add_comment" v-model="space_comment" placeholder="[[__("chat_message_placeholder")]]" spellcheck="false"></textarea>
+    <textarea id="new-comment" style="min-height:80px;padding: 5px 9px;margin-bottom:10px" class="input input-darken no-b" v-if="can_add_comment" v-model="space_comment" placeholder="<%=__("chat_message_placeholder")%>" spellcheck="false"></textarea>
 
     <div v-if="can_add_comment">
-      <button class="btn btn-sm btn-primary" v-on:click="create_space_comment(space_comment)">[[__("post")]]</button>
+      <button class="btn btn-sm btn-primary" v-on:click="create_space_comment(space_comment)"><%=__("post")%></button>
     </div>
 
     <ul class="comments">
@@ -50,7 +50,7 @@
             class="delete pull-right"
             v-if="active_space_role!='viewer'"
             v-on:click="remove_space_comment(item)">
-            <a title="[[__("delete")]]" style="cursor:pointer">✕</a>
+            <a title="<%=__("delete")%>" style="cursor:pointer">✕</a>
           </li>
         </ul>
 
diff --git a/views/partials/modal/access.html b/views/partials/modal/access.html
index 9474515..a365cde 100644
--- a/views/partials/modal/access.html
+++ b/views/partials/modal/access.html
@@ -3,7 +3,7 @@
     <div class="modal-dialog">
       <div class="modal-content" style="width:760px">
         <div class="modal-header" style="padding-bottom:0">
-          <h3 class="text-left">[[__("share")]]: {{access_settings_space.name}}</h3>
+          <h3 class="text-left"><%=__("share")%>: {{access_settings_space.name}}</h3>
           <button type="button" class="btn btn-icon btn-light btn-round close" v-on:click=" close_modal()">
             <span class="icon icon-cross-1"></span>
           </button>
@@ -12,17 +12,17 @@
         <div class="modal-body">
           <div class="modal-section" style="padding-top:0;padding-bottom:20px">
             <label class="radio" v-bind:class="{checked:access_settings_space.access_mode=='private'}">
-              <input type="radio" name="access_mode" value="private" v-model="access_settings_space.access_mode" v-on:click="save_space_access_mode($event)"> [[__("mode_private")]]
+              <input type="radio" name="access_mode" value="private" v-model="access_settings_space.access_mode" v-on:click="save_space_access_mode($event)"> <%=__("mode_private")%>
             </label>
             <label class="radio" v-bind:class="{checked:access_settings_space.access_mode=='public'}">
-              <input type="radio" name="access_mode" value="public" v-model="access_settings_space.access_mode" v-on:click="save_space_access_mode($event)">[[__("mode_public")]]
+              <input type="radio" name="access_mode" value="public" v-model="access_settings_space.access_mode" v-on:click="save_space_access_mode($event)"><%=__("mode_public")%>
             </label>
           </div>
 
           <div class="modal-section" v-if="active_space" style="padding-bottom:10px">
-            <h4 class="text-left"><span class="icon icon-link icon-sm"></span> [[__("access_editor_link")]] </h4>
+            <h4 class="text-left"><span class="icon icon-link icon-sm"></span> <%=__("access_editor_link")%> </h4>
             <p class="text-left">
-              [[__("access_editor_link_desc")]]
+              <%=__("access_editor_link_desc")%>
             </p>
             
             <div class="input-group org-add-form">
@@ -30,7 +30,7 @@
 
               <span class="input-group-btn">
                 <span id="org-add-member" class="btn btn-lg btn-primary clipboard-btn" data-clipboard-target="#editorurl2" v-clipboard>
-                  [[__("copy")]]
+                  <%=__("copy")%>
                 </span>
               </span>
             </div>
@@ -41,13 +41,13 @@
                  type="checkbox"
                  v-bind:checked="access_settings_space.editors_locking"
                  v-model="access_settings_space.editors_locking" v-on:change="save_space_editors_locking($event)" />
-              [[__("access_anonymous_edit_blocking")]]
+              <%=__("access_anonymous_edit_blocking")%>
             </label>
           </div>
 
           <!-- subsection "invite" -->
           <div id="new-editor" class="modal-section" style="padding-bottom:20px">
-            <h4 class="text-left"><span class="icon icon-user-add icon-sm"></span> [[__('access_new_members')]]</h4>
+            <h4 class="text-left"><span class="icon icon-user-add icon-sm"></span> <%=__('access_new_members')%></h4>
 
             <div class="form-group">
               <span class="error-note" v-if="invite_email_error">{{invite_email_error}}</span>
@@ -55,27 +55,27 @@
                      v-bind:class="{error: !!invite_email_error}"
                      id="invitee_email"
                      v-model="invite_email"
-                     type="email" placeholder="[[__('invite_emails')]]">
+                     type="email" placeholder="<%=__('invite_emails')%>">
 
               <textarea id="invite-message"  class="input input-block input-white overflow-y-scroll"
-                        v-model="invite_message" placeholder="[[__('optional_message')]]" name="Message"></textarea>
+                        v-model="invite_message" placeholder="<%=__('optional_message')%>" name="Message"></textarea>
 
               <select class="input input-white" v-model="invite_member_role">
-                <option value="viewer">[[__("role_viewer")]]</option>
-                <option value="editor">[[__("role_editor")]]</option>
-                <option value="admin">[[__("role_admin")]]</option>
+                <option value="viewer"><%=__("role_viewer")%></option>
+                <option value="editor"><%=__("role_editor")%></option>
+                <option value="admin"><%=__("role_admin")%></option>
               </select>
             </div>
 
             <div class="form-group">
-              <button class="btn btn-primary btn-md" v-on:click="invite_member(access_settings_space, invite_email, invite_message, invite_member_role)"> [[__("invite")]] </button>
+              <button class="btn btn-primary btn-md" v-on:click="invite_member(access_settings_space, invite_email, invite_message, invite_member_role)"> <%=__("invite")%> </button>
             </div>
           </div>
 
           
           <!-- subsection "editors list" -->
           <div class="modal-section" style="padding-bottom:60px">
-            <h4 class="text-left"><span class="icon icon-user-group icon-sm"></span> [[__("access_current_members")]]</h4>
+            <h4 class="text-left"><span class="icon icon-user-group icon-sm"></span> <%=__("access_current_members")%></h4>
             <table class="table">
               <tr>
                 <th></th>
@@ -102,23 +102,23 @@
                 <td>
                   <div class="form-group">
                     <select class="input input-sm" v-model="member.role" v-on:change="update_member(access_settings_space, member, $event.currentTarget.value)" style="width:auto">
-                      <option value="viewer">[[__("role_viewer")]]</option>
-                      <option value="editor">[[__("role_editor")]]</option>
-                      <option value="admin">[[__("role_admin")]]</option>
+                      <option value="viewer"><%=__("role_viewer")%></option>
+                      <option value="editor"><%=__("role_editor")%></option>
+                      <option value="admin"><%=__("role_admin")%></option>
                     </select>
                   </div>
                 </td>
                 <td>
-                  <button class="btn btn-sm btn-stroke-darken" v-on:click="remove_member(access_settings_space, member)">[[__("delete")]]</button>
+                  <button class="btn btn-sm btn-stroke-darken" v-on:click="remove_member(access_settings_space, member)"><%=__("delete")%></button>
                 </td>
               </tr>
             </table>
             <p class="text-left" v-if="!access_settings_memberships.length">
-              [[__("access_no_members")]]
+              <%=__("access_no_members")%>
             </p>
 
             <div class="form-group" style="padding-top: 40px">
-              <button class="btn btn-primary btn-md" v-on:click="close_modal();"> [[__("ok")]] </button>
+              <button class="btn btn-primary btn-md" v-on:click="close_modal();"> <%=__("ok")%> </button>
             </div>
           </div>
 
diff --git a/views/partials/modal/folder-settings.html b/views/partials/modal/folder-settings.html
index d9cad76..f2b7242 100644
--- a/views/partials/modal/folder-settings.html
+++ b/views/partials/modal/folder-settings.html
@@ -6,13 +6,13 @@
         <button type="button" class="btn btn-icon btn-light btn-round close" v-on:click="close_modal()">
           <span class="icon icon-cross-1"></span>
         </button>
-        <h4 class="modal-title">[[__("folder_settings")]]</h4>
+        <h4 class="modal-title"><%=__("folder_settings")%></h4>
       </div>
 
       <div class="modal-body">
         <div class="modal-section">
           <div class="form-group">
-            <label class="label">[[__("title")]]</label>
+            <label class="label"><%=__("title")%></label>
             <input type="text" class="input" v-model="active_folder.name">
           </div>
 
@@ -26,13 +26,13 @@
           <div class="form-group text-center">
             <label class="file btn btn-sm btn-round btn-stroke-darken">
               <input type="file" id="file" v-on:change="save_folder_avatar_image(this);">
-              <span>[[__("upload_cover_image")]]</span>
+              <span><%=__("upload_cover_image")%></span>
             </label>
           </div>
         </div>
 
         <div class="modal-section">
-          <h4 class="modal-title" style="padding-top:0px">[[__("access_caption")]]</h4>
+          <h4 class="modal-title" style="padding-top:0px"><%=__("access_caption")%></h4>
         </div>
 
       </div>
diff --git a/views/partials/space.html b/views/partials/space.html
index 5880e1a..02cd2b6 100644
--- a/views/partials/space.html
+++ b/views/partials/space.html
@@ -14,27 +14,27 @@
   </span>
   
   <div class="btn-group light round" v-if="zones.length">
-    <button class="btn btn-md btn-transparent btn-icon" v-on:click="go_to_previous_zone()" title="[[__("Previous Zone")]]">
+    <button class="btn btn-md btn-transparent btn-icon" v-on:click="go_to_previous_zone()" title="<%=__("Previous Zone")%>">
       <span class="icon icon-triangle-4-left"></span>
     </button>
 
     <button class="btn btn-md btn-divider"></button>
 
-    <button class="btn btn-md btn-transparent btn-icon" v-on:click="go_to_next_zone()" title="[[__("Next Zone")]]">
+    <button class="btn btn-md btn-transparent btn-icon" v-on:click="go_to_next_zone()" title="<%=__("Next Zone")%>">
       <span class="icon icon-triangle-4-right"></span>
     </button>
   </div>
 
   <!--div class="btn-group light" id="meta-toggle" style="margin-right:10px">
-    <button class="btn btn-md btn-transparent btn-icon" v-on:click="toggle_meta()" title="[[__("chat")]]">
+    <button class="btn btn-md btn-transparent btn-icon" v-on:click="toggle_meta()" title="<%=__("chat")%>">
       <span class="jewel" style="color: white; background-color: red" v-if="meta_unseen>0">{{meta_unseen}}</span>
       <span class="icon icon-messages"></span>
     </button>
   </div-->
 </div>
 
-{% include "./tool/toolbar-elements.html" %}
-{% include "./tool/toolbar-object.html" %}
+<%- include("./tool/toolbar-elements.html") %>
+<%- include("./tool/toolbar-object.html") %>
 
 <div v-if="active_space && active_space_loaded">
   <!-- <div id="lasso"></div> -->
diff --git a/views/partials/team.html b/views/partials/team.html
index c8d9977..398f010 100644
--- a/views/partials/team.html
+++ b/views/partials/team.html
@@ -10,24 +10,24 @@
 
   <div v-if="user.team">
     <div class="dialog-section">
-      <h4 class="text-left">[[__("team_name")]]</h4>
+      <h4 class="text-left"><%=__("team_name")%></h4>
       <div class="input-group org-add-form">
         <input id="org-member-emails" v-model="user.team.name" class="form-control input input-lg" type="text">
         <span class="input-group-btn">
           <span id="org-add-member" class="btn btn-lg btn-primary" v-on:click=" team_save()">
-            [[__("save")]]
+            <%=__("save")%>
           </span>
         </span>
       </div>
     </div>
     
     <div class="dialog-section">
-      <h4 class="text-left">[[__("subdomain")]]</h4>
+      <h4 class="text-left"><%=__("subdomain")%></h4>
       <div class="input-group org-add-form">
         <input v-model="user.team.subdomain" class="form-control input input-lg" type="text">
         <span class="input-group-btn">
           <span id="org-add-member" class="btn btn-lg btn-primary" v-on:click=" team_save()">
-            [[__("save")]]
+            <%=__("save")%>
           </span>
         </span>
       </div>
@@ -41,11 +41,11 @@
       </p>
 
       <div class="input-group org-add-form">
-        <input id="org-member-emails" v-model="team_emails" class="form-control input input-lg" type="email" placeholder="[[__("team_adresses")]]">
+        <input id="org-member-emails" v-model="team_emails" class="form-control input input-lg" type="email" placeholder="<%=__("team_adresses")%>">
         <span class="input-group-btn">
           <span id="org-add-member" class="btn btn-lg btn-primary org-save" v-on:click=" team_invite_members(team_emails)">
-            <span v-if="!team_email_invited">[[__("add")]]</span>
-            <span v-if="team_email_invited">✓ [[__("invited")]]</span>
+            <span v-if="!team_email_invited"><%=__("add")%></span>
+            <span v-if="team_email_invited">✓ <%=__("invited")%></span>
           </span>
         </span>
       </div>
@@ -53,9 +53,9 @@
       <table class="table table-striped table-condensed" v-if="team_members.length">
         <thead>
           <tr>
-            <th> [[__("email")]] </th>
-            <th> [[__("name")]] </th>
-            <th> [[__("role")]] </th>
+            <th> <%=__("email")%> </th>
+            <th> <%=__("name")%> </th>
+            <th> <%=__("role")%> </th>
             <th></th>
           </tr>
         </thead>
@@ -73,14 +73,14 @@
             </td>
 
             <td>
-              <span v-if="is_admin(u)">[[__("role_admin")]]</span>
-              <span v-if="!is_admin(u)">[[__("role_member")]]</span>
+              <span v-if="is_admin(u)"><%=__("role_admin")%></span>
+              <span v-if="!is_admin(u)"><%=__("role_member")%></span>
             </td>
 
             <td>
-              <span v-if="u._id != user._id" class="btn btn-sm btn-danger" v-on:click="team_remove_member(u)">[[__("remove")]]</span>
-              <span v-if="(u._id != user._id) && !is_admin(u)" class="btn btn-sm" v-on:click="team_promote_member(u)">[[__("promote")]]</span>
-              <span v-if="(u._id != user._id) && is_admin(u)" class="btn btn-sm" v-on:click="team_demote_member(u)">[[__("demote")]]</span>
+              <span v-if="u._id != user._id" class="btn btn-sm btn-danger" v-on:click="team_remove_member(u)"><%=__("remove")%></span>
+              <span v-if="(u._id != user._id) && !is_admin(u)" class="btn btn-sm" v-on:click="team_promote_member(u)"><%=__("promote")%></span>
+              <span v-if="(u._id != user._id) && is_admin(u)" class="btn btn-sm" v-on:click="team_demote_member(u)"><%=__("demote")%></span>
             </td>
 
           </tr>
diff --git a/views/partials/tool/background.html b/views/partials/tool/background.html
index f710071..fdf15c7 100644
--- a/views/partials/tool/background.html
+++ b/views/partials/tool/background.html
@@ -1,8 +1,8 @@
 
 <div class="dialog-tabs-wrapper">
   <div class="dialog-tabs">
-    <div class="dialog-tab" v-bind:class="{open:background_mode=='image'}" v-on:click="background_mode='image'"><span>[[__("background_image_caption")]]</span></div>
-    <div class="dialog-tab" v-bind:class="{open:background_mode=='color'}" v-on:click="background_mode='color'"><span>[[__("background_color_caption")]]</span></div>
+    <div class="dialog-tab" v-bind:class="{open:background_mode=='image'}" v-on:click="background_mode='image'"><span><%=__("background_image_caption")%></span></div>
+    <div class="dialog-tab" v-bind:class="{open:background_mode=='color'}" v-on:click="background_mode='color'"><span><%=__("background_color_caption")%></span></div>
   </div>
 </div>
 
@@ -69,9 +69,9 @@
   <!--div class="dialog-section" v-show="background_mode=='color'">
     <div class="tab-switch round options-2"  v-bind:class="{'option-2':color_mode=='picker'}">
       <div class="options">
-        <span class="option" v-on:click="activate_color_mode('palette')">[[__("palette")]]</span>
+        <span class="option" v-on:click="activate_color_mode('palette')"><%=__("palette")%></span>
         <span class="option" v-on:click="activate_color_mode('picker')">
-          <span>[[__("picker")]]</span>
+          <span><%=__("picker")%></span>
         </span>
       </div>
       <span class="option-highlight"></span>
@@ -91,7 +91,7 @@
         <span class="icon icon-picture-upload"></span>
         <input id="background-uploader" type="file" accept="image/*" v-on:change="handle_section_background_upload($event)">
       </label>
-      <p>[[__("upload_background_caption")]]</p>
+      <p><%=__("upload_background_caption")%></p>
     </div>
 
     <div class="dialog-section no-p no-flex" v-if="active_space.background_uri">
diff --git a/views/partials/tool/color.html b/views/partials/tool/color.html
index ced83e7..7b74218 100644
--- a/views/partials/tool/color.html
+++ b/views/partials/tool/color.html
@@ -77,9 +77,9 @@
 <!--div class="dialog-section no-b" style="margin-top:-10px">
   <div class="tab-switch round options-2" v-bind:class="{'option-2':color_mode=='picker'}">
     <div class="options">
-      <span class="option" v-on:click="activate_color_mode('palette')">[[__("palette")]]</span>
+      <span class="option" v-on:click="activate_color_mode('palette')"><%=__("palette")%></span>
       <span class="option" v-on:click="activate_color_mode('picker')">
-        <span>[[__("picker")]]</span>
+        <span><%=__("picker")%></span>
       </span>
     </div>
     <span class="option-highlight"></span>
@@ -123,7 +123,7 @@
 <div class="dialog-section no-p-b no-p-h" v-show="opened_dialog=='color-text'">
   <div class="input-row">
     <div class="form-group no-m">
-      <label class="label label-sm text-center">[[__("font_size")]]</label>
+      <label class="label label-sm text-center"><%=__("font_size")%></label>
       <input class="input no-b no-p text-center text-large" spellcheck="false" type="text" pattern="[0-9]" maxlength="64" v-model="active_style.font_size">
       
       <button tabindex="-1" class="input-drag btn btn-transparent btn-icon" style="cursor: ns-resize;" v-sd-fader="true" sd-fader-var-y="active_style.font_size" sd-fader-min-y="30" sd-fader-max-y="200" sd-fader-sens="5">
@@ -133,7 +133,7 @@
     </div>
     
     <!--div class="form-group no-m">
-      <label class="label label-sm text-center">[[__("line_height")]]</label>
+      <label class="label label-sm text-center"><%=__("line_height")%></label>
       <input disabled class="input no-b no-p text-center text-large" spellcheck="false" type="text" pattern="[0-9\.]" maxlength="64" v-model="active_style.line_height">
       <button tabindex="-1" class="input-drag btn btn-transparent btn-icon" style="cursor: ns-resize;" v-sd-fader="true" sd-fader-var-y="active_style.line_height" sd-fader-min-y="0.5" sd-fader-max-y="4" sd-fader-step="0.1">
         <span class="icon icon-triangles-vertical"></span>
diff --git a/views/partials/tool/object-options.html b/views/partials/tool/object-options.html
index 170ee57..1cc216f 100644
--- a/views/partials/tool/object-options.html
+++ b/views/partials/tool/object-options.html
@@ -2,35 +2,35 @@
   <div class="btn-group">
     <button class="btn btn-transparent btn-icon-labeled" v-on:click="delete_selected_artifacts()">
       <span class="icon icon-trash"></span>
-      <span class="icon-label">[[__("delete")]]</span>
+      <span class="icon-label"><%=__("delete")%></span>
     </button>
 
     <button class="btn btn-divider"></button>
 
     <button class="btn btn-transparent btn-icon-labeled" v-on:click="toggle_lock_of_selected_artifacts()" v-if="active_space_role=='admin'">
       <span class="icon icon-lock-closed"></span>
-      <span class="icon-label">[[__("lock")]]</span>
+      <span class="icon-label"><%=__("lock")%></span>
     </button>
 
     <button class="btn btn-transparent btn-icon-labeled" v-on:click="toggle_lock_of_selected_artifacts()" v-if="active_space_role=='admin'">
       <span class="icon icon-lock-open"></span>
-      <span class="icon-label">[[__("unlock")]]</span>
+      <span class="icon-label"><%=__("unlock")%></span>
     </button>
 
     <button class="btn btn-transparent btn-icon-labeled" v-on:click="duplicate_selected_artifacts()">
       <span class="icon icon-duplicate"></span>
-      <span class="icon-label">[[__("copy")]]</span>
+      <span class="icon-label"><%=__("copy")%></span>
     </button>
 
     <button class="btn btn-transparent btn-icon-labeled" v-on:click="create_link_on_selected_artifacts()">
       <span class="icon icon-link"></span>
-      <span class="icon-label">[[__("link")]]</span>
+      <span class="icon-label"><%=__("link")%></span>
     </button>
     
     <span v-if="first_selected_artifact">
       <button class="btn btn-transparent btn-icon-labeled" v-on:click="download_selected_artifacts()" v-if="selection_metrics.count==1 && first_selected_artifact.payload_uri">
         <span class="icon icon-download"></span>
-        <span class="icon-label">[[__("download")]]</span>
+        <span class="icon-label"><%=__("download")%></span>
       </button>
     </span>
   </div>
diff --git a/views/partials/tool/search.html b/views/partials/tool/search.html
index 0f7390c..bfdf165 100644
--- a/views/partials/tool/search.html
+++ b/views/partials/tool/search.html
@@ -30,7 +30,7 @@
     <!-- generic search box placeholder -->
     <div class="relative">
       <span class="icon icon-zoom absolute-top-left no-events" style="margin-top: -2px;"></span>
-      <input type="text" v-model="generic_search_query" v-focus class="input input-white input-round input-block no-b p-l-60" placeholder="[[__("search_media_placeholder")]]" v-on="keyup: search_generic(generic_search_query) | key enter">
+      <input type="text" v-model="generic_search_query" v-focus class="input input-white input-round input-block no-b p-l-60" placeholder="<%=__("search_media_placeholder")%>" v-on="keyup: search_generic(generic_search_query) | key enter">
     </div>
 
     <!-- <button type="button" class="btn btn-sm btn-icon btn-round btn-darken absolute-top-right clear-search" style="margin-right: 42px; margin-top: 40px;">
diff --git a/views/partials/tool/shapes.html b/views/partials/tool/shapes.html
index e69ab66..abc427b 100644
--- a/views/partials/tool/shapes.html
+++ b/views/partials/tool/shapes.html
@@ -1,46 +1,46 @@
-<h4 class="dialog-title">[[__("tool_shape")]]</h4>
+<h4 class="dialog-title"><%=__("tool_shape")%></h4>
 
 <div id="shapes">
   <div class="dialog-section">
     <div class="btn-group">
       <button class="btn btn-icon-labeled btn-transparent" v-on:click="add_shape('ellipse',$event)">
         <span class="icon icon-shape-circle"></span>
-        <span class="icon-label">[[__("tool_circle")]]</span>
+        <span class="icon-label"><%=__("tool_circle")%></span>
       </button>
       
       <button class="btn btn-icon-labeled btn-transparent" v-on:click="add_shape('hexagon',$event)">
         <span class="icon icon-shape-hexagon"></span>
-        <span class="icon-label">[[__("tool_hexagon")]]</span>
+        <span class="icon-label"><%=__("tool_hexagon")%></span>
       </button>
       
       <button class="btn btn-icon-labeled btn-transparent" v-on:click="add_shape('square',$event)">
         <span class="icon icon-shape-square"></span>
-        <span class="icon-label">[[__("tool_square")]]</span>
+        <span class="icon-label"><%=__("tool_square")%></span>
       </button>
       
       <button class="btn btn-icon-labeled btn-transparent" v-on:click="add_shape('speechbubble',$event)">
         <span class="icon icon-shape-bubble"></span>
-        <span class="icon-label">[[__("tool_bubble")]]</span>
+        <span class="icon-label"><%=__("tool_bubble")%></span>
       </button>
       
       <button class="btn btn-icon-labeled btn-transparent" v-on:click="add_shape('cloud',$event)">
         <span class="icon icon-shape-cloud"></span>
-        <span class="icon-label">[[__("tool_cloud")]]</span>
+        <span class="icon-label"><%=__("tool_cloud")%></span>
       </button>
       
       <button class="btn btn-icon-labeled btn-transparent" v-on:click="add_shape('burst',$event)">
         <span class="icon icon-shape-burst"></span>
-        <span class="icon-label">[[__("tool_burst")]]</span>
+        <span class="icon-label"><%=__("tool_burst")%></span>
       </button>
       
       <button class="btn btn-icon-labeled btn-transparent" v-on:click="add_shape('star',$event)">
         <span class="icon icon-shape-star"></span>
-        <span class="icon-label">[[__("tool_star")]]</span>
+        <span class="icon-label"><%=__("tool_star")%></span>
       </button>
       
       <button class="btn btn-icon-labeled btn-transparent" v-on:click="add_shape('heart',$event)">
         <span class="icon icon-shape-heart"></span>
-        <span class="icon-label">[[__("tool_heart")]]</span>
+        <span class="icon-label"><%=__("tool_heart")%></span>
       </button>
 
     </div>
diff --git a/views/partials/tool/text-formats.html b/views/partials/tool/text-formats.html
index 63e8085..c967574 100644
--- a/views/partials/tool/text-formats.html
+++ b/views/partials/tool/text-formats.html
@@ -1,12 +1,12 @@
-<h4 class="dialog-title">[[__("text_formats")]]</h4>
+<h4 class="dialog-title"><%=__("text_formats")%></h4>
 
 <ul class="select-list overflow-y-scroll" style="min-width: 200px;">
-  <li id="note-format-div" v-on="mousedown:apply_formatting($event, 'p')"> <span>[[__("format_p")]]</span> </li>
-  <li id="note-format-ul"  v-on="mousedown:apply_formatting($event, 'insertunorderedlist')"> <span>[[__("format_bullets")]]</span> </li>
-  <li id="note-format-ol"  v-on="mousedown:apply_formatting($event, 'insertorderedlist')"> <span>[[__("format_numbers")]]</span> </li>
-  <li id="note-format-h1"  v-on="mousedown:apply_formatting($event, 'h1')"> <span>[[__("format_h1")]]</span> </li>
-  <li id="note-format-h2"  v-on="mousedown:apply_formatting($event, 'h2')"> <span>[[__("format_h2")]]</span> </li>
-  <li id="note-format-h3"  v-on="mousedown:apply_formatting($event, 'h3')"> <span>[[__("format_h3")]]</span> </li>
+  <li id="note-format-div" v-on="mousedown:apply_formatting($event, 'p')"> <span><%=__("format_p")%></span> </li>
+  <li id="note-format-ul"  v-on="mousedown:apply_formatting($event, 'insertunorderedlist')"> <span><%=__("format_bullets")%></span> </li>
+  <li id="note-format-ol"  v-on="mousedown:apply_formatting($event, 'insertorderedlist')"> <span><%=__("format_numbers")%></span> </li>
+  <li id="note-format-h1"  v-on="mousedown:apply_formatting($event, 'h1')"> <span><%=__("format_h1")%></span> </li>
+  <li id="note-format-h2"  v-on="mousedown:apply_formatting($event, 'h2')"> <span><%=__("format_h2")%></span> </li>
+  <li id="note-format-h3"  v-on="mousedown:apply_formatting($event, 'h3')"> <span><%=__("format_h3")%></span> </li>
 </ul>
 
 <!-- 
diff --git a/views/partials/tool/toolbar-elements.html b/views/partials/tool/toolbar-elements.html
index ab85e0f..00154b9 100644
--- a/views/partials/tool/toolbar-elements.html
+++ b/views/partials/tool/toolbar-elements.html
@@ -3,7 +3,7 @@
   <div class="btn-group light vertical">
     
     <a class="btn btn-icon btn-transparent"
-       title="[[__("home")]]" href="/spaces"
+       title="<%=__("home")%>" href="/spaces"
        v-if="(!active_space.parent_space_id && !guest_nickname && !embedded)">
       <span class="icon icon-folder"></span>
     </a>
@@ -22,23 +22,23 @@
       <div class="btn-collapse in">
         <button class="btn btn-transparent btn-icon-labeled" v-bind:class="{open:opened_dialog=='shapes'}" v-on:click="open_dialog('shapes')">
           <span class="icon icon-shapes"></span>
-          <span class="icon-label">[[__("tool_shape")]]</span>
+          <span class="icon-label"><%=__("tool_shape")%></span>
         </button>
       </div>
 
       <div class="dialog">
-        {% include "./shapes.html" %}
+        <%- include("./shapes.html") %>
       </div>
     </div>
 
     <button class="btn btn-icon-labeled btn-transparent" v-on:click="start_drawing_scribble()" v-bind:class="{active:active_tool=='scribble'}">
       <span class="icon icon-tool-scribble"></span>
-      <span class="icon-label">[[__("tool_scribble")]]</span>
+      <span class="icon-label"><%=__("tool_scribble")%></span>
     </button>
     
     <button class="btn btn-icon-labeled btn-transparent" v-on:click="start_drawing_arrow()" v-bind:class="{active:active_tool=='arrow'}">
       <span class="icon icon-tool-arrow"></span>
-      <span class="icon-label">[[__("tool_arrow")]]</span>
+      <span class="icon-label"><%=__("tool_arrow")%></span>
     </button>
     
     <div class="dropdown bottom light center">
@@ -54,7 +54,7 @@
       <div class="btn-collapse in">
         <button class="btn btn-transparent btn-icon-labeled" v-on:click="active_tool='note'" v-bind:class="{active:active_tool=='note'}">
           <span class="icon icon-tool-text"></span>
-          <span class="icon-label">[[__("tool_text")]]</span>
+          <span class="icon-label"><%=__("tool_text")%></span>
         </button>
       </div>
     </div>
@@ -63,12 +63,12 @@
       <div class="btn-collapse">
         <button class="btn btn-transparent btn-icon-labeled" v-bind:class="{open:opened_dialog=='image'}" v-on:click="open_dialog('image')">
           <span class="icon icon-picture"></span>
-          <span class="icon-label">[[__("image")]]</span>
+          <span class="icon-label"><%=__("image")%></span>
         </button>
       </div>
 
       <div class="dialog">
-        {% include "./image.html" %}
+        <%- include("./image.html") %>
       </div>
     </div>
 
@@ -76,12 +76,12 @@
       <div class="btn-collapse in">
         <button class="btn btn-transparent btn-icon-labeled" v-bind:class="{open:opened_dialog=='zones'}" v-on:click="open_dialog('zones')">
           <span class="icon icon-zone"></span>
-          <span class="icon-label">[[__("tool_zones")]]</span>
+          <span class="icon-label"><%=__("tool_zones")%></span>
         </button>
       </div>
 
       <div class="dialog">
-        {% include "./zones.html" %}
+        <%- include("./zones.html") %>
       </div>
     </div>
     
@@ -91,12 +91,12 @@
       <div class="btn-collapse in">
         <button class="btn btn-transparent btn-icon-labeled" v-bind:class="{open:opened_dialog=='background'}" v-on:click="open_dialog('background')">
           <span class="letter">bg</span>
-          <span class="icon-label">[[__("tool_canvas")]]</span>
+          <span class="icon-label"><%=__("tool_canvas")%></span>
         </button>
       </div>
 
       <div class="dialog">
-        {% include "./background.html" %}
+        <%- include("./background.html") %>
       </div>
     </div>
 
@@ -104,20 +104,20 @@
             v-if="active_space_role=='admin'"
             v-on:click="activate_access()">
       <span class="icon icon-share"></span>
-      <span class="icon-label">[[  __('share') ]]</span>
+      <span class="icon-label"><%=  __('share') %></span>
     </button>
     
     <!--        
             <li v-on:click="edit_space_title()" v-if="logged_in">
               <span>
                 <span class="icon icon-sm icon-tag"></span>
-                <span>[[  __('rename') ]]</span>
+                <span><%=  __('rename') %></span>
               </span>
             </li>
             -->
     <button class="btn btn-transparent btn-icon-labeled" title="Start Presentation (others follow what you see)" v-on:click="toggle_present_mode()" v-bind:class="{open:present_mode}">
       <span class="icon icon-presentation"></span>
-      <span class="icon-label">[[  __('present') ]]</span>
+      <span class="icon-label"><%=  __('present') %></span>
     </button>
 
   </div>
diff --git a/views/partials/tool/toolbar-object.html b/views/partials/tool/toolbar-object.html
index bfbc241..acaf181 100644
--- a/views/partials/tool/toolbar-object.html
+++ b/views/partials/tool/toolbar-object.html
@@ -1,4 +1,4 @@
-<div class="toolbar toolbar-properties" v-cloak v-show="active_space_loaded && !is_active_space_role('viewer')" v-bind:class="{in:toolbar_props_in,out:!toolbar_props_in}" v-if="active_space_loaded">
+'<div class="toolbar toolbar-properties" v-cloak v-show="active_space_loaded && !is_active_space_role('viewer')" v-bind:class="{in:toolbar_props_in,out:!toolbar_props_in}" v-if="active_space_loaded">
 
   <div class="btn-group light vertical">
     <div class="dropdown top right light"
@@ -30,7 +30,7 @@
         <span class="jewel" v-bind:style="{'border-color':active_style.text_color}">{{active_style.font_size}}</span>
       </button>
       <div class="dialog">
-        {% include "./color.html" %}
+        <%- include("./color.html") %>
       </div>
     </div>
     <!--     <button class="btn btn-transparent btn-icon-labeled">
@@ -50,7 +50,7 @@
       </div>
 
       <div class="dialog">
-        {% include "./text-styles.html" %}
+        <%- include("./text-styles.html") %>
       </div>
     </div>
     
@@ -58,12 +58,12 @@
       <div class="btn-collapse" v-bind:class="{in:selection_metrics.contains_text}">
         <button class="btn btn-transparent btn-icon-labeled" v-on:click="open_dialog('type-align')" v-bind:class="{open : opened_dialog=='type-align'}">
           <span class="icon icon-text-align-left-alt"></span>
-          <span class="icon-label">[[__("tool_align")]]</span>
+          <span class="icon-label"><%=__("tool_align")%></span>
         </button>
       </div>
 
       <div class="dialog">
-        {% include "./text-align.html" %}
+        <%- include("./text-align.html") %>
       </div>
     </div>
 
@@ -72,12 +72,12 @@
       <div class="btn-collapse in">
         <button class="btn btn-transparent btn-icon-labeled" v-on:click="open_dialog('layout')"  v-bind:class="{open : opened_dialog=='layout'}">
           <span class="icon icon-cluster"></span>
-          <span class="icon-label">[[__("tool_layout")]]</span>
+          <span class="icon-label"><%=__("tool_layout")%></span>
         </button>
       </div>
 
       <div class="dialog">
-        {% include "./layout.html" %}
+        <%- include("./layout.html") %>
       </div>
     </div>
     
@@ -91,7 +91,7 @@
       </div>
 
       <div class="dialog">
-        {% include "./text-digits.html" %}
+        <%- include("./text-digits.html") %>
       </div>
     </div>
 
@@ -100,11 +100,11 @@
     <div class="dropdown top light right" v-bind:class="{open:opened_dialog=='object-options'}">
       <button class="btn btn-transparent btn-icon-labeled" v-on:click="open_dialog('object-options')" v-bind:class="{open : opened_dialog=='object-options'}">
         <span class="icon icon-cogwheel"></span>
-        <span class="icon-label">[[__("more")]]</span>
+        <span class="icon-label"><%=__("more")%></span>
       </button>
 
       <div class="dialog no-min-w">
-        {% include "./object-options.html" %}
+        <%- include("./object-options.html") %>
       </div>
     </div>
     
diff --git a/views/partials/tool/toolbar-text.html b/views/partials/tool/toolbar-text.html
index 5c552c6..f0060c0 100644
--- a/views/partials/tool/toolbar-text.html
+++ b/views/partials/tool/toolbar-text.html
@@ -9,7 +9,7 @@
       </div>
 
       <div class="dialog">
-          {% include "./text-formats.html" %}
+          <%- include "./text-formats.html" %>
       </div>
     </div>
 
@@ -23,7 +23,7 @@
       </button>
 
       <div class="dialog">
-        {% include "./text-digits.html" %}
+        <%- include "./text-digits.html" %>
       </div>
     </div>
 
@@ -36,7 +36,7 @@
       </button>
 
       <div class="dialog">
-        {% include "./text-align.html" %}
+        <%- include "./text-align.html" %>
       </div>
     </div>
 
@@ -47,7 +47,7 @@
       </button>
 
       <div class="dialog">
-        {% include "./text-styles.html" %}
+        <%- include "./text-styles.html" %>
       </div>
     </div>
   </div>
diff --git a/views/partials/tool/zones.html b/views/partials/tool/zones.html
index 48714eb..9cc84ec 100644
--- a/views/partials/tool/zones.html
+++ b/views/partials/tool/zones.html
@@ -1,4 +1,4 @@
-<h4 class="dialog-title">[[__("tool_zones")]]</h4>
+<h4 class="dialog-title"><%=__("tool_zones")%></h4>
 
 <div id="zones" style="max-height:500px;overflow-y:scroll">
   <div class="dialog-section">
@@ -6,7 +6,7 @@
       Turn your Space into a zooming presentation by placing some Zones and switch through them when presenting.
     </p-->
     
-    <button v-on:click="add_zone()" class="btn btn-sm btn-dark">[[__("add_zone")]]</button>
+    <button v-on:click="add_zone()" class="btn btn-sm btn-dark"><%=__("add_zone")%></button>
   </div>
 
   <div class="dialog-section no-p" v-for="z in zones | orderBy 'order'" style="white-space: nowrap;text-align:left;cursor:pointer" v-on:click="zoom_to_zone(z)">
diff --git a/views/public/contact.html b/views/public/contact.html
deleted file mode 100644
index 7e4ebe2..0000000
--- a/views/public/contact.html
+++ /dev/null
@@ -1,10 +0,0 @@
-{% extends '../layouts/outer.html' %}
-
-{% block title %}[[ __("contact") ]]{% endblock %}
-
-{% block content %}
-<div class="landing-box">
-
-</div>
-
-{% endblock %}
diff --git a/views/public/privacy.html b/views/public/privacy.html
deleted file mode 100644
index 5c6a614..0000000
--- a/views/public/privacy.html
+++ /dev/null
@@ -1,9 +0,0 @@
-{% extends '../layouts/outer.html' %}
-{% block title %}[[ __("privacy") ]]{% endblock %}
-
-{% block content %}
-
-<div class="landing-box">
-
-</div>
-{% endblock %}
diff --git a/views/public/terms.html b/views/public/terms.html
deleted file mode 100644
index 42ac18f..0000000
--- a/views/public/terms.html
+++ /dev/null
@@ -1,8 +0,0 @@
-{% extends '../layouts/outer.html' %}
-
-{% block title %}[[ __("terms") ]]{% endblock %}
-
-{% block content %}
-<div class="landing-box">
-</div>
-{% endblock %}
diff --git a/views/space_list.html b/views/space_list.html
deleted file mode 100644
index 8d2d7e0..0000000
--- a/views/space_list.html
+++ /dev/null
@@ -1,20 +0,0 @@
-<html>
-<body>
-
-  <h2>[[ __("folder") ]]: [[space.name]]</h2>
-  <table class="table table-striped" >
-  <tr>
-    <th>[[__("created")]]</th>
-    <th>[[__("name")]]</th>
-    <th>[[__("link")]]</th>
-  </tr>
-  {% for s in subspaces %}
-    <tr>
-      <td>[[ s.created_at | date('d.m.Y H:i') ]]</td>
-      <td>[[ s.name ]]</td>
-      <td>[[ s.ae_link ]]</td>
-    </tr>
-  {% endfor %}
-  </table>
-</body>
-</html>
diff --git a/views/spacedeck.html b/views/spacedeck.ejs
similarity index 72%
rename from views/spacedeck.html
rename to views/spacedeck.ejs
index 47f5837..20b841f 100644
--- a/views/spacedeck.html
+++ b/views/spacedeck.ejs
@@ -8,17 +8,14 @@
     <meta name="apple-mobile-web-app-capable" content="yes">
     <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
 
-    <link href="[[ '/images/favicon.png' | cdn ]]" rel="icon" type="image/x-icon" />
+    <link href="/images/favicon.png" rel="icon" type="image/x-icon" />
     <link href='https://fonts.googleapis.com/css?family=Inter' rel='stylesheet' type='text/css'>
-    <link rel="stylesheet" href="[[ '/stylesheets/style.css' | cdn ]]">
+    <link rel="stylesheet" href="/stylesheets/style.css">
 
     <script>if (typeof module === 'object') {window.module = module; module = undefined;}</script>
 
     <script>
-      window.socket_auth = '[[socket_auth]]';
-      window.browser_lang = '[[locale]]';
-      window.csrf_token = '[[csrf_token]]';
-
+      //window.browser_lang = '< %= locale %>';
       var ENV = {
         name: 'development',
         webHost: location.host,
@@ -67,16 +64,15 @@
   </head>
 
   <body id="main" v-bind:class="{'present-mode':present_mode,'modal-open':active_modal}" v-on:click="handle_body_click($event)">
-    {% include "./partials/login.html" %}
-    {% include "./partials/space.html" %}
-    {% include "./partials/folders.html" %}
-    {% include "./partials/team.html" %}
-    {% include "./partials/account.html" %}
-    {% include "./partials/meta.html" %}
-    {% include "./partials/meta-folder.html" %}
-
-    {% include "./partials/modal/access.html" %}
-    {% include "./partials/modal/folder-settings.html" %}
+    <%- include("./partials/login.html") %>
+    <%- include("./partials/space.html") %>
+    <%- include("./partials/folders.html") %>
+    <%- include("./partials/team.html") %>
+    <%- include("./partials/account.html") %>
+    <%- include("./partials/meta.html") %>
+    <%- include("./partials/meta-folder.html") %>
+    <%- include("./partials/modal/access.html") %>
+    <%- include("./partials/modal/folder-settings.html") %>
   </body>
 
   <script type="text/javascript">
@@ -84,12 +80,12 @@
     window.locales.en = {};
     window.locales.de = {};
     window.locales.fr = {};
-    window.locales.oc = {};    
-    window.locales.es = {};    
-    window.locales.en.translation = {% include "./../locales/en.js" %};
-    window.locales.de.translation = {% include "./../locales/de.js" %};
-    window.locales.fr.translation = {% include "./../locales/fr.js" %};
-    window.locales.oc.translation = {% include "./../locales/oc.js" %};    
-    window.locales.es.translation = {% include "./../locales/es.js" %};        
+    window.locales.oc = {};
+    window.locales.es = {};
+    window.locales.en.translation = <%- include("./../locales/en.js") %>;
+    window.locales.de.translation = <%- include("./../locales/de.js") %>;
+    window.locales.fr.translation = <%- include("./../locales/fr.js") %>;
+    window.locales.oc.translation = <%- include("./../locales/oc.js") %>;
+    window.locales.es.translation = <%- include("./../locales/es.js") %>;        
   </script>
 </html>
-- 
GitLab