v1.18.x
barisusakli 11 years ago
parent d12a526e82
commit c9c454825e

@ -71,5 +71,8 @@
"notification_sounds" : "Play a sound when you receive a notification.", "notification_sounds" : "Play a sound when you receive a notification.",
"browsing": "Browsing Settings", "browsing": "Browsing Settings",
"open_links_in_new_tab": "Open outgoing links in new tab?" "open_links_in_new_tab": "Open outgoing links in new tab?",
"follow_topics_you_reply_to": "Follow topics that you reply to.",
"follow_topics_you_create": "Follow topics you create."
} }

@ -240,4 +240,19 @@ var winston = require('winston'),
], callback); ], callback);
}; };
ThreadTools.follow = function(tid, uid, callback) {
callback = callback || function() {};
async.waterfall([
function (next) {
ThreadTools.exists(tid, next);
},
function (exists, next) {
if (!exists) {
return next(new Error('[[error:no-topic]]'));
}
db.setAdd('tid:' + tid + ':followers', uid, next);
}
], callback);
};
}(exports)); }(exports));

@ -105,9 +105,6 @@ module.exports = function(Topics) {
if(!canCreate) { if(!canCreate) {
return next(new Error('[[error:no-privileges]]')); return next(new Error('[[error:no-privileges]]'));
} }
next();
},
function(next) {
user.isReadyToPost(uid, next); user.isReadyToPost(uid, next);
}, },
function(next) { function(next) {
@ -115,35 +112,46 @@ module.exports = function(Topics) {
}, },
function(filteredData, next) { function(filteredData, next) {
content = filteredData.content || data.content; content = filteredData.content || data.content;
next();
},
function(next) {
Topics.create({uid: uid, title: title, cid: cid, thumb: data.thumb, tags: data.tags}, next); Topics.create({uid: uid, title: title, cid: cid, thumb: data.thumb, tags: data.tags}, next);
}, },
function(tid, next) { function(tid, next) {
Topics.reply({uid:uid, tid:tid, content:content, req: data.req}, next); Topics.reply({uid:uid, tid:tid, content:content, req: data.req}, next);
}, },
function(postData, next) { function(postData, next) {
threadTools.toggleFollow(postData.tid, uid); async.parallel({
postData: function(next) {
next(null, postData); next(null, postData);
}, },
function(postData, next) { settings: function(next) {
Topics.getTopicsByTids([postData.tid], 0, function(err, topicData) { user.getSettings(uid, function(err, settings) {
if (err) { if (err) {
return next(err); return next(err);
} }
if(!topicData || !topicData.length) { if (settings.followTopicsOnCreate) {
threadTools.follow(postData.tid, uid, next);
} else {
next();
}
});
},
topicData: function(next) {
Topics.getTopicsByTids([postData.tid], 0, next);
}
}, next);
},
function(data, next) {
if(!Array.isArray(data.topicData) || !data.topicData.length) {
return next(new Error('[[error:no-topic]]')); return next(new Error('[[error:no-topic]]'));
} }
topicData = topicData[0];
topicData.unreplied = 1;
plugins.fireHook('action:topic.post', topicData); data.topicData = data.topicData[0];
data.topicData.unreplied = 1;
plugins.fireHook('action:topic.post', data.topicData);
next(null, { next(null, {
topicData: topicData, topicData: data.topicData,
postData: postData postData: data.postData
});
}); });
} }
], callback); ], callback);
@ -178,9 +186,6 @@ module.exports = function(Topics) {
if (!canReply) { if (!canReply) {
return next(new Error('[[error:no-privileges]]')); return next(new Error('[[error:no-privileges]]'));
} }
next();
},
function(next) {
user.isReadyToPost(uid, next); user.isReadyToPost(uid, next);
}, },
function(next) { function(next) {
@ -215,6 +220,12 @@ module.exports = function(Topics) {
function(topicData, next) { function(topicData, next) {
topicData.title = validator.escape(topicData.title); topicData.title = validator.escape(topicData.title);
postData.topic = topicData; postData.topic = topicData;
user.getSettings(uid, next);
},
function(settings, next) {
if (settings.followTopicsOnReply) {
threadTools.follow(postData.tid, uid);
}
posts.getPidIndex(postData.pid, next); posts.getPidIndex(postData.pid, next);
}, },
function(index, next) { function(index, next) {

@ -33,6 +33,8 @@ module.exports = function(User) {
settings.notificationSounds = settings.notificationSounds ? parseInt(settings.notificationSounds, 10) === 1 : true; settings.notificationSounds = settings.notificationSounds ? parseInt(settings.notificationSounds, 10) === 1 : true;
settings.language = settings.language || meta.config.defaultLang || 'en_GB'; settings.language = settings.language || meta.config.defaultLang || 'en_GB';
settings.topicPostSort = settings.topicPostSort || meta.config.topicPostSort || 'oldest_to_newest'; settings.topicPostSort = settings.topicPostSort || meta.config.topicPostSort || 'oldest_to_newest';
settings.followTopicsOnCreate = settings.followTopicsOnCreate ? parseInt(settings.followTopicsOnCreate, 10) === 1 : true;
settings.followTopicsOnReply = settings.followTopicsOnReply ? parseInt(settings.followTopicsOnReply, 10) === 1 : false;
callback(null, settings); callback(null, settings);
}); });
}); });
@ -80,7 +82,9 @@ module.exports = function(User) {
topicsPerPage: data.topicsPerPage, topicsPerPage: data.topicsPerPage,
postsPerPage: data.postsPerPage, postsPerPage: data.postsPerPage,
notificationSounds: data.notificationSounds, notificationSounds: data.notificationSounds,
language: data.language || meta.config.defaultLang language: data.language || meta.config.defaultLang,
followTopicsOnCreate: data.followTopicsOnCreate,
followTopicsOnReply: data.followTopicsOnReply
}, callback); }, callback);
}; };

Loading…
Cancel
Save