diff --git a/src/Filtering/Filter.coffee b/src/Filtering/Filter.coffee index 548ba1b46..15af11f07 100644 --- a/src/Filtering/Filter.coffee +++ b/src/Filtering/Filter.coffee @@ -11,7 +11,6 @@ Filter = sfwBoards = BoardConfig.sfwBoards(true).join(',') for key of Config.filter - @filters[key] = [] for line in Conf[key].split '\n' continue if line[0] is '#' @@ -75,11 +74,20 @@ Filter = top = filter.match(/top:(yes|no)/)?[1] or 'yes' top = top is 'yes' # Turn it into a boolean - @filters[key].push @createFilter regexp, boards, excludes, op, stub, hl, top + # Fields that this filter applies to (for 'general' filters) + if key is 'general' + if (types = filter.match /(?:^|;)\s*type:([^;]*)/) + types = types[1].split(',').filter (x) -> + x of Config.filter and x isnt 'general' + else + types = ['subject', 'name', 'filename', 'comment'] - # Only execute filter types that contain valid filters. - unless @filters[key].length - delete @filters[key] + filter = @createFilter regexp, boards, excludes, op, stub, hl, top + if key is 'general' + for type in types + (@filters[type] or= []).push filter + else + (@filters[key] or= []).push filter return unless Object.keys(@filters).length Callbacks.Post.push diff --git a/src/General/Settings.coffee b/src/General/Settings.coffee index 3453454da..67eea6ce0 100644 --- a/src/General/Settings.coffee +++ b/src/General/Settings.coffee @@ -461,6 +461,8 @@ Settings = ta.value = item[name] $.add div, ta return + filterTypes = Object.keys(Config.filter).filter((x) -> x isnt 'general').map (x, i) -> + <%= html('?{i}{,}${x}') %> $.extend div, <%= readHTML('Filter-guide.html') %> $('.warning', div).hidden = Conf['Filter'] diff --git a/src/General/Settings/Filter-guide.html b/src/General/Settings/Filter-guide.html index 22cf5a5a9..df0838609 100644 --- a/src/General/Settings/Filter-guide.html +++ b/src/General/Settings/Filter-guide.html @@ -30,6 +30,11 @@ Highlighted OPs will have their threads put on top of the board index by default.
For example: top:yes; or top:no;. +
  • + Filters in the "General" section apply to multiple fields, by default subject,name,filename,comment.
    + The fields can be specified with the type option, separated by commas.
    + For example: type:@{filterTypes};. +
  • Note: If you're using the native catalog rather than <%= meta.name %>'s catalog, <%= meta.name %>'s filters do not apply there.
    diff --git a/src/General/Settings/Filter-select.html b/src/General/Settings/Filter-select.html index e13c9fa64..1d8184c0a 100644 --- a/src/General/Settings/Filter-select.html +++ b/src/General/Settings/Filter-select.html @@ -1,5 +1,6 @@