From 2331194e6ea2ff296b009304d97b505c47ec07bf Mon Sep 17 00:00:00 2001 From: Jasper Vriends <4417659+jaspervriends@users.noreply.github.com> Date: Sat, 13 Feb 2021 00:30:52 +0100 Subject: [PATCH 1/5] Fix #47 #65 , changed number to boolean in serializer --- composer.json | 2 +- less/Forum/Item.less | 2 +- src/Api/Serializer/BlogMetaSerializer.php | 6 +++--- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/composer.json b/composer.json index f812497..3aa28ea 100644 --- a/composer.json +++ b/composer.json @@ -23,10 +23,10 @@ }, "require": { "flarum/core": "^0.1.0-beta.15", + "flarum/tags": "The Flarum Tags extension", "ext-json": "*" }, "suggest": { - "flarum/tags": "The Flarum Tags extension", "v17development/flarum-seo": "Adds Flarum SEO and Social media tags" }, "extra": { diff --git a/less/Forum/Item.less b/less/Forum/Item.less index 045bb72..80b58e1 100644 --- a/less/Forum/Item.less +++ b/less/Forum/Item.less @@ -207,8 +207,8 @@ text-align: center; padding: 0 10px; margin: 15px 0; + word-break: break-word; } - } } } diff --git a/src/Api/Serializer/BlogMetaSerializer.php b/src/Api/Serializer/BlogMetaSerializer.php index 520b514..bcb2d1b 100644 --- a/src/Api/Serializer/BlogMetaSerializer.php +++ b/src/Api/Serializer/BlogMetaSerializer.php @@ -20,9 +20,9 @@ protected function getDefaultAttributes($meta) return [ 'featuredImage' => $meta->featured_image, 'summary' => $meta->summary, - 'isFeatured' => $meta->is_featured, - 'isSized' => $meta->is_sized, - 'isPendingReview' => $meta->is_pending_review + 'isFeatured' => (bool) $meta->is_featured, + 'isSized' => (bool) $meta->is_sized, + 'isPendingReview' => (bool) $meta->is_pending_review ]; } From b0f1a032d6795eb47ed2bad9f441477994446f3f Mon Sep 17 00:00:00 2001 From: Jasper Vriends <4417659+jaspervriends@users.noreply.github.com> Date: Sat, 13 Feb 2021 00:51:11 +0100 Subject: [PATCH 2/5] Added 'near' for blog comments fixes #62 --- js/src/forum/index.js | 5 +++++ js/src/forum/pages/BlogItem.js | 9 ++++++++- js/src/forum/utils/discussionRouting.js | 11 ++++++++--- 3 files changed, 21 insertions(+), 4 deletions(-) diff --git a/js/src/forum/index.js b/js/src/forum/index.js index a7ad356..9e2463f 100644 --- a/js/src/forum/index.js +++ b/js/src/forum/index.js @@ -23,6 +23,11 @@ app.initializers.add("v17development-flarum-blog", (app) => { app.routes.blogArticle = { path: "/blog/:id", component: BlogItem }; + app.routes["blogArticle.near"] = { + path: "/blog/:id/:near", + component: BlogItem, + }; + app.store.models.blogMeta = BlogMeta; Discussion.prototype.blogMeta = Model.hasOne("blogMeta"); diff --git a/js/src/forum/pages/BlogItem.js b/js/src/forum/pages/BlogItem.js index 9892e44..2a2942d 100644 --- a/js/src/forum/pages/BlogItem.js +++ b/js/src/forum/pages/BlogItem.js @@ -18,6 +18,8 @@ export default class BlogItem extends Page { this.bodyClass = "BlogItemPage"; + this.near = m.route.param("near") || 0; + this.loading = true; this.found = false; this.article = null; @@ -80,6 +82,11 @@ export default class BlogItem extends Page { this.stream = new PostStreamState(article, includedPosts); + // Scroll to specific post + if (this.near) { + this.stream.goToNumber(this.near, true); + } + m.redraw(); } @@ -255,7 +262,7 @@ export default class BlogItem extends Page { PostStream.component({ discussion: this.article, stream: this.stream, - onPositionChange: () => {}, + onPositionChange: this.positionChanged.bind(this), })} diff --git a/js/src/forum/utils/discussionRouting.js b/js/src/forum/utils/discussionRouting.js index 51ce041..d788ec1 100644 --- a/js/src/forum/utils/discussionRouting.js +++ b/js/src/forum/utils/discussionRouting.js @@ -34,9 +34,14 @@ export default function () { } } if (shouldRedirect) { - return app.route("blogArticle", { - id: discussion.slug(), - }); + return discussion.lastReadPostNumber() > 1 + ? app.route("blogArticle.near", { + id: discussion.slug(), + near: discussion.lastReadPostNumber(), + }) + : app.route("blogArticle", { + id: discussion.slug(), + }); } else { return original_discussion_route(discussion, near); } From 532dedc27d16ee8afc6965ed1fa55f08702c0e8b Mon Sep 17 00:00:00 2001 From: Jasper Vriends <4417659+jaspervriends@users.noreply.github.com> Date: Sat, 13 Feb 2021 01:01:49 +0100 Subject: [PATCH 3/5] Fix #48 --- less/Forum/Overview.less | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/less/Forum/Overview.less b/less/Forum/Overview.less index 49a5eff..0f17fb7 100644 --- a/less/Forum/Overview.less +++ b/less/Forum/Overview.less @@ -80,10 +80,10 @@ &-details { padding: 80px 20px 20px 20px; - color: @body-bg; + color: #FFFFFF; flex-grow: 1; position: relative; - text-shadow: 0px 0px 4px fade(@text-color, 28%); + text-shadow: 0px 0px 4px fade(black, 28%); h4 { font-size: 22px; @@ -100,7 +100,7 @@ } .data { - color: @body-bg; + color: #FFFFFF; position: relative; z-index: 2; From 4b849c6b653688b2c8f25e1d7cf520cc8cfedcb2 Mon Sep 17 00:00:00 2001 From: Jasper Vriends <4417659+jaspervriends@users.noreply.github.com> Date: Sat, 13 Feb 2021 01:27:30 +0100 Subject: [PATCH 4/5] Closes #11 --- composer.json | 2 +- extend.php | 6 +- js/src/admin/pages/BlogSettings.js | 18 ++++++ js/src/forum/pages/BlogItem.js | 3 +- js/src/forum/pages/BlogOverview.js | 6 +- locale/en.yaml | 3 +- src/Api/AttachForumSerializerAttributes.php | 1 + .../DeleteDefaultBlogImageController.php | 47 ++++++++++++++ .../UploadDefaultBlogImageController.php | 61 +++++++++++++++++++ 9 files changed, 141 insertions(+), 6 deletions(-) create mode 100644 src/Api/Controller/DeleteDefaultBlogImageController.php create mode 100644 src/Api/Controller/UploadDefaultBlogImageController.php diff --git a/composer.json b/composer.json index 3aa28ea..0ae0c2c 100644 --- a/composer.json +++ b/composer.json @@ -23,7 +23,7 @@ }, "require": { "flarum/core": "^0.1.0-beta.15", - "flarum/tags": "The Flarum Tags extension", + "flarum/tags": "^0.1.0-beta.15", "ext-json": "*" }, "suggest": { diff --git a/extend.php b/extend.php index 29fe60a..f849fff 100644 --- a/extend.php +++ b/extend.php @@ -25,6 +25,8 @@ use V17Development\FlarumBlog\Api\AttachForumSerializerAttributes; use V17Development\FlarumBlog\Api\Controller\CreateBlogMetaController; use V17Development\FlarumBlog\Api\Controller\UpdateBlogMetaController; +use V17Development\FlarumBlog\Api\Controller\UploadDefaultBlogImageController; +use V17Development\FlarumBlog\Api\Controller\DeleteDefaultBlogImageController; use V17Development\FlarumBlog\Api\Serializer\BlogMetaSerializer; // Listeners use V17Development\FlarumBlog\Listeners\FilterBlogArticles; @@ -53,7 +55,9 @@ (new Extend\Routes('api')) ->post('/blogMeta', 'blog.meta', CreateBlogMetaController::class) - ->patch('/blogMeta/{id}', 'blog.meta.edit', UpdateBlogMetaController::class), + ->patch('/blogMeta/{id}', 'blog.meta.edit', UpdateBlogMetaController::class) + ->post('/blog_default_image', 'pages.index', UploadDefaultBlogImageController::class) + ->delete('/blog_default_image', 'pages.index', DeleteDefaultBlogImageController::class), new Extend\Locales(__DIR__ . '/locale'), diff --git a/js/src/admin/pages/BlogSettings.js b/js/src/admin/pages/BlogSettings.js index f9c84b7..803798a 100644 --- a/js/src/admin/pages/BlogSettings.js +++ b/js/src/admin/pages/BlogSettings.js @@ -5,6 +5,7 @@ import Button from "flarum/components/Button"; import FieldSet from "flarum/components/FieldSet"; import Switch from "flarum/components/Switch"; import SelectCategoriesModal from "../components/Modals/SelectCategoriesModal"; +import UploadImageButton from 'flarum/components/UploadImageButton'; export default class BlogSettings extends ExtensionPage { oninit(attrs) { @@ -39,6 +40,8 @@ export default class BlogSettings extends ExtensionPage { this.addSidebarNav = app.data.settings.blog_add_sidebar_nav ? app.data.settings.blog_add_sidebar_nav : true; + + app.forum.data.attributes.blog_default_imageUrl = app.forum.attribute('baseUrl') + '/assets/' + app.data.settings.blog_default_image_path; } content() { @@ -296,6 +299,21 @@ export default class BlogSettings extends ExtensionPage { ] )} + {FieldSet.component({ + label: app.translator.trans( + "v17development-flarum-blog.admin.settings.default_article_image_label" + ) + }, [ +
+ {app.translator.trans( + "v17development-flarum-blog.admin.settings.default_article_image_text" + )} +
, + UploadImageButton.component({ + name: 'blog_default_image' + }) + ])} + \n \n \n );\n }\n\n // Close or save setting\n onsubmit(e) {\n e.preventDefault();\n\n if (!this.hasChanges) {\n this.hide();\n return;\n }\n\n this.isSaving = true;\n\n saveSettings({\n blog_tags: this.blogCategories.join(\"|\"),\n })\n .then(() => {\n app.alerts.show(\n Alert,\n {\n type: \"success\",\n },\n app.translator.trans(\"core.admin.basics.saved_message\")\n );\n\n this.hide();\n })\n .catch(() => {\n app.alerts.show(\n Alert,\n {\n type: \"error\",\n },\n app.translator.trans(\"core.lib.error.generic_message\")\n );\n })\n .then(() => {\n this.isSaving = false;\n });\n }\n}\n","import ExtensionPage from \"flarum/components/ExtensionPage\";\nimport saveSettings from \"flarum/utils/saveSettings\";\nimport Alert from \"flarum/components/Alert\";\nimport Button from \"flarum/components/Button\";\nimport FieldSet from \"flarum/components/FieldSet\";\nimport Switch from \"flarum/components/Switch\";\nimport SelectCategoriesModal from \"../components/Modals/SelectCategoriesModal\";\n\nexport default class BlogSettings extends ExtensionPage {\n oninit(attrs) {\n super.oninit(attrs);\n\n // Form\n this.hasChanges = false;\n this.isSaving = false;\n\n // Settings\n this.blogCategories = app.data.settings.blog_tags\n ? app.data.settings.blog_tags.split(\"|\")\n : [];\n this.redirectsEnabled = app.data.settings.blog_redirects_enabled\n ? app.data.settings.blog_redirects_enabled\n : \"both\";\n this.hideTagsInList = app.data.settings.blog_hide_tags\n ? app.data.settings.blog_hide_tags\n : true;\n this.allowComments = app.data.settings.blog_allow_comments\n ? app.data.settings.blog_allow_comments\n : true;\n this.hideOnDiscussionList = app.data.settings.blog_filter_discussion_list\n ? app.data.settings.blog_filter_discussion_list\n : false;\n this.requiresReviewOnPost = app.data.settings.blog_requires_review\n ? app.data.settings.blog_requires_review\n : false;\n this.addCategoryHierarchy = app.data.settings.blog_category_hierarchy\n ? app.data.settings.blog_category_hierarchy\n : true;\n this.addSidebarNav = app.data.settings.blog_add_sidebar_nav\n ? app.data.settings.blog_add_sidebar_nav\n : true;\n }\n\n content() {\n return (\n
\n
\n
\n {this.blogCategories.length === 0\n ? app.translator.transChoice(\n \"v17development-flarum-blog.admin.settings.no_categories_selected\"\n )\n : app.translator.transChoice(\n \"v17development-flarum-blog.admin.settings.selected_category_count\",\n this.blogCategories.length,\n { count: this.blogCategories.length }\n )}\n\n app.modal.show(SelectCategoriesModal)}\n >\n {app.translator.trans(\n \"v17development-flarum-blog.admin.settings.select_categories_button\"\n )}\n \n
\n\n {FieldSet.component(\n {\n label: app.translator.trans(\n \"v17development-flarum-blog.admin.settings.blog_heading\"\n ),\n },\n [\n Switch.component(\n {\n state: this.allowComments == true,\n onchange: (val) => {\n this.allowComments = val;\n this.hasChanges = true;\n },\n },\n [\n \n {app.translator.trans(\n \"v17development-flarum-blog.admin.settings.allow_comments_label\"\n )}\n ,\n
\n {app.translator.trans(\n \"v17development-flarum-blog.admin.settings.allow_comments_text\"\n )}\n
,\n ]\n ),\n Switch.component(\n {\n state: this.requiresReviewOnPost == true,\n onchange: (val) => {\n this.requiresReviewOnPost = val;\n this.hasChanges = true;\n },\n },\n [\n \n {app.translator.trans(\n \"v17development-flarum-blog.admin.settings.require_review_label\"\n )}\n ,\n
\n {app.translator.trans(\n \"v17development-flarum-blog.admin.settings.require_review_text\"\n )}\n
,\n ]\n ),\n Switch.component(\n {\n state: this.hideOnDiscussionList == true,\n onchange: (val) => {\n this.hideOnDiscussionList = val;\n this.hasChanges = true;\n },\n },\n [\n \n {app.translator.trans(\n \"v17development-flarum-blog.admin.settings.hide_on_discussion_list_label\"\n )}\n ,\n
\n {app.translator.trans(\n \"v17development-flarum-blog.admin.settings.hide_on_discussion_list_text\"\n )}\n
,\n ]\n ),\n Switch.component(\n {\n state: this.addSidebarNav == true,\n onchange: (val) => {\n this.addSidebarNav = val;\n this.hasChanges = true;\n },\n },\n [\n \n {app.translator.trans(\n \"v17development-flarum-blog.admin.settings.add_sidebar_nav_label\"\n )}\n ,\n
\n {app.translator.trans(\n \"v17development-flarum-blog.admin.settings.add_sidebar_nav_text\"\n )}\n
,\n ]\n ),\n ]\n )}\n\n {FieldSet.component(\n {\n label: app.translator.trans(\n \"v17development-flarum-blog.admin.settings.categories_heading\"\n ),\n },\n [\n Switch.component(\n {\n state: this.hideTagsInList == true,\n onchange: (val) => {\n this.hideTagsInList = val;\n this.hasChanges = true;\n },\n },\n [\n \n {app.translator.trans(\n \"v17development-flarum-blog.admin.settings.hide_tags_in_taglist_label\"\n )}\n ,\n
\n {app.translator.trans(\n \"v17development-flarum-blog.admin.settings.hide_tags_in_taglist_text\"\n )}\n
,\n ]\n ),\n Switch.component(\n {\n state: this.addCategoryHierarchy == true,\n onchange: (val) => {\n this.addCategoryHierarchy = val;\n this.hasChanges = true;\n },\n },\n [\n \n {app.translator.trans(\n \"v17development-flarum-blog.admin.settings.show_tag_hierarchy_label\"\n )}\n ,\n
\n {app.translator.trans(\n \"v17development-flarum-blog.admin.settings.show_tag_hierarchy_text\"\n )}\n
,\n ]\n ),\n ]\n )}\n\n {FieldSet.component(\n {\n label: app.translator.trans(\n \"v17development-flarum-blog.admin.settings.redirects_heading\"\n ),\n },\n [\n Switch.component(\n {\n state:\n this.redirectsEnabled === \"both\" ||\n this.redirectsEnabled === \"discussions_only\",\n onchange: (val) => {\n if (val) {\n // Add\n if (this.redirectsEnabled === \"tags_only\") {\n this.redirectsEnabled = \"both\";\n } else if (this.redirectsEnabled === \"none\") {\n this.redirectsEnabled = \"discussions_only\";\n }\n } else {\n if (this.redirectsEnabled === \"discussions_only\") {\n this.redirectsEnabled = \"none\";\n } else {\n this.redirectsEnabled = \"tags_only\";\n }\n }\n\n this.hasChanges = true;\n },\n },\n [\n \n {app.translator.trans(\n \"v17development-flarum-blog.admin.settings.redirect_articles_label\"\n )}\n ,\n
\n {app.translator.trans(\n \"v17development-flarum-blog.admin.settings.redirect_articles_text\"\n )}\n
,\n ]\n ),\n Switch.component(\n {\n state:\n this.redirectsEnabled === \"both\" ||\n this.redirectsEnabled === \"tags_only\",\n onchange: (val) => {\n if (val) {\n // Add\n if (this.redirectsEnabled === \"discussions_only\") {\n this.redirectsEnabled = \"both\";\n } else if (this.redirectsEnabled === \"none\") {\n this.redirectsEnabled = \"tags_only\";\n }\n } else {\n if (this.redirectsEnabled === \"tags_only\") {\n this.redirectsEnabled = \"none\";\n } else {\n this.redirectsEnabled = \"discussions_only\";\n }\n }\n\n this.hasChanges = true;\n },\n },\n [\n \n {app.translator.trans(\n \"v17development-flarum-blog.admin.settings.redirect_tags_label\"\n )}\n ,\n
\n {app.translator.trans(\n \"v17development-flarum-blog.admin.settings.redirect_tags_text\"\n )}\n
,\n ]\n ),\n ]\n )}\n\n this.save()}\n disabled={!this.hasChanges}\n >\n {app.translator.trans(\"core.admin.basics.submit_button\")}\n \n
\n
\n );\n }\n\n /**\n * Save data\n */\n save() {\n this.isSaving = true;\n\n saveSettings({\n blog_add_sidebar_nav: this.addSidebarNav,\n blog_redirects_enabled: this.redirectsEnabled,\n blog_hide_tags: this.hideTagsInList,\n blog_requires_review: this.requiresReviewOnPost,\n blog_allow_comments: this.allowComments,\n blog_category_hierarchy: this.addCategoryHierarchy,\n blog_filter_discussion_list: this.hideOnDiscussionList,\n })\n .then(() => {\n this.hasChanges = false;\n\n // Show saved message\n app.alerts.show(\n Alert,\n { type: \"success\" },\n app.translator.trans(\"core.admin.basics.saved_message\")\n );\n })\n .catch(() => {})\n .then(() => {\n this.isSaving = false;\n m.redraw();\n });\n }\n}\n","import { extend } from \"flarum/extend\";\nimport BasicsPage from \"flarum/components/BasicsPage\";\nimport PermissionGrid from \"flarum/components/PermissionGrid\";\nimport BlogSettings from \"./pages/BlogSettings\";\n\napp.initializers.add(\"v17development-flarum-blog\", () => {\n // Register extension settings page\n app.extensionData.for(\"v17development-blog\").registerPage(BlogSettings);\n\n app.extensionData\n .for(\"v17development-blog\")\n .registerPermission(\n {\n icon: \"fas fa-pencil-alt\",\n label: app.translator.trans(\n \"v17development-flarum-blog.admin.permissions.write_articles\"\n ),\n permission: \"blog.writeArticles\",\n },\n \"blog\",\n 90\n )\n .registerPermission(\n {\n icon: \"far fa-star\",\n label: app.translator.trans(\n \"v17development-flarum-blog.admin.permissions.auto_approve_posts\"\n ),\n permission: \"blog.autoApprovePosts\",\n },\n \"blog\",\n 90\n )\n .registerPermission(\n {\n icon: \"far fa-thumbs-up\",\n label: app.translator.trans(\n \"v17development-flarum-blog.admin.permissions.approve_posts\"\n ),\n permission: \"blog.canApprovePosts\",\n },\n \"blog\",\n 90\n );\n\n // Add addPermissions\n extend(PermissionGrid.prototype, \"permissionItems\", function (items) {\n // Add knowledge base permissions\n items.add(\n \"blog\",\n {\n label: app.translator.trans(\"v17development-flarum-blog.admin.blog\"),\n children: this.attrs.extensionId\n ? app.extensionData\n .getExtensionPermissions(this.extensionId, \"blog\")\n .toArray()\n : app.extensionData.getAllExtensionPermissions(\"blog\").toArray(),\n },\n 80\n );\n });\n\n extend(BasicsPage.prototype, \"homePageItems\", (items) => {\n items.add(\"blog\", {\n path: \"/blog\",\n label: app.translator.trans(\"v17development-flarum-blog.admin.blog\"),\n });\n });\n});\n"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack://@v17development/flarum-blog/external \"flarum.core.compat['extend']\"","webpack://@v17development/flarum-blog/external \"flarum.core.compat['components/BasicsPage']\"","webpack://@v17development/flarum-blog/external \"flarum.core.compat['components/PermissionGrid']\"","webpack://@v17development/flarum-blog/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://@v17development/flarum-blog/external \"flarum.core.compat['components/ExtensionPage']\"","webpack://@v17development/flarum-blog/external \"flarum.core.compat['utils/saveSettings']\"","webpack://@v17development/flarum-blog/external \"flarum.core.compat['components/Alert']\"","webpack://@v17development/flarum-blog/external \"flarum.core.compat['components/Button']\"","webpack://@v17development/flarum-blog/external \"flarum.core.compat['components/FieldSet']\"","webpack://@v17development/flarum-blog/external \"flarum.core.compat['components/Switch']\"","webpack://@v17development/flarum-blog/external \"flarum.core.compat['components/Modal']\"","webpack://@v17development/flarum-blog/./src/admin/components/Modals/SelectCategoriesModal.js","webpack://@v17development/flarum-blog/external \"flarum.core.compat['components/UploadImageButton']\"","webpack://@v17development/flarum-blog/./src/admin/pages/BlogSettings.js","webpack://@v17development/flarum-blog/./src/admin/index.js","webpack://@v17development/flarum-blog/webpack/bootstrap","webpack://@v17development/flarum-blog/webpack/startup","webpack://@v17development/flarum-blog/webpack/runtime/compat get default export","webpack://@v17development/flarum-blog/webpack/runtime/define property getters","webpack://@v17development/flarum-blog/webpack/runtime/hasOwnProperty shorthand","webpack://@v17development/flarum-blog/webpack/runtime/make namespace object"],"names":["flarum","core","compat","_inheritsLoose","subClass","superClass","prototype","Object","create","constructor","__proto__","SelectCategoriesModal","oninit","vnode","this","blogCategoriesOriginal","app","data","settings","blog_tags","split","blogCategories","isSaving","hasChanges","title","className","content","href","forum","attribute","target","width","store","all","length","colspan","map","obj","parent","toggleTag","currentIndex","indexOf","id","splice","push","icon","onclick","name","state","onchange","style","type","loading","onsubmit","e","preventDefault","saveSettings","join","then","alerts","show","Alert","translator","trans","hide","Modal","BlogSettings","attrs","redirectsEnabled","blog_redirects_enabled","hideTagsInList","blog_hide_tags","allowComments","blog_allow_comments","hideOnDiscussionList","blog_filter_discussion_list","requiresReviewOnPost","blog_requires_review","addCategoryHierarchy","blog_category_hierarchy","addSidebarNav","blog_add_sidebar_nav","attributes","blog_default_imageUrl","blog_default_image_path","transChoice","count","modal","FieldSet","label","Switch","val","UploadImageButton","save","disabled","m","redraw","ExtensionPage","initializers","add","extensionData","registerPage","registerPermission","permission","extend","PermissionGrid","items","children","extensionId","getExtensionPermissions","toArray","getAllExtensionPermissions","BasicsPage","path","__webpack_module_cache__","__webpack_require__","moduleId","exports","module","__webpack_modules__","n","getter","__esModule","d","a","definition","key","o","defineProperty","enumerable","get","prop","hasOwnProperty","call","r","Symbol","toStringTag","value"],"mappings":"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","file":"admin.js","sourcesContent":["const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['extend'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['components/BasicsPage'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['components/PermissionGrid'];","export default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['components/ExtensionPage'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['utils/saveSettings'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['components/Alert'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['components/Button'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['components/FieldSet'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['components/Switch'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['components/Modal'];","import Modal from \"flarum/components/Modal\";\nimport Button from \"flarum/components/Button\";\nimport Alert from \"flarum/components/Alert\";\nimport saveSettings from \"flarum/utils/saveSettings\";\nimport Switch from \"flarum/components/Switch\";\n\nexport default class SelectCategoriesModal extends Modal {\n oninit(vnode) {\n super.oninit(vnode);\n\n this.blogCategoriesOriginal = app.data.settings.blog_tags\n ? app.data.settings.blog_tags.split(\"|\")\n : [];\n this.blogCategories = app.data.settings.blog_tags\n ? app.data.settings.blog_tags.split(\"|\")\n : [];\n\n this.isSaving = false;\n this.hasChanges = false;\n }\n\n title() {\n return \"Select blog categories\";\n }\n\n className() {\n return \"Modal modal-dialog FlarumBlog-TagsModal\";\n }\n\n content() {\n return (\n
\n
\n

\n Please select one or more tags that are considered blog tags.{\" \"}\n \n Visit your blog.\n \n

\n\n \n \n \n \n \n \n \n {app.store.all(\"tags\").length === 0 && (\n \n \n \n )}\n\n {app.store.all(\"tags\").map((obj) => {\n // Skip all tags who aren't main categories\n if (obj.parent()) {\n return;\n }\n\n // Toggle tag\n const toggleTag = () => {\n const currentIndex = this.blogCategories.indexOf(obj.id());\n this.hasChanges = true;\n\n // Remove tag\n if (currentIndex >= 0) {\n this.blogCategories.splice(currentIndex, 1);\n } else {\n // Add tag\n this.blogCategories.push(obj.id());\n }\n };\n\n return (\n \n \n \n \n \n );\n })}\n \n
Tag name
You currently have no tags.
\n \n {obj.name()}\n = 0}\n onchange={toggleTag}\n />\n
\n
\n
\n \n {this.hasChanges ? \"Save changes\" : \"Close\"}\n \n
\n
\n );\n }\n\n // Close or save setting\n onsubmit(e) {\n e.preventDefault();\n\n if (!this.hasChanges) {\n this.hide();\n return;\n }\n\n this.isSaving = true;\n\n saveSettings({\n blog_tags: this.blogCategories.join(\"|\"),\n })\n .then(() => {\n app.alerts.show(\n Alert,\n {\n type: \"success\",\n },\n app.translator.trans(\"core.admin.basics.saved_message\")\n );\n\n this.hide();\n })\n .catch(() => {\n app.alerts.show(\n Alert,\n {\n type: \"error\",\n },\n app.translator.trans(\"core.lib.error.generic_message\")\n );\n })\n .then(() => {\n this.isSaving = false;\n });\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['components/UploadImageButton'];","import ExtensionPage from \"flarum/components/ExtensionPage\";\nimport saveSettings from \"flarum/utils/saveSettings\";\nimport Alert from \"flarum/components/Alert\";\nimport Button from \"flarum/components/Button\";\nimport FieldSet from \"flarum/components/FieldSet\";\nimport Switch from \"flarum/components/Switch\";\nimport SelectCategoriesModal from \"../components/Modals/SelectCategoriesModal\";\nimport UploadImageButton from \"flarum/components/UploadImageButton\";\n\nexport default class BlogSettings extends ExtensionPage {\n oninit(attrs) {\n super.oninit(attrs);\n\n // Form\n this.hasChanges = false;\n this.isSaving = false;\n\n // Settings\n this.blogCategories = app.data.settings.blog_tags\n ? app.data.settings.blog_tags.split(\"|\")\n : [];\n this.redirectsEnabled = app.data.settings.blog_redirects_enabled\n ? app.data.settings.blog_redirects_enabled\n : \"both\";\n this.hideTagsInList = app.data.settings.blog_hide_tags\n ? app.data.settings.blog_hide_tags\n : true;\n this.allowComments = app.data.settings.blog_allow_comments\n ? app.data.settings.blog_allow_comments\n : true;\n this.hideOnDiscussionList = app.data.settings.blog_filter_discussion_list\n ? app.data.settings.blog_filter_discussion_list\n : false;\n this.requiresReviewOnPost = app.data.settings.blog_requires_review\n ? app.data.settings.blog_requires_review\n : false;\n this.addCategoryHierarchy = app.data.settings.blog_category_hierarchy\n ? app.data.settings.blog_category_hierarchy\n : true;\n this.addSidebarNav = app.data.settings.blog_add_sidebar_nav\n ? app.data.settings.blog_add_sidebar_nav\n : true;\n\n app.forum.data.attributes.blog_default_imageUrl =\n app.forum.attribute(\"baseUrl\") +\n \"/assets/\" +\n app.data.settings.blog_default_image_path;\n }\n\n content() {\n return (\n
\n
\n
\n {this.blogCategories.length === 0\n ? app.translator.transChoice(\n \"v17development-flarum-blog.admin.settings.no_categories_selected\"\n )\n : app.translator.transChoice(\n \"v17development-flarum-blog.admin.settings.selected_category_count\",\n this.blogCategories.length,\n { count: this.blogCategories.length }\n )}\n\n app.modal.show(SelectCategoriesModal)}\n >\n {app.translator.trans(\n \"v17development-flarum-blog.admin.settings.select_categories_button\"\n )}\n \n
\n\n {FieldSet.component(\n {\n label: app.translator.trans(\n \"v17development-flarum-blog.admin.settings.blog_heading\"\n ),\n },\n [\n Switch.component(\n {\n state: this.allowComments == true,\n onchange: (val) => {\n this.allowComments = val;\n this.hasChanges = true;\n },\n },\n [\n \n {app.translator.trans(\n \"v17development-flarum-blog.admin.settings.allow_comments_label\"\n )}\n ,\n
\n {app.translator.trans(\n \"v17development-flarum-blog.admin.settings.allow_comments_text\"\n )}\n
,\n ]\n ),\n Switch.component(\n {\n state: this.requiresReviewOnPost == true,\n onchange: (val) => {\n this.requiresReviewOnPost = val;\n this.hasChanges = true;\n },\n },\n [\n \n {app.translator.trans(\n \"v17development-flarum-blog.admin.settings.require_review_label\"\n )}\n ,\n
\n {app.translator.trans(\n \"v17development-flarum-blog.admin.settings.require_review_text\"\n )}\n
,\n ]\n ),\n Switch.component(\n {\n state: this.hideOnDiscussionList == true,\n onchange: (val) => {\n this.hideOnDiscussionList = val;\n this.hasChanges = true;\n },\n },\n [\n \n {app.translator.trans(\n \"v17development-flarum-blog.admin.settings.hide_on_discussion_list_label\"\n )}\n ,\n
\n {app.translator.trans(\n \"v17development-flarum-blog.admin.settings.hide_on_discussion_list_text\"\n )}\n
,\n ]\n ),\n Switch.component(\n {\n state: this.addSidebarNav == true,\n onchange: (val) => {\n this.addSidebarNav = val;\n this.hasChanges = true;\n },\n },\n [\n \n {app.translator.trans(\n \"v17development-flarum-blog.admin.settings.add_sidebar_nav_label\"\n )}\n ,\n
\n {app.translator.trans(\n \"v17development-flarum-blog.admin.settings.add_sidebar_nav_text\"\n )}\n
,\n ]\n ),\n ]\n )}\n\n {FieldSet.component(\n {\n label: app.translator.trans(\n \"v17development-flarum-blog.admin.settings.categories_heading\"\n ),\n },\n [\n Switch.component(\n {\n state: this.hideTagsInList == true,\n onchange: (val) => {\n this.hideTagsInList = val;\n this.hasChanges = true;\n },\n },\n [\n \n {app.translator.trans(\n \"v17development-flarum-blog.admin.settings.hide_tags_in_taglist_label\"\n )}\n ,\n
\n {app.translator.trans(\n \"v17development-flarum-blog.admin.settings.hide_tags_in_taglist_text\"\n )}\n
,\n ]\n ),\n Switch.component(\n {\n state: this.addCategoryHierarchy == true,\n onchange: (val) => {\n this.addCategoryHierarchy = val;\n this.hasChanges = true;\n },\n },\n [\n \n {app.translator.trans(\n \"v17development-flarum-blog.admin.settings.show_tag_hierarchy_label\"\n )}\n ,\n
\n {app.translator.trans(\n \"v17development-flarum-blog.admin.settings.show_tag_hierarchy_text\"\n )}\n
,\n ]\n ),\n ]\n )}\n\n {FieldSet.component(\n {\n label: app.translator.trans(\n \"v17development-flarum-blog.admin.settings.redirects_heading\"\n ),\n },\n [\n Switch.component(\n {\n state:\n this.redirectsEnabled === \"both\" ||\n this.redirectsEnabled === \"discussions_only\",\n onchange: (val) => {\n if (val) {\n // Add\n if (this.redirectsEnabled === \"tags_only\") {\n this.redirectsEnabled = \"both\";\n } else if (this.redirectsEnabled === \"none\") {\n this.redirectsEnabled = \"discussions_only\";\n }\n } else {\n if (this.redirectsEnabled === \"discussions_only\") {\n this.redirectsEnabled = \"none\";\n } else {\n this.redirectsEnabled = \"tags_only\";\n }\n }\n\n this.hasChanges = true;\n },\n },\n [\n \n {app.translator.trans(\n \"v17development-flarum-blog.admin.settings.redirect_articles_label\"\n )}\n ,\n
\n {app.translator.trans(\n \"v17development-flarum-blog.admin.settings.redirect_articles_text\"\n )}\n
,\n ]\n ),\n Switch.component(\n {\n state:\n this.redirectsEnabled === \"both\" ||\n this.redirectsEnabled === \"tags_only\",\n onchange: (val) => {\n if (val) {\n // Add\n if (this.redirectsEnabled === \"discussions_only\") {\n this.redirectsEnabled = \"both\";\n } else if (this.redirectsEnabled === \"none\") {\n this.redirectsEnabled = \"tags_only\";\n }\n } else {\n if (this.redirectsEnabled === \"tags_only\") {\n this.redirectsEnabled = \"none\";\n } else {\n this.redirectsEnabled = \"discussions_only\";\n }\n }\n\n this.hasChanges = true;\n },\n },\n [\n \n {app.translator.trans(\n \"v17development-flarum-blog.admin.settings.redirect_tags_label\"\n )}\n ,\n
\n {app.translator.trans(\n \"v17development-flarum-blog.admin.settings.redirect_tags_text\"\n )}\n
,\n ]\n ),\n ]\n )}\n\n {FieldSet.component(\n {\n label: app.translator.trans(\n \"v17development-flarum-blog.admin.settings.default_article_image_label\"\n ),\n },\n [\n
\n {app.translator.trans(\n \"v17development-flarum-blog.admin.settings.default_article_image_text\"\n )}\n
,\n UploadImageButton.component({\n name: \"blog_default_image\",\n }),\n ]\n )}\n\n this.save()}\n disabled={!this.hasChanges}\n >\n {app.translator.trans(\"core.admin.basics.submit_button\")}\n \n
\n
\n );\n }\n\n /**\n * Save data\n */\n save() {\n this.isSaving = true;\n\n saveSettings({\n blog_add_sidebar_nav: this.addSidebarNav,\n blog_redirects_enabled: this.redirectsEnabled,\n blog_hide_tags: this.hideTagsInList,\n blog_requires_review: this.requiresReviewOnPost,\n blog_allow_comments: this.allowComments,\n blog_category_hierarchy: this.addCategoryHierarchy,\n blog_filter_discussion_list: this.hideOnDiscussionList,\n })\n .then(() => {\n this.hasChanges = false;\n\n // Show saved message\n app.alerts.show(\n Alert,\n { type: \"success\" },\n app.translator.trans(\"core.admin.basics.saved_message\")\n );\n })\n .catch(() => {})\n .then(() => {\n this.isSaving = false;\n m.redraw();\n });\n }\n}\n","import { extend } from \"flarum/extend\";\nimport BasicsPage from \"flarum/components/BasicsPage\";\nimport PermissionGrid from \"flarum/components/PermissionGrid\";\nimport BlogSettings from \"./pages/BlogSettings\";\n\napp.initializers.add(\"v17development-flarum-blog\", () => {\n // Register extension settings page\n app.extensionData.for(\"v17development-blog\").registerPage(BlogSettings);\n\n app.extensionData\n .for(\"v17development-blog\")\n .registerPermission(\n {\n icon: \"fas fa-pencil-alt\",\n label: app.translator.trans(\n \"v17development-flarum-blog.admin.permissions.write_articles\"\n ),\n permission: \"blog.writeArticles\",\n },\n \"blog\",\n 90\n )\n .registerPermission(\n {\n icon: \"far fa-star\",\n label: app.translator.trans(\n \"v17development-flarum-blog.admin.permissions.auto_approve_posts\"\n ),\n permission: \"blog.autoApprovePosts\",\n },\n \"blog\",\n 90\n )\n .registerPermission(\n {\n icon: \"far fa-thumbs-up\",\n label: app.translator.trans(\n \"v17development-flarum-blog.admin.permissions.approve_posts\"\n ),\n permission: \"blog.canApprovePosts\",\n },\n \"blog\",\n 90\n );\n\n // Add addPermissions\n extend(PermissionGrid.prototype, \"permissionItems\", function (items) {\n // Add knowledge base permissions\n items.add(\n \"blog\",\n {\n label: app.translator.trans(\"v17development-flarum-blog.admin.blog\"),\n children: this.attrs.extensionId\n ? app.extensionData\n .getExtensionPermissions(this.extensionId, \"blog\")\n .toArray()\n : app.extensionData.getAllExtensionPermissions(\"blog\").toArray(),\n },\n 80\n );\n });\n\n extend(BasicsPage.prototype, \"homePageItems\", (items) => {\n items.add(\"blog\", {\n path: \"/blog\",\n label: app.translator.trans(\"v17development-flarum-blog.admin.blog\"),\n });\n });\n});\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tif(__webpack_module_cache__[moduleId]) {\n\t\treturn __webpack_module_cache__[moduleId].exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// module exports must be returned from runtime so entry inlining is disabled\n// startup\n// Load entry module and return exports\nreturn __webpack_require__(773);\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => module['default'] :\n\t\t() => module;\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => Object.prototype.hasOwnProperty.call(obj, prop)","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};"],"sourceRoot":""} \ No newline at end of file diff --git a/js/dist/forum.js b/js/dist/forum.js index fd3f0c7..f261e93 100644 --- a/js/dist/forum.js +++ b/js/dist/forum.js @@ -1,2 +1,2 @@ -module.exports=function(t){var e={};function a(o){if(e[o])return e[o].exports;var s=e[o]={i:o,l:!1,exports:{}};return t[o].call(s.exports,s,s.exports,a),s.l=!0,s.exports}return a.m=t,a.c=e,a.d=function(t,e,o){a.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:o})},a.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},a.t=function(t,e){if(1&e&&(t=a(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var o=Object.create(null);if(a.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var s in t)a.d(o,s,function(e){return t[e]}.bind(null,s));return o},a.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return a.d(e,"a",e),e},a.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},a.p="",a(a.s=38)}([function(t,e,a){"use strict";function o(t,e){t.prototype=Object.create(e.prototype),t.prototype.constructor=t,t.__proto__=e}a.d(e,"a",(function(){return o}))},function(t,e){t.exports=flarum.core.compat["components/Button"]},function(t,e){t.exports=flarum.core.compat.Component},function(t,e){t.exports=flarum.core.compat["components/Switch"]},function(t,e){t.exports=flarum.core.compat.extend},function(t,e){t.exports=flarum.core.compat["components/Link"]},function(t,e){t.exports=flarum.core.compat.Model},function(t,e){t.exports=flarum.core.compat["components/Alert"]},function(t,e){t.exports=flarum.core.compat["utils/ItemList"]},function(t,e){t.exports=flarum.core.compat["components/IndexPage"]},function(t,e){t.exports=flarum.core.compat["utils/Stream"]},function(t,e){t.exports=flarum.core.compat["components/Modal"]},function(t,e){t.exports=flarum.core.compat["components/Page"]},function(t,e){t.exports=flarum.core.compat["tags/components/TagDiscussionModal"]},function(t,e){t.exports=flarum.core.compat["components/Dropdown"]},function(t,e){t.exports=flarum.core.compat["helpers/listItems"]},,function(t,e){t.exports=flarum.core.compat["utils/DiscussionControls"]},,function(t,e){t.exports=flarum.core.compat["helpers/humanTime"]},function(t,e){t.exports=flarum.core.compat["components/CommentPost"]},function(t,e){t.exports=flarum.core.compat["components/PostStream"]},function(t,e){t.exports=flarum.core.compat["states/PostStreamState"]},function(t,e){t.exports=flarum.core.compat["components/EditPostComposer"]},function(t,e){t.exports=flarum.core.compat["utils/extractText"]},function(t,e){t.exports=flarum.core.compat["helpers/avatar"]},function(t,e){t.exports=flarum.core.compat["components/SelectDropdown"]},function(t,e){t.exports=flarum.core.compat["models/Discussion"]},function(t,e){t.exports=flarum.core.compat["components/DiscussionPage"]},function(t,e){t.exports=flarum.core.compat["utils/mixin"]},function(t,e){t.exports=flarum.core.compat["tags/components/TagsPage"]},function(t,e){t.exports=flarum.core.compat["components/ComposerBody"]},function(t,e){t.exports=flarum.core.compat["components/TextEditor"]},function(t,e){t.exports=flarum.core},function(t,e){t.exports=flarum.core.compat["components/LinkButton"]},,,,function(t,e,a){"use strict";a.r(e);var o=a(0),s=a(12),r=a.n(s),n=a(20),i=a.n(n),l=a(21),u=a.n(l),c=a(22),p=a.n(c),d=a(2),g=a.n(d),f=a(13),h=a.n(f),v=a(17),b=a.n(v),y=a(7),N=a.n(y),B=a(1),w=a.n(B),A=a(14),F=a.n(A),M=a(11),x=a.n(M),C=a(8),_=a.n(C),P=a(10),k=a.n(P),S=a(3),I=a.n(S),L=function(t){function e(){return t.apply(this,arguments)||this}Object(o.a)(e,t);var a=e.prototype;return a.oninit=function(e){t.prototype.oninit.call(this,e),this.attrs.article?this.meta=this.attrs.article&&this.attrs.article.blogMeta()?this.attrs.article.blogMeta():app.store.createRecord("blogMeta"):this.meta=this.attrs.meta?this.attrs.meta:app.store.createRecord("blogMeta"),this.isNew=!this.meta.exists,this.summary=k()(this.meta.summary()||""),this.featuredImage=k()(this.meta.featuredImage()||""),this.isFeatured=k()(this.meta.isFeatured()||!1),this.isSized=k()(this.meta.isSized()||!1),this.isPendingReview=k()(this.meta.isPendingReview()||!1)},a.className=function(){return"Modal--small Support-Modal"},a.title=function(){return"Blog post settings"},a.content=function(){return m("div",{className:"Modal-body"},m("div",{className:"Form"},this.fields().toArray()))},a.fields=function(){var t=this,e=new _.a;return e.add("summary",m("div",{className:"Form-group"},m("label",null,"Article summary:"),m("textarea",{className:"FormControl",style:{maxWidth:"100%",minWidth:"100%",width:"100%",minHeight:"120px"},bidi:this.summary,placeholder:"Please enter a summary"}),m("small",null,"This summary will be visible on the blog overview page and will be used for SEO purposes.")),30),e.add("image",m("div",{className:"Form-group"},m("label",null,"Article image URL:"),m("input",{type:"text",className:"FormControl",bidi:this.featuredImage,placeholder:"https://"}),m("small",null,"Best image resolution for social media: 1200x630"),""!=this.featuredImage()&&m("img",{src:this.featuredImage(),alt:"Article image",title:"Blog post image",width:"100%",style:{marginTop:"15px"}})),30),e.add("sized",m("div",{className:"Form-group"},I.a.component({state:1==this.isSized(),onchange:function(e){t.isSized(e)}},[m("b",null,"Highlighted post"),m("div",{className:"helpText",style:{fontWeight:500}},"Give this post a big image on the blog overview page.")])),-10),e.add("submit",m("div",{className:"Form-group"},w.a.component({type:"submit",className:"Button Button--primary SupportModal-save",loading:this.loading},"Update")),-10),e},a.submitData=function(){return{summary:this.summary(),featuredImage:this.featuredImage(),isFeatured:this.isFeatured(),isSized:this.isSized(),isPendingReview:this.isPendingReview(),relationships:this.isNew&&!this.attrs.isComposer?{discussion:this.attrs.article}:null}},a.onsubmit=function(t){var e=this;if(t.preventDefault(),this.attrs.onsubmit)return this.meta.pushData({attributes:this.submitData()}),this.attrs.onsubmit(this.meta),void this.hide();this.loading=!0,this.meta.save(this.submitData()).then((function(){e.attrs.article&&e.attrs.article.pushData({relationships:{blogMeta:e.meta}}),e.hide(),m.redraw()}),(function(t){e.loading=!1,e.handleErrors(t)}))},e}(x.a),O=a(23),T=a.n(O),D=a(24),j=a.n(D),R=function(t){function e(){return t.apply(this,arguments)||this}Object(o.a)(e,t);var a=e.prototype;return a.oninit=function(e){t.prototype.oninit.call(this,e),this.article=this.attrs.article,this.name=k()(this.article.title()||""),this.redirect=this.attrs.redirect},a.className=function(){return"Modal--small Support-Modal"},a.title=function(){return app.translator.trans("v17development-flarum-blog.forum.tools.rename_article")},a.content=function(){return m("div",{className:"Modal-body"},m("div",{className:"Form"},this.fields().toArray()))},a.fields=function(){var t=new _.a;return t.add("name",m("div",{className:"Form-group"},m("label",null,app.translator.trans("v17development-flarum-blog.forum.article.title"),":"),m("input",{className:"FormControl",placeholder:app.translator.trans("v17development-flarum-blog.forum.article.title"),bidi:this.name})),50),t.add("submit",m("div",{className:"Form-group"},w.a.component({type:"submit",className:"Button Button--primary SupportModal-save",loading:this.loading},"Update")),-10),t},a.submitData=function(){return{title:this.name()}},a.onsubmit=function(t){var e=this;if(t.preventDefault(),this.loading=!0,this.attrs.onChange)return this.attrs.onChange(this.name()),void this.hide();this.article.save({title:this.name()}).then((function(){if(e.hide(),e.redirect){var t="/blog/"+e.article.slug();m.route.set(t,!0),window.history.replaceState(null,document.title,t)}}),(function(t){e.loading=!1,e.handleErrors(t)}))},e}(x.a),E=function(t){function e(){return t.apply(this,arguments)||this}Object(o.a)(e,t);var a=e.prototype;return a.init=function(){this.loadedPost=!1},a.view=function(){var t=this,e=this.attrs.article,a=[],o=flarum.extensions["fof-discussion-language"]&&void 0!==flarum.extensions["fof-discussion-language"].components?flarum.extensions["fof-discussion-language"].components.LanguageDiscussionModal:null;e.canRename()&&a.push(w.a.component({className:"Button",onclick:function(){return app.modal.show(R,{article:e})},icon:"fas fa-pencil-alt"},app.translator.trans("v17development-flarum-blog.forum.tools.rename_article")));var s=e.firstPost()?e.firstPost():app.store.getById("posts",e.firstPostId());return a.push(w.a.component({className:"Button",disabled:!s||!s.canEdit(),onclick:function(){app.composer.load(T.a,{post:s}),app.composer.show()},icon:"fas fa-edit"},app.translator.trans("v17development-flarum-blog.forum.tools.edit_article"))),a.push(w.a.component({className:"Button",onclick:function(){return app.modal.show(L,{article:e})},icon:"fas fa-cogs"},app.translator.trans("v17development-flarum-blog.forum.tools.article_settings"))),e.canTag()&&a.push(w.a.component({className:"Button",onclick:function(){return app.modal.show(h.a,{discussion:e})},icon:"fas fa-tag"},app.translator.trans("v17development-flarum-blog.forum.tools.update_category"))),e.blogMeta()&&e.blogMeta().isPendingReview()&&(a.push(m("li",{className:"Dropdown-separator"})),a.push(w.a.component({className:"Button",disabled:!app.forum.attribute("canApproveBlogPosts"),onclick:function(){e.blogMeta().save({isPendingReview:!1}).then((function(){app.alerts.show(N.a,{type:"success"},app.translator.trans("v17development-flarum-blog.forum.review_article.approve_article_approved"))}),(function(e){t.loading=!1,t.handleErrors(e)}))},icon:"fas fa-thumbs-up"},app.translator.trans("v17development-flarum-blog.forum.review_article.approve_article")))),e.canChangeLanguage&&e.canChangeLanguage()&&o&&a.push(w.a.component({icon:"fas fa-globe",onclick:function(){return app.modal.show(o,{discussion:e})}},app.translator.trans("fof-discussion-language.forum.discussion_controls.change_language_button"))),a.push(m("li",{className:"Dropdown-separator"})),e.canLock()&&a.push(w.a.component({className:"Button",onclick:b.a.lockAction.bind(e),icon:"fas "+(e.isLocked()?"fa-comments":"fa-comment-slash")},e.isLocked()?app.translator.trans("v17development-flarum-blog.forum.tools.enable_comments"):app.translator.trans("v17development-flarum-blog.forum.tools.disable_comments"))),e.canHide()&&(e.isHidden()?(a.push(w.a.component({className:"Button",onclick:b.a.restoreAction.bind(e),icon:"fas fa-eye"},app.translator.trans("v17development-flarum-blog.forum.tools.recover_article"))),e.canDelete()&&a.push(w.a.component({className:"Button",onclick:function(){if(confirm(j()(app.translator.trans("core.forum.discussion_controls.delete_confirmation"))))return"blogArticle"===app.history.getCurrent().name&&(app.previous?app.history.back():m.route.set(app.route("blog"))),e.delete().then((function(){m.redraw()}))},icon:"far fa-trash-alt"},app.translator.trans("v17development-flarum-blog.forum.tools.delete_forever")))):a.push(w.a.component({className:"Button",onclick:b.a.hideAction.bind(e),icon:"fas fa-eye-slash"},app.translator.trans("v17development-flarum-blog.forum.tools.hide_article")))),m("div",{className:"FlarumBlog-Article-Content-Edit-Button"},m("div",{className:"FlarumBlog-Article-Content-Edit-Dropdown"},F.a.component({icon:"fas fa-cog",label:"Manage",buttonClassName:"Button",menuClassName:"Dropdown-menu--right",onshow:function(){!s||s.canEdit()||t.loadedPost||(t.loadedPost=!0,app.store.find("posts",e.firstPost()?e.firstPost().id():e.firstPostId()).then((function(){})).catch((function(){})).then((function(){return m.redraw()})))}},a)))},e}(g.a),z=a(15),G=a.n(z),H=a(25),W=a.n(H),U=function(t){function e(){return t.apply(this,arguments)||this}Object(o.a)(e,t);var a=e.prototype;return a.view=function(){var t=this.attrs.loading?null:this.attrs.article?this.attrs.article.user():this.attrs.user;return m("div",{className:"FlarumBlog-Article-Author"},m("div",{className:"FlarumBlog-Article-Author-background "+(this.attrs.loading?"FlarumBlog-Author-Ghost":""),style:{backgroundColor:t&&t.color()?t.color():null}}),m("div",{className:"FlarumBlog-Article-Author-Avatar"},t?W()(t):m("span",{className:"Avatar FlarumBlog-Author-Ghost"})),t&&m("div",{className:"FlarumBlog-Article-Author-Info"},m("span",{className:"FlarumBlog-Article-Author-Name"},t.displayName()),m("p",{className:"FlarumBlog-Article-Author-Bio"},t.bio&&t.bio()),m("ul",{className:"FlarumBlog-Article-Author-Extended"},G()(this.items().toArray()))),this.attrs.loading&&m("div",null,m("span",{className:"FlarumBlog-Article-Author-Name FlarumBlog-Author-Ghost"}," "),m("p",{className:"FlarumBlog-Article-Author-Bio FlarumBlog-Author-Ghost"}," "),m("p",{className:"FlarumBlog-Article-Author-Bio FlarumBlog-Author-Ghost"}," "),m("p",{className:"FlarumBlog-Article-Author-Bio FlarumBlog-Author-Ghost"}," ")))},a.items=function(){return new _.a},e}(g.a),q=a(5),J=a.n(q),K=function(t){function e(){return t.apply(this,arguments)||this}Object(o.a)(e,t);var a=e.prototype;return a.oninit=function(e){t.prototype.oninit.call(this,e),this.blogCategories=app.forum.attribute("blogTags")},a.view=function(){var t=this;return m("div",{className:"BlogCategories BlogSideWidget"},m("h3",null,app.translator.trans("v17development-flarum-blog.forum.categories")),this.blogCategories&&this.blogCategories.map((function(e){var a=app.store.getById("tags",e);if(!a)return null;var o=[];return o.push(t.categoryItem(a)),app.store.all("tags").forEach((function(e){e.isChild()&&e.parent().id()===a.id()&&o.push(t.categoryItem(e))})),o})))},a.categoryItem=function(t){return m(J.a,{href:app.route("blogCategory",{slug:t.slug()}),className:"BlogSideWidget-item BlogSideWidget-item-"+t.id()+" "+(t.isChild()&&1==app.forum.attribute("blogCategoryHierarchy")?"BlogSideWidget-item-child":"")},m("span",{className:""===t.icon()?"BlogSideWidget-item-colored":"",style:{backgroundColor:""===t.icon()?t.color():null}},m("i",{className:t.icon()})),t.name())},e}(g.a),Q=a(9),V=a.n(Q),X=a(26),Y=a.n(X),Z=function(t){function e(){return t.apply(this,arguments)||this}Object(o.a)(e,t);var a=e.prototype;return a.view=function(){return m("div",{className:"BlogForumNav BlogSideWidget"},m("h3",null,app.translator.trans("v17development-flarum-blog.forum.forum_nav")),m("nav",{className:"IndexPage-nav sideNav"},m(Y.a,{buttonClassName:"Button",className:"App-titleControl"},this.navItems().toArray())))},a.navItems=function(){var t=V.a.prototype.navItems();return"phone"!==app.screen()&&t.remove("blog"),t},e}(g.a),tt=function(t){function e(){return t.apply(this,arguments)||this}Object(o.a)(e,t);var a=e.prototype;return a.view=function(){return m("div",{className:"FlarumBlog-Article-Sidebar"},m("ul",null,G()(this.items().toArray())))},a.items=function(){var t=new _.a;return t.add("author",U.component(this.attrs),0),t.add("categories",K.component(this.attrs),0),t.add("nav",Z.component(this.attrs),0),t},e}(g.a),et=a(19),at=a.n(et);function ot(t){$(t).tooltip()}var st=function(t){function e(){return t.apply(this,arguments)||this}Object(o.a)(e,t);var a=e.prototype;return a.oninit=function(e){t.prototype.oninit.call(this,e),this.languages=app.store.all("discussion-languages"),this.options=this.languages.reduce((function(t,e){return t[e.code()]=m("span",null,m("i",{className:"fas fa-globe"})," ",e.name()),t}),this.attrs.extra||{})},a.view=function(){var t=this.attrs,e=t.language,a=t.uppercase,o=e.name()||"";return m("span",null,m("i",{className:"fas fa-globe"})," ",a?o.toUpperCase():o)},e}(g.a),rt=function(t){function e(){return t.apply(this,arguments)||this}Object(o.a)(e,t);var a=e.prototype;return a.oninit=function(e){t.prototype.oninit.call(this,e),this.languages=app.store.all("discussion-languages"),this.options=this.languages.reduce((function(t,e){return t[e.code()]=m(st,{language:e}),t}),this.attrs.extra||{})},a.view=function(){var t=this,e=this.attrs.selected,a=Object.keys(this.options).map((function(a){var o=a===(e||"any");return w.a.component({active:o,icon:!o||"fas fa-check",onclick:function(){return t.attrs.onclick(a)}},t.options[a])}));return F.a.component({buttonClassName:"Button",label:this.options[e]||this.options[this.attrs.default],menuClassName:"Dropdown-menu--right"},a)},e}(g.a),nt=function(t){function e(){return t.apply(this,arguments)||this}Object(o.a)(e,t);var a=e.prototype;return a.oninit=function(e){t.prototype.oninit.call(this,e),app.setTitle(app.translator.trans("v17development-flarum-blog.forum.blog")),this.bodyClass="BlogOverviewPage",this.isLoading=!0,this.featuredPosts=[],this.posts=[],this.hasMore=null,this.isLoadingMore=!1,this.languages=app.store.all("discussion-languages"),this.currentSelectedLanguage=m.route.param("lang")?m.route.param("lang"):app.translator.locale,app.history.push("blog"),this.loadBlogOverview()},a.loadBlogOverview=function(){var t=app.preloadedApiDocument();t?setTimeout(this.show.bind(this,t),0):this.reloadData(),m.redraw()},a.reloadData=function(){var t="is:blog"+(m.route.param("slug")?" tag:"+m.route.param("slug"):"");null!==this.languages&&this.languages.length>=1&&(t+=" language:"+this.currentSelectedLanguage),app.store.find("discussions",{filter:{q:t},sort:"-createdAt"}).then(this.show.bind(this)).catch((function(){m.redraw()}))},a.show=function(t){if(0===t.length)return this.isLoading=!1,void m.redraw();this.hasMore=t.payload.links&&t.payload.links.next?t.payload.links.next:null,this.featuredPosts=t.slice(0,3),this.posts=t.length>=4?t.slice(3,t.length):[],this.isLoading=!1,m.redraw()},a.loadMore=function(){var t=this;this.isLoadingMore=!0,app.store.find(this.hasMore.replace(app.forum.attribute("apiUrl"),"")).then((function(e){e.map((function(e){return t.posts.push(e)})),t.hasMore=e.payload.links&&e.payload.links.next?e.payload.links.next:null})).catch((function(){})).then((function(){t.isLoadingMore=!1,m.redraw()}))},a.title=function(){if(!m.route.param("slug"))return m("h2",null,app.translator.trans("v17development-flarum-blog.forum.recent_posts"));var t=app.store.all("tags").filter((function(t){return t.slug()===m.route.param("slug")}));return m("h2",null,t&&t[0]&&t[0].name(),m("small",null," ","-"," ",m(J.a,{href:app.route("blog")},app.translator.trans("v17development-flarum-blog.forum.return_to_overview"))))},a.view=function(){var t=this;return m("div",{className:"FlarumBlogOverview"},m("div",{className:"container"},m("div",{className:"BlogFeatured"},m("div",{className:"BlogOverviewButtons"},app.forum.attribute("canWriteBlogPosts")&&m(w.a,{className:"Button",onclick:function(){return t.newArticle()},icon:"fas fa-pencil-alt"},app.translator.trans("v17development-flarum-blog.forum.compose.write_article")),null!==this.languages&&this.languages.length>=1&&m(rt,{selected:this.currentSelectedLanguage,onclick:function(e){t.currentSelectedLanguage=e,m.route.set(document.location.pathname,{lang:e}),t.reloadData()}})),this.title(),m("div",{style:{clear:"both"}}),m("div",{className:"BlogFeatured-list"},this.isLoading&&[0,1,2].map((function(){return m("div",{className:"BlogFeatured-list-item BlogFeatured-list-item-ghost"},m("div",{className:"BlogFeatured-list-item-details"},m("h4",null," "),m("div",{className:"data"},m("span",null,m("i",{className:"far fa-wave"})))))})),!this.isLoading&&this.featuredPosts.length>=0&&this.featuredPosts.map((function(e){var a=e.blogMeta()&&e.blogMeta().featuredImage()?"url("+e.blogMeta().featuredImage()+")":null,o=e.tags()?e.tags().filter((function(t){return t.isChild()})):[];return m(J.a,{href:app.route("blogArticle",{id:""+e.slug()}),className:"BlogFeatured-list-item FlarumBlog-default-image",style:{backgroundImage:a}},m("div",{className:"BlogFeatured-list-item-top"},o[0]&&m("span",null,o[0].name()),e.isSticky()&&m("span",null,m("i",{className:"fas fa-thumbtack"})),(e.blogMeta()&&1==e.blogMeta().isPendingReview()||e.isHidden())&&m("span",null,m("i",{className:"fas fa-eye-slash"})),e.blogMeta()&&1==e.blogMeta().isPendingReview()&&m("span",{title:app.translator.trans("v17development-flarum-blog.forum.review_article.pending_review"),config:ot.bind(t),"data-placement":"bottom"},m("i",{className:"far fa-clock"})," ",app.translator.trans("v17development-flarum-blog.forum.review_article.pending_review_title"))),m("div",{className:"BlogFeatured-list-item-details"},m("h4",null,e.title()),m("div",{className:"data"},m("span",null,m("i",{className:"far fa-clock"})," ",at()(e.createdAt())),m("span",null,m("i",{className:"far fa-user"})," ",e.user()?e.user().displayName():"[Deleted]"),m("span",null,m("i",{className:"far fa-comment"})," ",e.commentCount()-1))))})))),m("div",{className:"BlogScrubber"},m("div",{className:"BlogList"},this.isLoading&&[!1,!1,!0,!1].map((function(t){return m("div",{className:"BlogList-item BlogList-item-"+(!0===t?"sized":"default")+" BlogList-item-ghost"},m("div",{className:"BlogList-item-photo FlarumBlog-default-image"}),m("div",{className:"BlogList-item-content"},m("h4",null," "),m("p",null," "),m("div",{className:"data"},m("span",null,m("i",{className:"far fa-wave"})))))})),!this.isLoading&&this.posts.length>=1&&this.posts.map((function(e){var a=e.blogMeta()&&e.blogMeta().featuredImage()?"url("+e.blogMeta().featuredImage()+")":null,o=e.blogMeta()&&e.blogMeta().isSized(),s=e.blogMeta()&&e.blogMeta().summary()?e.blogMeta().summary():"";return m(J.a,{href:app.route("blogArticle",{id:""+e.slug()}),className:"BlogList-item BlogList-item-"+(o?"sized":"default")},m("div",{className:"BlogList-item-photo FlarumBlog-default-image",style:{backgroundImage:a}}),m("div",{className:"BlogList-item-content"},m("h4",null,e.title(),(e.blogMeta()&&1==e.blogMeta().isPendingReview()||e.isHidden())&&m("i",{className:"fas fa-eye-slash"}),e.blogMeta()&&1==e.blogMeta().isPendingReview()&&m("i",{className:"far fa-clock",title:app.translator.trans("v17development-flarum-blog.forum.review_article.pending_review"),config:ot.bind(t)})),m("p",null,s),m("div",{className:"data"},m("span",null,m("i",{className:"far fa-clock"})," ",at()(e.createdAt())),m("span",null,m("i",{className:"far fa-user"})," ",e.user()?e.user().displayName():"[Deleted]"),m("span",null,m("i",{className:"far fa-comment"})," ",e.commentCount()-1))))})),!this.isLoading&&this.featuredPosts.length>0&&null===this.hasMore&&m("p",{className:"FlarumBlog-reached-end"},app.translator.trans("v17development-flarum-blog.forum.no_more_posts")),!this.isLoading&&0===this.featuredPosts.length&&0===this.posts.length&&m("p",{className:"FlarumBlog-reached-end"},app.translator.trans("v17development-flarum-blog.forum.category_empty")),!this.isLoading&&null!==this.hasMore&&m("div",{className:"FlarumBlog-reached-load-more"},m(w.a,{className:"Button",onclick:function(){return t.loadMore()},icon:"fas fa-chevron-down",loading:this.isLoadingMore},app.translator.trans("core.forum.discussion_list.load_more_button")))),m("div",{className:"Sidebar"},m(K,null),m(Z,null)))))},a.newArticle=function(){var t=[],e=app.forum.attribute("blogTags");app.store.all("tags").forEach((function(a){!a.isChild()&&e.indexOf(a.id())>=0&&t.push(a)}));var a=app.store.getBy("tags","slug",m.route.param("slug"));a&&t.push(a),m.route.set(app.route("blogComposer",{tags:t.map((function(t){return t.id()})).join(),lang:this.languages.length>0?this.currentSelectedLanguage:void 0}))},e}(r.a),it=function(t){function e(){return t.apply(this,arguments)||this}Object(o.a)(e,t);var a=e.prototype;return a.oninit=function(e){t.prototype.oninit.call(this,e),app.setTitle(app.translator.trans("v17development-flarum-blog.forum.blog")),app.history.push("blogArticle"),this.bodyClass="BlogItemPage",this.loading=!0,this.found=!1,this.article=null,this.loadBlogItem()},a.loadBlogItem=function(){var t=app.preloadedApiDocument();t?setTimeout(this.show.bind(this,t),0):app.store.find("discussions",m.route.param("id").split("-")[0]).then(this.show.bind(this)).catch((function(){m.redraw()})),m.redraw()},a.show=function(t){this.article=t,app.setTitle(t.title()+" - "+app.translator.trans("v17development-flarum-blog.forum.blog")),this.loading=!1;var e=[];if(t.payload&&t.payload.included){var a=t.id();e=t.payload.included.filter((function(t){return"posts"===t.type&&t.relationships&&t.relationships.discussion&&t.relationships.discussion.data.id===a})).map((function(t){return app.store.getById("posts",t.id)})).sort((function(t,e){return t.id()-e.id()})).slice(0,20)}this.stream=new p.a(t,e),m.redraw()},a.view=function(){var t=this.article&&this.article.blogMeta()&&this.article.blogMeta().featuredImage()?"url("+this.article.blogMeta().featuredImage()+")":null,e=null;return!this.loading&&this.article&&(e=this.article.firstPost()?this.article.firstPost():app.store.getById("posts",this.article.firstPostId())),m("div",{className:"FlarumBlogItem"},m("div",{className:"container"},m("div",{className:"FlarumBlog-ToolButtons"},m(J.a,{href:app.route("blog"),className:"Button",onclick:function(t){app.previous.matches(nt)&&(t.preventDefault(),history.back())}},m("i",{class:"icon fas fa-angle-left Button-icon"}),m("span",{class:"Button-label"},app.translator.trans("v17development-flarum-blog.forum.return_to_overview")))),m("div",{className:"FlarumBlog-Article"},m("div",{className:"FlarumBlog-Article-Container"},m("div",{className:"FlarumBlog-Article-Content"},m("div",{className:"FlarumBlog-Article-Image FlarumBlog-default-image "+(this.loading?"FlarumBlog-Article-GhostImage":""),style:{backgroundImage:t,opacity:this.article&&this.article.isHidden()?.4:null}}),this.article&&app.session.user&&(app.session.user.canEdit()||this.article.canRename()||this.article.posts()&&this.article.posts()[0].canEdit())&&m(E,{article:this.article}),m("div",{className:"FlarumBlog-Article-Categories"},!this.loading&&this.article&&this.article.tags()&&this.article.tags().map((function(t){return m(J.a,{href:app.route("blogCategory",{slug:t.slug()})},t.name())})),this.loading&&[0,1].map((function(){return m("span",{className:"FlarumBlog-Article-GhostCategory"},"Category")}))),m("div",{className:"FlarumBlog-Article-Post"},m("h3",{className:this.loading?"FlarumBlog-Article-GhostTitle":null},this.article?this.article.title():"Ghost title",this.article&&this.article.isHidden()&&"("+app.translator.trans("v17development-flarum-blog.forum.hidden")+")"),this.loading&&[0,1,2].map((function(){return m("div",null,m("p",{className:"FlarumBlog-Article-GhostParagraph"}," "),m("p",{className:"FlarumBlog-Article-GhostParagraph"}," "),m("p",{className:"FlarumBlog-Article-GhostParagraph"}," "),m("p",null," "))})),!this.loading&&this.article.blogMeta()&&1==this.article.blogMeta().isPendingReview()&&m("div",{className:"Post"},m("blockquote",{class:"uncited",style:{fontSize:"16px"}},m("div",null,m("span",{className:"far fa-clock",style:{marginRight:"5px"}})," ",app.translator.trans("v17development-flarum-blog.forum.review_article.pending_review")))),!this.loading&&e&&m(i.a,{post:e}))),m("div",{className:"FlarumBlog-Article-Comments"},m("h4",null,app.translator.trans("v17development-flarum-blog.forum.comment_section.comments")," ","(",this.article?this.article.commentCount()-1:0,")"),!this.loading&&this.article.isLocked&&this.article.isLocked()&&m("div",{className:"Post-body"},m("blockquote",{class:"uncited"},m("div",null,m("span",{className:"far fa-lock",style:{marginRight:"5px"}})," ",app.translator.trans("v17development-flarum-blog.forum.comment_section.locked")))),!this.loading&&this.article&&u.a.component({discussion:this.article,stream:this.stream,onPositionChange:function(){}}))),m(tt,{article:this.article,loading:this.loading}))))},a.positionChanged=function(t,e){var a=this.article;app.session.user&&e>(a.lastReadPostNumber()||0)&&(a.save({lastReadPostNumber:e}),m.redraw())},e}(r.a),lt=a(6),ut=a.n(lt),mt=a(27),ct=a.n(mt),pt=a(28),dt=a.n(pt),gt=a(4),ft=function(){Object(gt.extend)(V.a.prototype,"oncreate",(function(){var t=this.currentTag(),e="both"===app.forum.attribute("blogRedirectsEnabled")||"tags_only"===app.forum.attribute("blogRedirectsEnabled");if(t&&e){var a=app.forum.attribute("blogTags");(a.indexOf(t.id())>=0||t.parent()&&a.indexOf(t.parent().id())>=0)&&m.route.set(app.route("blog"))}})),Object(gt.override)(dt.a.prototype,"show",(function(t,e){if(("both"===app.forum.attribute("blogRedirectsEnabled")||"discussions_only"===app.forum.attribute("blogRedirectsEnabled"))&&e&&e&&e.tags().length>0){var a=app.forum.attribute("blogTags");if(e.tags().filter((function(t){return a.indexOf(t.id())>=0||t.parent()&&a.indexOf(t.parent().id())>=0})).length>0){var o=app.route("blogArticle",{id:e.slug()});return m.route.set(o,null,!0),null}}return t(e)}))},ht=a(29),vt=function(t){function e(){return t.apply(this,arguments)||this}return Object(o.a)(e,t),e}(a.n(ht)()(ut.a,{discussion:ut.a.hasOne("discussion"),featuredImage:ut.a.attribute("featuredImage"),summary:ut.a.attribute("summary"),isFeatured:ut.a.attribute("isFeatured"),isSized:ut.a.attribute("isSized"),isPendingReview:ut.a.attribute("isPendingReview")})),bt=a(30),yt=a.n(bt);function Nt(){Object(gt.extend)(yt.a.prototype,"view",(function(t){var e=this;if(0==app.forum.attribute("blogHideTags"))return t;var a=app.forum.attribute("blogTags")||[],o=t.children[1].children[1].children[0].children;return t.children[1].children[1].children[0].children=o.map((function(t,o){return a.indexOf(e.tags[o].id())>=0?null:t})),t})),Object(gt.extend)(V.a.prototype,"navItems",(function(t){return 0==app.forum.attribute("blogHideTags")||(app.forum.attribute("blogTags")||[]).forEach((function(e){t.remove("tag"+e)})),t}))}var Bt=function(){var t=app.route.discussion;app.route.discussion=function(e,a){var o=!1;if(("both"===app.forum.attribute("blogRedirectsEnabled")||"discussions_only"===app.forum.attribute("blogRedirectsEnabled"))&&e.tags().length>0){var s=app.forum.attribute("blogTags");e.tags().filter((function(t){return s.indexOf(t.id())>=0||t.parent()&&s.indexOf(t.parent().id())>=0})).length>0&&(o=!0)}return o?app.route("blogArticle",{id:e.slug()}):t(e,a)}},wt=a(31),At=a.n(wt),Ft=a(32),Mt=a.n(Ft),xt=function(t){function e(){return t.apply(this,arguments)||this}Object(o.a)(e,t);var a=e.prototype;return a.view=function(){return m("div",null)},a.oncreate=function(e){t.prototype.oncreate.call(this,e),s9e.TextFormatter.preview(e.attrs.content||"",e.dom)},e}(g.a),Ct=function(t){function e(){return t.apply(this,arguments)||this}Object(o.a)(e,t);var a=e.prototype;return a.oninit=function(e){t.prototype.oninit.call(this,e),this.previewContent=!1},a.view=function(){var t=this,e=this.composer.fields.content()&&""!==this.composer.fields.content(),a=this.loading||this.attrs.disabled;return m("div",{className:"Flarum-Blog-Composer "+(a?"Flarum-Blog-Composer-Loading":"")},m("div",{className:"Flarum-Blog-Composer-tabs"},m(w.a,{className:!this.previewContent&&"AricleComposerButtonSelected",onclick:function(){return t.previewContent=!1}},app.translator.trans("v17development-flarum-blog.forum.composer.write")),m(w.a,{className:this.previewContent&&"AricleComposerButtonSelected",onclick:function(){return t.previewContent=!0}},app.translator.trans("v17development-flarum-blog.forum.composer.view"))),m("div",{className:"Composer Flarum-Blog-Composer-body "+(this.previewContent?"Flarum-Blog-Composer-HideEditor":"")},this.previewContent&&m("div",{className:"Flarum-Blog-Composer-preview"},!e&&app.translator.trans("v17development-flarum-blog.forum.composer.nothing_to_preview"),m(xt,{content:this.composer.fields.content()})),Mt.a.component({submitLabel:this.attrs.submitLabel||app.translator.trans("core.forum.composer_edit.submit_button"),placeholder:this.attrs.placeholder,disabled:a,composer:this.composer,preview:this.jumpToPreview&&this.jumpToPreview.bind(this),onchange:this.composer.fields.content,onsubmit:this.onsubmit.bind(this),value:this.composer.fields.content()})))},a.onsubmit=function(){this.attrs.onsubmit&&this.attrs.onsubmit()},e}(At.a),_t=function(t){function e(){return t.apply(this,arguments)||this}Object(o.a)(e,t);var a=e.prototype;return a.oninit=function(e){var a=this;if(t.prototype.oninit.call(this,e),app.setTitle(app.translator.trans("v17development-flarum-blog.forum.blog")),app.forum.attribute("canWriteBlogPosts")){if(app.history.push("blogComposer"),this.languages=app.store.all("discussion-languages"),this.bodyClass="BlogItemPage",this.articleLanguage=m.route.param("lang")?m.route.param("lang"):app.translator.locale,this.article=app.store.createRecord("discussions"),this.blogMeta=null,this.tags=[],m.route.param().tags){var o=Array.isArray(m.route.param().tags)?m.route.param().tags:m.route.param().tags.split(",");m.route.param().tags.length>0&&o.forEach((function(t){var e=app.store.getById("tags",t);e&&a.tags.push(e)}))}this.isSaving=!1}else m.route.set(app.route("blog"))},a.openTagsModal=function(t){var e=this;void 0===t&&(t=null),t&&t.preventDefault(),this.isSaving||app.modal.show(h.a,{selectedTags:this.tags,onsubmit:function(t){e.tags=t}})},a.openNameArticleModal=function(t){var e=this;void 0===t&&(t=null),t&&t.preventDefault(),this.isSaving||app.modal.show(R,{article:this.article,onChange:function(t){e.article.pushData({attributes:{title:t}})}})},a.openBlogSettings=function(t){var e=this;t.preventDefault(),this.isSaving||app.modal.show(L,{meta:this.blogMeta,onsubmit:function(t){return e.blogMeta=t}})},a.view=function(){var t=this,e=this.blogMeta&&this.blogMeta.featuredImage()?"url("+this.blogMeta.featuredImage()+")":null;return m("div",{className:"FlarumBlogItem"},m("div",{className:"container"},m("div",{className:"FlarumBlog-ToolButtons"},m(J.a,{href:app.route("blog"),className:"Button",loading:this.isSaving,icon:"fas fa-angle-left"},m("i",{class:"icon fas fa-angle-left Button-icon"}),m("span",{class:"Button-label"},app.translator.trans("v17development-flarum-blog.forum.return_to_overview")))),m("div",{className:"FlarumBlog-Article"},m("div",{className:"FlarumBlog-Article-Container"},m("div",{className:"FlarumBlog-Article-Content"},m("div",{className:"FlarumBlog-Article-Image FlarumBlog-default-image",style:{backgroundImage:e,cursor:"pointer"},onclick:function(e){return t.openBlogSettings(e)}}),m("div",{className:"FlarumBlog-Article-Content-Edit-Button"},m("div",{className:0===this.languages.length?"FlarumBlog-Article-Content-Edit-Dropdown":"FlarumBlog-Article-Content-EditButtons"},null!==this.languages&&this.languages.length>=1&&m(rt,{selected:this.articleLanguage,onclick:function(e){return t.articleLanguage=e}}),m(w.a,{className:"Button",onclick:function(e){return t.openBlogSettings(e)},icon:"fas fa-pencil-alt",loading:this.isSaving},"Update blog settings"))),m("div",{className:"FlarumBlog-Article-Categories"},this.tags.map((function(e){return m("a",{href:"#",onclick:function(e){return t.openTagsModal(e)}},e.name())})),m("a",{href:"#",onclick:function(e){return t.openTagsModal(e)}},0===this.tags.length?app.translator.trans("v17development-flarum-blog.forum.composer.select_category"):app.translator.trans("v17development-flarum-blog.forum.composer.edit_categories")," ",m("i",{className:"fas fa-edit"}))),m("div",{className:"FlarumBlog-Article-Post"},m("h3",{onclick:function(){return t.openNameArticleModal()},style:{cursor:"pointer"}},this.article&&this.article.title()&&""!==this.article.title()?this.article.title():app.translator.trans("v17development-flarum-blog.forum.composer.no_title"),m("a",{href:"#",onclick:function(t){return t.preventDefault()}},m("i",{className:"fas fa-edit"}))),m("div",{className:"Post-body"},m(Ct,{composer:app.composer,originalContent:"",submitLabel:app.translator.trans("v17development-flarum-blog.forum.composer.post_article"),placeholder:app.translator.trans("v17development-flarum-blog.forum.composer.enter_message_here"),onsubmit:function(){return t.create()},disabled:this.isSaving})))),m("div",{className:"FlarumBlog-Article-Comments"},m("h4",null,app.translator.trans("v17development-flarum-blog.forum.comment_section.comments")," ","(0)"),m("div",{className:"Post-body"},m("blockquote",{class:"uncited"},m("div",null,m("span",{className:"fas fa-ban",style:{marginRight:"5px"}})," ",app.translator.trans("v17development-flarum-blog.forum.composer.comment_section")))))),m("div",{className:"FlarumBlog-Article-Sidebar"},m(U,{user:app.session.user})))))},a.create=function(){var t=this,e=app.forum.attribute("blogTags")||[];if(0!==this.tags.length)if(this.article.title()&&""!==this.article.title())if(0!==this.tags.filter((function(t){return e.indexOf(t.id())>=0})).length){if(null!==this.blogMeta&&this.blogMeta.featuredImage()&&this.blogMeta.summary()||confirm(app.translator.trans("v17development-flarum-blog.forum.composer.post_without_blog_info"))){var a={tags:this.tags};this.languages.length>0&&(a.language=app.store.getBy("discussion-languages","code",this.articleLanguage));var o={title:this.article.title(),content:app.composer.fields.content(),relationships:a,blogMeta:null!==this.blogMeta?{featuredImage:this.blogMeta.featuredImage(),summary:this.blogMeta.summary(),isSized:this.blogMeta.isSized()}:null};this.isSaving=!0,this.article.save(o).then((function(t){setTimeout((function(){m.route.set(app.route("blogArticle",{id:""+t.slug()}))}),500)})).catch((function(){t.isSaving=!1,m.redraw()}))}}else alert(app.translator.trans("v17development-flarum-blog.forum.composer.no_blog_tags_selected"));else this.openNameArticleModal();else this.openTagsModal()},e}(r.a);function Pt(){return(Pt=Object.assign||function(t){for(var e=1;e{"use strict";var t={100:(t,e,a)=>{function o(t,e){t.prototype=Object.create(e.prototype),t.prototype.constructor=t,t.__proto__=e}a.r(e);const s=flarum.core.compat["components/Page"];var r=a.n(s);const i=flarum.core.compat["components/CommentPost"];var n=a.n(i);const l=flarum.core.compat["components/PostStream"];var u=a.n(l);const c=flarum.core.compat["states/PostStreamState"];var p=a.n(c);const d=flarum.core.compat.Component;var g=a.n(d);const h=flarum.core.compat["tags/components/TagDiscussionModal"];var f=a.n(h);const v=flarum.core.compat["utils/DiscussionControls"];var b=a.n(v);const y=flarum.core.compat["components/Alert"];var N=a.n(y);const B=flarum.core.compat["components/Button"];var w=a.n(B);const A=flarum.core.compat["components/Dropdown"];var F=a.n(A);const M=flarum.core.compat["components/Modal"];var C=a.n(M);const _=flarum.core.compat["utils/ItemList"];var P=a.n(_);const k=flarum.core.compat["utils/Stream"];var S=a.n(k);const I=flarum.core.compat["components/Switch"];var L=a.n(I),x=function(t){function e(){return t.apply(this,arguments)||this}o(e,t);var a=e.prototype;return a.oninit=function(e){t.prototype.oninit.call(this,e),this.attrs.article?this.meta=this.attrs.article&&this.attrs.article.blogMeta()?this.attrs.article.blogMeta():app.store.createRecord("blogMeta"):this.meta=this.attrs.meta?this.attrs.meta:app.store.createRecord("blogMeta"),this.isNew=!this.meta.exists,this.summary=S()(this.meta.summary()||""),this.featuredImage=S()(this.meta.featuredImage()||""),this.isFeatured=S()(this.meta.isFeatured()||!1),this.isSized=S()(this.meta.isSized()||!1),this.isPendingReview=S()(this.meta.isPendingReview()||!1)},a.className=function(){return"Modal--small Support-Modal"},a.title=function(){return"Blog post settings"},a.content=function(){return m("div",{className:"Modal-body"},m("div",{className:"Form"},this.fields().toArray()))},a.fields=function(){var t=this,e=new(P());return e.add("summary",m("div",{className:"Form-group"},m("label",null,"Article summary:"),m("textarea",{className:"FormControl",style:{maxWidth:"100%",minWidth:"100%",width:"100%",minHeight:"120px"},bidi:this.summary,placeholder:"Please enter a summary"}),m("small",null,"This summary will be visible on the blog overview page and will be used for SEO purposes.")),30),e.add("image",m("div",{className:"Form-group"},m("label",null,"Article image URL:"),m("input",{type:"text",className:"FormControl",bidi:this.featuredImage,placeholder:"https://"}),m("small",null,"Best image resolution for social media: 1200x630"),""!=this.featuredImage()&&m("img",{src:this.featuredImage(),alt:"Article image",title:"Blog post image",width:"100%",style:{marginTop:"15px"}})),30),e.add("sized",m("div",{className:"Form-group"},L().component({state:1==this.isSized(),onchange:function(e){t.isSized(e)}},[m("b",null,"Highlighted post"),m("div",{className:"helpText",style:{fontWeight:500}},"Give this post a big image on the blog overview page.")])),-10),e.add("submit",m("div",{className:"Form-group"},w().component({type:"submit",className:"Button Button--primary SupportModal-save",loading:this.loading},"Update")),-10),e},a.submitData=function(){return{summary:this.summary(),featuredImage:this.featuredImage(),isFeatured:this.isFeatured(),isSized:this.isSized(),isPendingReview:this.isPendingReview(),relationships:this.isNew&&!this.attrs.isComposer?{discussion:this.attrs.article}:null}},a.onsubmit=function(t){var e=this;if(t.preventDefault(),this.attrs.onsubmit)return this.meta.pushData({attributes:this.submitData()}),this.attrs.onsubmit(this.meta),void this.hide();this.loading=!0,this.meta.save(this.submitData()).then((function(){e.attrs.article&&e.attrs.article.pushData({relationships:{blogMeta:e.meta}}),e.hide(),m.redraw()}),(function(t){e.loading=!1,e.handleErrors(t)}))},e}(C());const T=flarum.core.compat["components/EditPostComposer"];var D=a.n(T);const R=flarum.core.compat["utils/extractText"];var E=a.n(R),O=function(t){function e(){return t.apply(this,arguments)||this}o(e,t);var a=e.prototype;return a.oninit=function(e){t.prototype.oninit.call(this,e),this.article=this.attrs.article,this.name=S()(this.article.title()||""),this.redirect=this.attrs.redirect},a.className=function(){return"Modal--small Support-Modal"},a.title=function(){return app.translator.trans("v17development-flarum-blog.forum.tools.rename_article")},a.content=function(){return m("div",{className:"Modal-body"},m("div",{className:"Form"},this.fields().toArray()))},a.fields=function(){var t=new(P());return t.add("name",m("div",{className:"Form-group"},m("label",null,app.translator.trans("v17development-flarum-blog.forum.article.title"),":"),m("input",{className:"FormControl",placeholder:app.translator.trans("v17development-flarum-blog.forum.article.title"),bidi:this.name})),50),t.add("submit",m("div",{className:"Form-group"},w().component({type:"submit",className:"Button Button--primary SupportModal-save",loading:this.loading},"Update")),-10),t},a.submitData=function(){return{title:this.name()}},a.onsubmit=function(t){var e=this;if(t.preventDefault(),this.loading=!0,this.attrs.onChange)return this.attrs.onChange(this.name()),void this.hide();this.article.save({title:this.name()}).then((function(){if(e.hide(),e.redirect){var t="/blog/"+e.article.slug();m.route.set(t,!0),window.history.replaceState(null,document.title,t)}}),(function(t){e.loading=!1,e.handleErrors(t)}))},e}(C()),z=function(t){function e(){return t.apply(this,arguments)||this}o(e,t);var a=e.prototype;return a.init=function(){this.loadedPost=!1},a.view=function(){var t=this,e=this.attrs.article,a=[],o=flarum.extensions["fof-discussion-language"]&&void 0!==flarum.extensions["fof-discussion-language"].components?flarum.extensions["fof-discussion-language"].components.LanguageDiscussionModal:null;e.canRename()&&a.push(w().component({className:"Button",onclick:function(){return app.modal.show(O,{article:e})},icon:"fas fa-pencil-alt"},app.translator.trans("v17development-flarum-blog.forum.tools.rename_article")));var s=e.firstPost()?e.firstPost():app.store.getById("posts",e.firstPostId());return a.push(w().component({className:"Button",disabled:!s||!s.canEdit(),onclick:function(){app.composer.load(D(),{post:s}),app.composer.show()},icon:"fas fa-edit"},app.translator.trans("v17development-flarum-blog.forum.tools.edit_article"))),a.push(w().component({className:"Button",onclick:function(){return app.modal.show(x,{article:e})},icon:"fas fa-cogs"},app.translator.trans("v17development-flarum-blog.forum.tools.article_settings"))),e.canTag()&&a.push(w().component({className:"Button",onclick:function(){return app.modal.show(f(),{discussion:e})},icon:"fas fa-tag"},app.translator.trans("v17development-flarum-blog.forum.tools.update_category"))),e.blogMeta()&&e.blogMeta().isPendingReview()&&(a.push(m("li",{className:"Dropdown-separator"})),a.push(w().component({className:"Button",disabled:!app.forum.attribute("canApproveBlogPosts"),onclick:function(){e.blogMeta().save({isPendingReview:!1}).then((function(){app.alerts.show(N(),{type:"success"},app.translator.trans("v17development-flarum-blog.forum.review_article.approve_article_approved"))}),(function(e){t.loading=!1,t.handleErrors(e)}))},icon:"fas fa-thumbs-up"},app.translator.trans("v17development-flarum-blog.forum.review_article.approve_article")))),e.canChangeLanguage&&e.canChangeLanguage()&&o&&a.push(w().component({icon:"fas fa-globe",onclick:function(){return app.modal.show(o,{discussion:e})}},app.translator.trans("fof-discussion-language.forum.discussion_controls.change_language_button"))),a.push(m("li",{className:"Dropdown-separator"})),e.canLock()&&a.push(w().component({className:"Button",onclick:b().lockAction.bind(e),icon:"fas "+(e.isLocked()?"fa-comments":"fa-comment-slash")},e.isLocked()?app.translator.trans("v17development-flarum-blog.forum.tools.enable_comments"):app.translator.trans("v17development-flarum-blog.forum.tools.disable_comments"))),e.canHide()&&(e.isHidden()?(a.push(w().component({className:"Button",onclick:b().restoreAction.bind(e),icon:"fas fa-eye"},app.translator.trans("v17development-flarum-blog.forum.tools.recover_article"))),e.canDelete()&&a.push(w().component({className:"Button",onclick:function(){if(confirm(E()(app.translator.trans("core.forum.discussion_controls.delete_confirmation"))))return"blogArticle"===app.history.getCurrent().name&&(app.previous?app.history.back():m.route.set(app.route("blog"))),e.delete().then((function(){m.redraw()}))},icon:"far fa-trash-alt"},app.translator.trans("v17development-flarum-blog.forum.tools.delete_forever")))):a.push(w().component({className:"Button",onclick:b().hideAction.bind(e),icon:"fas fa-eye-slash"},app.translator.trans("v17development-flarum-blog.forum.tools.hide_article")))),m("div",{className:"FlarumBlog-Article-Content-Edit-Button"},m("div",{className:"FlarumBlog-Article-Content-Edit-Dropdown"},F().component({icon:"fas fa-cog",label:"Manage",buttonClassName:"Button",menuClassName:"Dropdown-menu--right",onshow:function(){!s||s.canEdit()||t.loadedPost||(t.loadedPost=!0,app.store.find("posts",e.firstPost()?e.firstPost().id():e.firstPostId()).then((function(){})).catch((function(){})).then((function(){return m.redraw()})))}},a)))},e}(g());const G=flarum.core.compat["helpers/listItems"];var H=a.n(G);const j=flarum.core.compat["helpers/avatar"];var W=a.n(j),U=function(t){function e(){return t.apply(this,arguments)||this}o(e,t);var a=e.prototype;return a.view=function(){var t=this.attrs.loading?null:this.attrs.article?this.attrs.article.user():this.attrs.user;return m("div",{className:"FlarumBlog-Article-Author"},m("div",{className:"FlarumBlog-Article-Author-background "+(this.attrs.loading?"FlarumBlog-Author-Ghost":""),style:{backgroundColor:t&&t.color()?t.color():null}}),m("div",{className:"FlarumBlog-Article-Author-Avatar"},t?W()(t):m("span",{className:"Avatar FlarumBlog-Author-Ghost"})),t&&m("div",{className:"FlarumBlog-Article-Author-Info"},m("span",{className:"FlarumBlog-Article-Author-Name"},t.displayName()),m("p",{className:"FlarumBlog-Article-Author-Bio"},t.bio&&t.bio()),m("ul",{className:"FlarumBlog-Article-Author-Extended"},H()(this.items().toArray()))),this.attrs.loading&&m("div",null,m("span",{className:"FlarumBlog-Article-Author-Name FlarumBlog-Author-Ghost"}," "),m("p",{className:"FlarumBlog-Article-Author-Bio FlarumBlog-Author-Ghost"}," "),m("p",{className:"FlarumBlog-Article-Author-Bio FlarumBlog-Author-Ghost"}," "),m("p",{className:"FlarumBlog-Article-Author-Bio FlarumBlog-Author-Ghost"}," ")))},a.items=function(){return new(P())},e}(g());const q=flarum.core.compat["components/Link"];var J=a.n(q),K=function(t){function e(){return t.apply(this,arguments)||this}o(e,t);var a=e.prototype;return a.oninit=function(e){t.prototype.oninit.call(this,e),this.blogCategories=app.forum.attribute("blogTags")},a.view=function(){var t=this;return m("div",{className:"BlogCategories BlogSideWidget"},m("h3",null,app.translator.trans("v17development-flarum-blog.forum.categories")),this.blogCategories&&this.blogCategories.map((function(e){var a=app.store.getById("tags",e);if(!a)return null;var o=[];return o.push(t.categoryItem(a)),app.store.all("tags").forEach((function(e){e.isChild()&&e.parent().id()===a.id()&&o.push(t.categoryItem(e))})),o})))},a.categoryItem=function(t){return m(J(),{href:app.route("blogCategory",{slug:t.slug()}),className:"BlogSideWidget-item BlogSideWidget-item-"+t.id()+" "+(t.isChild()&&1==app.forum.attribute("blogCategoryHierarchy")?"BlogSideWidget-item-child":"")},m("span",{className:""===t.icon()?"BlogSideWidget-item-colored":"",style:{backgroundColor:""===t.icon()?t.color():null}},m("i",{className:t.icon()})),t.name())},e}(g());const Q=flarum.core.compat["components/IndexPage"];var V=a.n(Q);const X=flarum.core.compat["components/SelectDropdown"];var Y=a.n(X),Z=function(t){function e(){return t.apply(this,arguments)||this}o(e,t);var a=e.prototype;return a.view=function(){return m("div",{className:"BlogForumNav BlogSideWidget"},m("h3",null,app.translator.trans("v17development-flarum-blog.forum.forum_nav")),m("nav",{className:"IndexPage-nav sideNav"},m(Y(),{buttonClassName:"Button",className:"App-titleControl"},this.navItems().toArray())))},a.navItems=function(){var t=V().prototype.navItems();return"phone"!==app.screen()&&t.remove("blog"),t},e}(g()),tt=function(t){function e(){return t.apply(this,arguments)||this}o(e,t);var a=e.prototype;return a.view=function(){return m("div",{className:"FlarumBlog-Article-Sidebar"},m("ul",null,H()(this.items().toArray())))},a.items=function(){var t=new(P());return t.add("author",U.component(this.attrs),0),t.add("categories",K.component(this.attrs),0),t.add("nav",Z.component(this.attrs),0),t},e}(g());const et=flarum.core.compat["helpers/humanTime"];var at=a.n(et);function ot(t){$(t).tooltip()}var st=function(t){function e(){return t.apply(this,arguments)||this}o(e,t);var a=e.prototype;return a.oninit=function(e){t.prototype.oninit.call(this,e),this.languages=app.store.all("discussion-languages"),this.options=this.languages.reduce((function(t,e){return t[e.code()]=m("span",null,m("i",{className:"fas fa-globe"})," ",e.name()),t}),this.attrs.extra||{})},a.view=function(){var t=this.attrs,e=t.language,a=t.uppercase,o=e.name()||"";return m("span",null,m("i",{className:"fas fa-globe"})," ",a?o.toUpperCase():o)},e}(g()),rt=function(t){function e(){return t.apply(this,arguments)||this}o(e,t);var a=e.prototype;return a.oninit=function(e){t.prototype.oninit.call(this,e),this.languages=app.store.all("discussion-languages"),this.options=this.languages.reduce((function(t,e){return t[e.code()]=m(st,{language:e}),t}),this.attrs.extra||{})},a.view=function(){var t=this,e=this.attrs.selected,a=Object.keys(this.options).map((function(a){var o=a===(e||"any");return w().component({active:o,icon:!o||"fas fa-check",onclick:function(){return t.attrs.onclick(a)}},t.options[a])}));return F().component({buttonClassName:"Button",label:this.options[e]||this.options[this.attrs.default],menuClassName:"Dropdown-menu--right"},a)},e}(g()),it=function(t){function e(){return t.apply(this,arguments)||this}o(e,t);var a=e.prototype;return a.oninit=function(e){t.prototype.oninit.call(this,e),app.setTitle(app.translator.trans("v17development-flarum-blog.forum.blog")),this.bodyClass="BlogOverviewPage",this.isLoading=!0,this.featuredPosts=[],this.posts=[],this.hasMore=null,this.isLoadingMore=!1,this.languages=app.store.all("discussion-languages"),this.currentSelectedLanguage=m.route.param("lang")?m.route.param("lang"):app.translator.locale,app.history.push("blog"),this.loadBlogOverview()},a.loadBlogOverview=function(){var t=app.preloadedApiDocument();t?setTimeout(this.show.bind(this,t),0):this.reloadData(),m.redraw()},a.reloadData=function(){var t="is:blog"+(m.route.param("slug")?" tag:"+m.route.param("slug"):"");null!==this.languages&&this.languages.length>=1&&(t+=" language:"+this.currentSelectedLanguage),app.store.find("discussions",{filter:{q:t},sort:"-createdAt"}).then(this.show.bind(this)).catch((function(){m.redraw()}))},a.show=function(t){if(0===t.length)return this.isLoading=!1,void m.redraw();this.hasMore=t.payload.links&&t.payload.links.next?t.payload.links.next:null,this.featuredPosts=t.slice(0,3),this.posts=t.length>=4?t.slice(3,t.length):[],this.isLoading=!1,m.redraw()},a.loadMore=function(){var t=this;this.isLoadingMore=!0,app.store.find(this.hasMore.replace(app.forum.attribute("apiUrl"),"")).then((function(e){e.map((function(e){return t.posts.push(e)})),t.hasMore=e.payload.links&&e.payload.links.next?e.payload.links.next:null})).catch((function(){})).then((function(){t.isLoadingMore=!1,m.redraw()}))},a.title=function(){if(!m.route.param("slug"))return m("h2",null,app.translator.trans("v17development-flarum-blog.forum.recent_posts"));var t=app.store.all("tags").filter((function(t){return t.slug()===m.route.param("slug")}));return m("h2",null,t&&t[0]&&t[0].name(),m("small",null," ","-"," ",m(J(),{href:app.route("blog")},app.translator.trans("v17development-flarum-blog.forum.return_to_overview"))))},a.view=function(){var t=this,e=app.forum.attribute("blogDefaultImage")?"url("+app.forum.attribute("baseUrl")+"/assets/"+app.forum.attribute("blogDefaultImage")+")":null;return m("div",{className:"FlarumBlogOverview"},m("div",{className:"container"},m("div",{className:"BlogFeatured"},m("div",{className:"BlogOverviewButtons"},app.forum.attribute("canWriteBlogPosts")&&m(w(),{className:"Button",onclick:function(){return t.newArticle()},icon:"fas fa-pencil-alt"},app.translator.trans("v17development-flarum-blog.forum.compose.write_article")),null!==this.languages&&this.languages.length>=1&&m(rt,{selected:this.currentSelectedLanguage,onclick:function(e){t.currentSelectedLanguage=e,m.route.set(document.location.pathname,{lang:e}),t.reloadData()}})),this.title(),m("div",{style:{clear:"both"}}),m("div",{className:"BlogFeatured-list"},this.isLoading&&[0,1,2].map((function(){return m("div",{className:"BlogFeatured-list-item BlogFeatured-list-item-ghost"},m("div",{className:"BlogFeatured-list-item-details"},m("h4",null," "),m("div",{className:"data"},m("span",null,m("i",{className:"far fa-wave"})))))})),!this.isLoading&&this.featuredPosts.length>=0&&this.featuredPosts.map((function(a){var o=a.blogMeta()&&a.blogMeta().featuredImage()?"url("+a.blogMeta().featuredImage()+")":e,s=a.tags()?a.tags().filter((function(t){return t.isChild()})):[];return m(J(),{href:app.route("blogArticle",{id:""+a.slug()}),className:"BlogFeatured-list-item FlarumBlog-default-image",style:{backgroundImage:o}},m("div",{className:"BlogFeatured-list-item-top"},s[0]&&m("span",null,s[0].name()),a.isSticky()&&m("span",null,m("i",{className:"fas fa-thumbtack"})),(a.blogMeta()&&1==a.blogMeta().isPendingReview()||a.isHidden())&&m("span",null,m("i",{className:"fas fa-eye-slash"})),a.blogMeta()&&1==a.blogMeta().isPendingReview()&&m("span",{title:app.translator.trans("v17development-flarum-blog.forum.review_article.pending_review"),config:ot.bind(t),"data-placement":"bottom"},m("i",{className:"far fa-clock"})," ",app.translator.trans("v17development-flarum-blog.forum.review_article.pending_review_title"))),m("div",{className:"BlogFeatured-list-item-details"},m("h4",null,a.title()),m("div",{className:"data"},m("span",null,m("i",{className:"far fa-clock"})," ",at()(a.createdAt())),m("span",null,m("i",{className:"far fa-user"})," ",a.user()?a.user().displayName():"[Deleted]"),m("span",null,m("i",{className:"far fa-comment"})," ",a.commentCount()-1))))})))),m("div",{className:"BlogScrubber"},m("div",{className:"BlogList"},this.isLoading&&[!1,!1,!0,!1].map((function(t){return m("div",{className:"BlogList-item BlogList-item-"+(!0===t?"sized":"default")+" BlogList-item-ghost"},m("div",{className:"BlogList-item-photo FlarumBlog-default-image"}),m("div",{className:"BlogList-item-content"},m("h4",null," "),m("p",null," "),m("div",{className:"data"},m("span",null,m("i",{className:"far fa-wave"})))))})),!this.isLoading&&this.posts.length>=1&&this.posts.map((function(a){var o=a.blogMeta()&&a.blogMeta().featuredImage()?"url("+a.blogMeta().featuredImage()+")":e,s=a.blogMeta()&&a.blogMeta().isSized(),r=a.blogMeta()&&a.blogMeta().summary()?a.blogMeta().summary():"";return m(J(),{href:app.route("blogArticle",{id:""+a.slug()}),className:"BlogList-item BlogList-item-"+(s?"sized":"default")},m("div",{className:"BlogList-item-photo FlarumBlog-default-image",style:{backgroundImage:o}}),m("div",{className:"BlogList-item-content"},m("h4",null,a.title(),(a.blogMeta()&&1==a.blogMeta().isPendingReview()||a.isHidden())&&m("i",{className:"fas fa-eye-slash"}),a.blogMeta()&&1==a.blogMeta().isPendingReview()&&m("i",{className:"far fa-clock",title:app.translator.trans("v17development-flarum-blog.forum.review_article.pending_review"),config:ot.bind(t)})),m("p",null,r),m("div",{className:"data"},m("span",null,m("i",{className:"far fa-clock"})," ",at()(a.createdAt())),m("span",null,m("i",{className:"far fa-user"})," ",a.user()?a.user().displayName():"[Deleted]"),m("span",null,m("i",{className:"far fa-comment"})," ",a.commentCount()-1))))})),!this.isLoading&&this.featuredPosts.length>0&&null===this.hasMore&&m("p",{className:"FlarumBlog-reached-end"},app.translator.trans("v17development-flarum-blog.forum.no_more_posts")),!this.isLoading&&0===this.featuredPosts.length&&0===this.posts.length&&m("p",{className:"FlarumBlog-reached-end"},app.translator.trans("v17development-flarum-blog.forum.category_empty")),!this.isLoading&&null!==this.hasMore&&m("div",{className:"FlarumBlog-reached-load-more"},m(w(),{className:"Button",onclick:function(){return t.loadMore()},icon:"fas fa-chevron-down",loading:this.isLoadingMore},app.translator.trans("core.forum.discussion_list.load_more_button")))),m("div",{className:"Sidebar"},m(K,null),m(Z,null)))))},a.newArticle=function(){var t=[],e=app.forum.attribute("blogTags");app.store.all("tags").forEach((function(a){!a.isChild()&&e.indexOf(a.id())>=0&&t.push(a)}));var a=app.store.getBy("tags","slug",m.route.param("slug"));a&&t.push(a),m.route.set(app.route("blogComposer",{tags:t.map((function(t){return t.id()})).join(),lang:this.languages.length>0?this.currentSelectedLanguage:void 0}))},e}(r()),nt=function(t){function e(){return t.apply(this,arguments)||this}o(e,t);var a=e.prototype;return a.oninit=function(e){t.prototype.oninit.call(this,e),app.setTitle(app.translator.trans("v17development-flarum-blog.forum.blog")),app.history.push("blogArticle"),this.bodyClass="BlogItemPage",this.near=m.route.param("near")||0,this.loading=!0,this.found=!1,this.article=null,this.loadBlogItem()},a.loadBlogItem=function(){var t=app.preloadedApiDocument();t?setTimeout(this.show.bind(this,t),0):app.store.find("discussions",m.route.param("id").split("-")[0]).then(this.show.bind(this)).catch((function(){m.redraw()})),m.redraw()},a.show=function(t){this.article=t,app.setTitle(t.title()+" - "+app.translator.trans("v17development-flarum-blog.forum.blog")),this.loading=!1;var e=[];if(t.payload&&t.payload.included){var a=t.id();e=t.payload.included.filter((function(t){return"posts"===t.type&&t.relationships&&t.relationships.discussion&&t.relationships.discussion.data.id===a})).map((function(t){return app.store.getById("posts",t.id)})).sort((function(t,e){return t.id()-e.id()})).slice(0,20)}this.stream=new(p())(t,e),this.near&&this.stream.goToNumber(this.near,!0),m.redraw()},a.view=function(){var t=app.forum.attribute("blogDefaultImage")?"url("+app.forum.attribute("baseUrl")+"/assets/"+app.forum.attribute("blogDefaultImage")+")":null,e=this.article&&this.article.blogMeta()&&this.article.blogMeta().featuredImage()?"url("+this.article.blogMeta().featuredImage()+")":t,a=null;return!this.loading&&this.article&&(a=this.article.firstPost()?this.article.firstPost():app.store.getById("posts",this.article.firstPostId())),m("div",{className:"FlarumBlogItem"},m("div",{className:"container"},m("div",{className:"FlarumBlog-ToolButtons"},m(J(),{href:app.route("blog"),className:"Button",onclick:function(t){app.previous.matches(it)&&(t.preventDefault(),history.back())}},m("i",{class:"icon fas fa-angle-left Button-icon"}),m("span",{class:"Button-label"},app.translator.trans("v17development-flarum-blog.forum.return_to_overview")))),m("div",{className:"FlarumBlog-Article"},m("div",{className:"FlarumBlog-Article-Container"},m("div",{className:"FlarumBlog-Article-Content"},m("div",{className:"FlarumBlog-Article-Image FlarumBlog-default-image "+(this.loading?"FlarumBlog-Article-GhostImage":""),style:{backgroundImage:e,opacity:this.article&&this.article.isHidden()?.4:null}}),this.article&&app.session.user&&(app.session.user.canEdit()||this.article.canRename()||this.article.posts()&&this.article.posts()[0].canEdit())&&m(z,{article:this.article}),m("div",{className:"FlarumBlog-Article-Categories"},!this.loading&&this.article&&this.article.tags()&&this.article.tags().map((function(t){return m(J(),{href:app.route("blogCategory",{slug:t.slug()})},t.name())})),this.loading&&[0,1].map((function(){return m("span",{className:"FlarumBlog-Article-GhostCategory"},"Category")}))),m("div",{className:"FlarumBlog-Article-Post"},m("h3",{className:this.loading?"FlarumBlog-Article-GhostTitle":null},this.article?this.article.title():"Ghost title",this.article&&this.article.isHidden()&&"("+app.translator.trans("v17development-flarum-blog.forum.hidden")+")"),this.loading&&[0,1,2].map((function(){return m("div",null,m("p",{className:"FlarumBlog-Article-GhostParagraph"}," "),m("p",{className:"FlarumBlog-Article-GhostParagraph"}," "),m("p",{className:"FlarumBlog-Article-GhostParagraph"}," "),m("p",null," "))})),!this.loading&&this.article.blogMeta()&&1==this.article.blogMeta().isPendingReview()&&m("div",{className:"Post"},m("blockquote",{class:"uncited",style:{fontSize:"16px"}},m("div",null,m("span",{className:"far fa-clock",style:{marginRight:"5px"}})," ",app.translator.trans("v17development-flarum-blog.forum.review_article.pending_review")))),!this.loading&&a&&m(n(),{post:a}))),m("div",{className:"FlarumBlog-Article-Comments"},m("h4",null,app.translator.trans("v17development-flarum-blog.forum.comment_section.comments")," ","(",this.article?this.article.commentCount()-1:0,")"),!this.loading&&this.article.isLocked&&this.article.isLocked()&&m("div",{className:"Post-body"},m("blockquote",{class:"uncited"},m("div",null,m("span",{className:"far fa-lock",style:{marginRight:"5px"}})," ",app.translator.trans("v17development-flarum-blog.forum.comment_section.locked")))),!this.loading&&this.article&&u().component({discussion:this.article,stream:this.stream,onPositionChange:this.positionChanged.bind(this)}))),m(tt,{article:this.article,loading:this.loading}))))},a.positionChanged=function(t,e){var a=this.article;app.session.user&&e>(a.lastReadPostNumber()||0)&&(a.save({lastReadPostNumber:e}),m.redraw())},e}(r());const lt=flarum.core.compat.Model;var mt=a.n(lt);const ut=flarum.core.compat["models/Discussion"];var ct=a.n(ut);const pt=flarum.core.compat["components/DiscussionPage"];var dt=a.n(pt);const gt=flarum.core.compat.extend;function ht(){(0,gt.extend)(V().prototype,"oncreate",(function(){var t=this.currentTag(),e="both"===app.forum.attribute("blogRedirectsEnabled")||"tags_only"===app.forum.attribute("blogRedirectsEnabled");if(t&&e){var a=app.forum.attribute("blogTags");(a.indexOf(t.id())>=0||t.parent()&&a.indexOf(t.parent().id())>=0)&&m.route.set(app.route("blog"))}})),(0,gt.override)(dt().prototype,"show",(function(t,e){if(("both"===app.forum.attribute("blogRedirectsEnabled")||"discussions_only"===app.forum.attribute("blogRedirectsEnabled"))&&e&&e&&e.tags().length>0){var a=app.forum.attribute("blogTags");if(e.tags().filter((function(t){return a.indexOf(t.id())>=0||t.parent()&&a.indexOf(t.parent().id())>=0})).length>0){var o=app.route("blogArticle",{id:e.slug()});return m.route.set(o,null,!0),null}}return t(e)}))}const ft=flarum.core.compat["utils/mixin"];var vt=function(t){function e(){return t.apply(this,arguments)||this}return o(e,t),e}(a.n(ft)()(mt(),{discussion:mt().hasOne("discussion"),featuredImage:mt().attribute("featuredImage"),summary:mt().attribute("summary"),isFeatured:mt().attribute("isFeatured"),isSized:mt().attribute("isSized"),isPendingReview:mt().attribute("isPendingReview")}));const bt=flarum.core.compat["tags/components/TagsPage"];var yt=a.n(bt);function Nt(){(0,gt.extend)(yt().prototype,"view",(function(t){var e=this;if(0==app.forum.attribute("blogHideTags"))return t;var a=app.forum.attribute("blogTags")||[],o=t.children[1].children[1].children[0].children;return t.children[1].children[1].children[0].children=o.map((function(t,o){return a.indexOf(e.tags[o].id())>=0?null:t})),t})),(0,gt.extend)(V().prototype,"navItems",(function(t){return 0==app.forum.attribute("blogHideTags")||(app.forum.attribute("blogTags")||[]).forEach((function(e){t.remove("tag"+e)})),t}))}function Bt(){var t=app.route.discussion;app.route.discussion=function(e,a){var o=!1;if(("both"===app.forum.attribute("blogRedirectsEnabled")||"discussions_only"===app.forum.attribute("blogRedirectsEnabled"))&&e.tags().length>0){var s=app.forum.attribute("blogTags");e.tags().filter((function(t){return s.indexOf(t.id())>=0||t.parent()&&s.indexOf(t.parent().id())>=0})).length>0&&(o=!0)}return o?e.lastReadPostNumber()>1?app.route("blogArticle.near",{id:e.slug(),near:e.lastReadPostNumber()}):app.route("blogArticle",{id:e.slug()}):t(e,a)}}const wt=flarum.core.compat["components/ComposerBody"];var At=a.n(wt);const Ft=flarum.core.compat["components/TextEditor"];var Mt=a.n(Ft),Ct=function(t){function e(){return t.apply(this,arguments)||this}o(e,t);var a=e.prototype;return a.view=function(){return m("div",null)},a.oncreate=function(e){t.prototype.oncreate.call(this,e),s9e.TextFormatter.preview(e.attrs.content||"",e.dom)},e}(g()),_t=function(t){function e(){return t.apply(this,arguments)||this}o(e,t);var a=e.prototype;return a.oninit=function(e){t.prototype.oninit.call(this,e),this.previewContent=!1},a.view=function(){var t=this,e=this.composer.fields.content()&&""!==this.composer.fields.content(),a=this.loading||this.attrs.disabled;return m("div",{className:"Flarum-Blog-Composer "+(a?"Flarum-Blog-Composer-Loading":"")},m("div",{className:"Flarum-Blog-Composer-tabs"},m(w(),{className:!this.previewContent&&"AricleComposerButtonSelected",onclick:function(){return t.previewContent=!1}},app.translator.trans("v17development-flarum-blog.forum.composer.write")),m(w(),{className:this.previewContent&&"AricleComposerButtonSelected",onclick:function(){return t.previewContent=!0}},app.translator.trans("v17development-flarum-blog.forum.composer.view"))),m("div",{className:"Composer Flarum-Blog-Composer-body "+(this.previewContent?"Flarum-Blog-Composer-HideEditor":"")},this.previewContent&&m("div",{className:"Flarum-Blog-Composer-preview"},!e&&app.translator.trans("v17development-flarum-blog.forum.composer.nothing_to_preview"),m(Ct,{content:this.composer.fields.content()})),Mt().component({submitLabel:this.attrs.submitLabel||app.translator.trans("core.forum.composer_edit.submit_button"),placeholder:this.attrs.placeholder,disabled:a,composer:this.composer,preview:this.jumpToPreview&&this.jumpToPreview.bind(this),onchange:this.composer.fields.content,onsubmit:this.onsubmit.bind(this),value:this.composer.fields.content()})))},a.onsubmit=function(){this.attrs.onsubmit&&this.attrs.onsubmit()},e}(At()),Pt=function(t){function e(){return t.apply(this,arguments)||this}o(e,t);var a=e.prototype;return a.oninit=function(e){var a=this;if(t.prototype.oninit.call(this,e),app.setTitle(app.translator.trans("v17development-flarum-blog.forum.blog")),app.forum.attribute("canWriteBlogPosts")){if(app.history.push("blogComposer"),this.languages=app.store.all("discussion-languages"),this.bodyClass="BlogItemPage",this.articleLanguage=m.route.param("lang")?m.route.param("lang"):app.translator.locale,this.article=app.store.createRecord("discussions"),this.blogMeta=null,this.tags=[],m.route.param().tags){var o=Array.isArray(m.route.param().tags)?m.route.param().tags:m.route.param().tags.split(",");m.route.param().tags.length>0&&o.forEach((function(t){var e=app.store.getById("tags",t);e&&a.tags.push(e)}))}this.isSaving=!1}else m.route.set(app.route("blog"))},a.openTagsModal=function(t){var e=this;void 0===t&&(t=null),t&&t.preventDefault(),this.isSaving||app.modal.show(f(),{selectedTags:this.tags,onsubmit:function(t){e.tags=t}})},a.openNameArticleModal=function(t){var e=this;void 0===t&&(t=null),t&&t.preventDefault(),this.isSaving||app.modal.show(O,{article:this.article,onChange:function(t){e.article.pushData({attributes:{title:t}})}})},a.openBlogSettings=function(t){var e=this;t.preventDefault(),this.isSaving||app.modal.show(x,{meta:this.blogMeta,onsubmit:function(t){return e.blogMeta=t}})},a.view=function(){var t=this,e=this.blogMeta&&this.blogMeta.featuredImage()?"url("+this.blogMeta.featuredImage()+")":null;return m("div",{className:"FlarumBlogItem"},m("div",{className:"container"},m("div",{className:"FlarumBlog-ToolButtons"},m(J(),{href:app.route("blog"),className:"Button",loading:this.isSaving,icon:"fas fa-angle-left"},m("i",{class:"icon fas fa-angle-left Button-icon"}),m("span",{class:"Button-label"},app.translator.trans("v17development-flarum-blog.forum.return_to_overview")))),m("div",{className:"FlarumBlog-Article"},m("div",{className:"FlarumBlog-Article-Container"},m("div",{className:"FlarumBlog-Article-Content"},m("div",{className:"FlarumBlog-Article-Image FlarumBlog-default-image",style:{backgroundImage:e,cursor:"pointer"},onclick:function(e){return t.openBlogSettings(e)}}),m("div",{className:"FlarumBlog-Article-Content-Edit-Button"},m("div",{className:0===this.languages.length?"FlarumBlog-Article-Content-Edit-Dropdown":"FlarumBlog-Article-Content-EditButtons"},null!==this.languages&&this.languages.length>=1&&m(rt,{selected:this.articleLanguage,onclick:function(e){return t.articleLanguage=e}}),m(w(),{className:"Button",onclick:function(e){return t.openBlogSettings(e)},icon:"fas fa-pencil-alt",loading:this.isSaving},"Update blog settings"))),m("div",{className:"FlarumBlog-Article-Categories"},this.tags.map((function(e){return m("a",{href:"#",onclick:function(e){return t.openTagsModal(e)}},e.name())})),m("a",{href:"#",onclick:function(e){return t.openTagsModal(e)}},0===this.tags.length?app.translator.trans("v17development-flarum-blog.forum.composer.select_category"):app.translator.trans("v17development-flarum-blog.forum.composer.edit_categories")," ",m("i",{className:"fas fa-edit"}))),m("div",{className:"FlarumBlog-Article-Post"},m("h3",{onclick:function(){return t.openNameArticleModal()},style:{cursor:"pointer"}},this.article&&this.article.title()&&""!==this.article.title()?this.article.title():app.translator.trans("v17development-flarum-blog.forum.composer.no_title"),m("a",{href:"#",onclick:function(t){return t.preventDefault()}},m("i",{className:"fas fa-edit"}))),m("div",{className:"Post-body"},m(_t,{composer:app.composer,originalContent:"",submitLabel:app.translator.trans("v17development-flarum-blog.forum.composer.post_article"),placeholder:app.translator.trans("v17development-flarum-blog.forum.composer.enter_message_here"),onsubmit:function(){return t.create()},disabled:this.isSaving})))),m("div",{className:"FlarumBlog-Article-Comments"},m("h4",null,app.translator.trans("v17development-flarum-blog.forum.comment_section.comments")," ","(0)"),m("div",{className:"Post-body"},m("blockquote",{class:"uncited"},m("div",null,m("span",{className:"fas fa-ban",style:{marginRight:"5px"}})," ",app.translator.trans("v17development-flarum-blog.forum.composer.comment_section")))))),m("div",{className:"FlarumBlog-Article-Sidebar"},m(U,{user:app.session.user})))))},a.create=function(){var t=this,e=app.forum.attribute("blogTags")||[];if(0!==this.tags.length)if(this.article.title()&&""!==this.article.title())if(0!==this.tags.filter((function(t){return e.indexOf(t.id())>=0})).length){if(null!==this.blogMeta&&this.blogMeta.featuredImage()&&this.blogMeta.summary()||confirm(app.translator.trans("v17development-flarum-blog.forum.composer.post_without_blog_info"))){var a={tags:this.tags};this.languages.length>0&&(a.language=app.store.getBy("discussion-languages","code",this.articleLanguage));var o={title:this.article.title(),content:app.composer.fields.content(),relationships:a,blogMeta:null!==this.blogMeta?{featuredImage:this.blogMeta.featuredImage(),summary:this.blogMeta.summary(),isSized:this.blogMeta.isSized()}:null};this.isSaving=!0,this.article.save(o).then((function(t){setTimeout((function(){m.route.set(app.route("blogArticle",{id:""+t.slug()}))}),500)})).catch((function(){t.isSaving=!1,m.redraw()}))}}else alert(app.translator.trans("v17development-flarum-blog.forum.composer.no_blog_tags_selected"));else this.openNameArticleModal();else this.openTagsModal()},e}(r());function kt(){return(kt=Object.assign||function(t){for(var e=1;e{var e=t&&t.__esModule?()=>t.default:()=>t;return a.d(e,{a:e}),e},a.d=(t,e)=>{for(var o in e)a.o(e,o)&&!a.o(t,o)&&Object.defineProperty(t,o,{enumerable:!0,get:e[o]})},a.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),a.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},a(100)})(); //# sourceMappingURL=forum.js.map \ No newline at end of file diff --git a/js/dist/forum.js.map b/js/dist/forum.js.map index f32f771..35fa507 100644 --- a/js/dist/forum.js.map +++ b/js/dist/forum.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack://@v17development/flarum-blog/webpack/bootstrap","webpack://@v17development/flarum-blog/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://@v17development/flarum-blog/external \"flarum.core.compat['components/Button']\"","webpack://@v17development/flarum-blog/external \"flarum.core.compat['Component']\"","webpack://@v17development/flarum-blog/external \"flarum.core.compat['components/Switch']\"","webpack://@v17development/flarum-blog/external \"flarum.core.compat['extend']\"","webpack://@v17development/flarum-blog/external \"flarum.core.compat['components/Link']\"","webpack://@v17development/flarum-blog/external \"flarum.core.compat['Model']\"","webpack://@v17development/flarum-blog/external \"flarum.core.compat['components/Alert']\"","webpack://@v17development/flarum-blog/external \"flarum.core.compat['utils/ItemList']\"","webpack://@v17development/flarum-blog/external \"flarum.core.compat['components/IndexPage']\"","webpack://@v17development/flarum-blog/external \"flarum.core.compat['utils/Stream']\"","webpack://@v17development/flarum-blog/external \"flarum.core.compat['components/Modal']\"","webpack://@v17development/flarum-blog/external \"flarum.core.compat['components/Page']\"","webpack://@v17development/flarum-blog/external \"flarum.core.compat['tags/components/TagDiscussionModal']\"","webpack://@v17development/flarum-blog/external \"flarum.core.compat['components/Dropdown']\"","webpack://@v17development/flarum-blog/external \"flarum.core.compat['helpers/listItems']\"","webpack://@v17development/flarum-blog/external \"flarum.core.compat['utils/DiscussionControls']\"","webpack://@v17development/flarum-blog/external \"flarum.core.compat['helpers/humanTime']\"","webpack://@v17development/flarum-blog/external \"flarum.core.compat['components/CommentPost']\"","webpack://@v17development/flarum-blog/external \"flarum.core.compat['components/PostStream']\"","webpack://@v17development/flarum-blog/external \"flarum.core.compat['states/PostStreamState']\"","webpack://@v17development/flarum-blog/external \"flarum.core.compat['components/EditPostComposer']\"","webpack://@v17development/flarum-blog/external \"flarum.core.compat['utils/extractText']\"","webpack://@v17development/flarum-blog/external \"flarum.core.compat['helpers/avatar']\"","webpack://@v17development/flarum-blog/external \"flarum.core.compat['components/SelectDropdown']\"","webpack://@v17development/flarum-blog/external \"flarum.core.compat['models/Discussion']\"","webpack://@v17development/flarum-blog/external \"flarum.core.compat['components/DiscussionPage']\"","webpack://@v17development/flarum-blog/external \"flarum.core.compat['utils/mixin']\"","webpack://@v17development/flarum-blog/external \"flarum.core.compat['tags/components/TagsPage']\"","webpack://@v17development/flarum-blog/external \"flarum.core.compat['components/ComposerBody']\"","webpack://@v17development/flarum-blog/external \"flarum.core.compat['components/TextEditor']\"","webpack://@v17development/flarum-blog/external \"flarum.core\"","webpack://@v17development/flarum-blog/external \"flarum.core.compat['components/LinkButton']\"","webpack://@v17development/flarum-blog/./src/forum/components/Modals/BlogPostSettingsModal.js","webpack://@v17development/flarum-blog/./src/forum/components/Modals/RenameArticleModal.js","webpack://@v17development/flarum-blog/./src/forum/components/BlogPostController.js","webpack://@v17development/flarum-blog/./src/forum/components/BlogItemSidebar/BlogAuthor.js","webpack://@v17development/flarum-blog/./src/forum/components/BlogCategories.js","webpack://@v17development/flarum-blog/./src/forum/components/ForumNav.js","webpack://@v17development/flarum-blog/./src/forum/components/BlogItemSidebar/BlogItemSidebar.js","webpack://@v17development/flarum-blog/./src/forum/utils/tooltip.js","webpack://@v17development/flarum-blog/./src/forum/components/LanguageDropdown/Language.js","webpack://@v17development/flarum-blog/./src/forum/components/LanguageDropdown/LanguageDropdown.js","webpack://@v17development/flarum-blog/./src/forum/pages/BlogOverview.js","webpack://@v17development/flarum-blog/./src/forum/pages/BlogItem.js","webpack://@v17development/flarum-blog/./src/forum/utils/redirector.js","webpack://@v17development/flarum-blog/./src/common/Models/BlogMeta.js","webpack://@v17development/flarum-blog/./src/forum/utils/extendTagOverview.js","webpack://@v17development/flarum-blog/./src/forum/utils/discussionRouting.js","webpack://@v17development/flarum-blog/./src/forum/components/Composer/ComposerPreview.js","webpack://@v17development/flarum-blog/./src/forum/components/Composer/Composer.js","webpack://@v17development/flarum-blog/./src/forum/pages/BlogComposer.js","webpack://@v17development/flarum-blog/./node_modules/@babel/runtime/helpers/esm/extends.js","webpack://@v17development/flarum-blog/./src/forum/utils/addSidebarNav.js","webpack://@v17development/flarum-blog/./src/forum/index.js","webpack://@v17development/flarum-blog/./src/forum/compat.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","_inheritsLoose","subClass","superClass","constructor","__proto__","flarum","core","compat","BlogPostSettingsModal","oninit","vnode","this","attrs","article","meta","blogMeta","app","store","createRecord","isNew","exists","summary","Stream","featuredImage","isFeatured","isSized","isPendingReview","className","title","content","fields","toArray","items","ItemList","add","style","maxWidth","minWidth","width","minHeight","bidi","placeholder","type","src","alt","marginTop","Switch","component","state","onchange","val","fontWeight","Button","loading","submitData","relationships","isComposer","discussion","onsubmit","e","preventDefault","pushData","attributes","hide","save","then","redraw","response","handleErrors","Modal","RenameArticleModal","redirect","translator","trans","onChange","url","slug","route","set","window","history","replaceState","document","BlogPostController","init","loadedPost","view","buttons","LanguageDiscussionModal","extensions","components","canRename","push","onclick","modal","show","icon","articlePost","firstPost","getById","firstPostId","disabled","canEdit","composer","load","EditPostComposer","post","canTag","TagDiscussionModal","forum","attribute","alerts","Alert","canChangeLanguage","canLock","DiscussionControls","lockAction","isLocked","canHide","isHidden","restoreAction","canDelete","confirm","extractText","getCurrent","previous","back","hideAction","Dropdown","label","buttonClassName","menuClassName","onshow","find","id","Component","BlogAuthor","author","user","backgroundColor","color","avatar","displayName","bio","listItems","BlogCategories","blogCategories","map","tagId","tag","tags","categoryItem","all","forEach","_tag","isChild","parent","href","ForumNav","navItems","IndexPage","screen","remove","BlogItemSidebar","itemlist","tooltip","element","$","Language","languages","options","reduce","lang","code","extra","language","uppercase","toUpperCase","LanguageDropdown","selected","keys","active","BlogOverview","setTitle","bodyClass","isLoading","featuredPosts","posts","hasMore","isLoadingMore","currentSelectedLanguage","param","locale","loadBlogOverview","preloadBlogOverview","preloadedApiDocument","setTimeout","reloadData","q","length","filter","sort","articles","payload","links","next","slice","loadMore","replace","data","newArticle","location","pathname","clear","blogImage","blogTag","backgroundImage","isSticky","config","data-placement","humanTime","createdAt","commentCount","blogTags","indexOf","currentCategory","getBy","join","undefined","Page","BlogItem","found","loadBlogItem","split","includedPosts","included","articleId","record","a","b","stream","PostStreamState","matches","class","opacity","session","fontSize","marginRight","PostStream","onPositionChange","positionChanged","startNumber","endNumber","lastReadPostNumber","extend","currentTag","tagRedirectEnabled","override","DiscussionPage","original","BlogMeta","mixin","Model","hasOne","extendTagOverview","TagsPage","markup","knowledgeBaseTags","tag_tiles","children","tile","original_discussion_route","near","shouldRedirect","ComposerPreview","oncreate","s9e","TextFormatter","preview","dom","Composer","previewContent","hasContent","TextEditor","submitLabel","jumpToPreview","ComposerBody","BlogComposer","articleLanguage","tagList","Array","isArray","foundTag","isSaving","openTagsModal","selectedTags","openNameArticleModal","openBlogSettings","cursor","originalContent","alert","_extends","assign","target","arguments","source","apply","addSidebarNav","initializers","routes","blog","path","blogCategory","blogComposer","blogArticle","models","Discussion","redirector","discussionRouting"],"mappings":"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","file":"forum.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 38);\n","export default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}","module.exports = flarum.core.compat['components/Button'];","module.exports = flarum.core.compat['Component'];","module.exports = flarum.core.compat['components/Switch'];","module.exports = flarum.core.compat['extend'];","module.exports = flarum.core.compat['components/Link'];","module.exports = flarum.core.compat['Model'];","module.exports = flarum.core.compat['components/Alert'];","module.exports = flarum.core.compat['utils/ItemList'];","module.exports = flarum.core.compat['components/IndexPage'];","module.exports = flarum.core.compat['utils/Stream'];","module.exports = flarum.core.compat['components/Modal'];","module.exports = flarum.core.compat['components/Page'];","module.exports = flarum.core.compat['tags/components/TagDiscussionModal'];","module.exports = flarum.core.compat['components/Dropdown'];","module.exports = flarum.core.compat['helpers/listItems'];","module.exports = flarum.core.compat['utils/DiscussionControls'];","module.exports = flarum.core.compat['helpers/humanTime'];","module.exports = flarum.core.compat['components/CommentPost'];","module.exports = flarum.core.compat['components/PostStream'];","module.exports = flarum.core.compat['states/PostStreamState'];","module.exports = flarum.core.compat['components/EditPostComposer'];","module.exports = flarum.core.compat['utils/extractText'];","module.exports = flarum.core.compat['helpers/avatar'];","module.exports = flarum.core.compat['components/SelectDropdown'];","module.exports = flarum.core.compat['models/Discussion'];","module.exports = flarum.core.compat['components/DiscussionPage'];","module.exports = flarum.core.compat['utils/mixin'];","module.exports = flarum.core.compat['tags/components/TagsPage'];","module.exports = flarum.core.compat['components/ComposerBody'];","module.exports = flarum.core.compat['components/TextEditor'];","module.exports = flarum.core;","module.exports = flarum.core.compat['components/LinkButton'];","import Modal from \"flarum/components/Modal\";\nimport Button from \"flarum/components/Button\";\nimport ItemList from \"flarum/utils/ItemList\";\nimport Stream from \"flarum/utils/Stream\";\nimport Switch from \"flarum/components/Switch\";\n\nexport default class BlogPostSettingsModal extends Modal {\n oninit(vnode) {\n super.oninit(vnode);\n\n if (this.attrs.article) {\n this.meta =\n this.attrs.article && this.attrs.article.blogMeta()\n ? this.attrs.article.blogMeta()\n : app.store.createRecord(\"blogMeta\");\n } else {\n this.meta = this.attrs.meta\n ? this.attrs.meta\n : app.store.createRecord(\"blogMeta\");\n }\n\n this.isNew = !this.meta.exists;\n\n this.summary = Stream(this.meta.summary() || \"\");\n\n this.featuredImage = Stream(this.meta.featuredImage() || \"\");\n\n this.isFeatured = Stream(this.meta.isFeatured() || false);\n this.isSized = Stream(this.meta.isSized() || false);\n this.isPendingReview = Stream(this.meta.isPendingReview() || false);\n }\n\n className() {\n return \"Modal--small Support-Modal\";\n }\n\n title() {\n return \"Blog post settings\";\n }\n\n content() {\n return (\n
\n
{this.fields().toArray()}
\n
\n );\n }\n\n fields() {\n const items = new ItemList();\n\n items.add(\n \"summary\",\n
\n \n \n\n \n This summary will be visible on the blog overview page and will be\n used for SEO purposes.\n \n
,\n 30\n );\n\n items.add(\n \"image\",\n
\n \n \n\n Best image resolution for social media: 1200x630\n\n {this.featuredImage() != \"\" && (\n \n )}\n
,\n 30\n );\n\n items.add(\n \"sized\",\n
\n {Switch.component(\n {\n state: this.isSized() == true,\n onchange: (val) => {\n this.isSized(val);\n },\n },\n [\n Highlighted post,\n
\n Give this post a big image on the blog overview page.\n
,\n ]\n )}\n
,\n -10\n );\n\n items.add(\n \"submit\",\n
\n {Button.component(\n {\n type: \"submit\",\n className: \"Button Button--primary SupportModal-save\",\n loading: this.loading,\n },\n \"Update\"\n )}\n
,\n -10\n );\n\n return items;\n }\n\n submitData() {\n return {\n summary: this.summary(),\n featuredImage: this.featuredImage(),\n isFeatured: this.isFeatured(),\n isSized: this.isSized(),\n isPendingReview: this.isPendingReview(),\n relationships:\n this.isNew && !this.attrs.isComposer\n ? {\n discussion: this.attrs.article,\n }\n : null,\n };\n }\n\n onsubmit(e) {\n e.preventDefault();\n\n // Submit data\n if (this.attrs.onsubmit) {\n // Update attributes\n this.meta.pushData({\n attributes: this.submitData(),\n });\n\n // Push\n this.attrs.onsubmit(this.meta);\n\n this.hide();\n return;\n }\n\n this.loading = true;\n\n this.meta.save(this.submitData()).then(\n () => {\n if (this.attrs.article) {\n this.attrs.article.pushData({\n relationships: {\n blogMeta: this.meta,\n },\n });\n }\n\n this.hide();\n m.redraw();\n },\n (response) => {\n this.loading = false;\n this.handleErrors(response);\n }\n );\n }\n}\n","import Modal from \"flarum/components/Modal\";\nimport Button from \"flarum/components/Button\";\nimport ItemList from \"flarum/utils/ItemList\";\nimport Stream from \"flarum/utils/Stream\";\n\nexport default class RenameArticleModal extends Modal {\n oninit(vnode) {\n super.oninit(vnode);\n\n this.article = this.attrs.article;\n\n this.name = Stream(this.article.title() || \"\");\n\n this.redirect = this.attrs.redirect;\n }\n\n className() {\n return \"Modal--small Support-Modal\";\n }\n\n title() {\n return app.translator.trans(\n \"v17development-flarum-blog.forum.tools.rename_article\"\n );\n }\n\n content() {\n return (\n
\n
{this.fields().toArray()}
\n
\n );\n }\n\n fields() {\n const items = new ItemList();\n\n items.add(\n \"name\",\n
\n \n \n
,\n 50\n );\n\n items.add(\n \"submit\",\n
\n {Button.component(\n {\n type: \"submit\",\n className: \"Button Button--primary SupportModal-save\",\n loading: this.loading,\n },\n \"Update\"\n )}\n
,\n -10\n );\n\n return items;\n }\n\n submitData() {\n return {\n title: this.name(),\n };\n }\n\n onsubmit(e) {\n e.preventDefault();\n\n this.loading = true;\n\n // Do not save\n if (this.attrs.onChange) {\n this.attrs.onChange(this.name());\n this.hide();\n\n return;\n }\n\n this.article\n .save({\n title: this.name(),\n })\n .then(\n () => {\n this.hide();\n\n // Redirect\n if (this.redirect) {\n const url = `/blog/${this.article.slug()}`;\n\n m.route.set(url, true);\n window.history.replaceState(null, document.title, url);\n }\n },\n (response) => {\n this.loading = false;\n this.handleErrors(response);\n }\n );\n }\n}\n","import Component from \"flarum/Component\";\nimport TagDiscussionModal from \"flarum/tags/components/TagDiscussionModal\";\nimport DiscussionControls from \"flarum/utils/DiscussionControls\";\nimport Alert from \"flarum/components/Alert\";\nimport Button from \"flarum/components/Button\";\nimport Dropdown from \"flarum/components/Dropdown\";\nimport BlogPostSettingsModal from \"./Modals/BlogPostSettingsModal\";\nimport EditPostComposer from \"flarum/components/EditPostComposer\";\nimport extractText from \"flarum/utils/extractText\";\nimport RenameArticleModal from \"./Modals/RenameArticleModal\";\n\nexport default class BlogPostController extends Component {\n init() {\n this.loadedPost = false;\n }\n\n view() {\n const article = this.attrs.article;\n let buttons = [];\n\n // Working for GlowingBlue version\n const LanguageDiscussionModal =\n flarum.extensions[\"fof-discussion-language\"] &&\n typeof flarum.extensions[\"fof-discussion-language\"].components !==\n \"undefined\"\n ? flarum.extensions[\"fof-discussion-language\"].components\n .LanguageDiscussionModal\n : null;\n\n // Rename article\n if (article.canRename()) {\n buttons.push(\n Button.component(\n {\n className: \"Button\",\n onclick: () => app.modal.show(RenameArticleModal, { article }),\n icon: \"fas fa-pencil-alt\",\n },\n app.translator.trans(\n \"v17development-flarum-blog.forum.tools.rename_article\"\n )\n )\n );\n }\n\n const articlePost = article.firstPost()\n ? article.firstPost()\n : app.store.getById(\"posts\", article.firstPostId());\n\n // Edit article\n buttons.push(\n Button.component(\n {\n className: \"Button\",\n disabled: !articlePost || !articlePost.canEdit(),\n onclick: () => {\n app.composer.load(EditPostComposer, { post: articlePost });\n app.composer.show();\n },\n icon: \"fas fa-edit\",\n },\n app.translator.trans(\n \"v17development-flarum-blog.forum.tools.edit_article\"\n )\n )\n );\n\n // Article settings\n buttons.push(\n Button.component(\n {\n className: \"Button\",\n onclick: () => app.modal.show(BlogPostSettingsModal, { article }),\n icon: \"fas fa-cogs\",\n },\n app.translator.trans(\n \"v17development-flarum-blog.forum.tools.article_settings\"\n )\n )\n );\n\n // Update categories\n if (article.canTag()) {\n buttons.push(\n Button.component(\n {\n className: \"Button\",\n onclick: () =>\n app.modal.show(TagDiscussionModal, { discussion: article }),\n icon: \"fas fa-tag\",\n },\n app.translator.trans(\n \"v17development-flarum-blog.forum.tools.update_category\"\n )\n )\n );\n }\n\n // Approve article\n if (article.blogMeta() && article.blogMeta().isPendingReview()) {\n buttons.push(
  • );\n\n buttons.push(\n Button.component(\n {\n className: \"Button\",\n disabled: !app.forum.attribute(\"canApproveBlogPosts\"),\n onclick: () => {\n article\n .blogMeta()\n .save({\n isPendingReview: false,\n })\n .then(\n () => {\n app.alerts.show(\n Alert,\n { type: \"success\" },\n app.translator.trans(\n \"v17development-flarum-blog.forum.review_article.approve_article_approved\"\n )\n );\n },\n (response) => {\n this.loading = false;\n this.handleErrors(response);\n }\n );\n },\n icon: \"fas fa-thumbs-up\",\n },\n app.translator.trans(\n \"v17development-flarum-blog.forum.review_article.approve_article\"\n )\n )\n );\n }\n\n // Language\n if (\n article.canChangeLanguage &&\n article.canChangeLanguage() &&\n LanguageDiscussionModal\n ) {\n buttons.push(\n Button.component(\n {\n icon: \"fas fa-globe\",\n onclick: () =>\n app.modal.show(LanguageDiscussionModal, { discussion: article }),\n },\n app.translator.trans(\n \"fof-discussion-language.forum.discussion_controls.change_language_button\"\n )\n )\n );\n }\n\n buttons.push(
  • );\n\n // Lock article\n if (article.canLock()) {\n buttons.push(\n Button.component(\n {\n className: \"Button\",\n onclick: DiscussionControls.lockAction.bind(article),\n icon: `fas ${\n article.isLocked() ? \"fa-comments\" : \"fa-comment-slash\"\n }`,\n },\n article.isLocked()\n ? app.translator.trans(\n \"v17development-flarum-blog.forum.tools.enable_comments\"\n )\n : app.translator.trans(\n \"v17development-flarum-blog.forum.tools.disable_comments\"\n )\n )\n );\n }\n\n // Hide/show/delete\n if (article.canHide()) {\n // Article is hidden\n if (article.isHidden()) {\n // Recover article\n buttons.push(\n Button.component(\n {\n className: \"Button\",\n onclick: DiscussionControls.restoreAction.bind(article),\n icon: \"fas fa-eye\",\n },\n app.translator.trans(\n \"v17development-flarum-blog.forum.tools.recover_article\"\n )\n )\n );\n\n // Delete article\n if (article.canDelete()) {\n buttons.push(\n Button.component(\n {\n className: \"Button\",\n onclick: () => {\n // Confirm deletion\n if (\n confirm(\n extractText(\n app.translator.trans(\n \"core.forum.discussion_controls.delete_confirmation\"\n )\n )\n )\n ) {\n // Redirect if the current page is an blog article\n if (app.history.getCurrent().name === \"blogArticle\") {\n if (app.previous) {\n app.history.back();\n } else {\n m.route.set(app.route(\"blog\"));\n }\n }\n\n return article.delete().then(() => {\n m.redraw();\n });\n }\n },\n icon: \"far fa-trash-alt\",\n },\n app.translator.trans(\n \"v17development-flarum-blog.forum.tools.delete_forever\"\n )\n )\n );\n }\n } else {\n // Hide article\n buttons.push(\n Button.component(\n {\n className: \"Button\",\n onclick: DiscussionControls.hideAction.bind(article),\n icon: \"fas fa-eye-slash\",\n },\n app.translator.trans(\n \"v17development-flarum-blog.forum.tools.hide_article\"\n )\n )\n );\n }\n }\n\n return (\n
    \n
    \n {Dropdown.component(\n {\n icon: \"fas fa-cog\",\n label: \"Manage\",\n buttonClassName: \"Button\",\n menuClassName: \"Dropdown-menu--right\",\n onshow: () => {\n // Get post data to make sure they can edit the post\n if (articlePost && !articlePost.canEdit() && !this.loadedPost) {\n this.loadedPost = true;\n app.store\n .find(\n \"posts\",\n article.firstPost()\n ? article.firstPost().id()\n : article.firstPostId()\n )\n .then(() => {})\n .catch(() => {})\n .then(() => m.redraw());\n }\n },\n },\n buttons\n )}\n
    \n
    \n );\n }\n}\n","import Component from \"flarum/Component\";\nimport ItemList from \"flarum/utils/ItemList\";\nimport listItems from \"flarum/helpers/listItems\";\nimport avatar from \"flarum/helpers/avatar\";\n\nexport default class BlogAuthor extends Component {\n view() {\n const author = !this.attrs.loading\n ? this.attrs.article\n ? this.attrs.article.user()\n : this.attrs.user\n : null;\n\n return (\n
    \n \n\n
    \n {author ? (\n avatar(author)\n ) : (\n \n )}\n
    \n\n {author && (\n
    \n \n {author.displayName()}\n \n

    \n {author.bio && author.bio()}\n

    \n\n
      \n {listItems(this.items().toArray())}\n
    \n
    \n )}\n\n {this.attrs.loading && (\n
    \n \n  \n \n \n  \n

    \n \n  \n

    \n \n  \n

    \n
    \n )}\n
    \n );\n }\n\n items() {\n return new ItemList();\n }\n}\n","import Component from \"flarum/Component\";\nimport Link from \"flarum/components/Link\";\n\nexport default class BlogCategories extends Component {\n oninit(vnode) {\n super.oninit(vnode);\n\n this.blogCategories = app.forum.attribute(\"blogTags\");\n }\n\n view() {\n return (\n
    \n

    \n {app.translator.trans(\"v17development-flarum-blog.forum.categories\")}\n

    \n\n {this.blogCategories &&\n this.blogCategories.map((tagId) => {\n const tag = app.store.getById(\"tags\", tagId);\n\n if (!tag) return null;\n\n const tags = [];\n\n // Add tag\n tags.push(this.categoryItem(tag));\n\n // Add tags\n app.store.all(\"tags\").forEach((_tag) => {\n if (_tag.isChild() && _tag.parent().id() === tag.id()) {\n tags.push(this.categoryItem(_tag));\n }\n });\n\n return tags;\n })}\n
    \n );\n }\n\n // Category item\n categoryItem(tag) {\n return (\n \n \n \n \n {tag.name()}\n \n );\n }\n}\n","import Component from \"flarum/Component\";\nimport IndexPage from \"flarum/components/IndexPage\";\nimport SelectDropdown from \"flarum/components/SelectDropdown\";\n\nexport default class ForumNav extends Component {\n view() {\n return (\n
    \n

    \n {app.translator.trans(\"v17development-flarum-blog.forum.forum_nav\")}\n

    \n \n
    \n );\n }\n\n navItems() {\n const items = IndexPage.prototype.navItems();\n\n // We want the active screen to show up in the top dropdown when on mobile.\n if (app.screen() !== \"phone\") {\n items.remove(\"blog\");\n }\n\n return items;\n }\n}\n","import Component from \"flarum/Component\";\nimport ItemList from \"flarum/utils/ItemList\";\nimport listItems from \"flarum/helpers/listItems\";\nimport BlogAuthor from \"./BlogAuthor\";\nimport BlogCategories from \"../BlogCategories\";\nimport ForumNav from \"../ForumNav\";\n\nexport default class BlogItemSidebar extends Component {\n view() {\n return (\n
    \n
      {listItems(this.items().toArray())}
    \n
    \n );\n }\n\n items() {\n const itemlist = new ItemList();\n\n itemlist.add(\"author\", BlogAuthor.component(this.attrs), 0);\n\n itemlist.add(\"categories\", BlogCategories.component(this.attrs), 0);\n\n itemlist.add(\"nav\", ForumNav.component(this.attrs), 0);\n\n return itemlist;\n }\n}\n","export default function tooltip(element) {\n $(element).tooltip();\n}\n","import Component from \"flarum/Component\";\n\nexport default class Language extends Component {\n oninit(vnode) {\n super.oninit(vnode);\n\n this.languages = app.store.all(\"discussion-languages\");\n this.options = this.languages.reduce((o, lang) => {\n o[lang.code()] = (\n \n {lang.name()}\n \n );\n\n return o;\n }, this.attrs.extra || {});\n }\n\n view() {\n const { language, uppercase } = this.attrs;\n const name = language.name() || \"\";\n\n return (\n \n \n  \n {uppercase ? name.toUpperCase() : name}\n \n );\n }\n}\n","import Component from \"flarum/Component\";\nimport Dropdown from \"flarum/components/Dropdown\";\nimport Button from \"flarum/components/Button\";\nimport Language from \"./Language\";\n\nexport default class LanguageDropdown extends Component {\n oninit(vnode) {\n super.oninit(vnode);\n this.languages = app.store.all(\"discussion-languages\");\n this.options = this.languages.reduce((o, lang) => {\n o[lang.code()] = ;\n\n return o;\n }, this.attrs.extra || {});\n }\n\n view() {\n const selected = this.attrs.selected;\n\n const items = Object.keys(this.options).map((key) => {\n const isSelected = selected || \"any\";\n const active = key === isSelected;\n\n return Button.component(\n {\n active,\n icon: active ? \"fas fa-check\" : true,\n onclick: () => this.attrs.onclick(key),\n },\n this.options[key]\n );\n });\n\n return Dropdown.component(\n {\n buttonClassName: \"Button\",\n label: this.options[selected] || this.options[this.attrs.default],\n menuClassName: \"Dropdown-menu--right\",\n },\n items\n );\n }\n}\n","import Page from \"flarum/components/Page\";\nimport Button from \"flarum/components/Button\";\nimport humanTime from \"flarum/helpers/humanTime\";\nimport BlogCategories from \"../components/BlogCategories\";\nimport Link from \"flarum/components/Link\";\nimport tooltip from \"../utils/tooltip\";\nimport LanguageDropdown from \"../components/LanguageDropdown/LanguageDropdown\";\nimport ForumNav from \"../components/ForumNav\";\n\nexport default class BlogOverview extends Page {\n oninit(vnode) {\n super.oninit(vnode);\n\n app.setTitle(app.translator.trans(\"v17development-flarum-blog.forum.blog\"));\n\n this.bodyClass = \"BlogOverviewPage\";\n\n this.isLoading = true;\n this.featuredPosts = [];\n this.posts = [];\n this.hasMore = null;\n this.isLoadingMore = false;\n\n this.languages = app.store.all(\"discussion-languages\");\n\n this.currentSelectedLanguage = m.route.param(\"lang\")\n ? m.route.param(\"lang\")\n : app.translator.locale;\n\n // Send history push\n app.history.push(\"blog\");\n\n this.loadBlogOverview();\n }\n\n // Load blog overview\n loadBlogOverview() {\n const preloadBlogOverview = app.preloadedApiDocument();\n\n if (preloadBlogOverview) {\n // We must wrap this in a setTimeout because if we are mounting this\n // component for the first time on page load, then any calls to m.redraw\n // will be ineffective and thus any configs (scroll code) will be run\n // before stuff is drawn to the page.\n setTimeout(this.show.bind(this, preloadBlogOverview), 0);\n } else {\n this.reloadData();\n }\n\n m.redraw();\n }\n\n reloadData() {\n let q = `is:blog${\n m.route.param(\"slug\") ? ` tag:${m.route.param(\"slug\")}` : \"\"\n }`;\n\n if (this.languages !== null && this.languages.length >= 1) {\n q += ` language:${this.currentSelectedLanguage}`;\n }\n\n app.store\n .find(\"discussions\", {\n filter: {\n q,\n },\n sort: \"-createdAt\",\n })\n .then(this.show.bind(this))\n .catch(() => {\n m.redraw();\n });\n }\n\n // Show blog posts\n show(articles) {\n if (articles.length === 0) {\n this.isLoading = false;\n m.redraw();\n\n return;\n }\n\n // Set pagination\n this.hasMore =\n articles.payload.links && articles.payload.links.next\n ? articles.payload.links.next\n : null;\n\n this.featuredPosts = articles.slice(0, 3);\n this.posts = articles.length >= 4 ? articles.slice(3, articles.length) : [];\n\n this.isLoading = false;\n\n m.redraw();\n }\n\n // Load more blog posts\n loadMore() {\n this.isLoadingMore = true;\n\n app.store\n .find(this.hasMore.replace(app.forum.attribute(\"apiUrl\"), \"\"))\n .then((data) => {\n data.map((article) => this.posts.push(article));\n\n // Update hasmore button\n this.hasMore =\n data.payload.links && data.payload.links.next\n ? data.payload.links.next\n : null;\n })\n .catch(() => {})\n .then(() => {\n this.isLoadingMore = false;\n m.redraw();\n });\n }\n\n title() {\n if (!m.route.param(\"slug\")) {\n return (\n

    \n {app.translator.trans(\n \"v17development-flarum-blog.forum.recent_posts\"\n )}\n

    \n );\n }\n\n const tag = app.store\n .all(\"tags\")\n .filter((tag) => tag.slug() === m.route.param(\"slug\"));\n\n return (\n

    \n {tag && tag[0] && tag[0].name()}\n \n {\" \"}\n -{\" \"}\n \n {app.translator.trans(\n \"v17development-flarum-blog.forum.return_to_overview\"\n )}\n \n \n

    \n );\n }\n\n view() {\n return (\n
    \n
    \n
    \n
    \n {app.forum.attribute(\"canWriteBlogPosts\") && (\n this.newArticle()}\n icon={\"fas fa-pencil-alt\"}\n >\n {app.translator.trans(\n \"v17development-flarum-blog.forum.compose.write_article\"\n )}\n \n )}\n\n {this.languages !== null && this.languages.length >= 1 && (\n {\n this.currentSelectedLanguage = language;\n\n m.route.set(document.location.pathname, {\n lang: language,\n });\n\n this.reloadData();\n }}\n />\n )}\n
    \n\n {this.title()}\n\n
    \n\n
    \n {/* Ghost data */}\n {this.isLoading &&\n [0, 1, 2].map(() => (\n \n
    \n

     

    \n\n
    \n \n \n \n
    \n
    \n
    \n ))}\n\n {!this.isLoading &&\n this.featuredPosts.length >= 0 &&\n this.featuredPosts.map((article) => {\n const blogImage =\n article.blogMeta() && article.blogMeta().featuredImage()\n ? `url(${article.blogMeta().featuredImage()})`\n : null;\n const blogTag = article.tags()\n ? article.tags().filter((tag) => tag.isChild())\n : [];\n\n return (\n \n
    \n {blogTag[0] && {blogTag[0].name()}}\n {article.isSticky() && (\n \n \n \n )}\n {((article.blogMeta() &&\n article.blogMeta().isPendingReview() == true) ||\n article.isHidden()) && (\n \n \n \n )}\n {article.blogMeta() &&\n article.blogMeta().isPendingReview() == true && (\n \n {\" \"}\n {app.translator.trans(\n \"v17development-flarum-blog.forum.review_article.pending_review_title\"\n )}\n \n )}\n
    \n\n
    \n

    {article.title()}

    \n\n
    \n \n {\" \"}\n {humanTime(article.createdAt())}\n \n \n {\" \"}\n {article.user()\n ? article.user().displayName()\n : \"[Deleted]\"}\n \n \n {\" \"}\n {article.commentCount() - 1}\n \n
    \n
    \n \n );\n })}\n
    \n
    \n\n
    \n
    \n {this.isLoading &&\n [false, false, true, false].map((state) => {\n return (\n \n
    \n
    \n

     

    \n

     

    \n\n
    \n \n \n \n
    \n
    \n
    \n );\n })}\n\n {!this.isLoading &&\n this.posts.length >= 1 &&\n this.posts.map((article) => {\n const blogImage =\n article.blogMeta() && article.blogMeta().featuredImage()\n ? `url(${article.blogMeta().featuredImage()})`\n : null;\n const isSized =\n article.blogMeta() && article.blogMeta().isSized();\n const summary =\n article.blogMeta() && article.blogMeta().summary()\n ? article.blogMeta().summary()\n : \"\";\n\n return (\n \n
    \n
    \n

    \n {article.title()}\n {((article.blogMeta() &&\n article.blogMeta().isPendingReview() == true) ||\n article.isHidden()) && (\n \n )}\n {article.blogMeta() &&\n article.blogMeta().isPendingReview() == true && (\n \n )}\n

    \n

    {summary}

    \n\n
    \n \n {\" \"}\n {humanTime(article.createdAt())}\n \n \n {\" \"}\n {article.user()\n ? article.user().displayName()\n : \"[Deleted]\"}\n \n \n {\" \"}\n {article.commentCount() - 1}\n \n
    \n
    \n \n );\n })}\n\n {!this.isLoading &&\n this.featuredPosts.length > 0 &&\n this.hasMore === null && (\n

    \n {app.translator.trans(\n \"v17development-flarum-blog.forum.no_more_posts\"\n )}\n

    \n )}\n\n {!this.isLoading &&\n this.featuredPosts.length === 0 &&\n this.posts.length === 0 && (\n

    \n {app.translator.trans(\n \"v17development-flarum-blog.forum.category_empty\"\n )}\n

    \n )}\n\n {!this.isLoading && this.hasMore !== null && (\n
    \n this.loadMore()}\n icon={\"fas fa-chevron-down\"}\n loading={this.isLoadingMore}\n >\n {app.translator.trans(\n \"core.forum.discussion_list.load_more_button\"\n )}\n \n
    \n )}\n
    \n\n
    \n \n \n
    \n \n \n \n );\n }\n\n newArticle() {\n let foundMainTag = false;\n let tags = [];\n\n const blogTags = app.forum.attribute(\"blogTags\");\n\n // Pre-select selected tags\n app.store.all(\"tags\").forEach((_tag) => {\n // Find main blog tag\n if (\n !foundMainTag &&\n !_tag.isChild() &&\n blogTags.indexOf(_tag.id()) >= 0\n ) {\n tags.push(_tag);\n }\n });\n\n // Get current category\n const currentCategory = app.store.getBy(\n \"tags\",\n \"slug\",\n m.route.param(\"slug\")\n );\n\n if (currentCategory) {\n tags.push(currentCategory);\n }\n\n // Redirect to the composer\n m.route.set(\n app.route(\"blogComposer\", {\n tags: tags.map((tag) => tag.id()).join(),\n lang:\n this.languages.length > 0 ? this.currentSelectedLanguage : undefined,\n })\n );\n }\n}\n","import Page from \"flarum/components/Page\";\nimport CommentPost from \"flarum/components/CommentPost\";\nimport PostStream from \"flarum/components/PostStream\";\nimport PostStreamState from \"flarum/states/PostStreamState\";\nimport BlogPostController from \"../components/BlogPostController\";\nimport BlogItemSidebar from \"../components/BlogItemSidebar/BlogItemSidebar\";\nimport Link from \"flarum/components/Link\";\nimport BlogOverview from \"./BlogOverview\";\n\nexport default class BlogItem extends Page {\n oninit(vnode) {\n super.oninit(vnode);\n\n app.setTitle(app.translator.trans(\"v17development-flarum-blog.forum.blog\"));\n\n // Send history push\n app.history.push(\"blogArticle\");\n\n this.bodyClass = \"BlogItemPage\";\n\n this.loading = true;\n this.found = false;\n this.article = null;\n\n this.loadBlogItem();\n }\n\n // Load blog overview\n loadBlogItem() {\n const preloadBlogOverview = app.preloadedApiDocument();\n\n if (preloadBlogOverview) {\n // We must wrap this in a setTimeout because if we are mounting this\n // component for the first time on page load, then any calls to m.redraw\n // will be ineffective and thus any configs (scroll code) will be run\n // before stuff is drawn to the page.\n setTimeout(this.show.bind(this, preloadBlogOverview), 0);\n } else {\n app.store\n .find(\"discussions\", m.route.param(\"id\").split(\"-\")[0])\n .then(this.show.bind(this))\n .catch(() => {\n m.redraw();\n });\n }\n\n m.redraw();\n }\n\n // Show blog post\n show(article) {\n // Set article data\n this.article = article;\n\n // Update title\n app.setTitle(\n `${article.title()} - ${app.translator.trans(\n \"v17development-flarum-blog.forum.blog\"\n )}`\n );\n\n this.loading = false;\n\n let includedPosts = [];\n if (article.payload && article.payload.included) {\n const articleId = article.id();\n\n includedPosts = article.payload.included\n .filter(\n (record) =>\n record.type === \"posts\" &&\n record.relationships &&\n record.relationships.discussion &&\n record.relationships.discussion.data.id === articleId\n )\n .map((record) => app.store.getById(\"posts\", record.id))\n .sort((a, b) => a.id() - b.id())\n .slice(0, 20);\n }\n\n this.stream = new PostStreamState(article, includedPosts);\n\n m.redraw();\n }\n\n view() {\n const blogImage =\n this.article &&\n this.article.blogMeta() &&\n this.article.blogMeta().featuredImage()\n ? `url(${this.article.blogMeta().featuredImage()})`\n : null;\n let articlePost = null;\n\n if (!this.loading && this.article) {\n articlePost = this.article.firstPost()\n ? this.article.firstPost()\n : app.store.getById(\"posts\", this.article.firstPostId());\n }\n\n return (\n
    \n
    \n
    \n {\n if (app.previous.matches(BlogOverview)) {\n e.preventDefault();\n history.back();\n }\n }}\n >\n \n \n {app.translator.trans(\n \"v17development-flarum-blog.forum.return_to_overview\"\n )}\n \n \n
    \n
    \n
    \n
    \n \n\n {this.article &&\n app.session.user &&\n (app.session.user.canEdit() ||\n this.article.canRename() ||\n (this.article.posts() &&\n this.article.posts()[0].canEdit())) && (\n \n )}\n\n {/* Article Categories */}\n
    \n {!this.loading &&\n this.article &&\n this.article.tags() &&\n this.article\n .tags()\n .map((tag) => (\n \n {tag.name()}\n \n ))}\n\n {this.loading &&\n [0, 1].map(() => (\n \n Category\n \n ))}\n
    \n\n
    \n {/* Article name */}\n \n {this.article ? this.article.title() : \"Ghost title\"}\n {this.article &&\n this.article.isHidden() &&\n `(${app.translator.trans(\n \"v17development-flarum-blog.forum.hidden\"\n )})`}\n \n\n {this.loading &&\n [0, 1, 2].map(() => (\n
    \n

    \n  \n

    \n

    \n  \n

    \n

    \n  \n

    \n

     

    \n
    \n ))}\n\n {!this.loading &&\n this.article.blogMeta() &&\n this.article.blogMeta().isPendingReview() == true && (\n
    \n \n
    \n {\" \"}\n {app.translator.trans(\n \"v17development-flarum-blog.forum.review_article.pending_review\"\n )}\n
    \n \n
    \n )}\n\n {!this.loading && articlePost && (\n \n )}\n
    \n
    \n\n
    \n

    \n {app.translator.trans(\n \"v17development-flarum-blog.forum.comment_section.comments\"\n )}{\" \"}\n ({this.article ? this.article.commentCount() - 1 : 0})\n

    \n {/* Locked */}\n {!this.loading &&\n this.article.isLocked &&\n this.article.isLocked() && (\n
    \n
    \n
    \n {\" \"}\n {app.translator.trans(\n \"v17development-flarum-blog.forum.comment_section.locked\"\n )}\n
    \n
    \n
    \n )}\n\n {!this.loading &&\n this.article &&\n PostStream.component({\n discussion: this.article,\n stream: this.stream,\n onPositionChange: () => {},\n })}\n
    \n
    \n\n \n
    \n
    \n
    \n );\n }\n\n positionChanged(startNumber, endNumber) {\n const article = this.article;\n\n if (app.session.user && endNumber > (article.lastReadPostNumber() || 0)) {\n article.save({ lastReadPostNumber: endNumber });\n m.redraw();\n }\n }\n}\n","import IndexPage from \"flarum/components/IndexPage\";\nimport DiscussionPage from \"flarum/components/DiscussionPage\";\nimport { extend, override } from \"flarum/extend\";\n\nexport default function () {\n // Redirect tag to blog category\n extend(IndexPage.prototype, \"oncreate\", function () {\n const tag = this.currentTag();\n const tagRedirectEnabled =\n app.forum.attribute(\"blogRedirectsEnabled\") === \"both\" ||\n app.forum.attribute(\"blogRedirectsEnabled\") === \"tags_only\";\n\n // Only trigger when it's a tag page and the redirects are enabled\n if (tag && tagRedirectEnabled) {\n const blogTags = app.forum.attribute(\"blogTags\");\n\n // Tag is inside list\n if (\n blogTags.indexOf(tag.id()) >= 0 ||\n (tag.parent() && blogTags.indexOf(tag.parent().id()) >= 0)\n ) {\n m.route.set(app.route(\"blog\"));\n }\n }\n });\n\n // Redirect discussion to blog article\n override(DiscussionPage.prototype, \"show\", function (original, discussion) {\n const discussionRedirectEnabled =\n app.forum.attribute(\"blogRedirectsEnabled\") === \"both\" ||\n app.forum.attribute(\"blogRedirectsEnabled\") === \"discussions_only\";\n\n if (\n discussionRedirectEnabled &&\n discussion &&\n discussion &&\n discussion.tags().length > 0\n ) {\n const blogTags = app.forum.attribute(\"blogTags\");\n\n const foundTags = discussion.tags().filter((tag) => {\n return (\n blogTags.indexOf(tag.id()) >= 0 ||\n (tag.parent() && blogTags.indexOf(tag.parent().id()) >= 0)\n );\n });\n\n // Only redirect if the discussion has blog tags\n if (foundTags.length > 0) {\n // Redirect to blog article\n const url = app.route(\"blogArticle\", {\n id: discussion.slug(),\n });\n\n // Setting the 3rd argument to true replaces the current state in the browser history, that way the browser back button works as expected.\n m.route.set(url, null, true);\n return null;\n }\n }\n\n return original(discussion);\n });\n}\n","import Model from \"flarum/Model\";\nimport mixin from \"flarum/utils/mixin\";\n\nexport default class BlogMeta extends mixin(Model, {\n discussion: Model.hasOne(\"discussion\"),\n featuredImage: Model.attribute(\"featuredImage\"),\n summary: Model.attribute(\"summary\"),\n isFeatured: Model.attribute(\"isFeatured\"),\n isSized: Model.attribute(\"isSized\"),\n isPendingReview: Model.attribute(\"isPendingReview\"),\n}) {}\n","import { extend } from \"flarum/extend\";\nimport IndexPage from \"flarum/components/IndexPage\";\nimport TagsPage from \"flarum/tags/components/TagsPage\";\n\nexport default function extendTagOverview() {\n extend(TagsPage.prototype, \"view\", function (markup) {\n if (app.forum.attribute(\"blogHideTags\") == false) return markup;\n\n // Get knowledge base tag ID's\n const knowledgeBaseTags = app.forum.attribute(\"blogTags\") || [];\n\n // Get tiles\n let tag_tiles = markup.children[1].children[1].children[0].children;\n\n // Map through the tiles and remove tiles that are part of the knowledge base\n markup.children[1].children[1].children[0].children = tag_tiles.map(\n (tile, i) => {\n return knowledgeBaseTags.indexOf(this.tags[i].id()) >= 0 ? null : tile;\n }\n );\n\n return markup;\n });\n\n extend(IndexPage.prototype, \"navItems\", function (items) {\n if (app.forum.attribute(\"blogHideTags\") == false) return items;\n\n const blogTags = app.forum.attribute(\"blogTags\") || [];\n\n blogTags.forEach((id) => {\n items.remove(`tag${id}`);\n });\n\n return items;\n });\n}\n","export default function () {\n // Save the original function before we override it\n const original_discussion_route = app.route.discussion;\n\n /**\n * Generate a URL to a discussion OR a Blog Article.\n *\n * CORE_CODE_OVERRIDE: This overrides the standard function from flarum/core.\n * The code is inspired from js/src/forum/routes.js and now handles different types of discussions.\n * It will try to keep the original function executed if the discussion being\n * processed isn't a blog article.\n *\n * @param {Discussion} discussion\n * @param {Integer} [near]\n * @return {String}\n */\n app.route.discussion = (discussion, near) => {\n const discussionRedirectEnabled =\n app.forum.attribute(\"blogRedirectsEnabled\") === \"both\" ||\n app.forum.attribute(\"blogRedirectsEnabled\") === \"discussions_only\";\n let shouldRedirect = false;\n if (discussionRedirectEnabled && discussion.tags().length > 0) {\n const blogTags = app.forum.attribute(\"blogTags\");\n\n const foundTags = discussion.tags().filter((tag) => {\n return (\n blogTags.indexOf(tag.id()) >= 0 ||\n (tag.parent() && blogTags.indexOf(tag.parent().id()) >= 0)\n );\n });\n\n if (foundTags.length > 0) {\n shouldRedirect = true;\n }\n }\n if (shouldRedirect) {\n return app.route(\"blogArticle\", {\n id: discussion.slug(),\n });\n } else {\n return original_discussion_route(discussion, near);\n }\n };\n}\n","import Component from \"flarum/Component\";\n\nexport default class ComposerPreview extends Component {\n view() {\n return
    ;\n }\n\n oncreate(vnode) {\n super.oncreate(vnode);\n\n s9e.TextFormatter.preview(vnode.attrs.content || \"\", vnode.dom);\n }\n}\n","import ComposerBody from \"flarum/components/ComposerBody\";\nimport Button from \"flarum/components/Button\";\nimport TextEditor from \"flarum/components/TextEditor\";\nimport ComposerPreview from \"./ComposerPreview\";\n\nexport default class Composer extends ComposerBody {\n oninit(vnode) {\n super.oninit(vnode);\n\n this.previewContent = false;\n }\n\n // Render\n view() {\n const hasContent =\n this.composer.fields.content() && this.composer.fields.content() !== \"\";\n const loading = this.loading || this.attrs.disabled;\n\n return (\n \n
    \n (this.previewContent = false)}\n >\n {app.translator.trans(\n \"v17development-flarum-blog.forum.composer.write\"\n )}\n \n (this.previewContent = true)}\n >\n {app.translator.trans(\n \"v17development-flarum-blog.forum.composer.view\"\n )}\n \n
    \n\n \n {this.previewContent && (\n
    \n {!hasContent &&\n app.translator.trans(\n \"v17development-flarum-blog.forum.composer.nothing_to_preview\"\n )}\n\n \n
    \n )}\n\n {TextEditor.component({\n submitLabel:\n this.attrs.submitLabel ||\n app.translator.trans(\"core.forum.composer_edit.submit_button\"),\n placeholder: this.attrs.placeholder,\n disabled: loading,\n composer: this.composer,\n preview: this.jumpToPreview && this.jumpToPreview.bind(this),\n onchange: this.composer.fields.content,\n onsubmit: this.onsubmit.bind(this),\n value: this.composer.fields.content(),\n })}\n
    \n \n );\n }\n\n // Submit trigger\n onsubmit() {\n if (this.attrs.onsubmit) {\n this.attrs.onsubmit();\n }\n }\n}\n","import Page from \"flarum/components/Page\";\nimport Button from \"flarum/components/Button\";\nimport Link from \"flarum/components/Link\";\nimport BlogAuthor from \"../components/BlogItemSidebar/BlogAuthor\";\nimport RenameArticleModal from \"../components/Modals/RenameArticleModal\";\nimport TagDiscussionModal from \"flarum/tags/components/TagDiscussionModal\";\nimport BlogPostSettingsModal from \"../components/Modals/BlogPostSettingsModal\";\nimport Composer from \"../components/Composer/Composer\";\nimport LanguageDropdown from \"../components/LanguageDropdown/LanguageDropdown\";\n\nexport default class BlogComposer extends Page {\n oninit(vnode) {\n super.oninit(vnode);\n\n app.setTitle(app.translator.trans(\"v17development-flarum-blog.forum.blog\"));\n\n // User cannot write blogs\n if (!app.forum.attribute(\"canWriteBlogPosts\")) {\n m.route.set(app.route(\"blog\"));\n return;\n }\n\n // Send history push\n app.history.push(\"blogComposer\");\n\n // Get languages (if enabled)\n this.languages = app.store.all(\"discussion-languages\");\n\n // Set body class\n this.bodyClass = \"BlogItemPage\";\n\n // Article data\n this.articleLanguage = m.route.param(\"lang\")\n ? m.route.param(\"lang\")\n : app.translator.locale;\n this.article = app.store.createRecord(\"discussions\");\n this.blogMeta = null;\n\n this.tags = [];\n\n // Pre-select tags\n if (m.route.param().tags) {\n const tagList = Array.isArray(m.route.param().tags)\n ? m.route.param().tags\n : m.route.param().tags.split(\",\");\n\n if (m.route.param().tags.length > 0) {\n tagList.forEach((tagId) => {\n const foundTag = app.store.getById(\"tags\", tagId);\n\n if (foundTag) {\n this.tags.push(foundTag);\n }\n });\n }\n }\n\n this.isSaving = false;\n }\n\n openTagsModal(e = null) {\n if (e) {\n e.preventDefault();\n }\n\n if (this.isSaving) return;\n\n app.modal.show(TagDiscussionModal, {\n selectedTags: this.tags,\n onsubmit: (tags) => {\n this.tags = tags;\n },\n });\n }\n\n openNameArticleModal(e = null) {\n if (e) {\n e.preventDefault();\n }\n\n if (this.isSaving) return;\n\n app.modal.show(RenameArticleModal, {\n article: this.article,\n onChange: (title) => {\n this.article.pushData({\n attributes: {\n title,\n },\n });\n },\n });\n }\n\n openBlogSettings(e) {\n e.preventDefault();\n\n if (this.isSaving) return;\n\n app.modal.show(BlogPostSettingsModal, {\n meta: this.blogMeta,\n onsubmit: (meta) => (this.blogMeta = meta),\n });\n }\n\n view() {\n const blogImage =\n this.blogMeta && this.blogMeta.featuredImage()\n ? `url(${this.blogMeta.featuredImage()})`\n : null;\n\n return (\n
    \n
    \n
    \n \n \n \n {app.translator.trans(\n \"v17development-flarum-blog.forum.return_to_overview\"\n )}\n \n \n
    \n
    \n
    \n
    \n this.openBlogSettings(e)}\n />\n\n
    \n \n {this.languages !== null && this.languages.length >= 1 && (\n \n (this.articleLanguage = language)\n }\n />\n )}\n\n this.openBlogSettings(e)}\n icon={\"fas fa-pencil-alt\"}\n loading={this.isSaving}\n >\n Update blog settings\n \n
    \n
    \n\n {/* Article Categories */}\n \n\n
    \n {/* Article name */}\n this.openNameArticleModal()}\n style={{ cursor: \"pointer\" }}\n >\n {this.article &&\n this.article.title() &&\n this.article.title() !== \"\"\n ? this.article.title()\n : app.translator.trans(\n \"v17development-flarum-blog.forum.composer.no_title\"\n )}\n\n e.preventDefault()}>\n \n \n \n\n
    \n this.create()}\n disabled={this.isSaving}\n />\n
    \n
    \n
    \n\n
    \n

    \n {app.translator.trans(\n \"v17development-flarum-blog.forum.comment_section.comments\"\n )}{\" \"}\n (0)\n

    \n {/* Locked */}\n\n
    \n
    \n
    \n {\" \"}\n {app.translator.trans(\n \"v17development-flarum-blog.forum.composer.comment_section\"\n )}\n
    \n
    \n
    \n
    \n
    \n
    \n \n
    \n
    \n
    \n \n );\n }\n\n create() {\n const blogTags = app.forum.attribute(\"blogTags\") || [];\n\n // Force tags\n if (this.tags.length === 0) {\n this.openTagsModal();\n return;\n }\n\n // Force title\n if (!this.article.title() || this.article.title() === \"\") {\n this.openNameArticleModal();\n return;\n }\n\n // Find knowledge base tags\n const findblogTags = this.tags.filter((tag) => {\n return blogTags.indexOf(tag.id()) >= 0;\n });\n\n // No knowledge base tags selected\n if (findblogTags.length === 0) {\n alert(\n app.translator.trans(\n \"v17development-flarum-blog.forum.composer.no_blog_tags_selected\"\n )\n );\n return;\n }\n\n if (\n (this.blogMeta === null ||\n !this.blogMeta.featuredImage() ||\n !this.blogMeta.summary()) &&\n !confirm(\n app.translator.trans(\n \"v17development-flarum-blog.forum.composer.post_without_blog_info\"\n )\n )\n ) {\n return;\n }\n\n let relationships = {\n tags: this.tags,\n };\n\n // Add languages if possible\n if (this.languages.length > 0) {\n relationships.language = app.store.getBy(\n \"discussion-languages\",\n \"code\",\n this.articleLanguage\n );\n }\n\n const data = {\n title: this.article.title(),\n content: app.composer.fields.content(),\n relationships,\n blogMeta:\n this.blogMeta !== null\n ? {\n featuredImage: this.blogMeta.featuredImage(),\n summary: this.blogMeta.summary(),\n isSized: this.blogMeta.isSized(),\n }\n : null,\n };\n\n this.isSaving = true;\n\n this.article\n .save(data)\n .then((article) => {\n setTimeout(() => {\n // Redirect to the article\n m.route.set(app.route(\"blogArticle\", { id: `${article.slug()}` }));\n }, 500);\n })\n .catch(() => {\n this.isSaving = false;\n m.redraw();\n });\n }\n}\n","export default function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}","import { extend } from \"flarum/extend\";\nimport IndexPage from \"flarum/components/IndexPage\";\nimport LinkButton from \"flarum/components/LinkButton\";\n\nexport default function addSidebarNav() {\n extend(IndexPage.prototype, \"navItems\", function (items) {\n if (\n app.forum.attribute(\"blogAddSidebarNav\") &&\n app.forum.attribute(\"blogAddSidebarNav\") !== \"0\"\n ) {\n items.add(\n \"blog\",\n \n {app.translator.trans(\"v17development-flarum-blog.forum.blog\")}\n ,\n 15\n );\n }\n\n return items;\n });\n}\n","import BlogItem from \"./pages/BlogItem\";\nimport Model from \"flarum/Model\";\nimport Discussion from \"flarum/models/Discussion\";\nimport BlogOverview from \"./pages/BlogOverview\";\nimport redirector from \"./utils/redirector\";\nimport BlogMeta from \"../common/Models/BlogMeta\";\nimport extendTagOverview from \"./utils/extendTagOverview\";\nimport discussionRouting from \"./utils/discussionRouting\";\nimport BlogComposer from \"./pages/BlogComposer\";\nimport compat from \"./compat\";\nimport addSidebarNav from \"./utils/addSidebarNav\";\n\n// Register Flarum Blog\napp.initializers.add(\"v17development-flarum-blog\", (app) => {\n app.routes.blog = { path: \"/blog\", component: BlogOverview };\n\n app.routes.blogCategory = {\n path: \"/blog/category/:slug\",\n component: BlogOverview,\n };\n\n app.routes.blogComposer = { path: \"/blog/compose\", component: BlogComposer };\n\n app.routes.blogArticle = { path: \"/blog/:id\", component: BlogItem };\n\n app.store.models.blogMeta = BlogMeta;\n\n Discussion.prototype.blogMeta = Model.hasOne(\"blogMeta\");\n\n // Redirect discussions/tags to their blog post/overview\n redirector();\n\n // Extend tag overview.\n // Hide tags which are used as blog category\n extendTagOverview();\n\n // Make that blog articles have a blog route and not a discussion route\n discussionRouting();\n\n // Add a link to the blog to the IndexPage sidebar, if enabled.\n addSidebarNav();\n});\n\ncompat();\n","import { compat } from \"@flarum/core/forum\";\nimport BlogAuthor from \"./components/BlogItemSidebar/BlogAuthor\";\nimport BlogItemSidebar from \"./components/BlogItemSidebar/BlogItemSidebar\";\n\nexport default () => {\n Object.assign(compat, {\n \"v17development/blog/components/BlogItemSidebar\": BlogItemSidebar,\n \"v17development/blog/components/BlogAuthor\": BlogAuthor,\n });\n};\n"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack://@v17development/flarum-blog/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://@v17development/flarum-blog/external \"flarum.core.compat['components/Page']\"","webpack://@v17development/flarum-blog/external \"flarum.core.compat['components/CommentPost']\"","webpack://@v17development/flarum-blog/external \"flarum.core.compat['components/PostStream']\"","webpack://@v17development/flarum-blog/external \"flarum.core.compat['states/PostStreamState']\"","webpack://@v17development/flarum-blog/external \"flarum.core.compat['Component']\"","webpack://@v17development/flarum-blog/external \"flarum.core.compat['tags/components/TagDiscussionModal']\"","webpack://@v17development/flarum-blog/external \"flarum.core.compat['utils/DiscussionControls']\"","webpack://@v17development/flarum-blog/external \"flarum.core.compat['components/Alert']\"","webpack://@v17development/flarum-blog/external \"flarum.core.compat['components/Button']\"","webpack://@v17development/flarum-blog/external \"flarum.core.compat['components/Dropdown']\"","webpack://@v17development/flarum-blog/external \"flarum.core.compat['components/Modal']\"","webpack://@v17development/flarum-blog/external \"flarum.core.compat['utils/ItemList']\"","webpack://@v17development/flarum-blog/external \"flarum.core.compat['utils/Stream']\"","webpack://@v17development/flarum-blog/external \"flarum.core.compat['components/Switch']\"","webpack://@v17development/flarum-blog/./src/forum/components/Modals/BlogPostSettingsModal.js","webpack://@v17development/flarum-blog/external \"flarum.core.compat['components/EditPostComposer']\"","webpack://@v17development/flarum-blog/external \"flarum.core.compat['utils/extractText']\"","webpack://@v17development/flarum-blog/./src/forum/components/Modals/RenameArticleModal.js","webpack://@v17development/flarum-blog/./src/forum/components/BlogPostController.js","webpack://@v17development/flarum-blog/external \"flarum.core.compat['helpers/listItems']\"","webpack://@v17development/flarum-blog/external \"flarum.core.compat['helpers/avatar']\"","webpack://@v17development/flarum-blog/./src/forum/components/BlogItemSidebar/BlogAuthor.js","webpack://@v17development/flarum-blog/external \"flarum.core.compat['components/Link']\"","webpack://@v17development/flarum-blog/./src/forum/components/BlogCategories.js","webpack://@v17development/flarum-blog/external \"flarum.core.compat['components/IndexPage']\"","webpack://@v17development/flarum-blog/external \"flarum.core.compat['components/SelectDropdown']\"","webpack://@v17development/flarum-blog/./src/forum/components/ForumNav.js","webpack://@v17development/flarum-blog/./src/forum/components/BlogItemSidebar/BlogItemSidebar.js","webpack://@v17development/flarum-blog/external \"flarum.core.compat['helpers/humanTime']\"","webpack://@v17development/flarum-blog/./src/forum/utils/tooltip.js","webpack://@v17development/flarum-blog/./src/forum/components/LanguageDropdown/Language.js","webpack://@v17development/flarum-blog/./src/forum/components/LanguageDropdown/LanguageDropdown.js","webpack://@v17development/flarum-blog/./src/forum/pages/BlogOverview.js","webpack://@v17development/flarum-blog/./src/forum/pages/BlogItem.js","webpack://@v17development/flarum-blog/external \"flarum.core.compat['Model']\"","webpack://@v17development/flarum-blog/external \"flarum.core.compat['models/Discussion']\"","webpack://@v17development/flarum-blog/external \"flarum.core.compat['components/DiscussionPage']\"","webpack://@v17development/flarum-blog/external \"flarum.core.compat['extend']\"","webpack://@v17development/flarum-blog/./src/forum/utils/redirector.js","webpack://@v17development/flarum-blog/external \"flarum.core.compat['utils/mixin']\"","webpack://@v17development/flarum-blog/./src/common/Models/BlogMeta.js","webpack://@v17development/flarum-blog/external \"flarum.core.compat['tags/components/TagsPage']\"","webpack://@v17development/flarum-blog/./src/forum/utils/extendTagOverview.js","webpack://@v17development/flarum-blog/./src/forum/utils/discussionRouting.js","webpack://@v17development/flarum-blog/external \"flarum.core.compat['components/ComposerBody']\"","webpack://@v17development/flarum-blog/external \"flarum.core.compat['components/TextEditor']\"","webpack://@v17development/flarum-blog/./src/forum/components/Composer/ComposerPreview.js","webpack://@v17development/flarum-blog/./src/forum/components/Composer/Composer.js","webpack://@v17development/flarum-blog/./src/forum/pages/BlogComposer.js","webpack://@v17development/flarum-blog/./node_modules/@babel/runtime/helpers/esm/extends.js","webpack://@v17development/flarum-blog/external \"flarum.core\"","webpack://@v17development/flarum-blog/external \"flarum.core.compat['components/LinkButton']\"","webpack://@v17development/flarum-blog/./src/forum/utils/addSidebarNav.js","webpack://@v17development/flarum-blog/./src/forum/index.js","webpack://@v17development/flarum-blog/./src/forum/compat.js","webpack://@v17development/flarum-blog/webpack/bootstrap","webpack://@v17development/flarum-blog/webpack/startup","webpack://@v17development/flarum-blog/webpack/runtime/compat get default export","webpack://@v17development/flarum-blog/webpack/runtime/define property getters","webpack://@v17development/flarum-blog/webpack/runtime/hasOwnProperty shorthand","webpack://@v17development/flarum-blog/webpack/runtime/make namespace object"],"names":["_inheritsLoose","subClass","superClass","prototype","Object","create","constructor","__proto__","flarum","core","compat","BlogPostSettingsModal","oninit","vnode","this","attrs","article","meta","blogMeta","app","store","createRecord","isNew","exists","summary","Stream","featuredImage","isFeatured","isSized","isPendingReview","className","title","content","fields","toArray","items","ItemList","add","style","maxWidth","minWidth","width","minHeight","bidi","placeholder","type","src","alt","marginTop","Switch","state","onchange","val","fontWeight","Button","loading","submitData","relationships","isComposer","discussion","onsubmit","e","preventDefault","pushData","attributes","hide","save","then","m","redraw","response","handleErrors","Modal","RenameArticleModal","name","redirect","translator","trans","onChange","url","slug","route","set","window","history","replaceState","document","BlogPostController","init","loadedPost","view","buttons","LanguageDiscussionModal","extensions","components","canRename","push","onclick","modal","show","icon","articlePost","firstPost","getById","firstPostId","disabled","canEdit","composer","load","EditPostComposer","post","canTag","TagDiscussionModal","forum","attribute","alerts","Alert","canChangeLanguage","canLock","DiscussionControls","isLocked","canHide","isHidden","canDelete","confirm","extractText","getCurrent","previous","back","Dropdown","label","buttonClassName","menuClassName","onshow","find","id","Component","BlogAuthor","author","user","backgroundColor","color","avatar","displayName","bio","listItems","BlogCategories","blogCategories","map","tagId","tag","tags","categoryItem","all","forEach","_tag","isChild","parent","href","ForumNav","navItems","IndexPage","screen","remove","BlogItemSidebar","itemlist","component","tooltip","element","$","Language","languages","options","reduce","o","lang","code","extra","language","uppercase","toUpperCase","LanguageDropdown","selected","keys","key","active","BlogOverview","setTitle","bodyClass","isLoading","featuredPosts","posts","hasMore","isLoadingMore","currentSelectedLanguage","param","locale","loadBlogOverview","preloadBlogOverview","preloadedApiDocument","setTimeout","bind","reloadData","q","length","filter","sort","articles","payload","links","next","slice","loadMore","replace","data","defaultImage","newArticle","location","pathname","clear","blogImage","blogTag","backgroundImage","isSticky","config","data-placement","humanTime","createdAt","commentCount","blogTags","indexOf","currentCategory","getBy","join","undefined","Page","BlogItem","near","found","loadBlogItem","split","includedPosts","included","articleId","record","a","b","stream","PostStreamState","goToNumber","matches","class","opacity","session","fontSize","marginRight","PostStream","onPositionChange","positionChanged","startNumber","endNumber","lastReadPostNumber","extend","currentTag","tagRedirectEnabled","override","DiscussionPage","original","BlogMeta","mixin","Model","extendTagOverview","TagsPage","markup","knowledgeBaseTags","tag_tiles","children","tile","i","original_discussion_route","shouldRedirect","ComposerPreview","oncreate","s9e","TextFormatter","preview","dom","Composer","previewContent","hasContent","TextEditor","submitLabel","jumpToPreview","value","ComposerBody","BlogComposer","articleLanguage","tagList","Array","isArray","foundTag","isSaving","openTagsModal","selectedTags","openNameArticleModal","openBlogSettings","cursor","originalContent","alert","_extends","assign","target","arguments","source","hasOwnProperty","call","apply","addSidebarNav","initializers","routes","blog","path","blogCategory","blogComposer","blogArticle","models","Discussion","redirector","discussionRouting","__webpack_module_cache__","__webpack_require__","moduleId","exports","module","__webpack_modules__","n","getter","__esModule","d","definition","defineProperty","enumerable","get","obj","prop","r","Symbol","toStringTag"],"mappings":"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","file":"forum.js","sourcesContent":["export default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['components/Page'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['components/CommentPost'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['components/PostStream'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['states/PostStreamState'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['Component'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['tags/components/TagDiscussionModal'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['utils/DiscussionControls'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['components/Alert'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['components/Button'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['components/Dropdown'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['components/Modal'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['utils/ItemList'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['utils/Stream'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['components/Switch'];","import Modal from \"flarum/components/Modal\";\nimport Button from \"flarum/components/Button\";\nimport ItemList from \"flarum/utils/ItemList\";\nimport Stream from \"flarum/utils/Stream\";\nimport Switch from \"flarum/components/Switch\";\n\nexport default class BlogPostSettingsModal extends Modal {\n oninit(vnode) {\n super.oninit(vnode);\n\n if (this.attrs.article) {\n this.meta =\n this.attrs.article && this.attrs.article.blogMeta()\n ? this.attrs.article.blogMeta()\n : app.store.createRecord(\"blogMeta\");\n } else {\n this.meta = this.attrs.meta\n ? this.attrs.meta\n : app.store.createRecord(\"blogMeta\");\n }\n\n this.isNew = !this.meta.exists;\n\n this.summary = Stream(this.meta.summary() || \"\");\n\n this.featuredImage = Stream(this.meta.featuredImage() || \"\");\n\n this.isFeatured = Stream(this.meta.isFeatured() || false);\n this.isSized = Stream(this.meta.isSized() || false);\n this.isPendingReview = Stream(this.meta.isPendingReview() || false);\n }\n\n className() {\n return \"Modal--small Support-Modal\";\n }\n\n title() {\n return \"Blog post settings\";\n }\n\n content() {\n return (\n
    \n
    {this.fields().toArray()}
    \n
    \n );\n }\n\n fields() {\n const items = new ItemList();\n\n items.add(\n \"summary\",\n
    \n \n \n\n \n This summary will be visible on the blog overview page and will be\n used for SEO purposes.\n \n
    ,\n 30\n );\n\n items.add(\n \"image\",\n
    \n \n \n\n Best image resolution for social media: 1200x630\n\n {this.featuredImage() != \"\" && (\n \n )}\n
    ,\n 30\n );\n\n items.add(\n \"sized\",\n
    \n {Switch.component(\n {\n state: this.isSized() == true,\n onchange: (val) => {\n this.isSized(val);\n },\n },\n [\n Highlighted post,\n
    \n Give this post a big image on the blog overview page.\n
    ,\n ]\n )}\n
    ,\n -10\n );\n\n items.add(\n \"submit\",\n
    \n {Button.component(\n {\n type: \"submit\",\n className: \"Button Button--primary SupportModal-save\",\n loading: this.loading,\n },\n \"Update\"\n )}\n
    ,\n -10\n );\n\n return items;\n }\n\n submitData() {\n return {\n summary: this.summary(),\n featuredImage: this.featuredImage(),\n isFeatured: this.isFeatured(),\n isSized: this.isSized(),\n isPendingReview: this.isPendingReview(),\n relationships:\n this.isNew && !this.attrs.isComposer\n ? {\n discussion: this.attrs.article,\n }\n : null,\n };\n }\n\n onsubmit(e) {\n e.preventDefault();\n\n // Submit data\n if (this.attrs.onsubmit) {\n // Update attributes\n this.meta.pushData({\n attributes: this.submitData(),\n });\n\n // Push\n this.attrs.onsubmit(this.meta);\n\n this.hide();\n return;\n }\n\n this.loading = true;\n\n this.meta.save(this.submitData()).then(\n () => {\n if (this.attrs.article) {\n this.attrs.article.pushData({\n relationships: {\n blogMeta: this.meta,\n },\n });\n }\n\n this.hide();\n m.redraw();\n },\n (response) => {\n this.loading = false;\n this.handleErrors(response);\n }\n );\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['components/EditPostComposer'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['utils/extractText'];","import Modal from \"flarum/components/Modal\";\nimport Button from \"flarum/components/Button\";\nimport ItemList from \"flarum/utils/ItemList\";\nimport Stream from \"flarum/utils/Stream\";\n\nexport default class RenameArticleModal extends Modal {\n oninit(vnode) {\n super.oninit(vnode);\n\n this.article = this.attrs.article;\n\n this.name = Stream(this.article.title() || \"\");\n\n this.redirect = this.attrs.redirect;\n }\n\n className() {\n return \"Modal--small Support-Modal\";\n }\n\n title() {\n return app.translator.trans(\n \"v17development-flarum-blog.forum.tools.rename_article\"\n );\n }\n\n content() {\n return (\n
    \n
    {this.fields().toArray()}
    \n
    \n );\n }\n\n fields() {\n const items = new ItemList();\n\n items.add(\n \"name\",\n
    \n \n \n
    ,\n 50\n );\n\n items.add(\n \"submit\",\n
    \n {Button.component(\n {\n type: \"submit\",\n className: \"Button Button--primary SupportModal-save\",\n loading: this.loading,\n },\n \"Update\"\n )}\n
    ,\n -10\n );\n\n return items;\n }\n\n submitData() {\n return {\n title: this.name(),\n };\n }\n\n onsubmit(e) {\n e.preventDefault();\n\n this.loading = true;\n\n // Do not save\n if (this.attrs.onChange) {\n this.attrs.onChange(this.name());\n this.hide();\n\n return;\n }\n\n this.article\n .save({\n title: this.name(),\n })\n .then(\n () => {\n this.hide();\n\n // Redirect\n if (this.redirect) {\n const url = `/blog/${this.article.slug()}`;\n\n m.route.set(url, true);\n window.history.replaceState(null, document.title, url);\n }\n },\n (response) => {\n this.loading = false;\n this.handleErrors(response);\n }\n );\n }\n}\n","import Component from \"flarum/Component\";\nimport TagDiscussionModal from \"flarum/tags/components/TagDiscussionModal\";\nimport DiscussionControls from \"flarum/utils/DiscussionControls\";\nimport Alert from \"flarum/components/Alert\";\nimport Button from \"flarum/components/Button\";\nimport Dropdown from \"flarum/components/Dropdown\";\nimport BlogPostSettingsModal from \"./Modals/BlogPostSettingsModal\";\nimport EditPostComposer from \"flarum/components/EditPostComposer\";\nimport extractText from \"flarum/utils/extractText\";\nimport RenameArticleModal from \"./Modals/RenameArticleModal\";\n\nexport default class BlogPostController extends Component {\n init() {\n this.loadedPost = false;\n }\n\n view() {\n const article = this.attrs.article;\n let buttons = [];\n\n // Working for GlowingBlue version\n const LanguageDiscussionModal =\n flarum.extensions[\"fof-discussion-language\"] &&\n typeof flarum.extensions[\"fof-discussion-language\"].components !==\n \"undefined\"\n ? flarum.extensions[\"fof-discussion-language\"].components\n .LanguageDiscussionModal\n : null;\n\n // Rename article\n if (article.canRename()) {\n buttons.push(\n Button.component(\n {\n className: \"Button\",\n onclick: () => app.modal.show(RenameArticleModal, { article }),\n icon: \"fas fa-pencil-alt\",\n },\n app.translator.trans(\n \"v17development-flarum-blog.forum.tools.rename_article\"\n )\n )\n );\n }\n\n const articlePost = article.firstPost()\n ? article.firstPost()\n : app.store.getById(\"posts\", article.firstPostId());\n\n // Edit article\n buttons.push(\n Button.component(\n {\n className: \"Button\",\n disabled: !articlePost || !articlePost.canEdit(),\n onclick: () => {\n app.composer.load(EditPostComposer, { post: articlePost });\n app.composer.show();\n },\n icon: \"fas fa-edit\",\n },\n app.translator.trans(\n \"v17development-flarum-blog.forum.tools.edit_article\"\n )\n )\n );\n\n // Article settings\n buttons.push(\n Button.component(\n {\n className: \"Button\",\n onclick: () => app.modal.show(BlogPostSettingsModal, { article }),\n icon: \"fas fa-cogs\",\n },\n app.translator.trans(\n \"v17development-flarum-blog.forum.tools.article_settings\"\n )\n )\n );\n\n // Update categories\n if (article.canTag()) {\n buttons.push(\n Button.component(\n {\n className: \"Button\",\n onclick: () =>\n app.modal.show(TagDiscussionModal, { discussion: article }),\n icon: \"fas fa-tag\",\n },\n app.translator.trans(\n \"v17development-flarum-blog.forum.tools.update_category\"\n )\n )\n );\n }\n\n // Approve article\n if (article.blogMeta() && article.blogMeta().isPendingReview()) {\n buttons.push(
  • );\n\n buttons.push(\n Button.component(\n {\n className: \"Button\",\n disabled: !app.forum.attribute(\"canApproveBlogPosts\"),\n onclick: () => {\n article\n .blogMeta()\n .save({\n isPendingReview: false,\n })\n .then(\n () => {\n app.alerts.show(\n Alert,\n { type: \"success\" },\n app.translator.trans(\n \"v17development-flarum-blog.forum.review_article.approve_article_approved\"\n )\n );\n },\n (response) => {\n this.loading = false;\n this.handleErrors(response);\n }\n );\n },\n icon: \"fas fa-thumbs-up\",\n },\n app.translator.trans(\n \"v17development-flarum-blog.forum.review_article.approve_article\"\n )\n )\n );\n }\n\n // Language\n if (\n article.canChangeLanguage &&\n article.canChangeLanguage() &&\n LanguageDiscussionModal\n ) {\n buttons.push(\n Button.component(\n {\n icon: \"fas fa-globe\",\n onclick: () =>\n app.modal.show(LanguageDiscussionModal, { discussion: article }),\n },\n app.translator.trans(\n \"fof-discussion-language.forum.discussion_controls.change_language_button\"\n )\n )\n );\n }\n\n buttons.push(
  • );\n\n // Lock article\n if (article.canLock()) {\n buttons.push(\n Button.component(\n {\n className: \"Button\",\n onclick: DiscussionControls.lockAction.bind(article),\n icon: `fas ${\n article.isLocked() ? \"fa-comments\" : \"fa-comment-slash\"\n }`,\n },\n article.isLocked()\n ? app.translator.trans(\n \"v17development-flarum-blog.forum.tools.enable_comments\"\n )\n : app.translator.trans(\n \"v17development-flarum-blog.forum.tools.disable_comments\"\n )\n )\n );\n }\n\n // Hide/show/delete\n if (article.canHide()) {\n // Article is hidden\n if (article.isHidden()) {\n // Recover article\n buttons.push(\n Button.component(\n {\n className: \"Button\",\n onclick: DiscussionControls.restoreAction.bind(article),\n icon: \"fas fa-eye\",\n },\n app.translator.trans(\n \"v17development-flarum-blog.forum.tools.recover_article\"\n )\n )\n );\n\n // Delete article\n if (article.canDelete()) {\n buttons.push(\n Button.component(\n {\n className: \"Button\",\n onclick: () => {\n // Confirm deletion\n if (\n confirm(\n extractText(\n app.translator.trans(\n \"core.forum.discussion_controls.delete_confirmation\"\n )\n )\n )\n ) {\n // Redirect if the current page is an blog article\n if (app.history.getCurrent().name === \"blogArticle\") {\n if (app.previous) {\n app.history.back();\n } else {\n m.route.set(app.route(\"blog\"));\n }\n }\n\n return article.delete().then(() => {\n m.redraw();\n });\n }\n },\n icon: \"far fa-trash-alt\",\n },\n app.translator.trans(\n \"v17development-flarum-blog.forum.tools.delete_forever\"\n )\n )\n );\n }\n } else {\n // Hide article\n buttons.push(\n Button.component(\n {\n className: \"Button\",\n onclick: DiscussionControls.hideAction.bind(article),\n icon: \"fas fa-eye-slash\",\n },\n app.translator.trans(\n \"v17development-flarum-blog.forum.tools.hide_article\"\n )\n )\n );\n }\n }\n\n return (\n
    \n
    \n {Dropdown.component(\n {\n icon: \"fas fa-cog\",\n label: \"Manage\",\n buttonClassName: \"Button\",\n menuClassName: \"Dropdown-menu--right\",\n onshow: () => {\n // Get post data to make sure they can edit the post\n if (articlePost && !articlePost.canEdit() && !this.loadedPost) {\n this.loadedPost = true;\n app.store\n .find(\n \"posts\",\n article.firstPost()\n ? article.firstPost().id()\n : article.firstPostId()\n )\n .then(() => {})\n .catch(() => {})\n .then(() => m.redraw());\n }\n },\n },\n buttons\n )}\n
    \n
    \n );\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['helpers/listItems'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['helpers/avatar'];","import Component from \"flarum/Component\";\nimport ItemList from \"flarum/utils/ItemList\";\nimport listItems from \"flarum/helpers/listItems\";\nimport avatar from \"flarum/helpers/avatar\";\n\nexport default class BlogAuthor extends Component {\n view() {\n const author = !this.attrs.loading\n ? this.attrs.article\n ? this.attrs.article.user()\n : this.attrs.user\n : null;\n\n return (\n
    \n \n\n
    \n {author ? (\n avatar(author)\n ) : (\n \n )}\n
    \n\n {author && (\n
    \n \n {author.displayName()}\n \n

    \n {author.bio && author.bio()}\n

    \n\n
      \n {listItems(this.items().toArray())}\n
    \n
    \n )}\n\n {this.attrs.loading && (\n
    \n \n  \n \n \n  \n

    \n \n  \n

    \n \n  \n

    \n
    \n )}\n
    \n );\n }\n\n items() {\n return new ItemList();\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['components/Link'];","import Component from \"flarum/Component\";\nimport Link from \"flarum/components/Link\";\n\nexport default class BlogCategories extends Component {\n oninit(vnode) {\n super.oninit(vnode);\n\n this.blogCategories = app.forum.attribute(\"blogTags\");\n }\n\n view() {\n return (\n
    \n

    \n {app.translator.trans(\"v17development-flarum-blog.forum.categories\")}\n

    \n\n {this.blogCategories &&\n this.blogCategories.map((tagId) => {\n const tag = app.store.getById(\"tags\", tagId);\n\n if (!tag) return null;\n\n const tags = [];\n\n // Add tag\n tags.push(this.categoryItem(tag));\n\n // Add tags\n app.store.all(\"tags\").forEach((_tag) => {\n if (_tag.isChild() && _tag.parent().id() === tag.id()) {\n tags.push(this.categoryItem(_tag));\n }\n });\n\n return tags;\n })}\n
    \n );\n }\n\n // Category item\n categoryItem(tag) {\n return (\n \n \n \n \n {tag.name()}\n \n );\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['components/IndexPage'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['components/SelectDropdown'];","import Component from \"flarum/Component\";\nimport IndexPage from \"flarum/components/IndexPage\";\nimport SelectDropdown from \"flarum/components/SelectDropdown\";\n\nexport default class ForumNav extends Component {\n view() {\n return (\n
    \n

    \n {app.translator.trans(\"v17development-flarum-blog.forum.forum_nav\")}\n

    \n \n
    \n );\n }\n\n navItems() {\n const items = IndexPage.prototype.navItems();\n\n // We want the active screen to show up in the top dropdown when on mobile.\n if (app.screen() !== \"phone\") {\n items.remove(\"blog\");\n }\n\n return items;\n }\n}\n","import Component from \"flarum/Component\";\nimport ItemList from \"flarum/utils/ItemList\";\nimport listItems from \"flarum/helpers/listItems\";\nimport BlogAuthor from \"./BlogAuthor\";\nimport BlogCategories from \"../BlogCategories\";\nimport ForumNav from \"../ForumNav\";\n\nexport default class BlogItemSidebar extends Component {\n view() {\n return (\n
    \n
      {listItems(this.items().toArray())}
    \n
    \n );\n }\n\n items() {\n const itemlist = new ItemList();\n\n itemlist.add(\"author\", BlogAuthor.component(this.attrs), 0);\n\n itemlist.add(\"categories\", BlogCategories.component(this.attrs), 0);\n\n itemlist.add(\"nav\", ForumNav.component(this.attrs), 0);\n\n return itemlist;\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['helpers/humanTime'];","export default function tooltip(element) {\n $(element).tooltip();\n}\n","import Component from \"flarum/Component\";\n\nexport default class Language extends Component {\n oninit(vnode) {\n super.oninit(vnode);\n\n this.languages = app.store.all(\"discussion-languages\");\n this.options = this.languages.reduce((o, lang) => {\n o[lang.code()] = (\n \n {lang.name()}\n \n );\n\n return o;\n }, this.attrs.extra || {});\n }\n\n view() {\n const { language, uppercase } = this.attrs;\n const name = language.name() || \"\";\n\n return (\n \n \n  \n {uppercase ? name.toUpperCase() : name}\n \n );\n }\n}\n","import Component from \"flarum/Component\";\nimport Dropdown from \"flarum/components/Dropdown\";\nimport Button from \"flarum/components/Button\";\nimport Language from \"./Language\";\n\nexport default class LanguageDropdown extends Component {\n oninit(vnode) {\n super.oninit(vnode);\n this.languages = app.store.all(\"discussion-languages\");\n this.options = this.languages.reduce((o, lang) => {\n o[lang.code()] = ;\n\n return o;\n }, this.attrs.extra || {});\n }\n\n view() {\n const selected = this.attrs.selected;\n\n const items = Object.keys(this.options).map((key) => {\n const isSelected = selected || \"any\";\n const active = key === isSelected;\n\n return Button.component(\n {\n active,\n icon: active ? \"fas fa-check\" : true,\n onclick: () => this.attrs.onclick(key),\n },\n this.options[key]\n );\n });\n\n return Dropdown.component(\n {\n buttonClassName: \"Button\",\n label: this.options[selected] || this.options[this.attrs.default],\n menuClassName: \"Dropdown-menu--right\",\n },\n items\n );\n }\n}\n","import Page from \"flarum/components/Page\";\nimport Button from \"flarum/components/Button\";\nimport humanTime from \"flarum/helpers/humanTime\";\nimport BlogCategories from \"../components/BlogCategories\";\nimport Link from \"flarum/components/Link\";\nimport tooltip from \"../utils/tooltip\";\nimport LanguageDropdown from \"../components/LanguageDropdown/LanguageDropdown\";\nimport ForumNav from \"../components/ForumNav\";\n\nexport default class BlogOverview extends Page {\n oninit(vnode) {\n super.oninit(vnode);\n\n app.setTitle(app.translator.trans(\"v17development-flarum-blog.forum.blog\"));\n\n this.bodyClass = \"BlogOverviewPage\";\n\n this.isLoading = true;\n this.featuredPosts = [];\n this.posts = [];\n this.hasMore = null;\n this.isLoadingMore = false;\n\n this.languages = app.store.all(\"discussion-languages\");\n\n this.currentSelectedLanguage = m.route.param(\"lang\")\n ? m.route.param(\"lang\")\n : app.translator.locale;\n\n // Send history push\n app.history.push(\"blog\");\n\n this.loadBlogOverview();\n }\n\n // Load blog overview\n loadBlogOverview() {\n const preloadBlogOverview = app.preloadedApiDocument();\n\n if (preloadBlogOverview) {\n // We must wrap this in a setTimeout because if we are mounting this\n // component for the first time on page load, then any calls to m.redraw\n // will be ineffective and thus any configs (scroll code) will be run\n // before stuff is drawn to the page.\n setTimeout(this.show.bind(this, preloadBlogOverview), 0);\n } else {\n this.reloadData();\n }\n\n m.redraw();\n }\n\n reloadData() {\n let q = `is:blog${\n m.route.param(\"slug\") ? ` tag:${m.route.param(\"slug\")}` : \"\"\n }`;\n\n if (this.languages !== null && this.languages.length >= 1) {\n q += ` language:${this.currentSelectedLanguage}`;\n }\n\n app.store\n .find(\"discussions\", {\n filter: {\n q,\n },\n sort: \"-createdAt\",\n })\n .then(this.show.bind(this))\n .catch(() => {\n m.redraw();\n });\n }\n\n // Show blog posts\n show(articles) {\n if (articles.length === 0) {\n this.isLoading = false;\n m.redraw();\n\n return;\n }\n\n // Set pagination\n this.hasMore =\n articles.payload.links && articles.payload.links.next\n ? articles.payload.links.next\n : null;\n\n this.featuredPosts = articles.slice(0, 3);\n this.posts = articles.length >= 4 ? articles.slice(3, articles.length) : [];\n\n this.isLoading = false;\n\n m.redraw();\n }\n\n // Load more blog posts\n loadMore() {\n this.isLoadingMore = true;\n\n app.store\n .find(this.hasMore.replace(app.forum.attribute(\"apiUrl\"), \"\"))\n .then((data) => {\n data.map((article) => this.posts.push(article));\n\n // Update hasmore button\n this.hasMore =\n data.payload.links && data.payload.links.next\n ? data.payload.links.next\n : null;\n })\n .catch(() => {})\n .then(() => {\n this.isLoadingMore = false;\n m.redraw();\n });\n }\n\n title() {\n if (!m.route.param(\"slug\")) {\n return (\n

    \n {app.translator.trans(\n \"v17development-flarum-blog.forum.recent_posts\"\n )}\n

    \n );\n }\n\n const tag = app.store\n .all(\"tags\")\n .filter((tag) => tag.slug() === m.route.param(\"slug\"));\n\n return (\n

    \n {tag && tag[0] && tag[0].name()}\n \n {\" \"}\n -{\" \"}\n \n {app.translator.trans(\n \"v17development-flarum-blog.forum.return_to_overview\"\n )}\n \n \n

    \n );\n }\n\n view() {\n const defaultImage = app.forum.attribute(\"blogDefaultImage\")\n ? `url(${\n app.forum.attribute(\"baseUrl\") +\n \"/assets/\" +\n app.forum.attribute(\"blogDefaultImage\")\n })`\n : null;\n\n return (\n
    \n
    \n
    \n
    \n {app.forum.attribute(\"canWriteBlogPosts\") && (\n this.newArticle()}\n icon={\"fas fa-pencil-alt\"}\n >\n {app.translator.trans(\n \"v17development-flarum-blog.forum.compose.write_article\"\n )}\n \n )}\n\n {this.languages !== null && this.languages.length >= 1 && (\n {\n this.currentSelectedLanguage = language;\n\n m.route.set(document.location.pathname, {\n lang: language,\n });\n\n this.reloadData();\n }}\n />\n )}\n
    \n\n {this.title()}\n\n
    \n\n
    \n {/* Ghost data */}\n {this.isLoading &&\n [0, 1, 2].map(() => (\n \n
    \n

     

    \n\n
    \n \n \n \n
    \n
    \n
    \n ))}\n\n {!this.isLoading &&\n this.featuredPosts.length >= 0 &&\n this.featuredPosts.map((article) => {\n const blogImage =\n article.blogMeta() && article.blogMeta().featuredImage()\n ? `url(${article.blogMeta().featuredImage()})`\n : defaultImage;\n const blogTag = article.tags()\n ? article.tags().filter((tag) => tag.isChild())\n : [];\n\n return (\n \n
    \n {blogTag[0] && {blogTag[0].name()}}\n {article.isSticky() && (\n \n \n \n )}\n {((article.blogMeta() &&\n article.blogMeta().isPendingReview() == true) ||\n article.isHidden()) && (\n \n \n \n )}\n {article.blogMeta() &&\n article.blogMeta().isPendingReview() == true && (\n \n {\" \"}\n {app.translator.trans(\n \"v17development-flarum-blog.forum.review_article.pending_review_title\"\n )}\n \n )}\n
    \n\n
    \n

    {article.title()}

    \n\n
    \n \n {\" \"}\n {humanTime(article.createdAt())}\n \n \n {\" \"}\n {article.user()\n ? article.user().displayName()\n : \"[Deleted]\"}\n \n \n {\" \"}\n {article.commentCount() - 1}\n \n
    \n
    \n \n );\n })}\n
    \n
    \n\n
    \n
    \n {this.isLoading &&\n [false, false, true, false].map((state) => {\n return (\n \n
    \n
    \n

     

    \n

     

    \n\n
    \n \n \n \n
    \n
    \n
    \n );\n })}\n\n {!this.isLoading &&\n this.posts.length >= 1 &&\n this.posts.map((article) => {\n const blogImage =\n article.blogMeta() && article.blogMeta().featuredImage()\n ? `url(${article.blogMeta().featuredImage()})`\n : defaultImage;\n const isSized =\n article.blogMeta() && article.blogMeta().isSized();\n const summary =\n article.blogMeta() && article.blogMeta().summary()\n ? article.blogMeta().summary()\n : \"\";\n\n return (\n \n
    \n
    \n

    \n {article.title()}\n {((article.blogMeta() &&\n article.blogMeta().isPendingReview() == true) ||\n article.isHidden()) && (\n \n )}\n {article.blogMeta() &&\n article.blogMeta().isPendingReview() == true && (\n \n )}\n

    \n

    {summary}

    \n\n
    \n \n {\" \"}\n {humanTime(article.createdAt())}\n \n \n {\" \"}\n {article.user()\n ? article.user().displayName()\n : \"[Deleted]\"}\n \n \n {\" \"}\n {article.commentCount() - 1}\n \n
    \n
    \n \n );\n })}\n\n {!this.isLoading &&\n this.featuredPosts.length > 0 &&\n this.hasMore === null && (\n

    \n {app.translator.trans(\n \"v17development-flarum-blog.forum.no_more_posts\"\n )}\n

    \n )}\n\n {!this.isLoading &&\n this.featuredPosts.length === 0 &&\n this.posts.length === 0 && (\n

    \n {app.translator.trans(\n \"v17development-flarum-blog.forum.category_empty\"\n )}\n

    \n )}\n\n {!this.isLoading && this.hasMore !== null && (\n
    \n this.loadMore()}\n icon={\"fas fa-chevron-down\"}\n loading={this.isLoadingMore}\n >\n {app.translator.trans(\n \"core.forum.discussion_list.load_more_button\"\n )}\n \n
    \n )}\n
    \n\n
    \n \n \n
    \n \n \n \n );\n }\n\n newArticle() {\n let foundMainTag = false;\n let tags = [];\n\n const blogTags = app.forum.attribute(\"blogTags\");\n\n // Pre-select selected tags\n app.store.all(\"tags\").forEach((_tag) => {\n // Find main blog tag\n if (\n !foundMainTag &&\n !_tag.isChild() &&\n blogTags.indexOf(_tag.id()) >= 0\n ) {\n tags.push(_tag);\n }\n });\n\n // Get current category\n const currentCategory = app.store.getBy(\n \"tags\",\n \"slug\",\n m.route.param(\"slug\")\n );\n\n if (currentCategory) {\n tags.push(currentCategory);\n }\n\n // Redirect to the composer\n m.route.set(\n app.route(\"blogComposer\", {\n tags: tags.map((tag) => tag.id()).join(),\n lang:\n this.languages.length > 0 ? this.currentSelectedLanguage : undefined,\n })\n );\n }\n}\n","import Page from \"flarum/components/Page\";\nimport CommentPost from \"flarum/components/CommentPost\";\nimport PostStream from \"flarum/components/PostStream\";\nimport PostStreamState from \"flarum/states/PostStreamState\";\nimport BlogPostController from \"../components/BlogPostController\";\nimport BlogItemSidebar from \"../components/BlogItemSidebar/BlogItemSidebar\";\nimport Link from \"flarum/components/Link\";\nimport BlogOverview from \"./BlogOverview\";\n\nexport default class BlogItem extends Page {\n oninit(vnode) {\n super.oninit(vnode);\n\n app.setTitle(app.translator.trans(\"v17development-flarum-blog.forum.blog\"));\n\n // Send history push\n app.history.push(\"blogArticle\");\n\n this.bodyClass = \"BlogItemPage\";\n\n this.near = m.route.param(\"near\") || 0;\n\n this.loading = true;\n this.found = false;\n this.article = null;\n\n this.loadBlogItem();\n }\n\n // Load blog overview\n loadBlogItem() {\n const preloadBlogOverview = app.preloadedApiDocument();\n\n if (preloadBlogOverview) {\n // We must wrap this in a setTimeout because if we are mounting this\n // component for the first time on page load, then any calls to m.redraw\n // will be ineffective and thus any configs (scroll code) will be run\n // before stuff is drawn to the page.\n setTimeout(this.show.bind(this, preloadBlogOverview), 0);\n } else {\n app.store\n .find(\"discussions\", m.route.param(\"id\").split(\"-\")[0])\n .then(this.show.bind(this))\n .catch(() => {\n m.redraw();\n });\n }\n\n m.redraw();\n }\n\n // Show blog post\n show(article) {\n // Set article data\n this.article = article;\n\n // Update title\n app.setTitle(\n `${article.title()} - ${app.translator.trans(\n \"v17development-flarum-blog.forum.blog\"\n )}`\n );\n\n this.loading = false;\n\n let includedPosts = [];\n if (article.payload && article.payload.included) {\n const articleId = article.id();\n\n includedPosts = article.payload.included\n .filter(\n (record) =>\n record.type === \"posts\" &&\n record.relationships &&\n record.relationships.discussion &&\n record.relationships.discussion.data.id === articleId\n )\n .map((record) => app.store.getById(\"posts\", record.id))\n .sort((a, b) => a.id() - b.id())\n .slice(0, 20);\n }\n\n this.stream = new PostStreamState(article, includedPosts);\n\n // Scroll to specific post\n if (this.near) {\n this.stream.goToNumber(this.near, true);\n }\n\n m.redraw();\n }\n\n view() {\n const defaultImage = app.forum.attribute(\"blogDefaultImage\")\n ? `url(${\n app.forum.attribute(\"baseUrl\") +\n \"/assets/\" +\n app.forum.attribute(\"blogDefaultImage\")\n })`\n : null;\n const blogImage =\n this.article &&\n this.article.blogMeta() &&\n this.article.blogMeta().featuredImage()\n ? `url(${this.article.blogMeta().featuredImage()})`\n : defaultImage;\n let articlePost = null;\n\n if (!this.loading && this.article) {\n articlePost = this.article.firstPost()\n ? this.article.firstPost()\n : app.store.getById(\"posts\", this.article.firstPostId());\n }\n\n return (\n
    \n
    \n
    \n {\n if (app.previous.matches(BlogOverview)) {\n e.preventDefault();\n history.back();\n }\n }}\n >\n \n \n {app.translator.trans(\n \"v17development-flarum-blog.forum.return_to_overview\"\n )}\n \n \n
    \n
    \n
    \n
    \n \n\n {this.article &&\n app.session.user &&\n (app.session.user.canEdit() ||\n this.article.canRename() ||\n (this.article.posts() &&\n this.article.posts()[0].canEdit())) && (\n \n )}\n\n {/* Article Categories */}\n
    \n {!this.loading &&\n this.article &&\n this.article.tags() &&\n this.article\n .tags()\n .map((tag) => (\n \n {tag.name()}\n \n ))}\n\n {this.loading &&\n [0, 1].map(() => (\n \n Category\n \n ))}\n
    \n\n
    \n {/* Article name */}\n \n {this.article ? this.article.title() : \"Ghost title\"}\n {this.article &&\n this.article.isHidden() &&\n `(${app.translator.trans(\n \"v17development-flarum-blog.forum.hidden\"\n )})`}\n \n\n {this.loading &&\n [0, 1, 2].map(() => (\n
    \n

    \n  \n

    \n

    \n  \n

    \n

    \n  \n

    \n

     

    \n
    \n ))}\n\n {!this.loading &&\n this.article.blogMeta() &&\n this.article.blogMeta().isPendingReview() == true && (\n
    \n \n
    \n {\" \"}\n {app.translator.trans(\n \"v17development-flarum-blog.forum.review_article.pending_review\"\n )}\n
    \n \n
    \n )}\n\n {!this.loading && articlePost && (\n \n )}\n
    \n
    \n\n
    \n

    \n {app.translator.trans(\n \"v17development-flarum-blog.forum.comment_section.comments\"\n )}{\" \"}\n ({this.article ? this.article.commentCount() - 1 : 0})\n

    \n {/* Locked */}\n {!this.loading &&\n this.article.isLocked &&\n this.article.isLocked() && (\n
    \n
    \n
    \n {\" \"}\n {app.translator.trans(\n \"v17development-flarum-blog.forum.comment_section.locked\"\n )}\n
    \n
    \n
    \n )}\n\n {!this.loading &&\n this.article &&\n PostStream.component({\n discussion: this.article,\n stream: this.stream,\n onPositionChange: this.positionChanged.bind(this),\n })}\n
    \n
    \n\n \n
    \n
    \n
    \n );\n }\n\n positionChanged(startNumber, endNumber) {\n const article = this.article;\n\n if (app.session.user && endNumber > (article.lastReadPostNumber() || 0)) {\n article.save({ lastReadPostNumber: endNumber });\n m.redraw();\n }\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['Model'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['models/Discussion'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['components/DiscussionPage'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['extend'];","import IndexPage from \"flarum/components/IndexPage\";\nimport DiscussionPage from \"flarum/components/DiscussionPage\";\nimport { extend, override } from \"flarum/extend\";\n\nexport default function () {\n // Redirect tag to blog category\n extend(IndexPage.prototype, \"oncreate\", function () {\n const tag = this.currentTag();\n const tagRedirectEnabled =\n app.forum.attribute(\"blogRedirectsEnabled\") === \"both\" ||\n app.forum.attribute(\"blogRedirectsEnabled\") === \"tags_only\";\n\n // Only trigger when it's a tag page and the redirects are enabled\n if (tag && tagRedirectEnabled) {\n const blogTags = app.forum.attribute(\"blogTags\");\n\n // Tag is inside list\n if (\n blogTags.indexOf(tag.id()) >= 0 ||\n (tag.parent() && blogTags.indexOf(tag.parent().id()) >= 0)\n ) {\n m.route.set(app.route(\"blog\"));\n }\n }\n });\n\n // Redirect discussion to blog article\n override(DiscussionPage.prototype, \"show\", function (original, discussion) {\n const discussionRedirectEnabled =\n app.forum.attribute(\"blogRedirectsEnabled\") === \"both\" ||\n app.forum.attribute(\"blogRedirectsEnabled\") === \"discussions_only\";\n\n if (\n discussionRedirectEnabled &&\n discussion &&\n discussion &&\n discussion.tags().length > 0\n ) {\n const blogTags = app.forum.attribute(\"blogTags\");\n\n const foundTags = discussion.tags().filter((tag) => {\n return (\n blogTags.indexOf(tag.id()) >= 0 ||\n (tag.parent() && blogTags.indexOf(tag.parent().id()) >= 0)\n );\n });\n\n // Only redirect if the discussion has blog tags\n if (foundTags.length > 0) {\n // Redirect to blog article\n const url = app.route(\"blogArticle\", {\n id: discussion.slug(),\n });\n\n // Setting the 3rd argument to true replaces the current state in the browser history, that way the browser back button works as expected.\n m.route.set(url, null, true);\n return null;\n }\n }\n\n return original(discussion);\n });\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['utils/mixin'];","import Model from \"flarum/Model\";\nimport mixin from \"flarum/utils/mixin\";\n\nexport default class BlogMeta extends mixin(Model, {\n discussion: Model.hasOne(\"discussion\"),\n featuredImage: Model.attribute(\"featuredImage\"),\n summary: Model.attribute(\"summary\"),\n isFeatured: Model.attribute(\"isFeatured\"),\n isSized: Model.attribute(\"isSized\"),\n isPendingReview: Model.attribute(\"isPendingReview\"),\n}) {}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['tags/components/TagsPage'];","import { extend } from \"flarum/extend\";\nimport IndexPage from \"flarum/components/IndexPage\";\nimport TagsPage from \"flarum/tags/components/TagsPage\";\n\nexport default function extendTagOverview() {\n extend(TagsPage.prototype, \"view\", function (markup) {\n if (app.forum.attribute(\"blogHideTags\") == false) return markup;\n\n // Get knowledge base tag ID's\n const knowledgeBaseTags = app.forum.attribute(\"blogTags\") || [];\n\n // Get tiles\n let tag_tiles = markup.children[1].children[1].children[0].children;\n\n // Map through the tiles and remove tiles that are part of the knowledge base\n markup.children[1].children[1].children[0].children = tag_tiles.map(\n (tile, i) => {\n return knowledgeBaseTags.indexOf(this.tags[i].id()) >= 0 ? null : tile;\n }\n );\n\n return markup;\n });\n\n extend(IndexPage.prototype, \"navItems\", function (items) {\n if (app.forum.attribute(\"blogHideTags\") == false) return items;\n\n const blogTags = app.forum.attribute(\"blogTags\") || [];\n\n blogTags.forEach((id) => {\n items.remove(`tag${id}`);\n });\n\n return items;\n });\n}\n","export default function () {\n // Save the original function before we override it\n const original_discussion_route = app.route.discussion;\n\n /**\n * Generate a URL to a discussion OR a Blog Article.\n *\n * CORE_CODE_OVERRIDE: This overrides the standard function from flarum/core.\n * The code is inspired from js/src/forum/routes.js and now handles different types of discussions.\n * It will try to keep the original function executed if the discussion being\n * processed isn't a blog article.\n *\n * @param {Discussion} discussion\n * @param {Integer} [near]\n * @return {String}\n */\n app.route.discussion = (discussion, near) => {\n const discussionRedirectEnabled =\n app.forum.attribute(\"blogRedirectsEnabled\") === \"both\" ||\n app.forum.attribute(\"blogRedirectsEnabled\") === \"discussions_only\";\n let shouldRedirect = false;\n if (discussionRedirectEnabled && discussion.tags().length > 0) {\n const blogTags = app.forum.attribute(\"blogTags\");\n\n const foundTags = discussion.tags().filter((tag) => {\n return (\n blogTags.indexOf(tag.id()) >= 0 ||\n (tag.parent() && blogTags.indexOf(tag.parent().id()) >= 0)\n );\n });\n\n if (foundTags.length > 0) {\n shouldRedirect = true;\n }\n }\n if (shouldRedirect) {\n return discussion.lastReadPostNumber() > 1\n ? app.route(\"blogArticle.near\", {\n id: discussion.slug(),\n near: discussion.lastReadPostNumber(),\n })\n : app.route(\"blogArticle\", {\n id: discussion.slug(),\n });\n } else {\n return original_discussion_route(discussion, near);\n }\n };\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['components/ComposerBody'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['components/TextEditor'];","import Component from \"flarum/Component\";\n\nexport default class ComposerPreview extends Component {\n view() {\n return
    ;\n }\n\n oncreate(vnode) {\n super.oncreate(vnode);\n\n s9e.TextFormatter.preview(vnode.attrs.content || \"\", vnode.dom);\n }\n}\n","import ComposerBody from \"flarum/components/ComposerBody\";\nimport Button from \"flarum/components/Button\";\nimport TextEditor from \"flarum/components/TextEditor\";\nimport ComposerPreview from \"./ComposerPreview\";\n\nexport default class Composer extends ComposerBody {\n oninit(vnode) {\n super.oninit(vnode);\n\n this.previewContent = false;\n }\n\n // Render\n view() {\n const hasContent =\n this.composer.fields.content() && this.composer.fields.content() !== \"\";\n const loading = this.loading || this.attrs.disabled;\n\n return (\n \n
    \n (this.previewContent = false)}\n >\n {app.translator.trans(\n \"v17development-flarum-blog.forum.composer.write\"\n )}\n \n (this.previewContent = true)}\n >\n {app.translator.trans(\n \"v17development-flarum-blog.forum.composer.view\"\n )}\n \n
    \n\n \n {this.previewContent && (\n
    \n {!hasContent &&\n app.translator.trans(\n \"v17development-flarum-blog.forum.composer.nothing_to_preview\"\n )}\n\n \n
    \n )}\n\n {TextEditor.component({\n submitLabel:\n this.attrs.submitLabel ||\n app.translator.trans(\"core.forum.composer_edit.submit_button\"),\n placeholder: this.attrs.placeholder,\n disabled: loading,\n composer: this.composer,\n preview: this.jumpToPreview && this.jumpToPreview.bind(this),\n onchange: this.composer.fields.content,\n onsubmit: this.onsubmit.bind(this),\n value: this.composer.fields.content(),\n })}\n
    \n \n );\n }\n\n // Submit trigger\n onsubmit() {\n if (this.attrs.onsubmit) {\n this.attrs.onsubmit();\n }\n }\n}\n","import Page from \"flarum/components/Page\";\nimport Button from \"flarum/components/Button\";\nimport Link from \"flarum/components/Link\";\nimport BlogAuthor from \"../components/BlogItemSidebar/BlogAuthor\";\nimport RenameArticleModal from \"../components/Modals/RenameArticleModal\";\nimport TagDiscussionModal from \"flarum/tags/components/TagDiscussionModal\";\nimport BlogPostSettingsModal from \"../components/Modals/BlogPostSettingsModal\";\nimport Composer from \"../components/Composer/Composer\";\nimport LanguageDropdown from \"../components/LanguageDropdown/LanguageDropdown\";\n\nexport default class BlogComposer extends Page {\n oninit(vnode) {\n super.oninit(vnode);\n\n app.setTitle(app.translator.trans(\"v17development-flarum-blog.forum.blog\"));\n\n // User cannot write blogs\n if (!app.forum.attribute(\"canWriteBlogPosts\")) {\n m.route.set(app.route(\"blog\"));\n return;\n }\n\n // Send history push\n app.history.push(\"blogComposer\");\n\n // Get languages (if enabled)\n this.languages = app.store.all(\"discussion-languages\");\n\n // Set body class\n this.bodyClass = \"BlogItemPage\";\n\n // Article data\n this.articleLanguage = m.route.param(\"lang\")\n ? m.route.param(\"lang\")\n : app.translator.locale;\n this.article = app.store.createRecord(\"discussions\");\n this.blogMeta = null;\n\n this.tags = [];\n\n // Pre-select tags\n if (m.route.param().tags) {\n const tagList = Array.isArray(m.route.param().tags)\n ? m.route.param().tags\n : m.route.param().tags.split(\",\");\n\n if (m.route.param().tags.length > 0) {\n tagList.forEach((tagId) => {\n const foundTag = app.store.getById(\"tags\", tagId);\n\n if (foundTag) {\n this.tags.push(foundTag);\n }\n });\n }\n }\n\n this.isSaving = false;\n }\n\n openTagsModal(e = null) {\n if (e) {\n e.preventDefault();\n }\n\n if (this.isSaving) return;\n\n app.modal.show(TagDiscussionModal, {\n selectedTags: this.tags,\n onsubmit: (tags) => {\n this.tags = tags;\n },\n });\n }\n\n openNameArticleModal(e = null) {\n if (e) {\n e.preventDefault();\n }\n\n if (this.isSaving) return;\n\n app.modal.show(RenameArticleModal, {\n article: this.article,\n onChange: (title) => {\n this.article.pushData({\n attributes: {\n title,\n },\n });\n },\n });\n }\n\n openBlogSettings(e) {\n e.preventDefault();\n\n if (this.isSaving) return;\n\n app.modal.show(BlogPostSettingsModal, {\n meta: this.blogMeta,\n onsubmit: (meta) => (this.blogMeta = meta),\n });\n }\n\n view() {\n const blogImage =\n this.blogMeta && this.blogMeta.featuredImage()\n ? `url(${this.blogMeta.featuredImage()})`\n : null;\n\n return (\n
    \n
    \n
    \n \n \n \n {app.translator.trans(\n \"v17development-flarum-blog.forum.return_to_overview\"\n )}\n \n \n
    \n
    \n
    \n
    \n this.openBlogSettings(e)}\n />\n\n
    \n \n {this.languages !== null && this.languages.length >= 1 && (\n \n (this.articleLanguage = language)\n }\n />\n )}\n\n this.openBlogSettings(e)}\n icon={\"fas fa-pencil-alt\"}\n loading={this.isSaving}\n >\n Update blog settings\n \n
    \n
    \n\n {/* Article Categories */}\n \n\n
    \n {/* Article name */}\n this.openNameArticleModal()}\n style={{ cursor: \"pointer\" }}\n >\n {this.article &&\n this.article.title() &&\n this.article.title() !== \"\"\n ? this.article.title()\n : app.translator.trans(\n \"v17development-flarum-blog.forum.composer.no_title\"\n )}\n\n e.preventDefault()}>\n \n \n \n\n
    \n this.create()}\n disabled={this.isSaving}\n />\n
    \n
    \n
    \n\n
    \n

    \n {app.translator.trans(\n \"v17development-flarum-blog.forum.comment_section.comments\"\n )}{\" \"}\n (0)\n

    \n {/* Locked */}\n\n
    \n
    \n
    \n {\" \"}\n {app.translator.trans(\n \"v17development-flarum-blog.forum.composer.comment_section\"\n )}\n
    \n
    \n
    \n
    \n
    \n
    \n \n
    \n
    \n
    \n \n );\n }\n\n create() {\n const blogTags = app.forum.attribute(\"blogTags\") || [];\n\n // Force tags\n if (this.tags.length === 0) {\n this.openTagsModal();\n return;\n }\n\n // Force title\n if (!this.article.title() || this.article.title() === \"\") {\n this.openNameArticleModal();\n return;\n }\n\n // Find knowledge base tags\n const findblogTags = this.tags.filter((tag) => {\n return blogTags.indexOf(tag.id()) >= 0;\n });\n\n // No knowledge base tags selected\n if (findblogTags.length === 0) {\n alert(\n app.translator.trans(\n \"v17development-flarum-blog.forum.composer.no_blog_tags_selected\"\n )\n );\n return;\n }\n\n if (\n (this.blogMeta === null ||\n !this.blogMeta.featuredImage() ||\n !this.blogMeta.summary()) &&\n !confirm(\n app.translator.trans(\n \"v17development-flarum-blog.forum.composer.post_without_blog_info\"\n )\n )\n ) {\n return;\n }\n\n let relationships = {\n tags: this.tags,\n };\n\n // Add languages if possible\n if (this.languages.length > 0) {\n relationships.language = app.store.getBy(\n \"discussion-languages\",\n \"code\",\n this.articleLanguage\n );\n }\n\n const data = {\n title: this.article.title(),\n content: app.composer.fields.content(),\n relationships,\n blogMeta:\n this.blogMeta !== null\n ? {\n featuredImage: this.blogMeta.featuredImage(),\n summary: this.blogMeta.summary(),\n isSized: this.blogMeta.isSized(),\n }\n : null,\n };\n\n this.isSaving = true;\n\n this.article\n .save(data)\n .then((article) => {\n setTimeout(() => {\n // Redirect to the article\n m.route.set(app.route(\"blogArticle\", { id: `${article.slug()}` }));\n }, 500);\n })\n .catch(() => {\n this.isSaving = false;\n m.redraw();\n });\n }\n}\n","export default function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core;","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['components/LinkButton'];","import { extend } from \"flarum/extend\";\nimport IndexPage from \"flarum/components/IndexPage\";\nimport LinkButton from \"flarum/components/LinkButton\";\n\nexport default function addSidebarNav() {\n extend(IndexPage.prototype, \"navItems\", function (items) {\n if (\n app.forum.attribute(\"blogAddSidebarNav\") &&\n app.forum.attribute(\"blogAddSidebarNav\") !== \"0\"\n ) {\n items.add(\n \"blog\",\n \n {app.translator.trans(\"v17development-flarum-blog.forum.blog\")}\n ,\n 15\n );\n }\n\n return items;\n });\n}\n","import BlogItem from \"./pages/BlogItem\";\nimport Model from \"flarum/Model\";\nimport Discussion from \"flarum/models/Discussion\";\nimport BlogOverview from \"./pages/BlogOverview\";\nimport redirector from \"./utils/redirector\";\nimport BlogMeta from \"../common/Models/BlogMeta\";\nimport extendTagOverview from \"./utils/extendTagOverview\";\nimport discussionRouting from \"./utils/discussionRouting\";\nimport BlogComposer from \"./pages/BlogComposer\";\nimport compat from \"./compat\";\nimport addSidebarNav from \"./utils/addSidebarNav\";\n\n// Register Flarum Blog\napp.initializers.add(\"v17development-flarum-blog\", (app) => {\n app.routes.blog = { path: \"/blog\", component: BlogOverview };\n\n app.routes.blogCategory = {\n path: \"/blog/category/:slug\",\n component: BlogOverview,\n };\n\n app.routes.blogComposer = { path: \"/blog/compose\", component: BlogComposer };\n\n app.routes.blogArticle = { path: \"/blog/:id\", component: BlogItem };\n\n app.routes[\"blogArticle.near\"] = {\n path: \"/blog/:id/:near\",\n component: BlogItem,\n };\n\n app.store.models.blogMeta = BlogMeta;\n\n Discussion.prototype.blogMeta = Model.hasOne(\"blogMeta\");\n\n // Redirect discussions/tags to their blog post/overview\n redirector();\n\n // Extend tag overview.\n // Hide tags which are used as blog category\n extendTagOverview();\n\n // Make that blog articles have a blog route and not a discussion route\n discussionRouting();\n\n // Add a link to the blog to the IndexPage sidebar, if enabled.\n addSidebarNav();\n});\n\ncompat();\n","import { compat } from \"@flarum/core/forum\";\nimport BlogAuthor from \"./components/BlogItemSidebar/BlogAuthor\";\nimport BlogItemSidebar from \"./components/BlogItemSidebar/BlogItemSidebar\";\n\nexport default () => {\n Object.assign(compat, {\n \"v17development/blog/components/BlogItemSidebar\": BlogItemSidebar,\n \"v17development/blog/components/BlogAuthor\": BlogAuthor,\n });\n};\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tif(__webpack_module_cache__[moduleId]) {\n\t\treturn __webpack_module_cache__[moduleId].exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// module exports must be returned from runtime so entry inlining is disabled\n// startup\n// Load entry module and return exports\nreturn __webpack_require__(100);\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => module['default'] :\n\t\t() => module;\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => Object.prototype.hasOwnProperty.call(obj, prop)","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};"],"sourceRoot":""} \ No newline at end of file diff --git a/js/src/admin/pages/BlogSettings.js b/js/src/admin/pages/BlogSettings.js index 803798a..b6d5a22 100644 --- a/js/src/admin/pages/BlogSettings.js +++ b/js/src/admin/pages/BlogSettings.js @@ -5,7 +5,7 @@ import Button from "flarum/components/Button"; import FieldSet from "flarum/components/FieldSet"; import Switch from "flarum/components/Switch"; import SelectCategoriesModal from "../components/Modals/SelectCategoriesModal"; -import UploadImageButton from 'flarum/components/UploadImageButton'; +import UploadImageButton from "flarum/components/UploadImageButton"; export default class BlogSettings extends ExtensionPage { oninit(attrs) { @@ -41,7 +41,10 @@ export default class BlogSettings extends ExtensionPage { ? app.data.settings.blog_add_sidebar_nav : true; - app.forum.data.attributes.blog_default_imageUrl = app.forum.attribute('baseUrl') + '/assets/' + app.data.settings.blog_default_image_path; + app.forum.data.attributes.blog_default_imageUrl = + app.forum.attribute("baseUrl") + + "/assets/" + + app.data.settings.blog_default_image_path; } content() { @@ -299,20 +302,23 @@ export default class BlogSettings extends ExtensionPage { ] )} - {FieldSet.component({ - label: app.translator.trans( - "v17development-flarum-blog.admin.settings.default_article_image_label" - ) - }, [ -
    - {app.translator.trans( - "v17development-flarum-blog.admin.settings.default_article_image_text" - )} -
    , - UploadImageButton.component({ - name: 'blog_default_image' - }) - ])} + {FieldSet.component( + { + label: app.translator.trans( + "v17development-flarum-blog.admin.settings.default_article_image_label" + ), + }, + [ +
    + {app.translator.trans( + "v17development-flarum-blog.admin.settings.default_article_image_text" + )} +
    , + UploadImageButton.component({ + name: "blog_default_image", + }), + ] + )}