From 6d03f713c5cfb73800b89f633106894e7e7a08cf Mon Sep 17 00:00:00 2001 From: Julian Lam Date: Thu, 13 Mar 2014 23:43:36 -0400 Subject: [PATCH] "Sounds" tab in Settings page... WIP, needs fixing. --- public/src/forum/admin/settings.js | 8 ++++++- public/src/modules/sounds.js | 14 ++++++++++++ src/controllers/admin.js | 34 ++++++++++++++++++++---------- 3 files changed, 44 insertions(+), 12 deletions(-) diff --git a/public/src/forum/admin/settings.js b/public/src/forum/admin/settings.js index e2bc631084..df7651c83f 100644 --- a/public/src/forum/admin/settings.js +++ b/public/src/forum/admin/settings.js @@ -1,10 +1,16 @@ "use strict"; /*global define, app, socket, RELATIVE_PATH */ -define(['uploader'], function(uploader) { +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/modules/sounds.js b/public/src/modules/sounds.js index 13b18e7364..6bce66ce73 100644 --- a/public/src/modules/sounds.js +++ b/public/src/modules/sounds.js @@ -1,4 +1,5 @@ "use strict"; +/* global socket */ define(['buzz'], function(buzz) { var Sounds = {}; @@ -70,5 +71,18 @@ define(['buzz'], function(buzz) { else ready(); }; + Sounds.playFile = function(fileName) { + var ready = function() { + if (Sounds.loaded[fileName]) { + Sounds.loaded[fileName].play(); + } else { + console.log('[sounds] Not found:', name); + } + }; + + if (!this.initialised) this.init(ready); + else ready(); + } + return Sounds; }); \ No newline at end of file diff --git a/src/controllers/admin.js b/src/controllers/admin.js index 159b0cac1c..0d0851fd17 100644 --- a/src/controllers/admin.js +++ b/src/controllers/admin.js @@ -2,16 +2,17 @@ var async = require('async'), - user = require('./../user'), - categories = require('./../categories'), - topics = require('./../topics'), - db = require('./../database'), - events = require('./../events'), - languages = require('./../languages'), - plugins = require('./../plugins'), - widgets = require('./../widgets'), - groups = require('./../groups'), - pkg = require('./../../package.json'), + user = require('../user'), + categories = require('../categories'), + topics = require('../topics'), + meta = require('../meta'), + db = require('../database'), + events = require('../events'), + languages = require('../languages'), + plugins = require('../plugins'), + widgets = require('../widgets'), + groups = require('../groups'), + pkg = require('../../package.json'), validator = require('validator'); @@ -111,7 +112,18 @@ adminController.languages.get = function(req, res, next) { }; adminController.settings.get = function(req, res, next) { - res.render('admin/settings', {}); + 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 + }); + }); }; adminController.logger.get = function(req, res, next) {