Commit Graph

37637 Commits

Author SHA1 Message Date
b80128a973 FEATURE: Add structured data to follow Google's guidelines (#9764)
All Schema.org properties are optional, but Google has a set of
properties which are required.
2020-05-14 10:42:01 +03:00
d226783405 Revert "DEV: Add add_controller_callback server side plugin api."
This reverts commit 8233610d92fb7241658c6888f378c5ddd587e324.

Too much messy around with blocks to support `before_action` and
`around_action`.
2020-05-14 15:26:50 +08:00
c014b93854 UX: don't disable "create account" button & display error message for required fields. (#9643) 2020-05-14 12:15:33 +05:30
3d050bdaa3 DEV: correct test suite
We have no choice but to bypass recursive debouncers in test

Otherwise we overrun the stack with frames
2020-05-14 16:41:34 +10:00
ce4b5b56e5 FIX: never save draft while it is saving
Previously if saving a draft took longer than 2 seconds there
could be conditions where drafts could be saved concurrently.
This meant the composer could race with itself and raise conflicts.

This is likely to happen on bad internet connections or where
latency is really high.

Additionally a throttle was added so drafts save unconditionally
every 15 seconds.

Save draft in the model now properly and consistently returns a
promise.
2020-05-14 15:36:18 +10:00
a849bdf0c9 FIX: Don't publish typing presence if composer isn't opened.
Hitting cancel on composer will set composer's reply and title to null
causing our observer to fire.
2020-05-14 12:52:10 +08:00
3d5589e026 DEV: Remove assertions that are not required. 2020-05-14 10:07:55 +08:00
c5ef465179 DEV: Avoid relative paths when importing in plugins. 2020-05-14 10:05:16 +08:00
ad7c964cd1 FIX: Prevent Safari from scrolling when closing composer
Unlike other browsers, Safari maintains focus on elements even when
they are hidden. And since the composer is fixed-positioned when hidden,
closing the composer on a topic with several replies causes Safari to
scroll the window up.

