diff --git a/locales/en/translation.json b/locales/en/translation.json index 002ed69..2b809b3 100644 --- a/locales/en/translation.json +++ b/locales/en/translation.json @@ -29,6 +29,7 @@ "admin": { "dashboard": { "allBundles": "Available Bundles", + "bundleName": "Directory Name", "slidesInRotation": "Slides in rotation", "preview": "Preview", "program": "Program" diff --git a/locales/fi/translation.json b/locales/fi/translation.json index ab70616..c05aa46 100644 --- a/locales/fi/translation.json +++ b/locales/fi/translation.json @@ -14,7 +14,7 @@ "displayTime": "Näytä aika", "startStream": "Aloita suoratoisto", "forceReload": "Lataa uudelleen", - "createNew": "Luo Uusi dia", + "createNew": "Luo Uusi", "createNewSlide": "Luo uusi dia", "addWebPage": "Lisää Web-sivu", "announce": "Ilmoita" @@ -29,6 +29,7 @@ "admin": { "dashboard": { "allBundles": "DiaPaketit", + "bundleName": "Hakemiston Nimi", "slidesInRotation": "Diakierto", "preview": "Esikatselu", "program": "Ohjelma" diff --git a/modules/admin.js b/modules/admin.js index a271dda..68862de 100644 --- a/modules/admin.js +++ b/modules/admin.js @@ -271,8 +271,39 @@ class admin { } }); - /** edit web links **/ + socket.on("admin.createBundle", function (data) { + cli.info("@ create Bundle"); + console.log(data); + + try { + if (!fs.existsSync("data/" + data.bundle)) { + fs.mkdirSync("data/" + data.bundle); + fs.mkdirSync("data/" + data.bundle + "/backgrounds"); + fs.mkdirSync("data/" + data.bundle + "/images"); + fs.mkdirSync("data/" + data.bundle + "/render"); + fs.mkdirSync("data/" + data.bundle + "/slides"); + + var tempData =JSON.parse(fs.readFileSync("templates/bundle/bundle.json").toString()); + tempData.displayName = data.bundle; + fs.writeFileSync("data/" + data.bundle + "/bundle.json", JSON.stringify(tempData)); + + fs.copyFileSync("templates/bundle/slides.json", "data/" + data.bundle + "/slides.json"); + fs.copyFileSync("templates/bundle/backgrounds/bg.jpg", "data/" + data.bundle + "/backgrounds/bg.jpg"); + bundleManager.getBundle(data.bundle); + syncDashboard(io, data.displayId); + } else { + socket.emit("callback.error", "Error: bundle already exists."); + syncDashboard(io, data.displayId); + } + } catch (err) { + cli.error(err, "Error while creating new bundle"); + socket.emit("callback.error", "Error: " + err); + } + }); + + + /** edit web links **/ socket.on('admin.editLink', function (data) { let bundle = self.bundleManager.getBundle(data.bundleName); let bundleData = bundle.getBundleData(); diff --git a/modules/bundleManager.js b/modules/bundleManager.js index aadb55b..f2268d9 100644 --- a/modules/bundleManager.js +++ b/modules/bundleManager.js @@ -10,8 +10,13 @@ let cli = require("./cli.js"); class bundleManager { constructor() { + this.syncBundles(); + } + + syncBundles() { this.bundles = {}; let dirs = getDirectories("./data"); + dirs.sort(); for (let name of dirs) { let data = getJson("./data/" + name + "/bundle.json"); diff --git a/public/js/dashboard.js b/public/js/dashboard.js index 88c6b36..e4b99a1 100644 --- a/public/js/dashboard.js +++ b/public/js/dashboard.js @@ -19,6 +19,9 @@ socket.on("callback.update", function (data) { } }); +socket.on("callback.error", function (data) { + alert(data); +}); socket.on("callback.dashboard.sync", function (data) { displayId = parseInt(data.displayId); @@ -209,6 +212,23 @@ function editSlide(name, type) { } } +function createNewBundle() { + $('#newBundle') + .modal({ + closable: true, + onDeny: function () { + $('#newBundle').modal("hide"); + return false; + }, + onApprove: function () { + emit("admin.createBundle", {"bundle": $("#newBundleDirName").val()}) + $("#newBundleDirName").val(""); + $('#newBundle').modal("hide"); + } + }) + .modal('show'); +} + function editBundle(bundleName) { window.open("/admin/edit/bundleProperties?bundle=" + bundleName, '_blank', 'location=no,height=500,width=700,scrollbars=yes,status=no'); } diff --git a/public/js/edit.js b/public/js/edit.js index 4002300..62afb4c 100644 --- a/public/js/edit.js +++ b/public/js/edit.js @@ -122,6 +122,14 @@ function displayTime() { $('#time2').html(time); } +function setAlign(align) { + var object = canvas.getActiveObject(); + if (object.type === "i-text") { + object.textAlign = align; + } + canvas.renderAll(); +} + function setZindex(value) { switch (value) { @@ -169,7 +177,6 @@ socket.on('callback.save', function (data) { socket.on('callback.edit.updateFileList', function (data) { if (data.error) { - console.log(data); alert(data.error); } else { openImageBrowser(); @@ -177,17 +184,14 @@ socket.on('callback.edit.updateFileList', function (data) { }); socket.on('callback.edit', function (data) { + bundleData = data.bundleData; canvas.clear(); - console.log(data); if (data.slideData.name != null) { slideName = data.slideData.name; } $("#duration").val(data.slideData.duration + ""); - console.log(data.slideData.displayTime); - - if (data.slideData.displayTime !== null) { $("#override").checkbox('set checked'); if (data.slideData.displayTime) { @@ -243,7 +247,6 @@ socket.on('callback.edit', function (data) { nextSlide(data, true); } - bundleData = data.bundleData; setBackground(bundleData.background); }); @@ -276,9 +279,7 @@ function parseUrl(url) { } function nextSlide(data) { - canvas.loadFromJSON(data.json, function () { - canvas.renderAll(); - }, function (o, object) { + canvas.loadFromJSON(data.json, canvas.renderAll.bind(canvas), function (o, object) { if (object.type === "i-text") { object.setOptions(bundleData.styleText); diff --git a/routes/index.js b/routes/index.js index e707c05..4d37fd9 100644 --- a/routes/index.js +++ b/routes/index.js @@ -1,4 +1,5 @@ let express = require('express'); +let authMiddleWare = require('../modules/auth.js'); let router = express.Router(); let fs = require("fs"); let config = require("../config.js"); @@ -7,6 +8,8 @@ const cli = require('../modules/cli.js'); module.exports = function (websocket) { + router.use(authMiddleWare); + router.get('/', function (req, res, next) { res.header('Access-Control-Allow-Origin', '*'); res.render('index', {config: config}); diff --git a/templates/bundle/bundle.json b/templates/bundle/bundle.json index be62566..b678e87 100644 --- a/templates/bundle/bundle.json +++ b/templates/bundle/bundle.json @@ -7,11 +7,11 @@ "fill": "#f90", "fontSize": 56, "fontWeight": 900, - "fontFamily": "Arial Black" + "fontFamily": "Arial" }, "styleText": { "fill": "#fff", - "fontFamily": "Arial Black", + "fontFamily": "Arial", "fontSize": 42, "fontWeight": 900 } diff --git a/views/admin/dashboard.twig b/views/admin/dashboard.twig index 7318876..6dd5255 100644 --- a/views/admin/dashboard.twig +++ b/views/admin/dashboard.twig @@ -88,6 +88,7 @@