Skip to content

Commit

Permalink
Update for Flarum beta 16
Browse files Browse the repository at this point in the history
  • Loading branch information
clarkwinkelmann committed Apr 17, 2021
1 parent 58e1c3e commit cb18008
Show file tree
Hide file tree
Showing 21 changed files with 1,385 additions and 1,369 deletions.
2 changes: 1 addition & 1 deletion LICENSE.md → LICENSE.txt
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
MIT License

Copyright (c) 2019 Clark Winkelmann
Copyright (c) 2019-2021 Clark Winkelmann
Emoji list Copyright (c) 2018 David Sevilla Martín

Permission is hereby granted, free of charge, to any person obtaining a copy
Expand Down
36 changes: 19 additions & 17 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,26 +1,16 @@
# Status

![License](https://img.shields.io/badge/license-MIT-blue.svg) [![Latest Stable Version](https://img.shields.io/packagist/v/clarkwinkelmann/flarum-ext-status.svg)](https://packagist.org/packages/clarkwinkelmann/flarum-ext-status)
![License](https://img.shields.io/badge/license-MIT-blue.svg) [![Latest Stable Version](https://img.shields.io/packagist/v/clarkwinkelmann/flarum-ext-status.svg)](https://packagist.org/packages/clarkwinkelmann/flarum-ext-status) [![Total Downloads](https://img.shields.io/packagist/dt/clarkwinkelmann/flarum-ext-status.svg)](https://packagist.org/packages/clarkwinkelmann/flarum-ext-status) [![Donate](https://img.shields.io/badge/paypal-donate-yellow.svg)](https://www.paypal.me/clarkwinkelmann)

User status for Flarum.
Minimalistic user status for Flarum.

> This extension was written live on YouTube. Watch the video on the [Clark writes code channel](https://www.youtube.com/watch?v=iRVyF6BuotY). Support me on [Patreon](https://www.patreon.com/clark_writes_code)!
### Installation
## Installation

Use [Bazaar](https://discuss.flarum.org/d/5151-flagrow-bazaar-the-extension-marketplace) or install manually with composer:
composer require clarkwinkelmann/flarum-ext-status

```sh
composer require clarkwinkelmann/flarum-ext-status
```

### Updating

```sh
composer update clarkwinkelmann/flarum-ext-status
```

### Emoji list
## Emoji list

The emoji lists for PHP were generated from the `simple-emoji-map` node package via those javascript commands:

Expand All @@ -29,7 +19,19 @@ console.log(JSON.stringify(Object.keys(emojiMap))); // all.json
console.log(JSON.stringify(Object.keys(emojiMap).filter(emoji => emojiMap[emoji][0].indexOf('flag_') === 0))); // flags.json
```

### Links
## Support

- [Packagist](https://packagist.org/packages/clarkwinkelmann/flarum-ext-status)
This extension is under **minimal maintenance**.

It was developed for a client and released as open-source for the benefit of the community.
I might publish simple bugfixes or compatibility updates for free.

You can [contact me](https://clarkwinkelmann.com/flarum) to sponsor additional features or updates.

Support is offered on a "best effort" basis through the Flarum community thread.

## Links

- [GitHub](https://github.com/clarkwinkelmann/flarum-ext-status)
- [Packagist](https://packagist.org/packages/clarkwinkelmann/flarum-ext-status)
- [Discuss](https://discuss.flarum.org/d/21983)
8 changes: 7 additions & 1 deletion composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,16 +7,21 @@
"type": "flarum-extension",
"license": "MIT",
"require": {
"flarum/core": ">=0.1.0-beta.10 <0.1.0-beta.14",
"flarum/core": "^0.1.0-beta.16",
"ext-json": "*"
},
"authors": [
{
"name": "Clark Winkelmann",
"email": "[email protected]",
"homepage": "https://clarkwinkelmann.com/",
"role": "Developer"
}
],
"support": {
"source": "https://github.com/clarkwinkelmann/flarum-ext-status",
"forum": "https://discuss.flarum.org/d/21983"
},
"autoload": {
"psr-4": {
"ClarkWinkelmann\\Status\\": "src/"
Expand All @@ -25,6 +30,7 @@
"extra": {
"flarum-extension": {
"title": "Status",
"category": "feature",
"icon": {
"name": "fas fa-grin",
"backgroundColor": "#684ba6",
Expand Down
23 changes: 18 additions & 5 deletions extend.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,18 +2,31 @@

namespace ClarkWinkelmann\Status;

use Flarum\Api\Serializer\UserSerializer;
use Flarum\Extend;
use Flarum\User\Event\Saving;
use Flarum\User\User;

return [
(new Extend\Frontend('forum'))
->js(__DIR__ . '/js/dist/forum.js')
->css(__DIR__ . '/resources/less/forum.less'),

(new Extend\Frontend('admin'))
->js(__DIR__ . '/js/dist/admin.js')
->css(__DIR__ . '/resources/less/admin.less'),
->js(__DIR__ . '/js/dist/admin.js'),

new Extend\Locales(__DIR__ . '/resources/locale'),

new Extenders\ForumAttributes(),
new Extenders\SaveStatus(),
new Extenders\UserAttributes(),
(new Extend\ApiSerializer(UserSerializer::class))
->attributes(UserAttributes::class),

(new Extend\Event())
->listen(Saving::class, Listeners\SaveStatus::class),

(new Extend\Settings())
->serializeToForum('clarkwinkelmannStatusOnlyCountries', 'clarkwinkelmann-status.onlyCountries', 'boolval')
->serializeToForum('clarkwinkelmannStatusEnableText', 'clarkwinkelmann-status.enableText', 'boolval'),

(new Extend\Policy())
->modelPolicy(User::class, Policies\UserPolicy::class),
];
2 changes: 1 addition & 1 deletion js/dist/admin.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion js/dist/admin.js.map

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion js/dist/forum.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion js/dist/forum.js.map

Large diffs are not rendered by default.

26 changes: 13 additions & 13 deletions js/package.json
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
{
"name": "@clarkwinkelmann/flarum-ext-status",
"version": "0.0.0",
"private": true,
"dependencies": {
"flarum-webpack-config": "^0.1.0-beta.10",
"simple-emoji-map": "^0.3.0",
"webpack": "^4.26.0",
"webpack-cli": "^3.0.7"
},
"scripts": {
"dev": "webpack --mode development --watch",
"build": "webpack --mode production"
}
"name": "@clarkwinkelmann/status",
"private": true,
"dependencies": {
"flarum": "^0.1.0-beta.16",
"flarum-webpack-config": "^0.1.0-beta.10",
"simple-emoji-map": "^0.3.0",
"webpack": "^4.26.0",
"webpack-cli": "^3.0.7"
},
"scripts": {
"dev": "webpack --mode development --watch",
"build": "webpack --mode production"
}
}
37 changes: 0 additions & 37 deletions js/src/admin/components/StatusSettingsModal.js

This file was deleted.

36 changes: 19 additions & 17 deletions js/src/admin/index.js
Original file line number Diff line number Diff line change
@@ -1,29 +1,31 @@
import {extend} from 'flarum/extend';
import app from 'flarum/app';
import StatusSettingsModal from './components/StatusSettingsModal';
import PermissionGrid from 'flarum/components/PermissionGrid';
/* global app */

app.initializers.add('clarkwinkelmann/status', () => {
app.extensionSettings['clarkwinkelmann-status'] = () => app.modal.show(new StatusSettingsModal());

extend(PermissionGrid.prototype, 'viewItems', items => {
items.add('clarkwinkelmann-status-see', {
app.initializers.add('clarkwinkelmann-status', () => {
app.extensionData.for('clarkwinkelmann-status')
.registerSetting({
setting: 'clarkwinkelmann-status.onlyCountries',
type: 'switch',
label: app.translator.trans('clarkwinkelmann-status.admin.settings.only-countries')
})
.registerSetting({
setting: 'clarkwinkelmann-status.enableText',
type: 'switch',
label: app.translator.trans('clarkwinkelmann-status.admin.settings.enable-text')
})
.registerPermission({
icon: 'fas fa-grin',
label: app.translator.trans('clarkwinkelmann-status.admin.permissions.see'),
permission: 'clarkwinkelmann-status.see',
allowGuest: true,
});

items.add('clarkwinkelmann-status-set', {
}, 'view')
.registerPermission({
icon: 'fas fa-grin',
label: app.translator.trans('clarkwinkelmann-status.admin.permissions.set'),
permission: 'clarkwinkelmann-status.set',
});

items.add('clarkwinkelmann-status-mod', {
}, 'view')
.registerPermission({
icon: 'fas fa-grin',
label: app.translator.trans('clarkwinkelmann-status.admin.permissions.mod'),
permission: 'clarkwinkelmann-status.mod',
});
});
}, 'view');
});
29 changes: 15 additions & 14 deletions js/src/forum/components/StatusModal.js
Original file line number Diff line number Diff line change
@@ -1,18 +1,21 @@
import app from 'flarum/app';
import Modal from 'flarum/components/Modal';
import Button from 'flarum/components/Button';
import Select from 'flarum/components/Select';
import Modal from 'flarum/common/components/Modal';
import Button from 'flarum/common/components/Button';
import Select from 'flarum/common/components/Select';

import emojiMap from 'simple-emoji-map';

/* global app, m */

const translationPrefix = 'clarkwinkelmann-status.forum.modal.';

export default class StatusModal extends Modal {
init() {
oninit(vnode) {
super.oninit(vnode);

this.dirty = false;
this.loading = false;
this.emoji = this.props.user.attribute('clarkwinkelmannStatusEmoji') || '';
this.text = this.props.user.attribute('clarkwinkelmannStatusText') || '';
this.emoji = this.attrs.user.attribute('clarkwinkelmannStatusEmoji') || '';
this.text = this.attrs.user.attribute('clarkwinkelmannStatusText') || '';

this.emojiPickOptions = {};

Expand Down Expand Up @@ -69,16 +72,15 @@ export default class StatusModal extends Modal {
loading: this.loading,
className: 'Button Button--primary',
type: 'submit',
children: app.translator.trans(translationPrefix + 'submit'),
}),
}, app.translator.trans(translationPrefix + 'submit')),
' ',
Button.component({
disabled: !this.props.user.attribute('clarkwinkelmannStatusEmoji') && !this.props.user.attribute('clarkwinkelmannStatusText'),
disabled: !this.attrs.user.attribute('clarkwinkelmannStatusEmoji') && !this.attrs.user.attribute('clarkwinkelmannStatusText'),
className: 'Button',
onclick: () => {
this.loading = true;

this.props.user.save({
this.attrs.user.save({
clarkwinkelmannStatusEmoji: null,
clarkwinkelmannStatusText: null,
}).then(() => {
Expand All @@ -92,8 +94,7 @@ export default class StatusModal extends Modal {
throw e;
});
},
children: app.translator.trans(translationPrefix + 'clear'),
}),
}, app.translator.trans(translationPrefix + 'clear')),
]),
]);
}
Expand All @@ -103,7 +104,7 @@ export default class StatusModal extends Modal {

this.loading = true;

this.props.user.save({
this.attrs.user.save({
clarkwinkelmannStatusEmoji: this.emoji,
clarkwinkelmannStatusText: this.text,
}).then(() => {
Expand Down
31 changes: 14 additions & 17 deletions js/src/forum/index.js
Original file line number Diff line number Diff line change
@@ -1,44 +1,41 @@
import {extend} from 'flarum/extend';
import app from 'flarum/app';
import SessionDropdown from 'flarum/components/SessionDropdown';
import Button from 'flarum/components/Button';
import UserCard from 'flarum/components/UserCard';
import UserControls from 'flarum/utils/UserControls';
import {extend} from 'flarum/common/extend';
import SessionDropdown from 'flarum/forum/components/SessionDropdown';
import Button from 'flarum/common/components/Button';
import UserCard from 'flarum/forum/components/UserCard';
import UserControls from 'flarum/forum/utils/UserControls';
import StatusModal from './components/StatusModal';

/* global m */
/* global app, m */

app.initializers.add('clarkwinkelmann/status', () => {
app.initializers.add('clarkwinkelmann-status', () => {
extend(SessionDropdown.prototype, 'items', function (items) {
if (app.session.user.attribute('clarkwinkelmannStatusCanEdit')) {
items.add('clarkwinkelmann-status', Button.component({
icon: 'fas fa-grin',
children: app.translator.trans('clarkwinkelmann-status.forum.menu.set-status'),
onclick() {
app.modal.show(new StatusModal({
app.modal.show(StatusModal, {
user: app.session.user,
}));
});
},
}));
}, app.translator.trans('clarkwinkelmann-status.forum.menu.set-status')));
}
});

extend(UserControls, 'userControls', function (items, user) {
if (user.attribute('clarkwinkelmannStatusCanEdit')) {
items.add('clarkwinkelmann-status', Button.component({
icon: 'fas fa-grin',
children: app.translator.trans('clarkwinkelmann-status.forum.menu.set-status'),
onclick() {
app.modal.show(new StatusModal({
app.modal.show(StatusModal, {
user,
}));
});
},
}));
}, app.translator.trans('clarkwinkelmann-status.forum.menu.set-status')));
}
});

extend(UserCard.prototype, 'infoItems', function (items) {
const user = this.props.user;
const user = this.attrs.user;

if (user.attribute('clarkwinkelmannStatusEmoji') || user.attribute('clarkwinkelmannStatusText')) {
items.add('clarkwinkelmann-status', m('.ClarkWinkelmannStatus', [
Expand Down
Loading

0 comments on commit cb18008

Please sign in to comment.