From c1ccc81400b2cd8825e73f2b9b5407a24605766e Mon Sep 17 00:00:00 2001 From: Julian Lam Date: Mon, 17 Mar 2014 10:37:11 -0400 Subject: [PATCH] ACP integration for Sounds --- public/src/forum/admin/settings.js | 6 ------ public/src/forum/admin/sounds.js | 27 +++++++++++++++++++++++++++ public/src/modules/settings.js | 2 ++ src/controllers/admin.js | 28 ++++++++++++++++------------ src/meta.js | 11 +++++++++-- src/routes/admin.js | 3 +++ 6 files changed, 57 insertions(+), 20 deletions(-) create mode 100644 public/src/forum/admin/sounds.js diff --git a/public/src/forum/admin/settings.js b/public/src/forum/admin/settings.js index df7651c83f..b27b11c72e 100644 --- a/public/src/forum/admin/settings.js +++ b/public/src/forum/admin/settings.js @@ -5,12 +5,6 @@ define(['uploader', 'sounds'], function(uploader, sounds) { var Settings = {}; Settings.init = function() { - // Sounds tab - $('#sounds').find('button[data-action="play"]').on('click', function() { - var fileName = $(this).parent().siblings('select').val(); - sounds.playFile(fileName); - }); - Settings.prepare(); }; diff --git a/public/src/forum/admin/sounds.js b/public/src/forum/admin/sounds.js new file mode 100644 index 0000000000..b56436163e --- /dev/null +++ b/public/src/forum/admin/sounds.js @@ -0,0 +1,27 @@ +"use strict"; +/* global define */ + +define(['sounds', 'settings'], function(Sounds, Settings) { + var SoundsAdmin = {}; + + SoundsAdmin.init = function() { + // Sounds tab + $('.sounds').find('button[data-action="play"]').on('click', function(e) { + e.preventDefault(); + + var fileName = $(this).parent().parent().find('select').val(); + Sounds.playFile(fileName); + }); + + // Load Form Values + Settings.load('sounds', $('.sounds form')); + + // Saving of Form Values + var saveEl = $('#save'); + saveEl.on('click', function() { + Settings.save('sounds', $('.sounds form')); + }); + }; + + return SoundsAdmin; +}); \ No newline at end of file diff --git a/public/src/modules/settings.js b/public/src/modules/settings.js index 36195d58fb..6a599cfb31 100644 --- a/public/src/modules/settings.js +++ b/public/src/modules/settings.js @@ -43,6 +43,8 @@ define(function() { type: 'success', timeout: 2500 }); + + socket.emit('admin.restart'); }); } else { console.log('[settings] Form not found.'); diff --git a/src/controllers/admin.js b/src/controllers/admin.js index 0d0851fd17..f62a4e974d 100644 --- a/src/controllers/admin.js +++ b/src/controllers/admin.js @@ -28,6 +28,7 @@ var adminController = { languages: {}, settings: {}, logger: {}, + sounds: {}, users: require('./admin/users'), uploads: require('./admin/uploads') }; @@ -112,18 +113,7 @@ adminController.languages.get = function(req, res, next) { }; adminController.settings.get = function(req, res, next) { - meta.sounds.getLocal(function(err, sounds) { - // There has GOT to be a better way! - sounds = Object.keys(sounds).map(function(name) { - return { - name: name - }; - }); - - res.render('admin/settings', { - sounds: sounds - }); - }); + res.render('admin/settings', {}); }; adminController.logger.get = function(req, res, next) { @@ -181,4 +171,18 @@ adminController.groups.get = function(req, res, next) { }); }; +adminController.sounds.get = function(req, res, next) { + meta.sounds.getLocal(function(err, sounds) { + sounds = Object.keys(sounds).map(function(name) { + return { + name: name + }; + }); + + res.render('admin/sounds', { + sounds: sounds + }); + }); +}; + module.exports = adminController; \ No newline at end of file diff --git a/src/meta.js b/src/meta.js index 603d43296c..f38a777e68 100644 --- a/src/meta.js +++ b/src/meta.js @@ -367,8 +367,15 @@ var fs = require('fs'), /* Settings */ Meta.settings = {}; - Meta.settings.get = db.getObject; - Meta.settings.set = db.setObject; + Meta.settings.get = function(hash, callback) { + hash = 'settings:' + hash; + db.getObject(hash, callback); + }; + + Meta.settings.set = function(hash, values, callback) { + hash = 'settings:' + hash; + db.setObject(hash, values, callback); + }; /* Assorted */ Meta.css = { diff --git a/src/routes/admin.js b/src/routes/admin.js index 647dd5f54e..dcb8513f55 100644 --- a/src/routes/admin.js +++ b/src/routes/admin.js @@ -20,6 +20,9 @@ function mainRoutes(app, middleware, controllers) { app.get('/admin/groups', middleware.admin.buildHeader, controllers.admin.groups.get); app.get('/api/admin/groups', controllers.admin.groups.get); + + app.get('/admin/sounds', middleware.admin.buildHeader, controllers.admin.sounds.get); + app.get('/api/admin/sounds', controllers.admin.sounds.get); } function userRoutes(app, middleware, controllers) {