Skip to content

Commit fc400ea

Browse files
Merge pull request #89 from v17development/dev
Update v0.4.0
2 parents 0c571c8 + daed2f7 commit fc400ea

27 files changed

+3896
-2547
lines changed

composer.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,9 @@
2222
}
2323
},
2424
"require": {
25-
"flarum/core": "^0.1.0-beta.16",
26-
"flarum/tags": "^0.1.0-beta.16",
27-
"flarum/lock": "^0.1.0-beta.16",
25+
"flarum/core": "^1.0.0",
26+
"flarum/tags": "^1.0.0",
27+
"flarum/lock": "^1.0.0",
2828
"ext-json": "*"
2929
},
3030
"suggest": {

extend.php

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,6 @@
22

33
namespace V17Development\FlarumBlog;
44

5-
// Laravel
6-
use Illuminate\Events\Dispatcher;
7-
85
// Flarum classes
96
use Flarum\Api\Controller as FlarumController;
107
use Flarum\Api\Serializer\BasicDiscussionSerializer;
@@ -14,6 +11,7 @@
1411
use Flarum\Discussion\Event\Saving;
1512
use Flarum\Discussion\Filter\DiscussionFilterer;
1613
use Flarum\Discussion\Search\DiscussionSearcher;
14+
use Flarum\Tags\Api\Serializer\TagSerializer;
1715

1816
// Controllers
1917
use V17Development\FlarumBlog\Controller\BlogOverviewController;
@@ -24,6 +22,7 @@
2422
use V17Development\FlarumBlog\Access\ScopeDiscussionVisibility;
2523
// API controllers
2624
use V17Development\FlarumBlog\Api\AttachForumSerializerAttributes;
25+
use V17Development\FlarumBlog\Api\AttatchTagSerializerAttributes;
2726
use V17Development\FlarumBlog\Api\Controller\CreateBlogMetaController;
2827
use V17Development\FlarumBlog\Api\Controller\UpdateBlogMetaController;
2928
use V17Development\FlarumBlog\Api\Controller\UploadDefaultBlogImageController;
@@ -86,6 +85,9 @@
8685
(new Extend\ApiSerializer(ForumSerializer::class))
8786
->attributes(AttachForumSerializerAttributes::class),
8887

88+
(new Extend\ApiSerializer(TagSerializer::class))
89+
->attributes(AttatchTagSerializerAttributes::class),
90+
8991
(new Extend\Event)
9092
->listen(Saving::class, CreateBlogMetaOnDiscussionCreate::class),
9193

js/dist/admin.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

js/dist/admin.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

js/dist/forum.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

js/dist/forum.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

js/package-lock.json

Lines changed: 3773 additions & 2448 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

js/src/admin/components/Modals/SelectCategoriesModal.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@ export default class SelectCategoriesModal extends Modal {
125125
{
126126
type: "success",
127127
},
128-
app.translator.trans("core.admin.basics.saved_message")
128+
app.translator.trans("core.admin.settings.saved_message")
129129
);
130130

131131
this.hide();

js/src/admin/pages/BlogSettings.js

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,6 @@ export default class BlogSettings extends ExtensionPage {
1616
this.isSaving = false;
1717

1818
// Settings
19-
this.blogCategories = app.data.settings.blog_tags
20-
? app.data.settings.blog_tags.split("|")
21-
: [];
2219
this.redirectsEnabled = app.data.settings.blog_redirects_enabled
2320
? app.data.settings.blog_redirects_enabled
2421
: "both";
@@ -48,18 +45,21 @@ export default class BlogSettings extends ExtensionPage {
4845
}
4946

5047
content() {
48+
const blogCategoriesCount = app.data.settings.blog_tags
49+
? app.data.settings.blog_tags.split("|").length
50+
: 0;
51+
5152
return (
5253
<div className="BasicsPage FlarumBlog">
5354
<div className="container">
5455
<div className={"FlarumBlog-SelectCategories"}>
55-
{this.blogCategories.length === 0
56-
? app.translator.transChoice(
56+
{blogCategoriesCount === 0
57+
? app.translator.trans(
5758
"v17development-flarum-blog.admin.settings.no_categories_selected"
5859
)
59-
: app.translator.transChoice(
60+
: app.translator.trans(
6061
"v17development-flarum-blog.admin.settings.selected_category_count",
61-
this.blogCategories.length,
62-
{ count: this.blogCategories.length }
62+
{ count: blogCategoriesCount }
6363
)}
6464

6565
<Button
@@ -326,7 +326,7 @@ export default class BlogSettings extends ExtensionPage {
326326
onclick={() => this.save()}
327327
disabled={!this.hasChanges}
328328
>
329-
{app.translator.trans("core.admin.basics.submit_button")}
329+
{app.translator.trans("core.admin.settings.submit_button")}
330330
</Button>
331331
</div>
332332
</div>
@@ -355,7 +355,7 @@ export default class BlogSettings extends ExtensionPage {
355355
app.alerts.show(
356356
Alert,
357357
{ type: "success" },
358-
app.translator.trans("core.admin.basics.saved_message")
358+
app.translator.trans("core.admin.settings.saved_message")
359359
);
360360
})
361361
.catch(() => {})

js/src/forum/components/ArticleSubscription.js

Lines changed: 16 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import Component from "flarum/common/Component";
22
import Button from "flarum/components/Button";
33
import extractText from "flarum/utils/extractText";
4+
import Tooltip from "flarum/common/components/Tooltip";
45

56
export default class ArticleSubscription extends Component {
67
view() {
@@ -30,30 +31,25 @@ export default class ArticleSubscription extends Component {
3031
}
3132

3233
return (
33-
<Button
34-
className={`Button BlogArticleSubscription SubscriptionMenu-button--${currentSubscriptionState}`}
35-
icon={icon}
36-
title={notifyTooltip}
37-
onclick={this.saveSubscription.bind(
38-
this,
39-
this.attrs.discussion,
40-
["follow", "ignore"].indexOf(currentSubscriptionState) !== -1
41-
? null
42-
: "follow"
43-
)}
44-
>
45-
{title}
46-
</Button>
34+
<Tooltip text={notifyTooltip} position="bottom">
35+
<Button
36+
className={`Button BlogArticleSubscription SubscriptionMenu-button--${currentSubscriptionState}`}
37+
icon={icon}
38+
onclick={this.saveSubscription.bind(
39+
this,
40+
this.attrs.discussion,
41+
["follow", "ignore"].indexOf(currentSubscriptionState) !== -1
42+
? null
43+
: "follow"
44+
)}
45+
>
46+
{title}
47+
</Button>
48+
</Tooltip>
4749
);
4850
}
4951

5052
saveSubscription(discussion, subscription) {
5153
discussion.save({ subscription });
5254
}
53-
54-
oncreate(vnode) {
55-
$(vnode.dom).tooltip({
56-
placement: "bottom",
57-
});
58-
}
5955
}

js/src/forum/index.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import BlogItem from "./pages/BlogItem";
22
import Model from "flarum/Model";
3+
import Tag from "flarum/tags/models/Tag";
34
import Discussion from "flarum/models/Discussion";
45
import BlogOverview from "./pages/BlogOverview";
56
import redirector from "./utils/redirector";
@@ -31,6 +32,7 @@ app.initializers.add("v17development-flarum-blog", (app) => {
3132
app.store.models.blogMeta = BlogMeta;
3233

3334
Discussion.prototype.blogMeta = Model.hasOne("blogMeta");
35+
Tag.prototype.isBlog = Model.attribute("isBlog");
3436

3537
// Redirect discussions/tags to their blog post/overview
3638
redirector();

js/src/forum/pages/BlogComposer.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ export default class BlogComposer extends Page {
2424
app.history.push("blogComposer");
2525

2626
// Get languages (if enabled)
27-
this.languages = app.store.all("discussion-languages");
27+
this.languages = app.store.all("discussion-languages") || [];
2828

2929
// Set body class
3030
this.bodyClass = "BlogItemPage";
@@ -170,7 +170,9 @@ export default class BlogComposer extends Page {
170170
icon={"fas fa-pencil-alt"}
171171
loading={this.isSaving}
172172
>
173-
Update blog settings
173+
{app.translator.trans(
174+
"v17development-flarum-blog.forum.composer.update_settings"
175+
)}
174176
</Button>
175177
</div>
176178
</div>

js/src/forum/pages/BlogItem.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -228,7 +228,7 @@ export default class BlogItem extends Page {
228228
{!this.loading &&
229229
this.article.blogMeta() &&
230230
this.article.blogMeta().isPendingReview() == true && (
231-
<div className={"Post"}>
231+
<div className={"Post-body"}>
232232
<blockquote
233233
class="uncited"
234234
style={{ fontSize: "16px" }}
@@ -255,6 +255,7 @@ export default class BlogItem extends Page {
255255
<div className={"FlarumBlog-Article-Comments"}>
256256
{/* Show subscription state */}
257257
{!this.loading &&
258+
app.session.user &&
258259
this.article.subscription &&
259260
(!this.article.isLocked ||
260261
(this.article.isLocked && !this.article.isLocked())) && (

js/src/forum/pages/BlogOverview.js

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@ import Button from "flarum/components/Button";
33
import humanTime from "flarum/helpers/humanTime";
44
import BlogCategories from "../components/BlogCategories";
55
import Link from "flarum/components/Link";
6-
import tooltip from "../utils/tooltip";
76
import LanguageDropdown from "../components/LanguageDropdown/LanguageDropdown";
87
import ForumNav from "../components/ForumNav";
8+
import Tooltip from "flarum/common/components/Tooltip";
99

1010
export default class BlogOverview extends Page {
1111
oninit(vnode) {
@@ -252,18 +252,19 @@ export default class BlogOverview extends Page {
252252
)}
253253
{article.blogMeta() &&
254254
article.blogMeta().isPendingReview() == true && (
255-
<span
256-
title={app.translator.trans(
255+
<Tooltip
256+
text={app.translator.trans(
257257
"v17development-flarum-blog.forum.review_article.pending_review"
258258
)}
259-
config={tooltip.bind(this)}
260-
data-placement={"bottom"}
259+
position="bottom"
261260
>
262-
<i className={"far fa-clock"} />{" "}
263-
{app.translator.trans(
264-
"v17development-flarum-blog.forum.review_article.pending_review_title"
265-
)}
266-
</span>
261+
<span>
262+
<i className={"far fa-clock"} />{" "}
263+
{app.translator.trans(
264+
"v17development-flarum-blog.forum.review_article.pending_review_title"
265+
)}
266+
</span>
267+
</Tooltip>
267268
)}
268269
</div>
269270

@@ -361,13 +362,13 @@ export default class BlogOverview extends Page {
361362
)}
362363
{article.blogMeta() &&
363364
article.blogMeta().isPendingReview() == true && (
364-
<i
365-
className={"far fa-clock"}
366-
title={app.translator.trans(
365+
<Tooltip
366+
text={app.translator.trans(
367367
"v17development-flarum-blog.forum.review_article.pending_review"
368368
)}
369-
config={tooltip.bind(this)}
370-
/>
369+
>
370+
<i className={"far fa-clock"} />
371+
</Tooltip>
371372
)}
372373
</h4>
373374
<p>{summary}</p>

js/src/forum/utils/tooltip.js

Lines changed: 0 additions & 3 deletions
This file was deleted.

locale/en.yaml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ v17development-flarum-blog:
99

1010
settings:
1111
no_categories_selected: "No categories selected"
12-
selected_category_count: "You have {count} category selected|You have {count} categories selected"
12+
selected_category_count: "{count, plural, one {You have # category selected} other {You have # categories selected}}"
1313
select_categories_button: "Select blog categories"
1414
blog_heading: "Blog"
1515
allow_comments_label: "Allow comments"
@@ -88,6 +88,7 @@ v17development-flarum-blog:
8888
post_article: "Post article"
8989
select_category: "Select a category"
9090
edit_categories: "Edit categories"
91+
update_settings: "Update blog settings"
9192
write: "Write"
9293
view: "View"
9394
nothing_to_preview: "Nothing to preview"
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
<?php
2+
3+
namespace V17Development\FlarumBlog\Api;
4+
5+
use Flarum\Settings\SettingsRepositoryInterface;
6+
use Flarum\Api\Event\Serializing;
7+
use Flarum\Tags\Api\Serializer\TagSerializer;
8+
9+
class AttatchTagSerializerAttributes
10+
{
11+
/**
12+
* @param SettingsRepositoryInterface $settings
13+
*/
14+
public function __construct(SettingsRepositoryInterface $settings)
15+
{
16+
// Get Flarum settings
17+
$this->settings = $settings;
18+
}
19+
20+
/**
21+
* @param Serializing $event
22+
*/
23+
public function __invoke(TagSerializer $serializer, $model, $attributes)
24+
{
25+
// Get blog tags
26+
$blogTags = explode("|", $this->settings->get('blog_tags', ''));
27+
28+
// Add isBlog attribute
29+
$attributes['isBlog'] = (bool) in_array($model->id, $blogTags) || ($model->parent_id && in_array($model->parent->id, $blogTags));
30+
31+
return $attributes;
32+
}
33+
}

src/Api/Controller/CreateBlogMetaController.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
use Tobscure\JsonApi\Document;
1010
use V17Development\FlarumBlog\Api\Serializer\BlogMetaSerializer;
1111
use V17Development\FlarumBlog\BlogMeta\Commands\CreateBlogMeta;
12+
use Flarum\Http\RequestUtil;
1213

1314
class CreateBlogMetaController extends AbstractCreateController
1415
{
@@ -35,7 +36,7 @@ public function __construct(Dispatcher $bus)
3536
protected function data(ServerRequestInterface $request, Document $document)
3637
{
3738
return $this->bus->dispatch(
38-
new CreateBlogMeta($request->getAttribute('actor'), Arr::get($request->getParsedBody(), 'data', []))
39+
new CreateBlogMeta(RequestUtil::getActor($request), Arr::get($request->getParsedBody(), 'data', []))
3940
);
4041
}
4142
}

src/Api/Controller/DeleteDefaultBlogImageController.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
use Laminas\Diactoros\Response\EmptyResponse;
99
use Flarum\Api\Controller\AbstractDeleteController;
1010
use Flarum\Foundation\Paths;
11+
use Flarum\Http\RequestUtil;
1112

1213
class DeleteDefaultBlogImageController extends AbstractDeleteController
1314
{
@@ -34,7 +35,7 @@ public function __construct(SettingsRepositoryInterface $settings, Paths $paths)
3435
*/
3536
protected function delete(ServerRequestInterface $request)
3637
{
37-
$request->getAttribute('actor')->assertAdmin();
38+
RequestUtil::getActor($request)->assertAdmin();
3839

3940
$path = $this->settings->get('blog_default_image_path');
4041
$this->settings->set('blog_default_image_path', null);

src/Api/Controller/ListBlogPostsController.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,9 @@
88
use Flarum\Http\UrlGenerator;
99
use Psr\Http\Message\ServerRequestInterface;
1010
use Tobscure\JsonApi\Document;
11+
use Flarum\Http\RequestUtil;
1112
use Illuminate\Support\Arr;
1213

13-
1414
class ListBlogPostsController extends AbstractListController
1515
{
1616
/**
@@ -40,7 +40,7 @@ public function __construct(UrlGenerator $url)
4040
*/
4141
protected function data(ServerRequestInterface $request, Document $document)
4242
{
43-
$actor = $request->getAttribute('actor');
43+
$actor = RequestUtil::getActor($request);
4444

4545
// $this->assertCan($actor, 'blog.viewBlogs');
4646

0 commit comments

Comments
 (0)