diff --git a/src/Filtering/Filter.coffee b/src/Filtering/Filter.coffee
index 80df4cffd..386c8f083 100644
--- a/src/Filtering/Filter.coffee
+++ b/src/Filtering/Filter.coffee
@@ -64,6 +64,9 @@ Filter =
else
Conf['Stubs']
+ # Desktop notification
+ noti = /notify/.test filter
+
# Highlight the post, or hide it.
# If not specified, the highlight class will be filter-highlight.
# Defaults to post hiding.
@@ -82,7 +85,7 @@ Filter =
else
types = ['subject', 'name', 'filename', 'comment']
- filter = @createFilter regexp, boards, excludes, op, stub, hl, top
+ filter = @createFilter regexp, boards, excludes, op, stub, hl, top, noti
if key is 'general'
for type in types
(@filters[type] or= []).push filter
@@ -94,7 +97,7 @@ Filter =
name: 'Filter'
cb: @node
- createFilter: (regexp, boards, excludes, op, stub, hl, top) ->
+ createFilter: (regexp, boards, excludes, op, stub, hl, top, noti) ->
test =
if typeof regexp is 'string'
# MD5 checking
@@ -103,10 +106,11 @@ Filter =
(value) -> regexp.test value
settings =
- hide: !hl
+ hide: !(hl or noti)
stub: stub
class: hl
top: top
+ noti: noti
(value, boardID, isReply) ->
if boards and boardID not in boards
@@ -125,6 +129,7 @@ Filter =
stub = true
hl = undefined
top = false
+ noti = false
if QuoteYou.isYou(post)
hideable = false
for key of Filter.filters when ((value = Filter[key] post)?)
@@ -138,14 +143,16 @@ Filter =
unless hl and result.class in hl
(hl or= []).push result.class
top or= result.top
+ if result.noti
+ noti = true
if hide
{hide, stub}
else
- {hl, top}
+ {hl, top, noti}
node: ->
return if @isClone
- {hide, stub, hl, top} = Filter.test @, (!@isFetchedQuote and (@isReply or g.VIEW is 'index'))
+ {hide, stub, hl, top, noti} = Filter.test @, (!@isFetchedQuote and (@isReply or g.VIEW is 'index'))
if hide
if @isReply
PostHiding.hide @, stub
@@ -155,7 +162,8 @@ Filter =
if hl
@highlights = hl
$.addClass @nodes.root, hl...
- return
+ if noti and Unread.posts and (@ID > Unread.lastReadPost) and not QuoteYou.isYou(@)
+ Unread.openNotification @, ' triggered a notification filter'
isHidden: (post) ->
!!Filter.test(post).hide
diff --git a/src/General/Settings/Filter-guide.html b/src/General/Settings/Filter-guide.html
index df0838609..911a9051f 100644
--- a/src/General/Settings/Filter-guide.html
+++ b/src/General/Settings/Filter-guide.html
@@ -30,6 +30,10 @@
Highlighted OPs will have their threads put on top of the board index by default.
For example: top:yes; or top:no;.
+
notify;.
+ subject,name,filename,comment.type option, separated by commas.