Deliberately blurring the focused element fixes the issue.
2020-05-13 21:24:40 -04:00
732776e2ce Revert "DEV: Add checks that assets do not modify cookies to smoke-test.js (#9504)" (#9773)
This reverts commit 5cb806827a0e4d8777cf017f209452bf22a691ec.
2020-05-13 16:41:18 -07:00
5cb806827a DEV: Add checks that assets do not modify cookies to smoke-test.js (#9504)
This adds three new checks to the smoke test: that assets and service-worker.js do not
clear invalid cookies, but normal application routes do.

This functions as a test that the nginx config correctly strips out Set-Cookie responses
from the service-worker.js file.
2020-05-13 16:29:18 -07:00
eab560fe2a DEV: import I18n instead of global usage (#9768)
Co-authored-by: Mark VanLandingham <markvanlan@gmail.com>
Co-authored-by: Robin Ward <robin.ward@gmail.com>

Co-authored-by: Mark VanLandingham <markvanlan@gmail.com>
2020-05-13 16:23:41 -04:00
1059557ce1 DEV: Standardize ignored_columns removal comments (#9771) 2020-05-13 13:08:15 -07:00
e1f11f4374 Build(deps-dev): Bump better_errors from 2.7.0 to 2.7.1 (#9767)
Bumps [better_errors](https://github.com/BetterErrors/better_errors) from 2.7.0 to 2.7.1.
- [Release notes](https://github.com/BetterErrors/better_errors/releases)
- [Commits](https://github.com/BetterErrors/better_errors/compare/v2.7.0...v2.7.1)

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-13 16:03:56 -04:00
3d54f497db DEV: add classes to li's inside user navigation (#9766) 2020-05-13 12:22:14 -05:00
cb8f8de422 Revert "FEATURE: Add same site cookie 'None' option to make cross domain systems possible (#9374)"
samesite=none is not supported in Rack 2.0.8. We can re-apply this change once Rack has been upgraded.

https://meta.discourse.org/t/cooke-samesite-none-not-working-because-of-outdated-rack-version/151331

This reverts commit 94c02286818214fa48a064503496698849a7f237.
2020-05-13 16:17:05 +01:00
9b85e75937 FIX: prevents SvgSprite.bundle to query ThemeField two times (#9762) 2020-05-13 17:11:44 +02:00
d69263f934 Build(deps-dev): Bump ruby-prof from 1.3.2 to 1.4.0 (#9761)
Bumps [ruby-prof](https://github.com/ruby-prof/ruby-prof) from 1.3.2 to 1.4.0.
- [Release notes](https://github.com/ruby-prof/ruby-prof/releases)
- [Changelog](https://github.com/ruby-prof/ruby-prof/blob/master/CHANGES)
- [Commits](https://github.com/ruby-prof/ruby-prof/compare/1.3.2...1.4.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-13 10:57:39 -04:00
ff331e845a DEV: Prevent 'previous definition' warnings for PARAMETER_API_PATTERNS 2020-05-13 12:54:28 +01:00
d4717f5d1e DEV: Reduce repeated code in discourse_plugin_registry (#9705)
Use a helper method to simplify creating a new register. Previously this would require creating lots of different methods manually, and adding every register to the clear/reset functions
2020-05-13 12:25:34 +01:00
7d857d79bd UX: Fix hard coded value in Crazy in Love badge description
Currently, the Crazy in Love badge's description has a hard coded
value of 50.This should correspond to the max_likes_per_day value
instead.
2020-05-13 16:59:28 +08:00
c405b15914 DEV: Add plugin outlet revision-user-details-after. 2020-05-13 15:40:37 +08:00
50e63f5202 Skip later today test again :'( 2020-05-13 16:58:26 +10:00
623920f13d FEATURE: Introduce a staff only override key for discourse-presence.
Merge remote-tracking branch 'origin/coding-standards'
This uses the composer as a bridge for other plugins.
2020-05-13 14:13:31 +08:00
7f841dc21f PERF: avoid race conditions when creating topic links
Previously the code was very race condition prone leading to
odd failures in production

It was re-written in raw SQL to avoid conditions where rows
conflict on inserts

There is no clean way in ActiveRecord to do:

Insert, on conflict do nothing and return existing id.

This also increases test coverage, we were previously not testing
the code responsible for crawling external sites directly
2020-05-13 16:05:57 +10:00
ca8d11635c Add missing export in 15e32dc1af90ceafbb8eadf2e0e5ecc59b9a7527. 2020-05-13 13:57:12 +08:00
15e32dc1af FIX: Composer presence shows user as editing when replying. 2020-05-13 13:41:03 +08:00
aa40a07d73 FIX: Throttle typing function in discourse-presence. 2020-05-13 13:31:06 +08:00
0e09c5837f DEV: Try once more to make acceptance test fake timers work
In my original PR (#9647) I attempted to solve the problem of
using fake timers in acceptance tests by using the new sinon
clock.tickAsync methods. This way of doing things seems to be flawed,
however, as we are getting random spec timeouts starting with the
bookmark acceptance test where this was introduced.

I think I was going about things the wrong way. This commit introduces
a new function with callback (acceptanceUseFakeClock) that sets up the
fake timers using sinon.useFakeTimers with the shouldAdvanceTime option
set to true. This advances time at a normal rate of 20ms per tick, which
means that we are not freezing any time and existing setTimeout funcs.
should proceed as normal. Along with this the callback passed will
run clock.reset() at the end to make sure all the timers are cleaned
up correctly.

There is an optional third parameter after the callback, which is the
timezone. If the user is logged in for the acceptance test then their
timezone is used, otherwise we default to America/Denver.

Usage is (inside an acceptance test):

```
test("Name of the test", async assert => {
  // first parameter is time to start fake clock at
  await acceptanceUseFakeClock("2020-05-04T13:00:00", async () => {
    // test code goes here e.g. await visit("/url");
  });
});
```
2020-05-13 15:16:07 +10:00
a64cf265fd FIX: Change /bookmarks URL back to topic list and add bookmark poster avatars (#9759)
* Changes the /bookmarks URL to show the original "topics filtered by bookmark" list instead of redirecting to user activity bookmarks (see https://meta.discourse.org/t/domain-com-bookmarks-is-showing-domain-com-u-user-activity-bookmarks-with-reminders/149252/12)
* Add the user avatar for the user who made the post that is bookmarked
2020-05-13 14:03:24 +10:00
811bc3544f prettier 2020-05-12 23:12:46 -04:00
34c39b65bb PERF: Avoid executing the same query twice. 2020-05-13 11:10:09 +08:00
822e594fc8 UX: Improve display of site setting validation message.
Previously, the validation message is shown inline with the label which
leads to the available width for both element being reduced.
2020-05-13 11:10:08 +08:00
765e842101 UX: remove underline from del & ins elements 2020-05-12 22:51:28 -04:00
4078b22887 FIX: Handle missing provider return sso url
This commit prevents a 500 error from occurring if someone is trying to
setup their discourse instance as a sso provider and they don't pass in
a `return_sso_url` in their payload.
2020-05-12 18:16:50 -06:00
9981fa4466 FIX: Prevent column name conflicts in reviewable code (#9753)
We were getting errors like this in Reviewables in some cases:

```
ActiveRecord::StatementInvalid (PG::AmbiguousColumn: ERROR:  column reference "category_id" is ambiguous
LINE 4: ...TRUE) OR (reviewable_by_group_id IN (NULL))) AND (category_i...
```

The problem that was making everything go boom is that plugins can add their own custom filters for Reviewables. If one is doing an INNER JOIN on topics, which has its own category_id column, we would get the above AmbiguousColumn error. The solution here is to just make all references to the reviewable columns in the list_for and viewable_by code prefixed by the table name e.g. reviewables.category_id.
2020-05-13 09:05:56 +10:00
e990d8adce FIX: ensures preview is correctly computing timezone for current user (#9758)
This also fixes a related bug with timezones on displayed date when in calendar range.
2020-05-12 12:30:41 -07:00
d9f5499f3a Revert "Revert "DEV: Remove Discourse.Route""
This reverts commit b4d27d327deeab8e42fd67bafe5dd369742e636e.

Plugins have been updated to not use this anymore.
2020-05-12 14:15:07 -04:00
e73e9aa7f2 DEV: skip failing test (#9755) 2020-05-12 18:32:12 +02:00
033644ea82 DEV: Adds an integrity spec for JS constants 2020-05-12 12:23:36 -04:00
1c0c425f38 DEV: Detect correct data dir using ENV 2020-05-12 13:10:57 -03:00
497dc6eaa7 Add a global setting for CDN origin
This is so that, on a multisite cluster, when we handle a CDN request,
the hostname that is requested corresponds to one of the sites -
specifically the default site.
2020-05-12 16:43:40 +01:00
2298e14d38 FEATURE: Support for App Shortcuts Menu (#9749)
* FEATURE: Support for App Shortcuts Menu

This adds a list of shortcuts to a installed Discourse instance.

It can be accessed by right clicks or long press on the app icon.

See https://github.com/MicrosoftEdge/MSEdgeExplainers/blob/master/Shortcuts/explainer.md

List of possible follow ups include:

- Making it admin customizable
- Making it user customizable
- Using SVG icons from the site icon sprite
- Picking an accent color for icons

* FIX: Add type to shortcut menu icons
2020-05-12 12:24:33 -03:00
088c11a12c FIX: Don't raise an exception if a TopicLink cannot be created
This can happen under concurrency and it's fine. If a `TopicLink`
already exists we can continue on without raising an error.
2020-05-12 11:15:59 -04:00
0344ad14c1 FIX: Add missing rss routes to parameter api whitelist 2020-05-12 16:08:35 +01:00
c94e6a9a66 FEATURE: add noindex header to tags pages (#9748) 2020-05-12 10:44:46 -04:00
9bce91f59f DEV: Allow plugins to add extra icons to category-link (#9743) 2020-05-12 09:41:16 -05:00
6230f5c554 FEATURE: Allow parameter authentication for UserApiKeys (#9742)
This refactors default_current_user_provider in a few ways:
- Introduce a generic `api_parameter_allowed?` method which checks for whitelisted routes/formats
- Only read the api_key parameter on allowed routes. It is now completely ignored on other routes (previously it would raise a 403)
- Start reading user_api_key parameter on allowed routes
- Refactor tests as end-end integration tests

A plugin API for PARAMETER_API_PATTERNS will be added soon
2020-05-12 13:35:36 +01:00
16137308b0 FIX: Show Settings button if plugin has settings (#9728)
It used to check if the plugin has an enabled_setting.
2020-05-12 11:18:19 +03:00
a29ae17d3a FIX: saving drafts unconditionally increases sequence
Previously we only changed sequence on ownership change, this
cause a race condition between tabs where user could type for a
long time without being warned of an out of date draft.

This change is a radical change and we should watch closely.

Code was already in place to track sequence on the client so no
changes are needed there.
2020-05-12 16:55:42 +10:00