From ccd29bfd61a242490f8f7ba13308f5aebc735db6 Mon Sep 17 00:00:00 2001 From: Baris Soner Usakli Date: Fri, 28 Feb 2014 15:25:50 -0500 Subject: [PATCH 1/4] added callback to category update --- public/src/forum/admin/categories.js | 15 ++++++++- src/admin/categories.js | 46 +++++++++++++++++----------- src/socket.io/admin.js | 6 ++-- 3 files changed, 45 insertions(+), 22 deletions(-) diff --git a/public/src/forum/admin/categories.js b/public/src/forum/admin/categories.js index f963c6918d..2bcc541cd8 100644 --- a/public/src/forum/admin/categories.js +++ b/public/src/forum/admin/categories.js @@ -14,7 +14,20 @@ define(['uploader'], function(uploader) { function save() { if(Object.keys(modified_categories).length) { - socket.emit('admin.categories.update', modified_categories); + socket.emit('admin.categories.update', modified_categories, function(err, result) { + if (err) { + return app.alertError(err.message); + } + + if (result && result.length) { + app.alert({ + title: 'Updated Categories', + message: 'Category IDs ' + result.join(', ') + ' was successfully updated.', + type: 'success', + timeout: 2000 + }); + } + }); modified_categories = {}; } return false; diff --git a/src/admin/categories.js b/src/admin/categories.js index 0522837a05..0980032734 100644 --- a/src/admin/categories.js +++ b/src/admin/categories.js @@ -1,35 +1,45 @@ -var db = require('./../database'), + +'use strict'; + +var async = require('async'), + db = require('./../database'), utils = require('./../../public/src/utils'), categories = require('./../categories'); (function(CategoriesAdmin) { - CategoriesAdmin.update = function(modified, socket) { - var updated = []; + CategoriesAdmin.update = function(modified, socket, callback) { - for (var cid in modified) { + function updateCategory(cid, next) { var category = modified[cid]; + var fields = Object.keys(category); - for (var key in category) { - db.setObjectField('category:' + cid, key, category[key]); + async.each(fields, function(key, next) { + updateCategoryField(cid, key, category[key], next); + }, next); + } + + function updateCategoryField(cid, key, value, next) { + db.setObjectField('category:' + cid, key, value, function(err) { + if(err) { + return next(err); + } if (key === 'name') { - // reset slugs if name is updated - var slug = cid + '/' + utils.slugify(category[key]); - db.setObjectField('category:' + cid, 'slug', slug); + var slug = cid + '/' + utils.slugify(value); + db.setObjectField('category:' + cid, 'slug', slug, next); } else if (key === 'order') { - db.sortedSetAdd('categories:cid', category[key], cid); + db.sortedSetAdd('categories:cid', value, cid, next); + } else { + next(); } - } - - updated.push(cid); + }); } - socket.emit('event:alert', { - title: 'Updated Categories', - message: 'Category IDs ' + updated.join(', ') + ' was successfully updated.', - type: 'success', - timeout: 2000 + var cids = Object.keys(modified); + + async.each(cids, updateCategory, function(err) { + callback(err, cids); }); }; diff --git a/src/socket.io/admin.js b/src/socket.io/admin.js index eddfd78342..3d5fd87726 100644 --- a/src/socket.io/admin.js +++ b/src/socket.io/admin.js @@ -118,12 +118,12 @@ SocketAdmin.categories.create = function(socket, data, callback) { categories.create(data, callback); }; -SocketAdmin.categories.update = function(socket, data) { +SocketAdmin.categories.update = function(socket, data, callback) { if(!data) { - throw new Error('invalid data'); + return callback(new Error('invalid data')); } - admin.categories.update(data, socket); + admin.categories.update(data, socket, callback); }; SocketAdmin.categories.search = function(socket, data, callback) { From 7eae79cee9aa792bdfd49e084d3e6ab8b0077efa Mon Sep 17 00:00:00 2001 From: Baris Soner Usakli Date: Fri, 28 Feb 2014 15:36:57 -0500 Subject: [PATCH 2/4] anons cant chat --- public/src/app.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/src/app.js b/public/src/app.js index 621fd0f44c..9ad598be89 100644 --- a/public/src/app.js +++ b/public/src/app.js @@ -407,7 +407,7 @@ var socket, return; } - if (!app.username) { + if (!app.uid) { app.alert({ type: 'danger', title: 'Not Logged In', From eac201cae93e66b348fde61592f088a09a9859b3 Mon Sep 17 00:00:00 2001 From: Baris Soner Usakli Date: Fri, 28 Feb 2014 15:56:30 -0500 Subject: [PATCH 3/4] no need to do these on every ajaxify into categories --- public/src/forum/category.js | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/public/src/forum/category.js b/public/src/forum/category.js index 68d3df5b7b..91064f7aab 100644 --- a/public/src/forum/category.js +++ b/public/src/forum/category.js @@ -3,27 +3,22 @@ define(['composer', 'forum/pagination'], function(composer, pagination) { loadingMoreTopics = false; Category.init = function() { - var cid = templates.get('category_id'), - categoryName = templates.get('category_name'), - categoryUrl = encodeURIComponent(window.location.href), - twitterUrl = "https://twitter.com/intent/tweet?url=" + categoryUrl + "&text=" + encodeURIComponent(categoryName), - facebookUrl = "https://www.facebook.com/sharer/sharer.php?u=" + categoryUrl, - googleUrl = "https://plus.google.com/share?url=" + categoryUrl; + var cid = templates.get('category_id'); app.enterRoom('category_' + cid); $('#twitter-share').on('click', function () { - window.open(twitterUrl, '_blank', 'width=550,height=420,scrollbars=no,status=no'); + window.open('https://twitter.com/intent/tweet?url=' + encodeURIComponent(window.location.href) + '&text=' + encodeURIComponent(templates.get('category_name')), '_blank', 'width=550,height=420,scrollbars=no,status=no'); return false; }); $('#facebook-share').on('click', function () { - window.open(facebookUrl, '_blank', 'width=626,height=436,scrollbars=no,status=no'); + window.open('https://www.facebook.com/sharer/sharer.php?u=' + encodeURIComponent(window.location.href), '_blank', 'width=626,height=436,scrollbars=no,status=no'); return false; }); $('#google-share').on('click', function () { - window.open(googleUrl, '_blank', 'width=500,height=570,scrollbars=no,status=no'); + window.open('https://plus.google.com/share?url=' + encodeURIComponent(window.location.href), '_blank', 'width=500,height=570,scrollbars=no,status=no'); return false; }); From eea677655f694899c8d6e5a98718cea0133605b3 Mon Sep 17 00:00:00 2001 From: Baris Soner Usakli Date: Fri, 28 Feb 2014 16:13:19 -0500 Subject: [PATCH 4/4] minor clean up to categories.js --- public/src/forum/category.js | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/public/src/forum/category.js b/public/src/forum/category.js index 91064f7aab..80231bc931 100644 --- a/public/src/forum/category.js +++ b/public/src/forum/category.js @@ -38,9 +38,7 @@ define(['composer', 'forum/pagination'], function(composer, pagination) { var clickedTid = $(this).parents('li.category-item[data-tid]').attr('data-tid'); $('#topics-container li.category-item').each(function(index, el) { if($(el).offset().top - $(window).scrollTop() > 0) { - tid = $(el).attr('data-tid'); - - localStorage.setItem('category:bookmark', tid); + localStorage.setItem('category:bookmark', $(el).attr('data-tid')); localStorage.setItem('category:bookmark:clicked', clickedTid); return false; } @@ -133,8 +131,9 @@ define(['composer', 'forum/pagination'], function(composer, pagination) { if(!loadingMoreTopics && $('#topics-container').children().length) { - var after = 0; - var el = null; + var after = 0, + offset = 0, + el = null; if(direction > 0) { el = $('#topics-container .category-item[data-tid]').last(); @@ -146,10 +145,9 @@ define(['composer', 'forum/pagination'], function(composer, pagination) { if(after < 0) { after = 0; } + offset = el.offset().top - $('#header-menu').offset().top + $('#header-menu').height(); } - var offset = el.offset().top - $('#header-menu').offset().top + $('#header-menu').height(); - Category.loadMoreTopics(templates.get('category_id'), after, function() { if(direction < 0 && el) { Category.scrollToTopic(el.attr('data-tid'), null, 0, offset); @@ -199,7 +197,7 @@ define(['composer', 'forum/pagination'], function(composer, pagination) { pagination.recreatePaginationLinks(newPageCount); }); - $('#topics-container span.timeago').timeago(); + topic.find('span.timeago').timeago(); app.createUserTooltips(); $(window).trigger('action:categories.new_topic.loaded'); @@ -264,7 +262,7 @@ define(['composer', 'forum/pagination'], function(composer, pagination) { } } - $('#topics-container span.timeago').timeago(); + html.find('span.timeago').timeago(); app.createUserTooltips(); app.makeNumbersHumanReadable(html.find('.human-readable-number'));