From 9084ee2d7e0d76b9601dbdd284f4a862b6fd3e03 Mon Sep 17 00:00:00 2001 From: barisusakli Date: Tue, 24 Feb 2015 22:24:19 -0500 Subject: [PATCH 1/5] cleanup popular.js --- public/language/en_GB/recent.json | 1 + public/src/client/popular.js | 10 +++------- 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/public/language/en_GB/recent.json b/public/language/en_GB/recent.json index f01670e47c..835dfce296 100644 --- a/public/language/en_GB/recent.json +++ b/public/language/en_GB/recent.json @@ -6,6 +6,7 @@ "year": "Year", "alltime": "All Time", "no_recent_topics": "There are no recent topics.", + "no_popular_topics": "There are no popular topics.", "there-is-a-new-topic": "There is a new topic.", "there-is-a-new-topic-and-a-new-post": "There is a new topic and a new post.", diff --git a/public/src/client/popular.js b/public/src/client/popular.js index 6edc5a071c..0d05186faf 100644 --- a/public/src/client/popular.js +++ b/public/src/client/popular.js @@ -2,16 +2,12 @@ /* globals define, app, socket*/ -define('forum/popular', ['forum/recent', 'forum/infinitescroll'], function(recent, infinitescroll) { +define('forum/popular', ['forum/recent'], function(recent) { var Popular = {}; Popular.init = function() { app.enterRoom('recent_posts'); - $('#new-topics-alert').on('click', function() { - $(this).addClass('hide'); - }); - selectActivePill(); }; @@ -26,10 +22,10 @@ define('forum/popular', ['forum/recent', 'forum/infinitescroll'], function(recen return false; } }); - }; + } function getActiveSection() { - parts = window.location.href.split('/'); + var parts = window.location.href.split('/'); return parts[parts.length - 1]; } From 948cd22e9c4d9f5c6f2ff13f2181dc965a697449 Mon Sep 17 00:00:00 2001 From: Julian Lam Date: Wed, 25 Feb 2015 09:49:08 -0500 Subject: [PATCH 2/5] triggering full-screen composer on short viewports as well as narrow, #2763 --- public/src/modules/composer/resize.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/src/modules/composer/resize.js b/public/src/modules/composer/resize.js index 20048eb7e6..9d5d303df9 100644 --- a/public/src/modules/composer/resize.js +++ b/public/src/modules/composer/resize.js @@ -25,7 +25,7 @@ define('composer/resize', function() { } } - if (env === 'sm' || env === 'xs') { + if (env === 'sm' || env === 'xs' || window.innerHeight < 480) { app.toggleNavbar(false); postContainer.css('height', $(window).height()); } From ba7c873f0702767c007355deb3ba4c74a78709fe Mon Sep 17 00:00:00 2001 From: Julian Lam Date: Wed, 25 Feb 2015 09:57:32 -0500 Subject: [PATCH 3/5] closed #2765 --- src/groups.js | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/groups.js b/src/groups.js index 54ff60a195..4d5d5fde0f 100644 --- a/src/groups.js +++ b/src/groups.js @@ -135,7 +135,19 @@ var async = require('async'), userObj.isOwner = isOwner; next(null, userObj); }); - }, next); + }, function(err, users) { + if (err) { + return next(); + } + + next(null, users.sort(function(a, b) { + if (a.isOwner === b.isOwner) { + return 0; + } else { + return a.isOwner && !b.isOwner ? -1 : 1; + } + })); + }); } ], next); } else { From ade12116a1586e248c2389e1ecd4b95cd17e6e99 Mon Sep 17 00:00:00 2001 From: Julian Lam Date: Wed, 25 Feb 2015 10:51:35 -0500 Subject: [PATCH 4/5] closed #2766 --- public/language/en_GB/groups.json | 1 + public/src/client/groups/details.js | 26 ++++++++++++++++++++++++-- src/groups.js | 6 +++++- 3 files changed, 30 insertions(+), 3 deletions(-) diff --git a/public/language/en_GB/groups.json b/public/language/en_GB/groups.json index a72cf20110..09b1509171 100644 --- a/public/language/en_GB/groups.json +++ b/public/language/en_GB/groups.json @@ -29,6 +29,7 @@ "details.change_icon": "Change Icon", "details.change_colour": "Change Colour", "details.badge_text": "Badge Text", + "details.userTitleEnabled": "Show Badge", "details.private_help": "If enabled, joining of groups requires approval from a group owner", "details.hidden": "Hidden", "details.hidden_help": "If enabled, this group will not be found in the groups listing, and users will have to be invited manually", diff --git a/public/src/client/groups/details.js b/public/src/client/groups/details.js index f4f56a686e..bc1534f051 100644 --- a/public/src/client/groups/details.js +++ b/public/src/client/groups/details.js @@ -88,7 +88,9 @@ define('forum/groups/details', ['iconSelect', 'vendor/colorpicker/colorpicker', iconBtn = settingsFormEl.find('[data-action="icon-select"]'), previewEl = settingsFormEl.find('.label'), previewIcon = previewEl.find('i'), - previewValueEl = settingsFormEl.find('[name="icon"]'); + userTitleEl = settingsFormEl.find('[name="userTitle"]'), + userTitleEnabledEl = settingsFormEl.find('[name="userTitleEnabled"]'), + iconValueEl = settingsFormEl.find('[name="icon"]'); // Add color picker to settings form colorBtn.ColorPicker({ @@ -105,9 +107,29 @@ define('forum/groups/details', ['iconSelect', 'vendor/colorpicker/colorpicker', // Add icon selection interface iconBtn.on('click', function() { iconSelect.init(previewIcon, function() { - previewValueEl.val(previewIcon.val()); + iconValueEl.val(previewIcon.val()); }); }); + + // If the user title changes, update that too + userTitleEl.on('keyup', function() { + var icon = previewIcon.detach(); + previewEl.text(' ' + (this.value || settingsFormEl.find('#name').val())); + previewEl.prepend(icon); + }); + + // Disable user title customisation options if the the user title itself is disabled + userTitleEnabledEl.on('change', function() { + var customOpts = $('.user-title-option input, .user-title-option button'); + + if (this.checked) { + customOpts.removeAttr('disabled'); + previewEl.removeClass('hide'); + } else { + customOpts.attr('disabled', 'disabled'); + previewEl.addClass('hide'); + } + }); }; Details.update = function() { diff --git a/src/groups.js b/src/groups.js index 4d5d5fde0f..21575db866 100644 --- a/src/groups.js +++ b/src/groups.js @@ -228,6 +228,7 @@ var async = require('async'), results.base.description = validator.escape(results.base.description); results.base.descriptionParsed = descriptionParsed; results.base.userTitle = validator.escape(results.base.userTitle); + results.base.userTitleEnabled = results.base.userTitleEnabled ? !!parseInt(results.base.userTitleEnabled, 10) : true; results.base.createtimeISO = utils.toISOString(results.base.createtime); results.base.members = results.users.filter(Boolean); results.base.pending = results.pending.filter(Boolean); @@ -537,6 +538,7 @@ var async = require('async'), var payload = { userTitle: values.userTitle || '', + userTitleEnabled: values.userTitleEnabled === true ? '1' : '0', description: values.description || '', icon: values.icon || '', labelColor: values.labelColor || '#000000', @@ -891,6 +893,8 @@ var async = require('async'), } groupData = groupData.map(function(group) { if (group) { + group.userTitle = validator.escape(group.userTitle) || validator.escape(group.name); + group.userTitleEnabled = group.userTitleEnabled ? parseInt(group.userTitleEnabled, 10) === 1 : true; group.labelColor = group.labelColor || '#000000'; group.createtimeISO = utils.toISOString(group.createtime); group.hidden = parseInt(group.hidden, 10) === 1; @@ -925,7 +929,7 @@ var async = require('async'), } groupData = groupData.filter(function(group) { - return group && parseInt(group.hidden, 10) !== 1 && !!group.userTitle; + return group && parseInt(group.hidden, 10) !== 1; }); var groupSets = groupData.map(function(group) { From 29873f1c5c55a5b6328a7f9f811a74e9690845a2 Mon Sep 17 00:00:00 2001 From: Julian Lam Date: Wed, 25 Feb 2015 12:26:35 -0500 Subject: [PATCH 5/5] removed unused .getAll method, and sorting notifications client-side so that unread notifs don't all appear at the top, #2772 --- public/src/modules/notifications.js | 4 +++- src/user/notifications.js | 14 -------------- 2 files changed, 3 insertions(+), 15 deletions(-) diff --git a/public/src/modules/notifications.js b/public/src/modules/notifications.js index 6e36cf7296..d0f92d0230 100644 --- a/public/src/modules/notifications.js +++ b/public/src/modules/notifications.js @@ -22,7 +22,9 @@ define('notifications', ['sounds'], function(sound) { return app.alertError(err.message); } - var notifs = data.unread.concat(data.read); + var notifs = data.unread.concat(data.read).sort(function(a, b) { + return parseInt(a.datetime, 10) > parseInt(b.datetime, 10) ? -1 : 1; + }); translator.toggleTimeagoShorthand(); for(var i=0; i