mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-11-09 15:35:47 +01:00
closes #1369
This commit is contained in:
@@ -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);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user