Commit Graph

37195 Commits

Author SHA1 Message Date
a2c85f0845 DEV: use the existing parsePostData function (#9629) 2020-05-04 18:35:04 +02:00
70b1e98609 FIX: reverts to use an observer to support loading more notifications (#9628)
Apparently, didReceiveAttrs is not called when loading more notifications, this would require a more heavy refactoring.
2020-05-04 18:23:45 +02:00
c6b31464db Version bump to v2.5.0.beta4 v2.5.0.beta4 2020-05-04 11:44:42 -04:00
ff73f116e8 DEV: Set owner on raw views (#9624)
This allows things like `Ember.inject.service` to be used within the raw view. setOwner simply sets one property on the object, and the result is cached along with the other injected properties, so this should have negligible performance impact.
2020-05-04 16:31:31 +01:00
3cce608379 Update translations 2020-05-04 10:39:01 -04:00
29c6c4b092 UX: Use created_at as the default order when viewing reviewed items or everything (#9601) 2020-05-04 10:26:12 -03:00
0fe8ad13fa UX: change the user merge button's label and icon. 2020-05-04 18:44:30 +05:30
5285cbee62 FIX: shows filter if there's no notifications to show after filter 2020-05-04 13:16:53 +02:00
a51b8d9c66 FIX: Do not use cached settings during theme compilation
We compile within a database transaction, so using a cached value from redis can cause unwanted side effects
2020-05-04 09:43:06 +01:00
4f885d7da2 FIX: Clear theme caches after database transaction has committed
This was causing unusual side effects on high-traffic sites, where the cache would be rebuilt before the transaction had been committed
2020-05-04 09:42:50 +01:00
5901717531 DEV: Allow DB.after_commit to be used outside of a transaction
In this case, it will execute the given block immediately
2020-05-04 09:42:41 +01:00
3877ef2cfa FEATURE: Unconditionally notify on edits at least once a day
This ensures that at a minimum you are notified once a day of
repeat edits by the same user.

Long term we may consider winding this down to say 1 hour or
making it configurable.
2020-05-04 17:55:00 +10:00
3d0ccf8642 FIX: missing edit notifications in some rare cases
Due to a refactor in e90f9e5cc47 we stopped notifying on edits if
a user liked a post and then edited.

The like could have happened a long time ago so this gets extra
confusing.

This change makes the suppression more deliberate. We only want
to suppress quite/link/mention if the user already got a reply
notification.

We can expand this suppression if it is not enough.
2020-05-04 17:40:56 +10:00
5e9c96dfed REFACTOR: minor tweaks to user's notifications-filter (#9623) 2020-05-04 09:09:13 +02:00
99abdf51cd FEATURE: adds a filter for all/unread/read on user's notifications page (#9535) 2020-05-04 08:36:59 +02:00
57fcea7709 DEV: update rspec dependencies
rspec-rails 4.0 was released so we no longer need to depend on a
beta version. Also updates minor on a bunch of rspec gems.

Thanks to @ryanwi for raising this.
2020-05-04 15:21:34 +10:00
7fc319b64f more direct "read this topic" prefs link 2020-05-03 22:09:07 -07:00
e32ac831ee DEV: Update rubocop-discourse to 2.1.2. 2020-05-04 10:51:33 +08:00
d8a086abc5 FIX: do not apply only-emoji margin for excluded cases (#9619) 2020-05-03 17:52:19 +02:00
784bf2a173 FIX: Unassign user titles when a badge is deleted (#9573) 2020-05-02 18:02:28 -07:00
0e4db91870 FIX: save bookmark reminder on tap unless custom (#9611) 2020-05-02 10:31:44 +02:00
e57fd283db DEV: Rename deprecated to the more appropriate app-boot 2020-05-01 15:19:19 -04:00
cdbba81ee0 UX: collapse extra files when browsing a theme component (#9610) 2020-05-01 20:19:17 +02:00
f182e61def DEV: Remove global Handlebars 2020-05-01 14:12:09 -04:00
85605efe84 Build(deps): Bump redis from 4.1.3 to 4.1.4 (#9608)
Bumps [redis](https://github.com/redis/redis-rb) from 4.1.3 to 4.1.4.
- [Release notes](https://github.com/redis/redis-rb/releases)
- [Changelog](https://github.com/redis/redis-rb/blob/master/CHANGELOG.md)
- [Commits](https://github.com/redis/redis-rb/compare/v4.1.3...v4.1.4)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-05-01 11:06:03 -04:00
d908bf101d FIX: an <a> with a target of _blank wants a new window (#9607)
..even if it wraps an image
2020-05-01 11:05:36 -04:00
a4a7ee110b Build(deps-dev): Bump rubocop-rspec from 1.38.1 to 1.39.0 (#9606)
Bumps [rubocop-rspec](https://github.com/rubocop-hq/rubocop-rspec) from 1.38.1 to 1.39.0.
- [Release notes](https://github.com/rubocop-hq/rubocop-rspec/releases)
- [Changelog](https://github.com/rubocop-hq/rubocop-rspec/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop-hq/rubocop-rspec/compare/v1.38.1...v1.39.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-05-01 11:04:53 -04:00
2d287ef16a FIX: ensures an anonymous shortcut fn can be used globally (#9605) 2020-05-01 10:42:28 +02:00
bcc9ad6f57 FIX: Bookmark UI tweaks (#9604)
* When hovering over the bookmark icon for a post, show the name of the bookmark at the end of the tooltip _if_ it has been set.
* Order bookmarks by `updated_at DESC` in the user list and show that instead of created at.
2020-05-01 16:14:20 +10:00
5ff24b6891 FIX: do not raise error if 'class' attribute is not found. 2020-05-01 10:03:40 +05:30
4afbcb9872 Minor header title spacing reduction 2020-04-30 23:19:32 -04:00
43210004e5 DEV: Bump parser from 2.7.1.1 to 2.7.1.2 (#9602)
Bumps [parser](https://github.com/whitequark/parser) from 2.7.1.1 to 2.7.1.2.
- [Release notes](https://github.com/whitequark/parser/releases)
- [Changelog](https://github.com/whitequark/parser/blob/master/CHANGELOG.md)
- [Commits](https://github.com/whitequark/parser/compare/v2.7.1.1...v2.7.1.2)

Very minor, used for ruby 2.7 support
2020-05-01 11:58:57 +10:00
9e827eb420 DEV: Refactor presence manager to deal with multiple composer states.
This change amends it so we use a static service to keep track of
the typing presence.

It correct various edge cases the initial implementation had

- Faster close messages
- When composing on topic 1 and viewing topic 2 we had incorrect
  presence
- Changing a running composer to reply as new topic or reply to a
  differet topic would not correctly shift presence

Authored by tgxworld, with contributions by sam
2020-05-01 11:37:03 +10:00
867bc3b48e FIX: Change base importer to create new Bookmark records (#9603)
Also add a spec and fixture with a mock importer that we can use to test the create_X methods of the base importer
2020-05-01 11:34:55 +10:00
37e93914fc FIX: the muted message should be sent after edit (#9593)
Recently, we added feature that we are sending `/muted` to users who muted specific topic just before `/latest` so the client knows to ignore those messages - https://github.com/discourse/discourse/pull/9482

Same `/muted` message should be included when the post is edited
2020-05-01 08:33:57 +10:00
d615de9139 DEV: Support for import Handlebars from 'handlebars'; (#9600)
* Remove Handlebars.SafeString usage

* DEV: Support for `import Handlebars from 'handlebars'`;

* FIX: Sprockets was broken when `node_modules` was present

By default the old version of sprockets looks for application.js
anywhere, including in a node_modules folder if this exists
(which it will when we move to Ember CLI.)
2020-04-30 16:41:02 -04:00
2cb9e85d14 FEATURE: add category banner for why a user cannot post (#9576)
* FEATURE: add category banner for why a user cannot post

Adds a category banner for why a user is unable to post in a category.

Also adds an extra alert for the user when a user is unable to create a topic in a
category and they still try and click on the disabled-looking new topic
button.
2020-04-30 10:39:11 -07:00
03815f9795 DEV: Remove Handlebars.Utils.escapeExpression usage 2020-04-30 11:36:55 -04:00
1b2db44678 FEATURE: allows to limit visible reports and tabs in dashboard (#9598) 2020-04-30 17:31:04 +02:00
71241a50f7 DEV: improve code readability & add tests for user guardian.
a511bea4cc3f50bd1e067a46bdbf5cd19eb335a3
2020-04-30 20:59:33 +05:30
c092370847 Build(deps-dev): Bump rb-fsevent from 0.10.3 to 0.10.4 (#9599)
Bumps [rb-fsevent](https://github.com/thibaudgg/rb-fsevent) from 0.10.3 to 0.10.4.
- [Release notes](https://github.com/thibaudgg/rb-fsevent/releases)
- [Commits](https://github.com/thibaudgg/rb-fsevent/compare/0.10.3...v0.10.4)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-04-30 11:14:34 -04:00
08e4af6636 FEATURE: Add setting to controle the Expect header on S3 calls
Some providers don't implement the Expect: 100-continue support,
which results in a mismatch in the object signature.

With this settings, users can disable the header and use such providers.
2020-04-30 12:12:00 -03:00
45f704906d UX: display info about extra files and uploader (#9595)
Co-authored-by: David Taylor <david@taylorhq.com>
2020-04-30 16:02:38 +02:00
0d84f3afd4 UX: adds title attribute to widget dropdown header (#9597) 2020-04-30 14:36:21 +02:00
7ef8f7bb7c DEV: adds documentation about caret option of widget dropdown (#9596) 2020-04-30 14:28:34 +02:00
501b19b6e0 FIX: server-side HtmlToMarkdown improvements (#9586)
TLDR; this commit vastly improves how whitespaces are handled when converting from HTML to Markdown.
It also adds support for converting HTML <tables> to markdown tables.

The previous 'remove_whitespaces!' method was traversing the whole HTML tree and used a heuristic to remove
leading and trailing whitespaces whenever it was appropriate (ie. mostly before and after HTML block elements)

It was a good idea, but it was very limited and leaded to bad conversion when the html had leading whitespaces on several lines for example.
One such example can be found [here](https://meta.discourse.org/t/86782).

For various reasons, most of the whitespaces in a HTML file is ignored when the page is being displayed in a browser.
The rules that the browsers follow are the [CSS' White Space Processing Rules](https://www.w3.org/TR/css-text-3/#white-space-rules).
They can be quite complicated when you take into account RTL languages and other various tidbits but they boils down to the following:

- Collapse whitespaces down to one space (0x20) inside an inline context (ie. nodes/tags that are being displaying on the same line)
- Remove any leading/trailing whitespaces inside an inline context

One quick & dirty way of getting this 90% solved would be to do 'HTML.gsub!(/[[:space:]]+/, " ")'.
We would also need to hoist <pre> elements in order to not mess with their whitespaces.
Unfortunately, this solution let some whitespaces creep around HTML tags which leads to more '.strip!' calls than I can bear.

I decided to "emulate" the browser's handling of whitespaces and came up with a solution in 4 parts

1. remove_not_allowed!

The HtmlToMarkdown library is recursively "visiting" all the nodes in the HTML in order to convert them to Markdown.
All the nodes that aren't handled by the library (eg. <script>, <style> or any non-textual HTML tags) are "swallowed".
In order to reduce the number of nodes visited, the method 'remove_not_allowed!' will automatically delete all the nodes
that have no "visitor" (eg. a 'visit_<tag>' method) defined.

2. remove_hidden!

Similar purpose as the previous method (eg. reducing number of nodes visited), there's no point trying to convert something that is hidden.
The 'remove_hidden!' method removes any nodes that was hidden using the "hidden" HTML attribute, some CSS or with a width or height equal to 0.

3. hoist_line_breaks!

The 'hoist_line_breaks!' method is there to handle <br> tags. I know those tiny <br> don't do much but they can be quite annoying.
The <br> tags are inline elements but they visually work like a block element (ie. they create a new line).
If you have the following HTML "<i>Foo<br>Bar</i>", it ends up visually similar to "<i>Foo</i><br><i>Bar</i>".
The latter being much more easy to process than the former, so that's what this method is doing.
The "hoist_line_breaks" will hoist <br> tags out of inline tags until their parent is a block element.

4. remove_whitespaces!

The "remove_whitespaces!" is where all the whitespace removal is happening. It's broken down into 4 methods as well

- remove_whitespaces!
- is_inline?
- collapse_spaces!
- remove_trailing_space!

The 'remove_whitespace!' method is recursively walking the HTML tree (skipping <pre> tags).
If a node has any children, they will be chunked into groups of inline elements vs block elements.
For each chunks of inline elements, it will call the "collapse_space!" and "remove_trailing_space!" methods.
For each chunks of block elements, it will call "remote_whitespace!" to keep walking the HTML tree recursively.

The "is_inline?" method determines whether a node is part of a inline context.
A node is inline iif it's a text node or it's an inline tag, but not <br>, and all its children are also inline.

The "collapse_spaces!" method will collapse any kind of (white) space into a single space (" ") character, even accros tags.
For example, if we have "  Foo \n<i> Bar </i>\t42", it will return "Foo <i>Bar </i>42".

Finally, the "remove_trailing_space!" method is there to remove any trailing space that might creep in at the end of the inline chunk.

This solution is not 100% bullet-proof.
It does not support RTL languages at all and has some caveats that I felt were not worth the work to get properly fixed.

FIX: better detection of hidden elements when converting HTML to Markdown
FIX: take into account the 'allowed_href_schemes' site setting when converting HTML <a> to Markdown
FIX: added support for 'mailto:' scheme when converting <a> from HTML to Markdown
FIX: added support for <img> dimensions when converting from HTML to Markdown
FIX: added support for <dl>, <dd> and <dt> when converting from HTML to Markdown
FIX: added support for multilines emphases, strongs and strikes when converting from HTML to Markdown
FIX: added support for <acronym> when converting from HTML to Markdown
DEV: remove unused 'sanitize' gem

Wow, did you just read all that?! Congratz, here's a cookie: 🍪.
2020-04-30 12:21:25 +02:00
fe51f7a863 FEATURE: More improvements to crawler and old browsers view
Related to c85018cdfd1a36e8c33de25c44bf192d53e201c1.
2020-04-30 12:07:51 +03:00
238cbff46f Revert "HACK: Add dummy plugin folder"
This reverts commit 590830b931ec83f7ae4ccde3cf820a072d6c2d09 because a
proper fix was implemented in discourse_docker@d587158.
2020-04-30 11:02:15 +03:00
d0d5a138c3 DEV: stop freezing frozen strings
We have the `# frozen_string_literal: true` comment on all our
files. This means all string literals are frozen. There is no need
to call #freeze on any literals.

For files with `# frozen_string_literal: true`

```
puts %w{a b}[0].frozen?
=> true

puts "hi".frozen?
=> true

puts "a #{1} b".frozen?
=> true

puts ("a " + "b").frozen?
=> false

puts (-("a " + "b")).frozen?
=> true
```

For more details see: https://samsaffron.com/archive/2018/02/16/reducing-string-duplication-in-ruby
2020-04-30 16:48:53 +10:00
02ef88052d DEV: take out more trash (icons)
folloup to f75581090615db661b65bc630284d9dbb66b3f49
2020-04-30 14:25:05 +08:00