Skip to content

Commit 46341cc

Browse files
authored
chore: Flarum 2.0 upgrade (#1)
* chore(2.0): update dependencies Update dependencies to Flarum 2.0 compatible versions. * chore(2.0): update infrastructure Update the extension infrastructure * chore(2.0): use new import from extension format Importing modules from an extension can now be done though `ext:vendor/extension/module-path` format. * chore(2.0): misc frontend changes Miscellaneous frontend changes * chore(2.0): `LESS` code changes Many variables have been renamed to light/dark specific names and most are now used as CSS variables instead. * chore: update for Flarum 2.0
1 parent c10a4ff commit 46341cc

File tree

14 files changed

+260
-198
lines changed

14 files changed

+260
-198
lines changed

.github/workflows/backend.yml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,9 @@ on: [workflow_dispatch, push, pull_request]
44

55
jobs:
66
run:
7-
uses: flarum/framework/.github/workflows/REUSABLE_backend.yml@1.x
7+
uses: flarum/framework/.github/workflows/REUSABLE_backend.yml@2.x
88
with:
99
enable_backend_testing: false
1010
enable_phpstan: true
11-
php_versions: '["8.2", "8.3", "8.4", "8.5"]'
1211

1312
backend_directory: .

.github/workflows/frontend.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ on: [workflow_dispatch, push, pull_request]
44

55
jobs:
66
run:
7-
uses: flarum/framework/.github/workflows/REUSABLE_frontend.yml@1.x
7+
uses: flarum/framework/.github/workflows/REUSABLE_frontend.yml@2.x
88
with:
99
enable_bundlewatch: false
1010
enable_prettier: true
@@ -13,7 +13,7 @@ jobs:
1313
frontend_directory: ./js
1414
backend_directory: .
1515
js_package_manager: yarn
16-
main_git_branch: 1.x
16+
main_git_branch: 2.x
1717

1818
secrets:
1919
bundlewatch_github_token: ${{ secrets.BUNDLEWATCH_GITHUB_TOKEN }}

composer.json

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,10 @@
22
"name": "fof/news-widget",
33
"description": "Simple news fader widget",
44
"keywords": [
5-
"flarum", "widget", "news", "forum"
5+
"flarum",
6+
"widget",
7+
"news",
8+
"forum"
69
],
710
"funding": [
811
{
@@ -22,11 +25,11 @@
2225
"afrux/news-widget": "*"
2326
},
2427
"require": {
25-
"flarum/core": "^1.8.0",
26-
"fof/forum-widgets-core": "^1.0.0"
28+
"flarum/core": "^2.0.0",
29+
"fof/forum-widgets-core": "^2.0.0"
2730
},
2831
"require-dev": {
29-
"flarum/phpstan": "*"
32+
"flarum/phpstan": "^2.0.0"
3033
},
3134
"authors": [
3235
{
@@ -46,7 +49,7 @@
4649
},
4750
"extra": {
4851
"branch-alias": {
49-
"dev-1.x": "1.x-dev"
52+
"dev-2.x": "2.x-dev"
5053
},
5154
"flarum-extension": {
5255
"title": "FoF News Widget",
@@ -70,6 +73,6 @@
7073
"scripts-descriptions": {
7174
"analyse:phpstan": "Run static analysis"
7275
},
73-
"minimum-stability": "dev",
76+
"minimum-stability": "beta",
7477
"prefer-stable": true
7578
}

js/package.json

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,12 @@
55
"prettier": "@flarum/prettier-config",
66
"devDependencies": {
77
"@flarum/prettier-config": "^1.0.0",
8-
"webpack": "^5.0",
9-
"webpack-cli": "^4.0",
10-
"flarum-webpack-config": "^2.0.0",
8+
"webpack": "^5.65.0",
9+
"webpack-cli": "^4.9.1",
10+
"flarum-webpack-config": "^3.0.0",
1111
"bundlewatch": "^0.3.2",
1212
"prettier": "^3.0.3",
13-
"flarum-tsconfig": "^1.0.2",
13+
"flarum-tsconfig": "^2.0.0",
1414
"typescript": "^4.5.4",
1515
"typescript-coverage-report": "^0.6.1"
1616
},
@@ -26,4 +26,4 @@
2626
"check-typings": "tsc --noEmit --emitDeclarationOnly false",
2727
"check-typings-coverage": "typescript-coverage-report"
2828
}
29-
}
29+
}

js/src/admin/extend.tsx

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
import Extend from 'flarum/common/extenders';
2+
import app from 'flarum/admin/app';
3+
import Button from 'flarum/common/components/Button';
4+
import Alert from 'flarum/common/components/Alert';
5+
import type ExtensionPage from 'flarum/admin/components/ExtensionPage';
6+
7+
const settingKey = 'fof-news-widget.lines';
8+
9+
export default [
10+
new Extend.Admin() //
11+
.customSetting(function (this: ExtensionPage) {
12+
const value = JSON.parse(this.setting(settingKey)() || '[]');
13+
14+
return (
15+
<div className="Form-group">
16+
<div className="FoF-NewsWidget-htmlWarning">
17+
<Button
18+
className="Button"
19+
onclick={() => {
20+
this.setting(settingKey)(JSON.stringify([...value, '']));
21+
}}
22+
>
23+
{app.translator.trans('fof-news-widget.admin.settings.add_line')}
24+
</Button>
25+
<Alert dismissible={false}>{app.translator.trans('fof-news-widget.admin.settings.html_warning')}</Alert>
26+
</div>
27+
{!!value.length && (
28+
<div className="FoF-NewsWidget-lines">
29+
<label>{app.translator.trans('fof-news-widget.admin.settings.lines')}</label>
30+
{value.map((line: string, index: number) => (
31+
<div className="FoF-NewsWidget-lineSetting">
32+
<textarea
33+
className="FormControl"
34+
oninput={(e: any) => {
35+
value[index] = e.target.value;
36+
this.setting(settingKey)(JSON.stringify([...value]));
37+
}}
38+
>
39+
{line}
40+
</textarea>
41+
<Button
42+
className="Button Button--icon"
43+
icon="fas fa-trash"
44+
aria-label={app.translator.trans('fof-news-widget.admin.settings.remove_line')}
45+
onclick={() => {
46+
this.setting(settingKey)(JSON.stringify([...value.filter((_l: string, i: number) => i !== index)]));
47+
}}
48+
/>
49+
</div>
50+
))}
51+
</div>
52+
)}
53+
</div>
54+
);
55+
}),
56+
];

js/src/admin/index.tsx

Lines changed: 2 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -1,62 +1,8 @@
11
import app from 'flarum/admin/app';
2-
import Button from 'flarum/common/components/Button';
32
import registerWidget from '../common/registerWidget';
4-
import Alert from 'flarum/common/components/Alert';
5-
import type ExtensionPage from 'flarum/admin/components/ExtensionPage';
3+
4+
export { default as extend } from './extend';
65

76
app.initializers.add('fof/news-widget', () => {
87
registerWidget();
9-
10-
const settingKey = 'fof-news-widget.lines';
11-
12-
app.extensionData
13-
.for('fof-news-widget')
14-
.registerSetting(function (this: ExtensionPage) {
15-
return (
16-
<div className="Form-group FoF-NewsWidget-htmlWarning">
17-
<Button
18-
className="Button"
19-
onclick={() => {
20-
const value = JSON.parse(this.setting(settingKey)() || '[]');
21-
22-
this.setting(settingKey)(JSON.stringify([...value, '']));
23-
}}
24-
>
25-
{app.translator.trans('fof-news-widget.admin.settings.add_line')}
26-
</Button>
27-
<Alert dismissible={false}>{app.translator.trans('fof-news-widget.admin.settings.html_warning')}</Alert>
28-
</div>
29-
);
30-
})
31-
.registerSetting(function (this: ExtensionPage) {
32-
const value = JSON.parse(this.setting(settingKey)() || '[]');
33-
34-
if (!value.length) return;
35-
36-
return (
37-
<div className="Form-group">
38-
<label>{app.translator.trans('fof-news-widget.admin.settings.lines')}</label>
39-
{value.map((line: string, index: number) => (
40-
<div className="FoF-NewsWidget-lineSetting">
41-
<textarea
42-
className="FormControl"
43-
oninput={(e: any) => {
44-
value[index] = e.target.value;
45-
this.setting(settingKey)(JSON.stringify([...value]));
46-
}}
47-
>
48-
{line}
49-
</textarea>
50-
<Button
51-
className="Button Button--icon"
52-
icon="fas fa-trash"
53-
onclick={() => {
54-
this.setting(settingKey)(JSON.stringify([...value.filter((l: string, i: number) => i !== index)]));
55-
}}
56-
/>
57-
</div>
58-
))}
59-
</div>
60-
);
61-
});
628
});

js/src/common/components/NewsWidget.tsx

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
import type Mithril from 'mithril';
22
import app from 'flarum/common/app';
3-
import icon from 'flarum/common/helpers/icon';
3+
import Icon from 'flarum/common/components/Icon';
44
import classList from 'flarum/common/utils/classList';
55
import Stream from 'flarum/common/utils/Stream';
66

7-
import Widget, { WidgetAttrs } from 'flarum/extensions/fof-forum-widgets-core/common/components/Widget';
7+
import Widget, { WidgetAttrs } from 'ext:fof/forum-widgets-core/common/components/Widget';
88

99
export default class NewsWidget<T extends WidgetAttrs> extends Widget<T> {
1010
private newslines!: string[];
@@ -52,7 +52,9 @@ export default class NewsWidget<T extends WidgetAttrs> extends Widget<T> {
5252

5353
return (
5454
<div className="FoF-NewsWidget-content">
55-
<div className="FoF-NewsWidget-icon">{icon('fas fa-bullhorn')}</div>
55+
<div className="FoF-NewsWidget-icon">
56+
<Icon name="fas fa-bullhorn" />
57+
</div>
5658
<div className="FoF-NewsWidget-line-container">
5759
{this.newslines.map((line, index) => (
5860
<div

js/src/common/registerWidget.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import app from 'flarum/common/app';
2-
import Widgets from 'flarum/extensions/fof-forum-widgets-core/common/extend/Widgets';
2+
import Widgets from 'ext:fof/forum-widgets-core/common/extend/Widgets';
33

44
import NewsWidget from './components/NewsWidget';
55

js/tsconfig.json

Lines changed: 17 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,20 @@
11
{
2-
// Use Flarum's tsconfig as a starting point
3-
"extends": "flarum-tsconfig",
4-
// This will match all .ts, .tsx, .d.ts, .js, .jsx files
5-
"include": ["src/**/*", "../vendor/flarum/core/js/dist-typings/@types/**/*"],
6-
"compilerOptions": {
7-
// This will output typings to `dist-typings`
8-
"declarationDir": "./dist-typings",
9-
"baseUrl": ".",
10-
"paths": {
11-
"flarum/*": ["../vendor/flarum/core/js/dist-typings/*"],
12-
"flarum/extensions/fof-forum-widgets-core/*": ["../vendor/fof/forum-widgets-core/js/dist-typings/*"]
13-
}
2+
"extends": "flarum-tsconfig",
3+
"include": [
4+
"src/**/*",
5+
"../vendor/flarum/core/js/dist-typings/@types/**/*",
6+
"../vendor/fof/forum-widgets-core/js/dist-typings/@types/**/*",
7+
],
8+
"compilerOptions": {
9+
"declarationDir": "./dist-typings",
10+
"baseUrl": ".",
11+
"paths": {
12+
"flarum/*": [
13+
"../vendor/flarum/core/js/dist-typings/*"
14+
],
15+
"ext:fof/forum-widgets-core/*": [
16+
"../vendor/fof/forum-widgets-core/js/dist-typings/*"
17+
]
1418
}
1519
}
20+
}

0 commit comments

Comments
 (0)