mirror of
https://github.com/flarum/core.git
synced 2025-08-13 20:04:24 +02:00
Compare commits
13 Commits
tk/3787-fl
...
dk/email-v
Author | SHA1 | Date | |
---|---|---|---|
|
453d272874 | ||
|
f04542e8fb | ||
|
64cd6d1988 | ||
|
51bd7a7e32 | ||
|
b6a6248dff | ||
|
5437bf5c23 | ||
|
717af13bb1 | ||
|
e72541e35d | ||
|
577890d89c | ||
|
253a3d281d | ||
|
d27f952584 | ||
|
e5abffc75b | ||
|
d1059c1cc7 |
50
CHANGELOG.md
50
CHANGELOG.md
@@ -1,5 +1,55 @@
|
||||
# Changelog
|
||||
|
||||
## [v1.8.1](https://github.com/flarum/framework/compare/v1.8.0...v1.8.1)
|
||||
### Fixed
|
||||
* recover temporary solution for html entities in browser title (e72541e35de4f71f9d870bbd9bb46ddf586bdf1d)
|
||||
* custom contrast color affected by parents (577890d89c593ae5b6cb96083fab69e2f1ae600c)
|
||||
* reply placeholder wrong positioning (253a3d281dbf5ce3fa712b629b80587cf67e7dbe)
|
||||
|
||||
## [v1.8.0](https://github.com/flarum/framework/compare/v1.7.1...v1.8.0)
|
||||
### Fixed
|
||||
- (a11y) reply placeholder not accessible [#3793]
|
||||
- (bbcode) highlight.js does not work after changing post content [#3817]
|
||||
- (bbcode) localize quote `wrote` string [#3809]
|
||||
- (mentions) mentions XHR fired even after mentioning is done [#3806]
|
||||
- (package-manager) available core updates cause an error in the dashboard ([fab71f2](fab71f2d01fa20ce9b3002833339dc5ea3ea6301))
|
||||
- (tags) not all tags are loaded in the permission grid [#3804]
|
||||
- (tags) tag discussion modal filters with exact matches only after first index [#3786]
|
||||
- (testing) always clear cache in integration test's tearDown [#3818]
|
||||
- `UserSecurityPage` not exported ([232618a](232618aba604ab003425df38b895208c863d3260))
|
||||
- `isDark()` utility can receive null value [#3774]
|
||||
- approving a post does not bump user `comment_count` [#3790]
|
||||
- circular dependencies disable all involved extensions [#3785]
|
||||
- color input overflowing the input box [#3796]
|
||||
- deleting a discussion from the profile does not visually remove it [#3799]
|
||||
- discussion page showing horizontal scroll on iOS [#3821]
|
||||
- empty string displayed as SelectDropdown title [#3773]
|
||||
- filter values are not validated [#3795]
|
||||
- infinite scroll not initialized for notifications on big screens [#3733]
|
||||
- notification subject discussion eager loading fails [#3788]
|
||||
- null as 2nd param in `preg_match` is deprecated [#3801]
|
||||
- unread count in post stream not visible [#3791]
|
||||
- unreadable badge icon on certain colors [#3810]
|
||||
- integrity constraint violation [#3772]
|
||||
### Changed
|
||||
- (core,mentions) limit `mentionedBy` post relation results [#3780]
|
||||
- (likes) limit `likes` relationship results [#3781]
|
||||
- Change some methods from private to protected, to be able to extend the affected classes [#3802]
|
||||
- Do not catch exceptions when testing Console commands [#3813]
|
||||
- drop usage of jquery in `install` and `update` interfaces [#3797]
|
||||
- extensibility improvements [#3729]
|
||||
- major frontend JS cleanup [#3609]
|
||||
- revert ineffective code for encoding of page title [#3768]
|
||||
- speed up post creation time [#3808]
|
||||
### Added
|
||||
- (mentions,tags) tag mentions [#3769]
|
||||
- add delete own posts permission [#3784]
|
||||
- add a trait to flush the formatter cache in tests [#3811]
|
||||
- add user creation to users list page [#3744]
|
||||
- cli command for enabling or disabling an extension [#3816]
|
||||
- conditional extenders [#3759]
|
||||
- provide old content to `Revised` event [#3789]
|
||||
|
||||
## [v1.7.1](https://github.com/flarum/framework/compare/v1.7.0...v1.7.1)
|
||||
### Fixed
|
||||
- (tags) composer tag selection modal using wrong primary max & min numbers (abc9670659426b765274376945b818b70d84848c)
|
||||
|
@@ -19,7 +19,7 @@
|
||||
}
|
||||
],
|
||||
"require": {
|
||||
"flarum/core": "^1.7",
|
||||
"flarum/core": "^1.8",
|
||||
"flarum/approval": "^1.7"
|
||||
},
|
||||
"autoload": {
|
||||
|
@@ -19,7 +19,7 @@
|
||||
}
|
||||
],
|
||||
"require": {
|
||||
"flarum/core": "^1.7",
|
||||
"flarum/core": "^1.8",
|
||||
"flarum/flags": "^1.7"
|
||||
},
|
||||
"autoload": {
|
||||
|
@@ -19,7 +19,7 @@
|
||||
}
|
||||
],
|
||||
"require": {
|
||||
"flarum/core": "^1.7"
|
||||
"flarum/core": "^1.8"
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
|
@@ -19,7 +19,7 @@
|
||||
}
|
||||
],
|
||||
"require": {
|
||||
"flarum/core": "^1.7"
|
||||
"flarum/core": "^1.8"
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
|
@@ -19,7 +19,7 @@
|
||||
}
|
||||
],
|
||||
"require": {
|
||||
"flarum/core": "^1.7"
|
||||
"flarum/core": "^1.8"
|
||||
},
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
|
@@ -19,7 +19,7 @@
|
||||
}
|
||||
],
|
||||
"require": {
|
||||
"flarum/core": "^1.7"
|
||||
"flarum/core": "^1.8"
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
|
@@ -40,6 +40,7 @@ class AddCanFlagAttribute
|
||||
// If $actor is the post author, check to see if the setting is enabled
|
||||
return (bool) $this->settings->get('flarum-flags.can_flag_own');
|
||||
}
|
||||
|
||||
// $actor is not the post author
|
||||
return true;
|
||||
}
|
||||
|
@@ -7,7 +7,7 @@
|
||||
],
|
||||
"license": "MIT",
|
||||
"require": {
|
||||
"flarum/core": "^1.7"
|
||||
"flarum/core": "^1.8"
|
||||
},
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
|
@@ -19,7 +19,7 @@
|
||||
}
|
||||
],
|
||||
"require": {
|
||||
"flarum/core": "^1.7"
|
||||
"flarum/core": "^1.8"
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
|
@@ -19,7 +19,7 @@
|
||||
}
|
||||
],
|
||||
"require": {
|
||||
"flarum/core": "^1.7"
|
||||
"flarum/core": "^1.8"
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
|
@@ -19,7 +19,7 @@
|
||||
}
|
||||
],
|
||||
"require": {
|
||||
"flarum/core": "^1.7"
|
||||
"flarum/core": "^1.8"
|
||||
},
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
|
@@ -19,7 +19,7 @@
|
||||
}
|
||||
],
|
||||
"require": {
|
||||
"flarum/core": "^1.7"
|
||||
"flarum/core": "^1.8"
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
|
@@ -19,7 +19,7 @@
|
||||
}
|
||||
],
|
||||
"require": {
|
||||
"flarum/core": "^1.7"
|
||||
"flarum/core": "^1.8"
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
|
@@ -22,7 +22,7 @@
|
||||
"source": "https://github.com/flarum/package-manager"
|
||||
},
|
||||
"require": {
|
||||
"flarum/core": "^1.5.0",
|
||||
"flarum/core": "^1.8",
|
||||
"composer/composer": "^2.3"
|
||||
},
|
||||
"require-dev": {
|
||||
|
@@ -19,7 +19,7 @@
|
||||
}
|
||||
],
|
||||
"require": {
|
||||
"flarum/core": "^1.7",
|
||||
"flarum/core": "^1.8",
|
||||
"pusher/pusher-php-server": "^2.2"
|
||||
},
|
||||
"require-dev": {
|
||||
|
@@ -19,7 +19,7 @@
|
||||
}
|
||||
],
|
||||
"require": {
|
||||
"flarum/core": "^1.7"
|
||||
"flarum/core": "^1.8"
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
|
@@ -19,7 +19,7 @@
|
||||
}
|
||||
],
|
||||
"require": {
|
||||
"flarum/core": "^1.7"
|
||||
"flarum/core": "^1.8"
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
|
@@ -19,7 +19,7 @@
|
||||
}
|
||||
],
|
||||
"require": {
|
||||
"flarum/core": "^1.7"
|
||||
"flarum/core": "^1.8"
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
|
@@ -19,7 +19,7 @@
|
||||
}
|
||||
],
|
||||
"require": {
|
||||
"flarum/core": "^1.7"
|
||||
"flarum/core": "^1.8"
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
|
@@ -19,7 +19,7 @@
|
||||
}
|
||||
],
|
||||
"require": {
|
||||
"flarum/core": "^1.7"
|
||||
"flarum/core": "^1.8"
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
|
2
framework/core/js/dist-typings/common/helpers/textContrastClass.d.ts
generated
vendored
2
framework/core/js/dist-typings/common/helpers/textContrastClass.d.ts
generated
vendored
@@ -1 +1 @@
|
||||
export default function textContrastClass(hexcolor: string | null): string;
|
||||
export default function textContrastClass(hexcolor: string | null | undefined): string;
|
||||
|
2
framework/core/js/dist-typings/forum/components/AvatarEditor.d.ts
generated
vendored
2
framework/core/js/dist-typings/forum/components/AvatarEditor.d.ts
generated
vendored
@@ -72,7 +72,7 @@ export default class AvatarEditor extends Component<import("../../common/Compone
|
||||
remove(): void;
|
||||
/**
|
||||
* After a successful upload/removal, push the updated user data into the
|
||||
* store, and force a recomputation of the user's avatar color.
|
||||
* store, and force a re-computation of the user's avatar color.
|
||||
*
|
||||
* @param {object} response
|
||||
* @protected
|
||||
|
2
framework/core/js/dist/admin.js
generated
vendored
2
framework/core/js/dist/admin.js
generated
vendored
File diff suppressed because one or more lines are too long
2
framework/core/js/dist/admin.js.map
generated
vendored
2
framework/core/js/dist/admin.js.map
generated
vendored
File diff suppressed because one or more lines are too long
2
framework/core/js/dist/forum.js
generated
vendored
2
framework/core/js/dist/forum.js
generated
vendored
File diff suppressed because one or more lines are too long
2
framework/core/js/dist/forum.js.map
generated
vendored
2
framework/core/js/dist/forum.js.map
generated
vendored
File diff suppressed because one or more lines are too long
@@ -40,7 +40,7 @@ export default class StatusWidget extends DashboardWidget {
|
||||
[
|
||||
<span>
|
||||
<strong>{app.translator.trans('core.admin.dashboard.status.headers.scheduler-status')}</strong>{' '}
|
||||
<LinkButton href="https://discuss.flarum.org/d/24118" external={true} target="_blank" icon="fas fa-info-circle" />
|
||||
<LinkButton href="https://docs.flarum.org/scheduler" external={true} target="_blank" icon="fas fa-info-circle" />
|
||||
</span>,
|
||||
<br />,
|
||||
app.data.schedulerStatus,
|
||||
|
@@ -411,12 +411,23 @@ export default class Application {
|
||||
pageNumber: 1,
|
||||
};
|
||||
|
||||
const title =
|
||||
let title =
|
||||
onHomepage || !this.title
|
||||
? extractText(app.translator.trans('core.lib.meta_titles.without_page_title', params))
|
||||
: extractText(app.translator.trans('core.lib.meta_titles.with_page_title', params));
|
||||
|
||||
document.title = count + title;
|
||||
title = count + title;
|
||||
|
||||
// We pass the title through a DOMParser to allow HTML entities
|
||||
// to be rendered correctly, while still preventing XSS attacks
|
||||
// from user input by using a script-disabled environment.
|
||||
// https://github.com/flarum/framework/issues/3514
|
||||
// https://github.com/flarum/framework/pull/3684
|
||||
// This is only a temporary solution for 1.x,
|
||||
// and the actual source of the issue will be fixed in 2.x
|
||||
// Actual source of the issue: https://github.com/flarum/framework/issues/3685
|
||||
const parser = new DOMParser();
|
||||
document.title = parser.parseFromString(title, 'text/html').body.innerText;
|
||||
}
|
||||
|
||||
protected transformRequestOptions<ResponseType>(flarumOptions: FlarumRequestOptions<ResponseType>): InternalFlarumRequestOptions<ResponseType> {
|
||||
|
@@ -28,7 +28,7 @@ export default class Badge<CustomAttrs extends IBadgeAttrs = IBadgeAttrs> extend
|
||||
view() {
|
||||
const { type, icon: iconName, label, color, style = {}, ...attrs } = this.attrs;
|
||||
|
||||
const className = classList('Badge', [type && `Badge--${type}`], attrs.className, color && textContrastClass(color));
|
||||
const className = classList('Badge', [type && `Badge--${type}`], attrs.className, textContrastClass(color));
|
||||
|
||||
const iconChild = iconName ? icon(iconName, { className: 'Badge-icon' }) : m.trust(' ');
|
||||
|
||||
|
@@ -1,5 +1,7 @@
|
||||
import isDark from '../utils/isDark';
|
||||
|
||||
export default function textContrastClass(hexcolor: string | null): string {
|
||||
export default function textContrastClass(hexcolor: string | null | undefined): string {
|
||||
if (!hexcolor) return 'text-contrast--unchanged';
|
||||
|
||||
return isDark(hexcolor) ? 'text-contrast--light' : 'text-contrast--dark';
|
||||
}
|
||||
|
@@ -204,7 +204,7 @@ export default class AvatarEditor extends Component {
|
||||
|
||||
/**
|
||||
* After a successful upload/removal, push the updated user data into the
|
||||
* store, and force a recomputation of the user's avatar color.
|
||||
* store, and force a re-computation of the user's avatar color.
|
||||
*
|
||||
* @param {object} response
|
||||
* @protected
|
||||
|
@@ -176,4 +176,10 @@ blockquote ol:last-child {
|
||||
--contrast-color: var(--text-on-dark);
|
||||
color: var(--contrast-color);
|
||||
}
|
||||
|
||||
// This exists to prevent inheriting the contrast color from a parent element.
|
||||
// Like when a badge is inside a tag hero.
|
||||
&--unchanged {
|
||||
--contrast-color: var(--unchanged-color);
|
||||
}
|
||||
}
|
||||
|
@@ -441,7 +441,7 @@
|
||||
color: var(--muted-color);
|
||||
border-radius: 10px;
|
||||
background-color: transparent;
|
||||
width: 100%;
|
||||
width: calc(~"100% + 20px * 2");
|
||||
display: flex;
|
||||
|
||||
.Post-header {
|
||||
|
@@ -62,7 +62,7 @@ class UploadFaviconController extends UploadImageController
|
||||
]);
|
||||
}
|
||||
|
||||
$encodedImage = $this->imageManager->make($file->getStream())->resize(64, 64, function ($constraint) {
|
||||
$encodedImage = $this->imageManager->make($file->getStream()->getMetadata('uri'))->resize(64, 64, function ($constraint) {
|
||||
$constraint->aspectRatio();
|
||||
$constraint->upsize();
|
||||
})->encode('png');
|
||||
|
@@ -38,7 +38,7 @@ class UploadLogoController extends UploadImageController
|
||||
*/
|
||||
protected function makeImage(UploadedFileInterface $file): Image
|
||||
{
|
||||
$encodedImage = $this->imageManager->make($file->getStream())->heighten(60, function ($constraint) {
|
||||
$encodedImage = $this->imageManager->make($file->getStream()->getMetadata('uri'))->heighten(60, function ($constraint) {
|
||||
$constraint->upsize();
|
||||
})->encode('png');
|
||||
|
||||
|
@@ -21,7 +21,7 @@ class Application
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
const VERSION = '1.8.0-dev';
|
||||
const VERSION = '2.0-dev';
|
||||
|
||||
/**
|
||||
* The IoC container for the Flarum application.
|
||||
|
@@ -24,33 +24,40 @@ interface BlueprintInterface
|
||||
*
|
||||
* @return User|null
|
||||
*/
|
||||
public function getFromUser();
|
||||
public function getFromUser(): ?User;
|
||||
|
||||
/**
|
||||
* Get the model that is the subject of this activity.
|
||||
*
|
||||
* @return AbstractModel|null
|
||||
*/
|
||||
public function getSubject();
|
||||
public function getSubject(): ?AbstractModel;
|
||||
|
||||
/**
|
||||
* Get the data to be stored in the notification.
|
||||
*
|
||||
* @return mixed
|
||||
*/
|
||||
public function getData();
|
||||
public function getData(): mixed;
|
||||
|
||||
/**
|
||||
* Get the serialized type of this activity.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public static function getType();
|
||||
public static function getType(): string;
|
||||
|
||||
/**
|
||||
* Get the name of the model class for the subject of this activity.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public static function getSubjectModel();
|
||||
public static function getSubjectModel(): string;
|
||||
|
||||
/**
|
||||
* Whether the blueprint ignores that a user has not verified their email address.
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function ignoresUserVerification(): bool;
|
||||
}
|
||||
|
@@ -87,7 +87,7 @@ class AvatarValidator extends AbstractValidator
|
||||
}
|
||||
|
||||
try {
|
||||
$this->imageManager->make($file->getStream());
|
||||
$this->imageManager->make($file->getStream()->getMetadata('uri'));
|
||||
} catch (NotReadableException $_e) {
|
||||
$this->raise('image');
|
||||
}
|
||||
|
@@ -74,7 +74,7 @@ class UploadAvatarHandler
|
||||
|
||||
$this->validator->assertValid(['avatar' => $command->file]);
|
||||
|
||||
$image = $this->imageManager->make($command->file->getStream());
|
||||
$image = $this->imageManager->make($command->file->getStream()->getMetadata('uri'));
|
||||
|
||||
$this->events->dispatch(
|
||||
new AvatarSaving($user, $actor, $image)
|
||||
|
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "flarum-webpack-config",
|
||||
"version": "2.0.1",
|
||||
"version": "2.0.2",
|
||||
"description": "Webpack config for Flarum JS and TS transpilation.",
|
||||
"main": "index.js",
|
||||
"author": "Flarum Team",
|
||||
|
@@ -192,6 +192,7 @@ abstract class TestCase extends \PHPUnit\Framework\TestCase
|
||||
protected function database(): ConnectionInterface
|
||||
{
|
||||
$this->app();
|
||||
|
||||
// Set in `BeginTransactionAndSetDatabase` extender.
|
||||
return $this->database;
|
||||
}
|
||||
|
Reference in New Issue
Block a user