diff --git a/CHANGELOG.md b/CHANGELOG.md
index c58f94b2..96609e97 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -15,6 +15,7 @@ This project adheres to [Semantic Versioning](http://semver.org/).
- Add graceful shutdown of modules by calling `stop` function of each `node_helper` on SIGINT before exiting.
- Link update subtext to Github diff of current version versus tracking branch.
- Add Catalan translation.
+- Add ability to filter out newsfeed items based on prohibited words found in title (resolves #1071)
### Updated
diff --git a/modules/default/newsfeed/README.md b/modules/default/newsfeed/README.md
index 7c4ad48d..843c2dda 100644
--- a/modules/default/newsfeed/README.md
+++ b/modules/default/newsfeed/README.md
@@ -76,6 +76,7 @@ The following properties can be configured:
| `startTags` | List the tags you would like to have removed at the beginning of the feed item
**Possible values:** `['TAG']` or `['TAG1','TAG2',...]`
| `removeEndTags` | Remove specified tags from the **end** of an item's description and/or title.
**Possible values:**`'title'`, `'description'`, `'both'`
| `endTags` | List the tags you would like to have removed at the end of the feed item
**Possible values:** `['TAG']` or `['TAG1','TAG2',...]`
+| `prohibitedWords` | Remove news feed item if one of these words is found anywhere in the title (case insensitive and greedy matching)
**Possible values:** `['word']` or `['word1','word2',...]`
The `feeds` property contains an array with multiple objects. These objects have the following properties:
diff --git a/modules/default/newsfeed/newsfeed.js b/modules/default/newsfeed/newsfeed.js
index b230fdb1..75a5e2b5 100644
--- a/modules/default/newsfeed/newsfeed.js
+++ b/modules/default/newsfeed/newsfeed.js
@@ -33,7 +33,8 @@ Module.register("newsfeed",{
removeStartTags: "",
removeEndTags: "",
startTags: [],
- endTags: []
+ endTags: [],
+ prohibitedWords: []
},
@@ -241,6 +242,18 @@ Module.register("newsfeed",{
if(this.config.maxNewsItems > 0) {
newsItems = newsItems.slice(0, this.config.maxNewsItems);
}
+
+ if(this.config.prohibitedWords.length > 0) {
+ newsItems = newsItems.filter(function(value){
+ for (var i=0; i < this.config.prohibitedWords.length; i++) {
+ if (value["title"].toLowerCase().indexOf(this.config.prohibitedWords[i].toLowerCase()) > -1) {
+ return false;
+ }
+ }
+ return true;
+ }, this);
+ }
+
this.newsItems = newsItems;
},