From 495fded6dd185955aed32c145e7763404767bca5 Mon Sep 17 00:00:00 2001 From: Baris Soner Usakli Date: Wed, 19 Feb 2014 15:33:59 -0500 Subject: [PATCH] closes #1038 --- public/src/forum/admin/categories.js | 44 ++++++++++++--------------- public/templates/admin/categories.tpl | 8 ++++- src/categories.js | 5 ++- src/routes/admin.js | 4 +-- src/routes/api.js | 4 +-- src/webserver.js | 2 +- 6 files changed, 35 insertions(+), 32 deletions(-) diff --git a/public/src/forum/admin/categories.js b/public/src/forum/admin/categories.js index e9840d8968..7b4f761c52 100644 --- a/public/src/forum/admin/categories.js +++ b/public/src/forum/admin/categories.js @@ -83,7 +83,7 @@ define(['uploader'], function(uploader) { var category = { name: $('#inputName').val(), description: $('#inputDescription').val(), - icon: $('#new-category-modal i').val(), + icon: $('#new-category-modal i').attr('value'), bgColor: '#0059b2', color: '#fff', order: $('.admin-categories #entry-container').children().length + 1 @@ -105,10 +105,26 @@ define(['uploader'], function(uploader) { var html = templates.prepare(templates['admin/categories'].blocks['categories']).parse({ categories: [data] }); + html = $(html); + html.find('[data-name="bgColor"], [data-name="color"]').each(enableColorPicker); $('#entry-container').append(html); $('#new-category-modal').modal('hide'); + }); + } + + function enableColorPicker(idx, inputEl) { + var jinputEl = $(inputEl), + previewEl = jinputEl.parents('[data-cid]').find('.preview-box'); + jinputEl.ColorPicker({ + color: jinputEl.val() || '#000', + onChange: function(hsb, hex) { + jinputEl.val('#' + hex); + if (inputEl.getAttribute('data-name') === 'bgColor') previewEl.css('background', '#' + hex); + else if (inputEl.getAttribute('data-name') === 'color') previewEl.css('color', '#' + hex); + modified(inputEl); + } }); } @@ -141,21 +157,12 @@ define(['uploader'], function(uploader) { modified(ev.target); }); - $('.dropdown li[data-disabled]').each(function(index, element) { - var disabled = $(element).attr('data-disabled'); - if (disabled == "0" || disabled == "") { - $(element).html(' Disable'); - } else { - $(element).html(' Enable'); - } - }); - $('.dropdown').on('click', '[data-disabled]', function(ev) { var btn = $(this); var categoryRow = btn.parents('li'); var cid = categoryRow.attr('data-cid'); - var disabled = this.getAttribute('data-disabled') === '0' ? '1' : '0'; + var disabled = this.getAttribute('data-disabled') === 'false' ? '1' : '0'; categoryRow.remove(); modified_categories[cid] = modified_categories[cid] || {}; modified_categories[cid]['disabled'] = disabled; @@ -165,20 +172,7 @@ define(['uploader'], function(uploader) { }); // Colour Picker - $('[data-name="bgColor"], [data-name="color"]').each(function(idx, inputEl) { - var jinputEl = $(this), - previewEl = jinputEl.parents('[data-cid]').find('.preview-box'); - - jinputEl.ColorPicker({ - color: this.value || '#000', - onChange: function(hsb, hex) { - jinputEl.val('#' + hex); - if (inputEl.getAttribute('data-name') === 'bgColor') previewEl.css('background', '#' + hex); - else if (inputEl.getAttribute('data-name') === 'color') previewEl.css('color', '#' + hex); - modified(inputEl); - } - }); - }); + $('[data-name="bgColor"], [data-name="color"]').each(enableColorPicker); $('.admin-categories').on('click', '.save', save); diff --git a/public/templates/admin/categories.tpl b/public/templates/admin/categories.tpl index c89bbf2806..b25f2f8218 100644 --- a/public/templates/admin/categories.tpl +++ b/public/templates/admin/categories.tpl @@ -100,7 +100,13 @@ diff --git a/src/categories.js b/src/categories.js index 09caa7d1f1..640122598d 100644 --- a/src/categories.js +++ b/src/categories.js @@ -30,6 +30,7 @@ var db = require('./database'), description: data.description, icon: data.icon, bgColor: data.bgColor, + background: data.bgColor, color: data.color, slug: slug, topic_count: 0, @@ -96,7 +97,7 @@ var db = require('./database'), 'category_name': results.category.name, 'category_description': results.category.description, 'link': results.category.link, - 'disabled': results.category.disabled || '0', + 'disabled': results.category.disabled, 'topic_row_size': 'col-md-9', 'category_id': category_id, 'active_users': results.active_users, @@ -167,6 +168,7 @@ var db = require('./database'), if(err) { return callback(err); } + if(cids && cids.length === 0) { return callback(null, {categories : []}); } @@ -301,6 +303,7 @@ var db = require('./database'), if (exists) { db.getObject('category:' + cid, function(err, data) { data.background = data.image ? 'url(' + data.image + ')' : data.bgColor; + data.disabled = data.disabled ? parseInt(data.disabled, 10) !== 0 : false; callback(err, data); }); } else { diff --git a/src/routes/admin.js b/src/routes/admin.js index 61e15a0f02..57c27519f2 100644 --- a/src/routes/admin.js +++ b/src/routes/admin.js @@ -316,7 +316,7 @@ var nconf = require('nconf'), app.get('/categories/active', function (req, res) { categories.getAllCategories(0, function (err, data) { data.categories = data.categories.filter(function (category) { - return (!category.disabled || parseInt(category.disabled, 10) === 0); + return !category.disabled; }); res.json(data); }); @@ -325,7 +325,7 @@ var nconf = require('nconf'), app.get('/categories/disabled', function (req, res) { categories.getAllCategories(0, function (err, data) { data.categories = data.categories.filter(function (category) { - return parseInt(category.disabled, 10) === 1; + return category.disabled; }); res.json(data); }); diff --git a/src/routes/api.js b/src/routes/api.js index 301c2ea671..3a62e1b417 100644 --- a/src/routes/api.js +++ b/src/routes/api.js @@ -87,7 +87,7 @@ var path = require('path'), categories.getAllCategories(uid, function (err, data) { data.categories = data.categories.filter(function (category) { - return (!category.disabled || parseInt(category.disabled, 10) === 0); + return !category.disabled; }); function canSee(category, next) { @@ -279,7 +279,7 @@ var path = require('path'), data.currentPage = page; data.privileges = privileges; - if (data && parseInt(data.disabled, 10) === 0) { + if (data && !data.disabled) { res.json(data); } else { next(); diff --git a/src/webserver.js b/src/webserver.js index d87c58b66d..5362e6e6e4 100644 --- a/src/webserver.js +++ b/src/webserver.js @@ -504,7 +504,7 @@ module.exports.server = server; categories.getAllCategories(0, function (err, returnData) { returnData.categories = returnData.categories.filter(function (category) { - return parseInt(category.disabled, 10) !== 1; + return !category.disabled; }); async.filter(returnData.categories, canSee, function(visibleCategories) {