diff --git a/composer.json b/composer.json index 6578f369..2b6a3818 100755 --- a/composer.json +++ b/composer.json @@ -42,7 +42,7 @@ "title": "FoF Polls", "category": "discussion", "icon": { - "name": "fas fa-signal", + "name": "fas fa-poll", "backgroundColor": "#e74c3c", "color": "#fff" } diff --git a/js/src/admin/index.ts b/js/src/admin/index.ts index 6e8f58f9..2b686ccb 100755 --- a/js/src/admin/index.ts +++ b/js/src/admin/index.ts @@ -22,7 +22,7 @@ app.initializers.add('fof/polls', () => { }) .registerPermission( { - icon: 'fas fa-signal', + icon: 'fas fa-poll', label: app.translator.trans('fof-polls.admin.permissions.view_results_without_voting'), permission: 'discussion.polls.viewResultsWithoutVoting', allowGuest: true, @@ -31,7 +31,7 @@ app.initializers.add('fof/polls', () => { ) .registerPermission( { - icon: 'fas fa-signal', + icon: 'fas fa-poll', label: app.translator.trans('fof-polls.admin.permissions.start'), permission: 'discussion.polls.start', }, @@ -39,7 +39,7 @@ app.initializers.add('fof/polls', () => { ) .registerPermission( { - icon: 'fas fa-signal', + icon: 'fas fa-poll', label: app.translator.trans('fof-polls.admin.permissions.start_global'), permission: 'startGlobalPoll', }, @@ -63,7 +63,7 @@ app.initializers.add('fof/polls', () => { ) .registerPermission( { - icon: 'fas fa-signal', + icon: 'fas fa-poll', label: app.translator.trans('fof-polls.admin.permissions.vote'), permission: 'discussion.polls.vote', }, @@ -71,7 +71,7 @@ app.initializers.add('fof/polls', () => { ) .registerPermission( { - icon: 'fas fa-signal', + icon: 'fas fa-poll', label: app.translator.trans('fof-polls.admin.permissions.change_vote'), permission: 'polls.changeVote', }, diff --git a/js/src/forum/components/ComposePollPage.tsx b/js/src/forum/components/ComposePollPage.tsx index d028c2b1..02d46b8b 100644 --- a/js/src/forum/components/ComposePollPage.tsx +++ b/js/src/forum/components/ComposePollPage.tsx @@ -47,6 +47,12 @@ export default class ComposePollPage extends Page { } view(): Mithril.Children { + // prevent users from accessing the page if they can't start global polls + if (!app.forum.attribute('canStartGlobalPolls')) { + m.route.set('/'); + return; + } + if (this.loading) { return ; } diff --git a/js/src/forum/components/PollsPage.tsx b/js/src/forum/components/PollsPage.tsx index ec64e371..226076fe 100644 --- a/js/src/forum/components/PollsPage.tsx +++ b/js/src/forum/components/PollsPage.tsx @@ -10,7 +10,6 @@ import extractText from 'flarum/common/utils/extractText'; import PollListState from '../states/PollListState'; import Button from 'flarum/common/components/Button'; import SelectDropdown from 'flarum/common/components/SelectDropdown'; -import Acl from '../../common/Acl'; import LoadingIndicator from 'flarum/common/components/LoadingIndicator'; import PollModel from '../models/Poll'; import PollView from './PollView'; @@ -74,7 +73,7 @@ export default class PollsPage extends Page { sidebarItems() { const items = new ItemList(); - const canStartPoll = Acl.canStartPoll(); + const canStartPoll = app.forum.attribute('canStartGlobalPolls'); items.add( 'newGlobalPoll', @@ -126,6 +125,7 @@ export default class PollsPage extends Page { viewItems() { return IndexPage.prototype.viewItems(); } + navItems() { return IndexPage.prototype.navItems(); } diff --git a/src/Api/AddForumAttributes.php b/src/Api/AddForumAttributes.php index 3160b127..6e2db43c 100644 --- a/src/Api/AddForumAttributes.php +++ b/src/Api/AddForumAttributes.php @@ -18,6 +18,7 @@ class AddForumAttributes public function __invoke(ForumSerializer $serializer, array $model, array $attributes): array { $attributes['canStartPolls'] = $serializer->getActor()->can('discussion.polls.start'); + $attributes['canStartGlobalPolls'] = $serializer->getActor()->can('startGlobalPoll'); return $attributes; }