From a1e313cd2aa5eb766d182009d91cd23674cc48eb Mon Sep 17 00:00:00 2001 From: DariusIII Date: Fri, 26 Apr 2024 22:11:49 +0200 Subject: [PATCH] Update forum --- config/{forum.api.php => forum/api.php} | 36 +- config/{forum.web.php => forum/frontend.php} | 25 +- .../{forum.general.php => forum/general.php} | 2 +- .../integration.php} | 0 config/gearer.php | 24 -- resources/css/app.css | 0 resources/forum/blade-tailwind/css/forum.css | 35 ++ resources/forum/blade-tailwind/js/forum.js | 154 +++++++ .../views/category/index.blade.php | 20 + .../views/category/manage.blade.php | 115 ++++++ .../views/category/modals/create.blade.php | 31 ++ .../views/category/modals/delete.blade.php | 21 + .../views/category/modals/edit.blade.php | 40 ++ .../modals/mark-threads-as-read.blade.php | 16 + .../category/partials/inputs/color.blade.php | 5 + .../views/category/partials/list.blade.php | 75 ++++ .../views/category/partials/options.blade.php | 12 + .../views/category/show.blade.php | 248 +++++++++++ .../views/components/badge.blade.php | 27 ++ .../views/components/button-group.blade.php | 3 + .../views/components/button-link.blade.php | 3 + .../components/button-secondary.blade.php | 3 + .../views/components/button.blade.php | 3 + .../views/components/input.blade.php | 1 + .../views/components/label.blade.php | 3 + .../views/components/select.blade.php | 5 + .../views/components/textarea.blade.php | 1 + .../views/layouts/main.blade.php | 94 +++++ .../blade-tailwind/views/modal-form.blade.php | 30 ++ .../blade-tailwind/views/pagination.blade.php | 46 +++ .../views/partials/alert.blade.php | 18 + .../views/partials/alerts.blade.php | 11 + .../partials/breadcrumb-categories.blade.php | 4 + .../views/partials/breadcrumbs.blade.php | 16 + .../views/partials/timestamp.blade.php | 1 + .../views/post/confirm-delete.blade.php | 37 ++ .../views/post/confirm-restore.blade.php | 29 ++ .../views/post/create.blade.php | 32 ++ .../blade-tailwind/views/post/edit.blade.php | 29 ++ .../views/post/partials/actions.blade.php | 23 ++ .../views/post/partials/list.blade.php | 70 ++++ .../views/post/partials/quote.blade.php | 13 + .../blade-tailwind/views/post/show.blade.php | 14 + .../views/thread/create.blade.php | 25 ++ .../thread/modals/mark-as-read.blade.php | 14 + .../views/thread/partials/list.blade.php | 52 +++ .../views/thread/recent.blade.php | 21 + .../views/thread/show.blade.php | 391 ++++++++++++++++++ .../views/thread/unread.blade.php | 31 ++ .../forum/livewire-tailwind/css/forum.css | 83 ++++ resources/forum/livewire-tailwind/js/forum.js | 9 + .../views/components/alerts.blade.php | 64 +++ .../breadcrumb-categories.blade.php | 4 + .../views/components/breadcrumbs.blade.php | 23 ++ .../views/components/button.blade.php | 21 + .../views/components/category/card.blade.php | 103 +++++ .../category/draggable-items.blade.php | 18 + .../components/category/options.blade.php | 10 + .../views/components/form/error.blade.php | 3 + .../components/form/input-checkbox.blade.php | 11 + .../components/form/input-select.blade.php | 11 + .../components/form/input-text.blade.php | 11 + .../components/form/input-textarea.blade.php | 11 + .../views/components/group-button.blade.php | 14 + .../icons/arrow-down-mini.blade.php | 7 + .../icons/arrow-path-mini.blade.php | 7 + .../icons/arrow-right-mini.blade.php | 7 + .../icons/arrow-up-circle-mini.blade.php | 7 + .../components/icons/arrow-up-mini.blade.php | 7 + .../icons/book-open-outline.blade.php | 9 + .../icons/chat-bubble-text-mini.blade.php | 7 + .../icons/chat-bubble-text-outline.blade.php | 7 + .../icons/chat-bubbles-mini.blade.php | 8 + .../icons/chat-bubbles-outline.blade.php | 7 + .../icons/drag-area-vertical.blade.php | 7 + .../components/icons/home-mini.blade.php | 7 + .../icons/lock-closed-mini.blade.php | 7 + .../components/icons/lock-open-mini.blade.php | 7 + .../components/icons/pencil-mini.blade.php | 7 + .../components/icons/pencil-outline.blade.php | 7 + .../components/icons/sparkles-mini.blade.php | 7 + .../icons/squares-plus-outline.blade.php | 9 + .../components/icons/subcategory.blade.php | 7 + .../components/icons/trash-mini.blade.php | 7 + .../views/components/icons/x-mark.blade.php | 8 + .../views/components/link-button.blade.php | 19 + .../components/loading-overlay.blade.php | 15 + .../views/components/modal.blade.php | 21 + .../views/components/pagination.blade.php | 106 +++++ .../views/components/pill.blade.php | 14 + .../views/components/post/card.blade.php | 101 +++++ .../views/components/post/quote.blade.php | 16 + .../views/components/thread/card.blade.php | 95 +++++ .../views/components/timestamp.blade.php | 20 + .../views/layouts/main.blade.php | 137 ++++++ .../views/pages/category/create.blade.php | 60 +++ .../views/pages/category/edit.blade.php | 107 +++++ .../views/pages/category/index.blade.php | 23 ++ .../views/pages/category/manage.blade.php | 83 ++++ .../views/pages/category/show.blade.php | 197 +++++++++ .../views/pages/post/edit.blade.php | 75 ++++ .../views/pages/post/show.blade.php | 17 + .../views/pages/thread/create.blade.php | 36 ++ .../views/pages/thread/recent.blade.php | 22 + .../views/pages/thread/reply.blade.php | 36 ++ .../views/pages/thread/show.blade.php | 369 +++++++++++++++++ .../views/pages/thread/unread.blade.php | 66 +++ resources/js/app.js | 1 + resources/js/bootstrap.js | 4 + 109 files changed, 4048 insertions(+), 50 deletions(-) rename config/{forum.api.php => forum/api.php} (86%) rename config/{forum.web.php => forum/frontend.php} (69%) rename config/{forum.general.php => forum/general.php} (98%) rename config/{forum.integration.php => forum/integration.php} (100%) delete mode 100644 config/gearer.php create mode 100644 resources/css/app.css create mode 100644 resources/forum/blade-tailwind/css/forum.css create mode 100644 resources/forum/blade-tailwind/js/forum.js create mode 100644 resources/forum/blade-tailwind/views/category/index.blade.php create mode 100644 resources/forum/blade-tailwind/views/category/manage.blade.php create mode 100644 resources/forum/blade-tailwind/views/category/modals/create.blade.php create mode 100644 resources/forum/blade-tailwind/views/category/modals/delete.blade.php create mode 100644 resources/forum/blade-tailwind/views/category/modals/edit.blade.php create mode 100644 resources/forum/blade-tailwind/views/category/modals/mark-threads-as-read.blade.php create mode 100644 resources/forum/blade-tailwind/views/category/partials/inputs/color.blade.php create mode 100644 resources/forum/blade-tailwind/views/category/partials/list.blade.php create mode 100644 resources/forum/blade-tailwind/views/category/partials/options.blade.php create mode 100644 resources/forum/blade-tailwind/views/category/show.blade.php create mode 100644 resources/forum/blade-tailwind/views/components/badge.blade.php create mode 100644 resources/forum/blade-tailwind/views/components/button-group.blade.php create mode 100644 resources/forum/blade-tailwind/views/components/button-link.blade.php create mode 100644 resources/forum/blade-tailwind/views/components/button-secondary.blade.php create mode 100644 resources/forum/blade-tailwind/views/components/button.blade.php create mode 100644 resources/forum/blade-tailwind/views/components/input.blade.php create mode 100644 resources/forum/blade-tailwind/views/components/label.blade.php create mode 100644 resources/forum/blade-tailwind/views/components/select.blade.php create mode 100644 resources/forum/blade-tailwind/views/components/textarea.blade.php create mode 100644 resources/forum/blade-tailwind/views/layouts/main.blade.php create mode 100644 resources/forum/blade-tailwind/views/modal-form.blade.php create mode 100644 resources/forum/blade-tailwind/views/pagination.blade.php create mode 100644 resources/forum/blade-tailwind/views/partials/alert.blade.php create mode 100644 resources/forum/blade-tailwind/views/partials/alerts.blade.php create mode 100644 resources/forum/blade-tailwind/views/partials/breadcrumb-categories.blade.php create mode 100644 resources/forum/blade-tailwind/views/partials/breadcrumbs.blade.php create mode 100644 resources/forum/blade-tailwind/views/partials/timestamp.blade.php create mode 100644 resources/forum/blade-tailwind/views/post/confirm-delete.blade.php create mode 100644 resources/forum/blade-tailwind/views/post/confirm-restore.blade.php create mode 100644 resources/forum/blade-tailwind/views/post/create.blade.php create mode 100644 resources/forum/blade-tailwind/views/post/edit.blade.php create mode 100644 resources/forum/blade-tailwind/views/post/partials/actions.blade.php create mode 100644 resources/forum/blade-tailwind/views/post/partials/list.blade.php create mode 100644 resources/forum/blade-tailwind/views/post/partials/quote.blade.php create mode 100644 resources/forum/blade-tailwind/views/post/show.blade.php create mode 100644 resources/forum/blade-tailwind/views/thread/create.blade.php create mode 100644 resources/forum/blade-tailwind/views/thread/modals/mark-as-read.blade.php create mode 100644 resources/forum/blade-tailwind/views/thread/partials/list.blade.php create mode 100644 resources/forum/blade-tailwind/views/thread/recent.blade.php create mode 100644 resources/forum/blade-tailwind/views/thread/show.blade.php create mode 100644 resources/forum/blade-tailwind/views/thread/unread.blade.php create mode 100644 resources/forum/livewire-tailwind/css/forum.css create mode 100644 resources/forum/livewire-tailwind/js/forum.js create mode 100644 resources/forum/livewire-tailwind/views/components/alerts.blade.php create mode 100644 resources/forum/livewire-tailwind/views/components/breadcrumb-categories.blade.php create mode 100644 resources/forum/livewire-tailwind/views/components/breadcrumbs.blade.php create mode 100644 resources/forum/livewire-tailwind/views/components/button.blade.php create mode 100644 resources/forum/livewire-tailwind/views/components/category/card.blade.php create mode 100644 resources/forum/livewire-tailwind/views/components/category/draggable-items.blade.php create mode 100644 resources/forum/livewire-tailwind/views/components/category/options.blade.php create mode 100644 resources/forum/livewire-tailwind/views/components/form/error.blade.php create mode 100644 resources/forum/livewire-tailwind/views/components/form/input-checkbox.blade.php create mode 100644 resources/forum/livewire-tailwind/views/components/form/input-select.blade.php create mode 100644 resources/forum/livewire-tailwind/views/components/form/input-text.blade.php create mode 100644 resources/forum/livewire-tailwind/views/components/form/input-textarea.blade.php create mode 100644 resources/forum/livewire-tailwind/views/components/group-button.blade.php create mode 100644 resources/forum/livewire-tailwind/views/components/icons/arrow-down-mini.blade.php create mode 100644 resources/forum/livewire-tailwind/views/components/icons/arrow-path-mini.blade.php create mode 100644 resources/forum/livewire-tailwind/views/components/icons/arrow-right-mini.blade.php create mode 100644 resources/forum/livewire-tailwind/views/components/icons/arrow-up-circle-mini.blade.php create mode 100644 resources/forum/livewire-tailwind/views/components/icons/arrow-up-mini.blade.php create mode 100644 resources/forum/livewire-tailwind/views/components/icons/book-open-outline.blade.php create mode 100644 resources/forum/livewire-tailwind/views/components/icons/chat-bubble-text-mini.blade.php create mode 100644 resources/forum/livewire-tailwind/views/components/icons/chat-bubble-text-outline.blade.php create mode 100644 resources/forum/livewire-tailwind/views/components/icons/chat-bubbles-mini.blade.php create mode 100644 resources/forum/livewire-tailwind/views/components/icons/chat-bubbles-outline.blade.php create mode 100644 resources/forum/livewire-tailwind/views/components/icons/drag-area-vertical.blade.php create mode 100644 resources/forum/livewire-tailwind/views/components/icons/home-mini.blade.php create mode 100644 resources/forum/livewire-tailwind/views/components/icons/lock-closed-mini.blade.php create mode 100644 resources/forum/livewire-tailwind/views/components/icons/lock-open-mini.blade.php create mode 100644 resources/forum/livewire-tailwind/views/components/icons/pencil-mini.blade.php create mode 100644 resources/forum/livewire-tailwind/views/components/icons/pencil-outline.blade.php create mode 100644 resources/forum/livewire-tailwind/views/components/icons/sparkles-mini.blade.php create mode 100644 resources/forum/livewire-tailwind/views/components/icons/squares-plus-outline.blade.php create mode 100644 resources/forum/livewire-tailwind/views/components/icons/subcategory.blade.php create mode 100644 resources/forum/livewire-tailwind/views/components/icons/trash-mini.blade.php create mode 100644 resources/forum/livewire-tailwind/views/components/icons/x-mark.blade.php create mode 100644 resources/forum/livewire-tailwind/views/components/link-button.blade.php create mode 100644 resources/forum/livewire-tailwind/views/components/loading-overlay.blade.php create mode 100644 resources/forum/livewire-tailwind/views/components/modal.blade.php create mode 100644 resources/forum/livewire-tailwind/views/components/pagination.blade.php create mode 100644 resources/forum/livewire-tailwind/views/components/pill.blade.php create mode 100644 resources/forum/livewire-tailwind/views/components/post/card.blade.php create mode 100644 resources/forum/livewire-tailwind/views/components/post/quote.blade.php create mode 100644 resources/forum/livewire-tailwind/views/components/thread/card.blade.php create mode 100644 resources/forum/livewire-tailwind/views/components/timestamp.blade.php create mode 100644 resources/forum/livewire-tailwind/views/layouts/main.blade.php create mode 100644 resources/forum/livewire-tailwind/views/pages/category/create.blade.php create mode 100644 resources/forum/livewire-tailwind/views/pages/category/edit.blade.php create mode 100644 resources/forum/livewire-tailwind/views/pages/category/index.blade.php create mode 100644 resources/forum/livewire-tailwind/views/pages/category/manage.blade.php create mode 100644 resources/forum/livewire-tailwind/views/pages/category/show.blade.php create mode 100644 resources/forum/livewire-tailwind/views/pages/post/edit.blade.php create mode 100644 resources/forum/livewire-tailwind/views/pages/post/show.blade.php create mode 100644 resources/forum/livewire-tailwind/views/pages/thread/create.blade.php create mode 100644 resources/forum/livewire-tailwind/views/pages/thread/recent.blade.php create mode 100644 resources/forum/livewire-tailwind/views/pages/thread/reply.blade.php create mode 100644 resources/forum/livewire-tailwind/views/pages/thread/show.blade.php create mode 100644 resources/forum/livewire-tailwind/views/pages/thread/unread.blade.php create mode 100644 resources/js/app.js create mode 100644 resources/js/bootstrap.js diff --git a/config/forum.api.php b/config/forum/api.php similarity index 86% rename from config/forum.api.php rename to config/forum/api.php index e54d1807f..75811cc2b 100644 --- a/config/forum.api.php +++ b/config/forum/api.php @@ -4,10 +4,10 @@ return [ /* |-------------------------------------------------------------------------- - | Enable/disable + | Enable/disable feature |-------------------------------------------------------------------------- | - | Set to false if you want to effectively disable the API. + | Whether or not to enable the API feature. | */ @@ -24,21 +24,6 @@ return [ 'enable_search' => true, - /* - |-------------------------------------------------------------------------- - | Resources - |-------------------------------------------------------------------------- - | - | Override to return your own resources for API responses - | - */ - - 'resources' => [ - 'category' => TeamTeaTime\Forum\Http\Resources\CategoryResource::class, - 'thread' => TeamTeaTime\Forum\Http\Resources\ThreadResource::class, - 'post' => TeamTeaTime\Forum\Http\Resources\PostResource::class, - ], - /* |-------------------------------------------------------------------------- | Router @@ -51,9 +36,24 @@ return [ 'router' => [ 'prefix' => '/forum/api', 'as' => 'forum.api.', - 'namespace' => '\TeamTeaTime\Forum\Http\Controllers\Api', + 'namespace' => '\\TeamTeaTime\\Forum\\Http\\Controllers\\Api', 'middleware' => ['api', 'auth:api'], 'auth_middleware' => ['auth:api'], ], + /* + |-------------------------------------------------------------------------- + | Resources + |-------------------------------------------------------------------------- + | + | Override to return your own resources for API responses. + | + */ + + 'resources' => [ + 'category' => TeamTeaTime\Forum\Http\Resources\CategoryResource::class, + 'thread' => TeamTeaTime\Forum\Http\Resources\ThreadResource::class, + 'post' => TeamTeaTime\Forum\Http\Resources\PostResource::class, + ], + ]; diff --git a/config/forum.web.php b/config/forum/frontend.php similarity index 69% rename from config/forum.web.php rename to config/forum/frontend.php index 5cf84265b..82433e8f2 100644 --- a/config/forum.web.php +++ b/config/forum/frontend.php @@ -4,28 +4,39 @@ return [ /* |-------------------------------------------------------------------------- - | Enable/disable + | Enable/disable feature |-------------------------------------------------------------------------- | - | Set to false if you want to effectively disable the frontend. + | Whether or not to enable the frontend feature. | */ 'enable' => true, + /* + |-------------------------------------------------------------------------- + | Preset + |-------------------------------------------------------------------------- + | + | The frontend preset to use. Must be installed with the + | forum:preset-install command. + | + */ + + 'preset' => 'livewire-tailwind', + /* |-------------------------------------------------------------------------- | Router |-------------------------------------------------------------------------- | - | Web router config. + | Router config for the frontend routes. | */ 'router' => [ 'prefix' => '/forum', 'as' => 'forum.', - 'namespace' => '\TeamTeaTime\Forum\Http\Controllers\Web', 'middleware' => ['web'], 'auth_middleware' => ['auth'], ], @@ -35,7 +46,7 @@ return [ | Route Prefixes |-------------------------------------------------------------------------- | - | Prefixes to use for each model. + | Prefixes to use for each model in frontend routes. | */ @@ -61,11 +72,11 @@ return [ | Utility Class |-------------------------------------------------------------------------- | - | Here we specify the class to use for various web utility methods. + | Here we specify the class to use for various frontend utility methods. | This is automatically aliased to 'Forum' for ease of use in views. | */ - 'utility_class' => TeamTeaTime\Forum\Support\Web\Forum::class, + 'utility_class' => TeamTeaTime\Forum\Support\Frontend\Forum::class, ]; diff --git a/config/forum.general.php b/config/forum/general.php similarity index 98% rename from config/forum.general.php rename to config/forum/general.php index 776db8d37..f95132fa3 100644 --- a/config/forum.general.php +++ b/config/forum/general.php @@ -16,7 +16,7 @@ return [ | */ - 'old_thread_threshold' => '30 days', + 'old_thread_threshold' => '7 days', /* |-------------------------------------------------------------------------- diff --git a/config/forum.integration.php b/config/forum/integration.php similarity index 100% rename from config/forum.integration.php rename to config/forum/integration.php diff --git a/config/gearer.php b/config/gearer.php deleted file mode 100644 index 2433d60c2..000000000 --- a/config/gearer.php +++ /dev/null @@ -1,24 +0,0 @@ - env('MYCELIUM_GATEWAY_ID', ''), - 'gateway_secret' => env('MYCELIUM_GATEWAY_SECRET', ''), - - /* - |-------------------------------------------------------------------------- - | Default configuration - |-------------------------------------------------------------------------- - | - | Define default callback data that will be used before any custom data are set - */ - 'defaults' => [ - 'callback_data' => [ - //'foo' => 'bar' - ], - ], -]; diff --git a/resources/css/app.css b/resources/css/app.css new file mode 100644 index 000000000..e69de29bb diff --git a/resources/forum/blade-tailwind/css/forum.css b/resources/forum/blade-tailwind/css/forum.css new file mode 100644 index 000000000..6e72d22ce --- /dev/null +++ b/resources/forum/blade-tailwind/css/forum.css @@ -0,0 +1,35 @@ +@import url('https://fonts.googleapis.com/css2?family=Open+Sans:ital,wght@0,300..800;1,300..800&display=swap'); + +@tailwind base; +@tailwind components; +@tailwind utilities; + +@layer base { + .forum { + font-family: "Open Sans", sans-serif; + font-optical-sizing: auto; + font-weight: 400; + font-style: normal; + font-variation-settings: "wdth" 100; + } + + h1 { + @apply text-4xl my-6; + } + + h2 { + @apply text-2xl; + } + + h3 { + @apply text-xl; + } + + a { + @apply text-blue-500; + } + + a:hover { + @apply text-blue-800; + } +} diff --git a/resources/forum/blade-tailwind/js/forum.js b/resources/forum/blade-tailwind/js/forum.js new file mode 100644 index 000000000..828787a00 --- /dev/null +++ b/resources/forum/blade-tailwind/js/forum.js @@ -0,0 +1,154 @@ +import feather from 'feather-icons'; +import { createApp, ref, reactive, watch } from 'vue/dist/vue.esm-bundler.js'; +import axios from 'axios'; +import Pickr from '@simonwep/pickr'; +import draggable from 'vuedraggable/src/vuedraggable'; + +import '@simonwep/pickr/dist/themes/classic.min.css'; + +window.axios = axios; +window.Vue = { createApp, ref, reactive, watch }; +window.VueDraggable = draggable; + +document.addEventListener('DOMContentLoaded', function () { + createApp({ + setup() { + const isCollapsed = ref(true); + const isUserDropdownCollapsed = ref(true); + + window.addEventListener('click', event => { + const ignore = ['navbar-toggler', 'navbar-toggler-icon', 'dropdown-toggle']; + if (ignore.some(className => event.target.classList.contains(className))) return; + if (!isCollapsed.value) isCollapsed.value = true; + if (!isUserDropdownCollapsed.value) isUserDropdownCollapsed.value = true; + }); + + return { + isCollapsed, + isUserDropdownCollapsed, + }; + } + }).mount('.v-navbar'); + + function findModal(key) + { + const modal = document.querySelector(`[data-modal=${key}]`); + + if (!modal) throw `Attempted to open modal '${key}' but no such modal found.`; + + return modal; + } + + function openModal(modal) + { + setTimeout(function() + { + modal.classList.remove('hidden'); + modal.classList.add('flex'); + }, 200); + } + + document.querySelectorAll('[data-open-modal]').forEach(item => + { + item.addEventListener('click', event => + { + event.preventDefault(); + + openModal(findModal(event.currentTarget.dataset.openModal)); + }); + }); + + document.querySelectorAll('[data-close-modal]').forEach(modalClose => + { + modalClose.addEventListener('click', event => + { + event.preventDefault + + setTimeout(function() + { + modalClose.closest('[data-modal]').classList.remove('flex'); + modalClose.closest('[data-modal]').classList.add('hidden'); + }, 200); + }); + }); + + document.querySelectorAll('[data-dismiss]').forEach(item => + { + item.addEventListener('click', event => event.currentTarget.parentElement.style.display = 'none'); + }); + + const hash = window.location.hash.substr(1); + if (hash.startsWith('modal=')) + { + openModal(findModal(hash.replace('modal=',''))); + } + + feather.replace(); + + const input = document.querySelector('input[name=color]'); + + if (!input) return; + + const pickr = Pickr.create({ + el: '.pickr', + theme: 'classic', + default: input.value || null, + + swatches: [ + window.defaultCategoryColor, + '#f44336', + '#e91e63', + '#9c27b0', + '#673ab7', + '#3f51b5', + '#2196f3', + '#03a9f4', + '#00bcd4', + '#009688', + '#4caf50', + '#8bc34a', + '#cddc39', + '#ffeb3b', + '#ffc107' + ], + + components: { + preview: true, + hue: true, + interaction: { + input: true, + save: true + } + }, + + strings: { + save: 'Apply' + } + }); + + pickr.on('save', instance => pickr.hide()) + .on('clear', instance => + { + input.value = ''; + input.dispatchEvent(new Event('change')); + }) + .on('cancel', instance => + { + const selectedColor = instance + .getSelectedColor() + .toHEXA() + .toString(); + + input.value = selectedColor; + input.dispatchEvent(new Event('change')); + }) + .on('change', (color, instance) => + { + const selectedColor = color + .toHEXA() + .toString(); + + input.value = selectedColor; + input.dispatchEvent(new Event('change')); + }); +}); diff --git a/resources/forum/blade-tailwind/views/category/index.blade.php b/resources/forum/blade-tailwind/views/category/index.blade.php new file mode 100644 index 000000000..93eeb6de4 --- /dev/null +++ b/resources/forum/blade-tailwind/views/category/index.blade.php @@ -0,0 +1,20 @@ +{{-- $category is passed as NULL to the master layout view to prevent it from showing in the breadcrumbs --}} +@extends ('forum::layouts.main', ['category' => null]) + +@section ('content') +
+

{{ trans('forum::general.index') }}

+ + @can ('createCategories') + + {{ trans('forum::categories.create') }} + + + @include ('forum::category.modals.create') + @endcan +
+ + @foreach ($categories as $category) + @include ('forum::category.partials.list', ['titleClass' => 'lead']) + @endforeach +@stop diff --git a/resources/forum/blade-tailwind/views/category/manage.blade.php b/resources/forum/blade-tailwind/views/category/manage.blade.php new file mode 100644 index 000000000..be48382b5 --- /dev/null +++ b/resources/forum/blade-tailwind/views/category/manage.blade.php @@ -0,0 +1,115 @@ +@extends ('forum::layouts.main', ['category' => null, 'thread' => null, 'breadcrumbs_append' => [trans('forum::general.manage')]]) + +@section ('content') +
+

{{ trans('forum::general.manage') }}

+ + @can ('createCategories') + + {{ trans('forum::categories.create') }} + + + @include ('forum::category.modals.create') + @endcan +
+ +
+ + + + + + +
+ +
+
+ + + + +@stop diff --git a/resources/forum/blade-tailwind/views/category/modals/create.blade.php b/resources/forum/blade-tailwind/views/category/modals/create.blade.php new file mode 100644 index 000000000..6d8301610 --- /dev/null +++ b/resources/forum/blade-tailwind/views/category/modals/create.blade.php @@ -0,0 +1,31 @@ +@component('forum::modal-form') + @slot('key', 'create-category') + @slot('title', trans('forum::categories.create')) + @slot('route', Forum::route('category.store')) + +
+ {{ trans('forum::general.title') }} + +
+
+ {{ trans('forum::general.description') }} + +
+
+
+ + +
+
+
+
+ + +
+
+ @include ('forum::category.partials.inputs.color') + + @slot('actions') + {{ trans('forum::general.create') }} + @endslot +@endcomponent diff --git a/resources/forum/blade-tailwind/views/category/modals/delete.blade.php b/resources/forum/blade-tailwind/views/category/modals/delete.blade.php new file mode 100644 index 000000000..e313edb40 --- /dev/null +++ b/resources/forum/blade-tailwind/views/category/modals/delete.blade.php @@ -0,0 +1,21 @@ +@component('forum::modal-form') + @slot('key', 'delete-category') + @slot('title', trans('forum::general.delete')) + @slot('route', Forum::route('category.delete', $category)) + @slot('method', 'DELETE') + + {{ trans('forum::general.generic_confirm') }} + + @if(!$category->isEmpty()) +
+ + +
+ @endif + + @slot('actions') + {{ trans('forum::general.delete') }} + @endslot +@endcomponent diff --git a/resources/forum/blade-tailwind/views/category/modals/edit.blade.php b/resources/forum/blade-tailwind/views/category/modals/edit.blade.php new file mode 100644 index 000000000..c5a6ce3a0 --- /dev/null +++ b/resources/forum/blade-tailwind/views/category/modals/edit.blade.php @@ -0,0 +1,40 @@ +@component('forum::modal-form') + @slot('key', 'edit-category') + @slot('title', trans('forum::general.edit')) + @slot('route', Forum::route('category.update', $category)) + @slot('method', 'PATCH') + +
+ {{ trans('forum::general.title') }} + +
+
+ {{ trans('forum::general.description') }} + +
+
+
+ + accepts_threads ? 'checked' : '' }}> + +
+
+
+
+ + is_private ? 'checked' : '' }} {{ $privateAncestor != null ? 'disabled' : '' }}> + +
+
+ @if ($privateAncestor != null) + + @endif + + @include ('forum::category.partials.inputs.color') + + @slot('actions') + {{ trans('forum::general.save') }} + @endslot +@endcomponent diff --git a/resources/forum/blade-tailwind/views/category/modals/mark-threads-as-read.blade.php b/resources/forum/blade-tailwind/views/category/modals/mark-threads-as-read.blade.php new file mode 100644 index 000000000..b2fc42d07 --- /dev/null +++ b/resources/forum/blade-tailwind/views/category/modals/mark-threads-as-read.blade.php @@ -0,0 +1,16 @@ +@component('forum::modal-form') + @slot('key', 'mark-threads-as-read') + @slot('title', trans('forum::categories.mark_read')) + @slot('route', Forum::route('unread.mark-as-read')) + @slot('method', 'PATCH') + + + +

{{ trans('forum::general.generic_confirm') }}

+ + @slot('actions') + + {{ trans('forum::general.mark_read') }} + + @endslot +@endcomponent diff --git a/resources/forum/blade-tailwind/views/category/partials/inputs/color.blade.php b/resources/forum/blade-tailwind/views/category/partials/inputs/color.blade.php new file mode 100644 index 000000000..37f675ba8 --- /dev/null +++ b/resources/forum/blade-tailwind/views/category/partials/inputs/color.blade.php @@ -0,0 +1,5 @@ +
+ +
+ +
diff --git a/resources/forum/blade-tailwind/views/category/partials/list.blade.php b/resources/forum/blade-tailwind/views/category/partials/list.blade.php new file mode 100644 index 000000000..b92a05463 --- /dev/null +++ b/resources/forum/blade-tailwind/views/category/partials/list.blade.php @@ -0,0 +1,75 @@ +
+
+
+
+
+ {{ $category->title }} +
+

{{ $category->description }}

+
+
+ @if ($category->accepts_threads) + + {{ trans_choice('forum::threads.thread', 2) }}: {{ $category->thread_count }} + + + {{ trans_choice('forum::posts.post', 2) }}: {{ $category->post_count }} + + @endif +
+
+ @if ($category->accepts_threads) + @if ($category->newestThread) +
+ {{ $category->newestThread->title }} + @include ('forum::partials.timestamp', ['carbon' => $category->newestThread->created_at]) +
+ @endif + @if ($category->latestActiveThread && $category->latestActiveThread->post_count > 1) +
+ Re: {{ $category->latestActiveThread->title }} + @include ('forum::partials.timestamp', ['carbon' => $category->latestActiveThread->lastPost->created_at]) +
+ @endif + @endif +
+
+
+ + @if ($category->children->count() > 0) +
+ @foreach ($category->children as $subcategory) +
+
+
+ {{ $subcategory->title }} +
{{ $subcategory->description }}
+
+
+ + {{ trans_choice('forum::threads.thread', 2) }}: {{ $subcategory->thread_count }} + + + {{ trans_choice('forum::posts.post', 2) }}: {{ $subcategory->post_count }} + +
+
+ @if ($subcategory->newestThread) +
+ {{ $subcategory->newestThread->title }} + @include ('forum::partials.timestamp', ['carbon' => $subcategory->newestThread->created_at]) +
+ @endif + @if ($subcategory->latestActiveThread && $subcategory->latestActiveThread->post_count > 1) +
+ Re: {{ $subcategory->latestActiveThread->title }} + @include ('forum::partials.timestamp', ['carbon' => $subcategory->latestActiveThread->lastPost->created_at]) +
+ @endif +
+
+
+ @endforeach +
+ @endif +
diff --git a/resources/forum/blade-tailwind/views/category/partials/options.blade.php b/resources/forum/blade-tailwind/views/category/partials/options.blade.php new file mode 100644 index 000000000..338024af2 --- /dev/null +++ b/resources/forum/blade-tailwind/views/category/partials/options.blade.php @@ -0,0 +1,12 @@ +@foreach ($categories as $cat) + @if (!isset($hide) || (isset($hide) && $cat->id != $hide->id)) + + @endif + + @if ($cat->children) + @include ('forum::category.partials.options', ['categories' => $cat->children]) + @endif +@endforeach diff --git a/resources/forum/blade-tailwind/views/category/show.blade.php b/resources/forum/blade-tailwind/views/category/show.blade.php new file mode 100644 index 000000000..e8f5591a7 --- /dev/null +++ b/resources/forum/blade-tailwind/views/category/show.blade.php @@ -0,0 +1,248 @@ +{{-- $thread is passed as NULL to the master layout view to prevent it from showing in the breadcrumbs --}} +@extends('forum::layouts.main', ['thread' => null]) + +@section('content') +
+

+ {{ $category->title }}   + @if ($category->description) + {{ $category->description }} + @endif +

+
+ +
+
+ @if ($category->accepts_threads) + @can ('createThreads', $category) + {{ trans('forum::threads.new_thread') }} + @endcan + @endif + + + @can ('editCategories') + @can ('edit', $category) + + {{ trans('forum::general.edit') }} + + @endcan + @endcan + +
+ + @if (!$category->children->isEmpty()) + @foreach ($category->children as $subcategory) + @include ('forum::category.partials.list', ['category' => $subcategory]) + @endforeach + @endif + + @if ($category->accepts_threads) + @if (!$threads->isEmpty()) +
+ {{ $threads->links('forum::pagination') }} +
+ + @if (count($selectableThreadIds) > 0) + @can ('manageThreads', $category) +
+ @csrf + + +
+
+ + +
+
+ @endcan + @endif + +
+ @foreach ($threads as $thread) + @include ('forum::thread.partials.list') + @endforeach +
+ + @if (count($selectableThreadIds) > 0) + @can ('manageThreads', $category) +
+
+
+ {{ trans('forum::general.with_selection') }} +
+
+
+
+ {{ trans_choice('forum::general.actions', 1) }} +
+ + + @can ('deleteThreads', $category) + + @endcan + @can ('restoreThreads', $category) + + @endcan + @can ('moveThreadsFrom', $category) + + @endcan + @can ('lockThreads', $category) + + + @endcan + @can ('pinThreads', $category) + + + @endcan + +
+ +
+
+ +
+ + @include ('forum::category.partials.options', [ + 'categories' => $threadDestinationCategories, + 'hide' => $category + ]) + +
+ + @if (config('forum.general.soft_deletes')) +
+ + +
+ @endif + +
+ +
+
+
+
+
+ @endcan + @endif + @else +
+
+ {{ trans('forum::threads.none_found') }} + @can ('createThreads', $category) +
+ {{ trans('forum::threads.post_the_first') }} + @endcan +
+
+ @endif + +
+
+ {{ $threads->links('forum::pagination') }} +
+
+ @if ($category->accepts_threads) + @can ('createThreads', $category) + {{ trans('forum::threads.new_thread') }} + @endcan + @endif +
+
+ @endif +
+ + @if (!$threads->isEmpty()) + @can ('markThreadsAsRead') +
+ + {{ trans('forum::general.mark_read') }} + +
+ + @include ('forum::category.modals.mark-threads-as-read') + @endcan + @endif + + @can ('editCategories') + @can ('edit', $category) + @include ('forum::category.modals.edit') + @endcan + @endcan + @can ('deleteCategories') + @can ('delete', $category) + @include ('forum::category.modals.delete') + @endcan + @endcan + + +@stop diff --git a/resources/forum/blade-tailwind/views/components/badge.blade.php b/resources/forum/blade-tailwind/views/components/badge.blade.php new file mode 100644 index 000000000..652c1cc0b --- /dev/null +++ b/resources/forum/blade-tailwind/views/components/badge.blade.php @@ -0,0 +1,27 @@ +@props([ + 'type' => 'default' +]) + +@php +switch($type) { + case('info'): + $color = 'bg-blue-500'; + break; + + case('danger'): + $color = 'bg-red-500'; + break; + + case('warning'): + $color = 'bg-orange-500'; + break; + + default: + $color = 'bg-gray-400'; + break; +} +@endphp + +merge(['class' => "$color rounded-full px-2 py-1 text-white text-xs font-semibold"]) }}> + {{ $slot }} + diff --git a/resources/forum/blade-tailwind/views/components/button-group.blade.php b/resources/forum/blade-tailwind/views/components/button-group.blade.php new file mode 100644 index 000000000..008539dc3 --- /dev/null +++ b/resources/forum/blade-tailwind/views/components/button-group.blade.php @@ -0,0 +1,3 @@ +
+ {{ $slot }} +
diff --git a/resources/forum/blade-tailwind/views/components/button-link.blade.php b/resources/forum/blade-tailwind/views/components/button-link.blade.php new file mode 100644 index 000000000..6968d4e44 --- /dev/null +++ b/resources/forum/blade-tailwind/views/components/button-link.blade.php @@ -0,0 +1,3 @@ +merge(['class' => 'bg-blue-500 hover:bg-blue-400 text-white font-semibold hover:text-white px-3 py-2 rounded-md inline-block']) }}> + {{ $slot }} + diff --git a/resources/forum/blade-tailwind/views/components/button-secondary.blade.php b/resources/forum/blade-tailwind/views/components/button-secondary.blade.php new file mode 100644 index 000000000..519f991fa --- /dev/null +++ b/resources/forum/blade-tailwind/views/components/button-secondary.blade.php @@ -0,0 +1,3 @@ + diff --git a/resources/forum/blade-tailwind/views/components/button.blade.php b/resources/forum/blade-tailwind/views/components/button.blade.php new file mode 100644 index 000000000..afccd7b4e --- /dev/null +++ b/resources/forum/blade-tailwind/views/components/button.blade.php @@ -0,0 +1,3 @@ + diff --git a/resources/forum/blade-tailwind/views/components/input.blade.php b/resources/forum/blade-tailwind/views/components/input.blade.php new file mode 100644 index 000000000..2e221f669 --- /dev/null +++ b/resources/forum/blade-tailwind/views/components/input.blade.php @@ -0,0 +1 @@ +merge(['type' => 'text', 'class' => 'px-3 py-1 border-gray-300 focus:border-blue-500 focus:ring-blue-500 rounded-md border shadow-sm']) }}> diff --git a/resources/forum/blade-tailwind/views/components/label.blade.php b/resources/forum/blade-tailwind/views/components/label.blade.php new file mode 100644 index 000000000..4d9a6b565 --- /dev/null +++ b/resources/forum/blade-tailwind/views/components/label.blade.php @@ -0,0 +1,3 @@ + diff --git a/resources/forum/blade-tailwind/views/components/select.blade.php b/resources/forum/blade-tailwind/views/components/select.blade.php new file mode 100644 index 000000000..2df5e15da --- /dev/null +++ b/resources/forum/blade-tailwind/views/components/select.blade.php @@ -0,0 +1,5 @@ +
+ +
diff --git a/resources/forum/blade-tailwind/views/components/textarea.blade.php b/resources/forum/blade-tailwind/views/components/textarea.blade.php new file mode 100644 index 000000000..01483e3bd --- /dev/null +++ b/resources/forum/blade-tailwind/views/components/textarea.blade.php @@ -0,0 +1 @@ + diff --git a/resources/forum/blade-tailwind/views/layouts/main.blade.php b/resources/forum/blade-tailwind/views/layouts/main.blade.php new file mode 100644 index 000000000..8457adbdd --- /dev/null +++ b/resources/forum/blade-tailwind/views/layouts/main.blade.php @@ -0,0 +1,94 @@ + + + + + + + + @if (isset($thread_title)) + {{ $thread_title }} — + @endif + @if (isset($category)) + {{ $category->title }} — + @endif + {{ trans('forum::general.home_title') }} + + + @vite(['resources/forum/blade-tailwind/css/forum.css', 'resources/forum/blade-tailwind/js/forum.js']) + + + + +
+ @include ('forum::partials.breadcrumbs') + @include ('forum::partials.alerts') + + @yield('content') +
+ + @yield('footer') + + + + diff --git a/resources/forum/blade-tailwind/views/modal-form.blade.php b/resources/forum/blade-tailwind/views/modal-form.blade.php new file mode 100644 index 000000000..35d368f2c --- /dev/null +++ b/resources/forum/blade-tailwind/views/modal-form.blade.php @@ -0,0 +1,30 @@ + diff --git a/resources/forum/blade-tailwind/views/pagination.blade.php b/resources/forum/blade-tailwind/views/pagination.blade.php new file mode 100644 index 000000000..63c6f56b5 --- /dev/null +++ b/resources/forum/blade-tailwind/views/pagination.blade.php @@ -0,0 +1,46 @@ +@if ($paginator->hasPages()) + +@endif diff --git a/resources/forum/blade-tailwind/views/partials/alert.blade.php b/resources/forum/blade-tailwind/views/partials/alert.blade.php new file mode 100644 index 000000000..e3c1b5dee --- /dev/null +++ b/resources/forum/blade-tailwind/views/partials/alert.blade.php @@ -0,0 +1,18 @@ +@php +$colorClasses = match ($type) { + 'primary', '', null => 'bg-blue-100 text-blue-700', + 'success', '', null => 'bg-green-100 text-green-700', + 'danger' => 'bg-orange-100 text-orange-700' +}; +@endphp + +
+
+ {!! $message !!} +
+ +
diff --git a/resources/forum/blade-tailwind/views/partials/alerts.blade.php b/resources/forum/blade-tailwind/views/partials/alerts.blade.php new file mode 100644 index 000000000..e2a0e35a9 --- /dev/null +++ b/resources/forum/blade-tailwind/views/partials/alerts.blade.php @@ -0,0 +1,11 @@ +@if (Session::has('alerts')) + @foreach (Session::get('alerts') as $alert) + @include ('forum::partials.alert', $alert) + @endforeach +@endif + +@if (isset($errors) && !$errors->isEmpty()) + @foreach ($errors->all() as $error) + @include ('forum::partials.alert', ['type' => 'danger', 'message' => $error]) + @endforeach +@endif diff --git a/resources/forum/blade-tailwind/views/partials/breadcrumb-categories.blade.php b/resources/forum/blade-tailwind/views/partials/breadcrumb-categories.blade.php new file mode 100644 index 000000000..521e55241 --- /dev/null +++ b/resources/forum/blade-tailwind/views/partials/breadcrumb-categories.blade.php @@ -0,0 +1,4 @@ +@if ($category->parent !== null) + @include ('forum::partials.breadcrumb-categories', ['category' => $category->parent]) +@endif +
  • {{ $category->title }}
  • diff --git a/resources/forum/blade-tailwind/views/partials/breadcrumbs.blade.php b/resources/forum/blade-tailwind/views/partials/breadcrumbs.blade.php new file mode 100644 index 000000000..b60634275 --- /dev/null +++ b/resources/forum/blade-tailwind/views/partials/breadcrumbs.blade.php @@ -0,0 +1,16 @@ + diff --git a/resources/forum/blade-tailwind/views/partials/timestamp.blade.php b/resources/forum/blade-tailwind/views/partials/timestamp.blade.php new file mode 100644 index 000000000..c01cce7a9 --- /dev/null +++ b/resources/forum/blade-tailwind/views/partials/timestamp.blade.php @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/forum/blade-tailwind/views/post/confirm-delete.blade.php b/resources/forum/blade-tailwind/views/post/confirm-delete.blade.php new file mode 100644 index 000000000..ae71f083f --- /dev/null +++ b/resources/forum/blade-tailwind/views/post/confirm-delete.blade.php @@ -0,0 +1,37 @@ +@extends ('forum::layouts.main', ['breadcrumbs_append' => [trans_choice('forum::posts.delete', 1)]]) + +@section ('content') +
    +

    {{ trans_choice('forum::posts.delete', 1) }}

    + +
    + + @include ('forum::post.partials.list', ['post' => $post, 'single' => true]) + +
    + @csrf + @method('DELETE') + +
    +
    + + @if (config('forum.general.soft_deletes')) +
    + + +
    + @else + {{ trans('forum::general.generic_confirm') }} + @endif +
    +
    + +
    + {{ trans('forum::general.cancel') }} + {{ trans('forum::general.delete') }} +
    +
    +
    +@stop diff --git a/resources/forum/blade-tailwind/views/post/confirm-restore.blade.php b/resources/forum/blade-tailwind/views/post/confirm-restore.blade.php new file mode 100644 index 000000000..66d4deb9c --- /dev/null +++ b/resources/forum/blade-tailwind/views/post/confirm-restore.blade.php @@ -0,0 +1,29 @@ +@extends ('forum::layouts.main', ['breadcrumbs_append' => [trans_choice('forum::posts.restore', 1)]]) + +@section ('content') +
    +

    {{ trans_choice('forum::posts.restore', 1) }}

    + +
    + + @include ('forum::post.partials.list', ['post' => $post, 'single' => true]) + +
    + @csrf + @method('POST') + +
    +
    + {{ trans('forum::general.generic_confirm') }} +
    +
    + +
    + {{ trans('forum::general.cancel') }} + + {{ trans('forum::general.restore') }} + +
    +
    +
    +@stop diff --git a/resources/forum/blade-tailwind/views/post/create.blade.php b/resources/forum/blade-tailwind/views/post/create.blade.php new file mode 100644 index 000000000..46bd4e78a --- /dev/null +++ b/resources/forum/blade-tailwind/views/post/create.blade.php @@ -0,0 +1,32 @@ +@extends ('forum::layouts.main', ['breadcrumbs_append' => [trans('forum::general.new_reply')]]) + +@section ('content') +
    +

    {{ trans('forum::general.new_reply') }} ({{ $thread->title }})

    + + @if ($post !== null && !$post->trashed()) +
    {{ trans('forum::general.replying_to', ['item' => $post->authorName]) }}:
    + + @include ('forum::post.partials.quote') + @endif + +
    + +
    + {!! csrf_field() !!} + + @if ($post !== null) + + @endif + +
    + {{ old('content') }} +
    + +
    + {{ trans('forum::general.cancel') }} + {{ trans('forum::general.reply') }} +
    +
    +
    +@stop diff --git a/resources/forum/blade-tailwind/views/post/edit.blade.php b/resources/forum/blade-tailwind/views/post/edit.blade.php new file mode 100644 index 000000000..295b79487 --- /dev/null +++ b/resources/forum/blade-tailwind/views/post/edit.blade.php @@ -0,0 +1,29 @@ +@extends ('forum::layouts.main', ['breadcrumbs_append' => [trans('forum::posts.edit')]]) + +@section ('content') +
    +

    {{ trans('forum::posts.edit') }} ({{ $thread->title }})

    + +
    + + @if ($post->parent) +

    {{ trans('forum::general.response_to', ['item' => $post->parent->authorName]) }}...

    + + @include ('forum::post.partials.list', ['post' => $post->parent, 'single' => true]) + @endif + +
    + @csrf + @method('PATCH') + +
    + {{ old('content') !== null ? old('content') : $post->content }} +
    + +
    + {{ trans('forum::general.cancel') }} + {{ trans('forum::general.save') }} +
    +
    +
    +@stop diff --git a/resources/forum/blade-tailwind/views/post/partials/actions.blade.php b/resources/forum/blade-tailwind/views/post/partials/actions.blade.php new file mode 100644 index 000000000..e7eb921ac --- /dev/null +++ b/resources/forum/blade-tailwind/views/post/partials/actions.blade.php @@ -0,0 +1,23 @@ +
    + +
    +
    +
    + + +
    +
    + +
    +
    diff --git a/resources/forum/blade-tailwind/views/post/partials/list.blade.php b/resources/forum/blade-tailwind/views/post/partials/list.blade.php new file mode 100644 index 000000000..ecf26f53d --- /dev/null +++ b/resources/forum/blade-tailwind/views/post/partials/list.blade.php @@ -0,0 +1,70 @@ +
    trashed())id="post-{{ $post->sequence }}"@endif + class="bg-white border mb-2 rounded-md {{ $post->trashed() || $thread->trashed() ? 'opacity-50' : '' }}" + :class="{ 'border-blue-500': state.selectedPosts.includes({{ $post->id }}) }"> +
    + @if (!isset($single) || !$single) + + #{{ $post->sequence }} + @if ($post->sequence != 1) + @can ('deletePosts', $post->thread) + @can ('delete', $post) + + @endcan + @endcan + @endif + + @endif + +
    + {{ $post->authorName }} + + @include ('forum::partials.timestamp', ['carbon' => $post->created_at]) + @if ($post->hasBeenUpdated()) + ({{ trans('forum::general.last_updated') }} @include ('forum::partials.timestamp', ['carbon' => $post->updated_at])) + @endif + +
    +
    +
    + @if ($post->parent !== null) + @include ('forum::post.partials.quote', ['post' => $post->parent]) + @endif + + @if ($post->trashed()) + @can ('viewTrashedPosts') + {!! Forum::render($post->content) !!} +
    + @endcan + {{ trans('forum::general.deleted') }} + @else + {!! Forum::render($post->content) !!} + @endif + + @if (!isset($single) || !$single) +
    + @if (!$post->trashed()) + {{ trans('forum::general.permalink') }} + @if ($post->sequence != 1) + @can ('deletePosts', $post->thread) + @can ('delete', $post) + {{ trans('forum::general.delete') }} + @endcan + @endcan + @endif + @can ('edit', $post) + {{ trans('forum::general.edit') }} + @endcan + @can ('reply', $post->thread) + {{ trans('forum::general.reply') }} + @endcan + @else + @can ('restorePosts', $post->thread) + @can ('restore', $post) + {{ trans('forum::general.restore') }} + @endcan + @endcan + @endif +
    + @endif +
    +
    diff --git a/resources/forum/blade-tailwind/views/post/partials/quote.blade.php b/resources/forum/blade-tailwind/views/post/partials/quote.blade.php new file mode 100644 index 000000000..9c7649f9e --- /dev/null +++ b/resources/forum/blade-tailwind/views/post/partials/quote.blade.php @@ -0,0 +1,13 @@ +
    +
    +
    + + #{{ $post->sequence }} + +
    + {{ $post->authorName }} {{ $post->posted }} +
    +
    + {!! \Illuminate\Support\Str::limit(Forum::render($post->content)) !!} +
    +
    diff --git a/resources/forum/blade-tailwind/views/post/show.blade.php b/resources/forum/blade-tailwind/views/post/show.blade.php new file mode 100644 index 000000000..9e1d1b056 --- /dev/null +++ b/resources/forum/blade-tailwind/views/post/show.blade.php @@ -0,0 +1,14 @@ +@extends ('forum::layouts.main', ['breadcrumbs_append' => [trans('forum::posts.view')]]) + +@section ('content') +
    +
    +

    {{ trans('forum::posts.view') }} ({{ $thread->title }})

    + {{ trans('forum::threads.view') }} +
    + +
    + + @include ('forum::post.partials.list', ['post' => $post, 'single' => true]) +
    +@stop diff --git a/resources/forum/blade-tailwind/views/thread/create.blade.php b/resources/forum/blade-tailwind/views/thread/create.blade.php new file mode 100644 index 000000000..d9effc59f --- /dev/null +++ b/resources/forum/blade-tailwind/views/thread/create.blade.php @@ -0,0 +1,25 @@ +@extends ('forum::layouts.main', ['breadcrumbs_append' => [trans('forum::threads.new_thread')]]) + +@section ('content') +
    +

    {{ trans('forum::threads.new_thread') }} ({{ $category->title }})

    + +
    + @csrf + +
    + {{ trans('forum::general.title') }} + +
    + +
    + {{ old('content') }} +
    + +
    + {{ trans('forum::general.cancel') }} + {{ trans('forum::general.create') }} +
    +
    +
    +@stop diff --git a/resources/forum/blade-tailwind/views/thread/modals/mark-as-read.blade.php b/resources/forum/blade-tailwind/views/thread/modals/mark-as-read.blade.php new file mode 100644 index 000000000..8c196ac65 --- /dev/null +++ b/resources/forum/blade-tailwind/views/thread/modals/mark-as-read.blade.php @@ -0,0 +1,14 @@ +@component('forum::modal-form') + @slot('key', 'mark-as-read') + @slot('title', trans('forum::general.mark_read')) + @slot('route', Forum::route('unread.mark-as-read')) + @slot('method', 'PATCH') + +

    {{ trans('forum::general.generic_confirm') }}

    + + @slot('actions') + + {{ trans('forum::general.mark_read') }} + + @endslot +@endcomponent diff --git a/resources/forum/blade-tailwind/views/thread/partials/list.blade.php b/resources/forum/blade-tailwind/views/thread/partials/list.blade.php new file mode 100644 index 000000000..a30f82fa3 --- /dev/null +++ b/resources/forum/blade-tailwind/views/thread/partials/list.blade.php @@ -0,0 +1,52 @@ +
    +
    +
    + + {{ $thread->title }} + +
    + {{ $thread->authorName }} + @include ('forum::partials.timestamp', ['carbon' => $thread->created_at]) + + @if (!isset($category)) +
    + {{ $thread->category->title }} + @endif +
    + +
    + @if ($thread->pinned) + {{ trans('forum::threads.pinned') }} + @endif + @if ($thread->locked) + {{ trans('forum::threads.locked') }} + @endif + @if ($thread->userReadStatus !== null && !$thread->trashed()) + {{ trans($thread->userReadStatus) }} + @endif + @if ($thread->trashed()) + {{ trans('forum::general.deleted') }} + @endif + + {{ trans('forum::general.replies') }}: + {{ $thread->reply_count }} + +
    + + @if ($thread->lastPost) +
    + {{ trans('forum::posts.view') }} » +
    + {{ $thread->lastPost->authorName }} + @include ('forum::partials.timestamp', ['carbon' => $thread->lastPost->created_at]) +
    +
    + @endif + + @if (isset($category) && isset($selectableThreadIds) && in_array($thread->id, $selectableThreadIds)) +
    + +
    + @endif +
    +
    diff --git a/resources/forum/blade-tailwind/views/thread/recent.blade.php b/resources/forum/blade-tailwind/views/thread/recent.blade.php new file mode 100644 index 000000000..b96988453 --- /dev/null +++ b/resources/forum/blade-tailwind/views/thread/recent.blade.php @@ -0,0 +1,21 @@ +@extends ('forum::layouts.main', ['thread' => null, 'breadcrumbs_append' => [trans('forum::threads.recent')]]) + +@section ('content') +
    +

    {{ trans('forum::threads.recent') }}

    + + @if (!$threads->isEmpty()) +
    + @foreach ($threads as $thread) + @include ('forum::thread.partials.list') + @endforeach +
    + @else +
    +
    + {{ trans('forum::threads.none_found') }} +
    +
    + @endif +
    +@stop diff --git a/resources/forum/blade-tailwind/views/thread/show.blade.php b/resources/forum/blade-tailwind/views/thread/show.blade.php new file mode 100644 index 000000000..0e8afc3bd --- /dev/null +++ b/resources/forum/blade-tailwind/views/thread/show.blade.php @@ -0,0 +1,391 @@ +@extends ('forum::layouts.main', ['thread' => null, 'breadcrumbs_append' => [$thread->title], 'thread_title' => $thread->title]) + +@section ('content') +
    +
    +

    {{ $thread->title }}

    + +
    + @if (Gate::allows('deleteThreads', $thread->category) && Gate::allows('delete', $thread)) + @if ($thread->trashed()) + + {{ trans('forum::general.perma_delete') }} + + @else + + {{ trans('forum::general.delete') }} + + @endif + @endif + @if ($thread->trashed() && Gate::allows('restoreThreads', $thread->category) && Gate::allows('restore', $thread)) + + {{ trans('forum::general.restore') }} + + @endif + + @if (Gate::allows('lockThreads', $category) + || Gate::allows('pinThreads', $category) + || Gate::allows('rename', $thread) + || Gate::allows('moveThreadsFrom', $category)) + + @if (!$thread->trashed()) + @can ('lockThreads', $category) + @if ($thread->locked) + + {{ trans('forum::threads.unlock') }} + + @else + + {{ trans('forum::threads.lock') }} + + @endif + @endcan + @can ('pinThreads', $category) + @if ($thread->pinned) + + {{ trans('forum::threads.unpin') }} + + @else + + {{ trans('forum::threads.pin') }} + + @endif + @endcan + @can ('rename', $thread) + + {{ trans('forum::general.rename') }} + + @endcan + @can ('moveThreadsFrom', $category) + + {{ trans('forum::general.move') }} + + @endcan + @endif + + @endcan +
    +
    + +
    + @if ($thread->trashed()) + {{ trans('forum::general.deleted') }} + @endif + @if ($thread->pinned) + {{ trans('forum::threads.pinned') }} + @endif + @if ($thread->locked) + {{ trans('forum::threads.locked') }} + @endif +
    + + @if ((count($posts) > 1 || $posts->currentPage() > 1) && (Gate::allows('deletePosts', $thread) || Gate::allows('restorePosts', $thread)) && count($selectablePosts) > 0) +
    + @csrf + + @endif + +
    +
    + {{ $posts->links('forum::pagination') }} +
    +
    + @if (!$thread->trashed()) + @can ('reply', $thread) + + + {{ trans('forum::general.new_reply') }} + + + {{ trans('forum::general.quick_reply') }} + + + @endcan + @endif +
    +
    + + @if ((count($posts) > 1 || $posts->currentPage() > 1) && (Gate::allows('deletePosts', $thread) || Gate::allows('restorePosts', $thread)) && count($selectablePosts) > 0) +
    +
    + + +
    +
    + @endif + + @foreach ($posts as $post) + @include ('forum::post.partials.list', compact('post')) + @endforeach + + @if ((count($posts) > 1 || $posts->currentPage() > 1) && (Gate::allows('deletePosts', $thread) || Gate::allows('restorePosts', $thread)) && count($selectablePosts) > 0) +
    +
    +
    + {{ trans('forum::general.with_selection') }} +
    +
    +
    +
    + {{ trans_choice('forum::general.actions', 1) }} +
    + + + + + +
    + + @if (config('forum.general.soft_deletes')) +
    + + +
    + @endif + +
    + {{ trans('forum::general.proceed') }} +
    +
    +
    +
    +
    + @endif + + {{ $posts->links('forum::pagination') }} + + @if (!$thread->trashed()) + @can ('reply', $thread) +

    {{ trans('forum::general.quick_reply') }}

    +
    +
    + @csrf + +
    + {{ old('content') }} +
    + +
    + {{ trans('forum::general.reply') }} +
    +
    +
    + @endcan + @endif +
    + + @if ($thread->trashed() && Gate::allows('restoreThreads', $thread->category) && Gate::allows('restore', $thread)) + @component('forum::modal-form') + @slot('key', 'restore-thread') + @slot('title', '' . trans('forum::general.restore')) + @slot('route', Forum::route('thread.restore', $thread)) + @slot('method', 'POST') + + {{ trans('forum::general.generic_confirm') }} + + @slot('actions') + {{ trans('forum::general.proceed') }} + @endslot + @endcomponent + @endif + + @if (Gate::allows('deleteThreads', $thread->category) && Gate::allows('delete', $thread)) + @component('forum::modal-form') + @slot('key', 'delete-thread') + @slot('title', '' . trans('forum::threads.delete')) + @slot('route', Forum::route('thread.delete', $thread)) + @slot('method', 'DELETE') + + @if (config('forum.general.soft_deletes')) +
    + + +
    + @else + {{ trans('forum::general.generic_confirm') }} + @endif + + @slot('actions') + {{ trans('forum::general.proceed') }} + @endslot + @endcomponent + + @if (config('forum.general.soft_deletes')) + @component('forum::modal-form') + @slot('key', 'perma-delete-thread') + @slot('title', '' . trans_choice('forum::threads.perma_delete', 1)) + @slot('route', Forum::route('thread.delete', $thread)) + @slot('method', 'DELETE') + + + + {{ trans('forum::general.generic_confirm') }} + + @slot('actions') + {{ trans('forum::general.proceed') }} + @endslot + @endcomponent + @endif + @endif + + @if (!$thread->trashed()) + @can ('lockThreads', $category) + @if ($thread->locked) + @component('forum::modal-form') + @slot('key', 'unlock-thread') + @slot('title', ' ' . trans('forum::threads.unlock')) + @slot('route', Forum::route('thread.unlock', $thread)) + @slot('method', 'POST') + + {{ trans('forum::general.generic_confirm') }} + + @slot('actions') + {{ trans('forum::general.proceed') }} + @endslot + @endcomponent + @else + @component('forum::modal-form') + @slot('key', 'lock-thread') + @slot('title', ' ' . trans('forum::threads.lock')) + @slot('route', Forum::route('thread.lock', $thread)) + @slot('method', 'POST') + + {{ trans('forum::general.generic_confirm') }} + + @slot('actions') + {{ trans('forum::general.proceed') }} + @endslot + @endcomponent + @endif + @endcan + + @can ('pinThreads', $category) + @if ($thread->pinned) + @component('forum::modal-form') + @slot('key', 'unpin-thread') + @slot('title', ' ' . trans('forum::threads.unpin')) + @slot('route', Forum::route('thread.unpin', $thread)) + @slot('method', 'POST') + + {{ trans('forum::general.generic_confirm') }} + + @slot('actions') + {{ trans('forum::general.proceed') }} + @endslot + @endcomponent + @else + @component('forum::modal-form') + @slot('key', 'pin-thread') + @slot('title', ' ' . trans('forum::threads.pin')) + @slot('route', Forum::route('thread.pin', $thread)) + @slot('method', 'POST') + + {{ trans('forum::general.generic_confirm') }} + + @slot('actions') + {{ trans('forum::general.proceed') }} + @endslot + @endcomponent + @endif + @endcan + + @can ('rename', $thread) + @component('forum::modal-form') + @slot('key', 'rename-thread') + @slot('title', ' ' . trans('forum::general.rename')) + @slot('route', Forum::route('thread.rename', $thread)) + @slot('method', 'POST') + +
    + {{ trans('forum::general.title') }} + +
    + + @slot('actions') + {{ trans('forum::general.proceed') }} + @endslot + @endcomponent + @endcan + + @can ('moveThreadsFrom', $category) + @component('forum::modal-form') + @slot('key', 'move-thread') + @slot('title', ' ' . trans('forum::general.move')) + @slot('route', Forum::route('thread.move', $thread)) + @slot('method', 'POST') + +
    +
    + +
    + +
    + + @slot('actions') + {{ trans('forum::general.proceed') }} + @endslot + @endcomponent + @endcan + @endif + + +@stop diff --git a/resources/forum/blade-tailwind/views/thread/unread.blade.php b/resources/forum/blade-tailwind/views/thread/unread.blade.php new file mode 100644 index 000000000..560ac0edd --- /dev/null +++ b/resources/forum/blade-tailwind/views/thread/unread.blade.php @@ -0,0 +1,31 @@ +@extends ('forum::layouts.main', ['thread' => null, 'breadcrumbs_append' => [trans('forum::threads.unread_updated')]]) + +@section ('content') +
    +

    {{ trans('forum::threads.unread_updated') }}

    + + @if (!$threads->isEmpty()) +
    + @foreach ($threads as $thread) + @include ('forum::thread.partials.list') + @endforeach +
    + @else +
    + {{ trans('forum::threads.none_found') }} +
    + @endif +
    + + @if (!$threads->isEmpty()) + @can ('markThreadsAsRead') +
    + + {{ trans('forum::general.mark_read') }} + +
    + + @include ('forum::thread.modals.mark-as-read') + @endcan + @endif +@stop diff --git a/resources/forum/livewire-tailwind/css/forum.css b/resources/forum/livewire-tailwind/css/forum.css new file mode 100644 index 000000000..f1f6bcc75 --- /dev/null +++ b/resources/forum/livewire-tailwind/css/forum.css @@ -0,0 +1,83 @@ +@import url('https://fonts.googleapis.com/css2?family=Source+Sans+3:ital,wght@0,400;0,500;0,700;1,400&display=swap'); + +@tailwind base; +@tailwind components; +@tailwind utilities; + +@layer base { + .forum { + font-family: "Source Sans 3", sans-serif; + font-optical-sizing: auto; + font-size: 18px; + @apply text-slate-900; + } + + .breadcrumbs ol li { + display: inline-block; + } + + .breadcrumbs ol li + li { + margin-left: .5rem; + } + + .breadcrumbs ol li + li::before { + float: left; + padding-right: .5rem; + color: #6c757d; + content: "/"; + } + + .forum .clr-field button { + @apply w-6 h-6 mr-2 rounded-full; + } + + .forum .nested-sort .ns-targeted { + @apply rounded-md border-green-500 outline outline-green-500; + } + + .bg-category { + background-color: var(--category-light); + } + + .text-category { + color: var(--category-light); + } + + div, p { + font-size: 1rem; + } + + h1 { + @apply text-4xl my-6; + } + + h2 { + @apply text-2xl; + } + + h3 { + @apply text-xl; + } + + a:not(.link-button):not(.group-button):not(.text-category) { + @apply text-slate-600 hover:text-slate-900; + } + + @media (prefers-color-scheme: dark) { + .forum { + @apply text-slate-400; + } + + .bg-category { + background-color: var(--category-dark); + } + + .text-category { + color: var(--category-dark); + } + + a:not(.link-button):not(.group-button):not(.text-category) { + @apply text-slate-300 hover:text-white; + } + } +} diff --git a/resources/forum/livewire-tailwind/js/forum.js b/resources/forum/livewire-tailwind/js/forum.js new file mode 100644 index 000000000..1d0f67295 --- /dev/null +++ b/resources/forum/livewire-tailwind/js/forum.js @@ -0,0 +1,9 @@ +import { formatDistance } from 'date-fns'; +import '@melloware/coloris/dist/coloris.css'; +import Coloris from '@melloware/coloris'; +import NestedSort from 'nested-sort'; + +window.dateFormatDistance = formatDistance; +window.Coloris = Coloris; +window.Coloris.init(); +window.NestedSort = NestedSort; diff --git a/resources/forum/livewire-tailwind/views/components/alerts.blade.php b/resources/forum/livewire-tailwind/views/components/alerts.blade.php new file mode 100644 index 000000000..56e135179 --- /dev/null +++ b/resources/forum/livewire-tailwind/views/components/alerts.blade.php @@ -0,0 +1,64 @@ +
    + +
    + +@script + +@endscript diff --git a/resources/forum/livewire-tailwind/views/components/breadcrumb-categories.blade.php b/resources/forum/livewire-tailwind/views/components/breadcrumb-categories.blade.php new file mode 100644 index 000000000..cc919d74f --- /dev/null +++ b/resources/forum/livewire-tailwind/views/components/breadcrumb-categories.blade.php @@ -0,0 +1,4 @@ +@if ($category->parent !== null) + @include ('forum::components.breadcrumb-categories', ['category' => $category->parent]) +@endif + diff --git a/resources/forum/livewire-tailwind/views/components/breadcrumbs.blade.php b/resources/forum/livewire-tailwind/views/components/breadcrumbs.blade.php new file mode 100644 index 000000000..d1d243464 --- /dev/null +++ b/resources/forum/livewire-tailwind/views/components/breadcrumbs.blade.php @@ -0,0 +1,23 @@ + diff --git a/resources/forum/livewire-tailwind/views/components/button.blade.php b/resources/forum/livewire-tailwind/views/components/button.blade.php new file mode 100644 index 000000000..b0db803de --- /dev/null +++ b/resources/forum/livewire-tailwind/views/components/button.blade.php @@ -0,0 +1,21 @@ +@php +$colorClasses = match ($intent) { + 'primary', '', null => 'text-white bg-blue-600 hover:text-white hover:bg-blue-500', + 'secondary' => 'text-zinc-800 bg-zinc-400/50 hover:bg-zinc-400/35 dark:text-slate-800 dark:bg-slate-400/50 dark:hover:bg-slate-400/65', + 'danger' => 'text-white bg-red-500 hover:bg-red-400' +}; + +$sizeClasses = match ($size) { + 'regular', '', null => 'min-w-36 px-4 py-2', + 'small' => 'px-4 py-1', +}; +@endphp + + diff --git a/resources/forum/livewire-tailwind/views/components/category/card.blade.php b/resources/forum/livewire-tailwind/views/components/category/card.blade.php new file mode 100644 index 000000000..850278fe0 --- /dev/null +++ b/resources/forum/livewire-tailwind/views/components/category/card.blade.php @@ -0,0 +1,103 @@ +
    +
    + +
    +

    + {{ $category->title }} +

    +

    {{ $category->description }}

    +
    +
    + @if ($category->accepts_threads) + + + @endif +
    +
    + @if ($category->accepts_threads) + @if ($category->newestThread) +
    + @include ("forum::components.icons.chat-bubbles-mini") + + {{ $category->newestThread->title }} + + + + +
    + @endif + @if ($category->latestActiveThread && $category->latestActiveThread->reply_count > 1) +
    + @include ("forum::components.icons.chat-bubble-text-mini") + + Re: {{ $category->latestActiveThread->title }} + + + + +
    + @endif + @endif +
    +
    + + @if (count($category->children) > 0) + @foreach ($category->children as $subcategory) +
    +
    + @include ('forum::components.icons.subcategory', ['size' => '12']) +
    +
    +
    +

    + {{ $subcategory->title }} +

    +

    {{ $subcategory->description }}

    +
    +
    + @if ($subcategory->accepts_threads) + + + @endif +
    +
    + @if ($subcategory->accepts_threads) + @if ($subcategory->newestThread) +
    + @include ("forum::components.icons.chat-bubbles-mini") + + {{ $subcategory->newestThread->title }} + + + + +
    + @endif + @if ($subcategory->latestActiveThread && $subcategory->latestActiveThread->reply_count > 1) +
    + @include ("forum::components.icons.chat-bubble-text-mini") + + Re: {{ $subcategory->latestActiveThread->title }} + + + + +
    + @endif + @endif +
    +
    +
    + @endforeach + @endif +
    diff --git a/resources/forum/livewire-tailwind/views/components/category/draggable-items.blade.php b/resources/forum/livewire-tailwind/views/components/category/draggable-items.blade.php new file mode 100644 index 000000000..4e05635c1 --- /dev/null +++ b/resources/forum/livewire-tailwind/views/components/category/draggable-items.blade.php @@ -0,0 +1,18 @@ +@foreach ($categories as $category) +
  • + + + @include ('forum::components.icons.drag-area-vertical') + + {{ $category->title }} + + {{ trans('forum::general.edit') }} + + + @if (count($category->children) > 0) +
      + @include ('forum::components.category.draggable-items', ['categories' => $category->children]) +
    + @endif +
  • +@endforeach diff --git a/resources/forum/livewire-tailwind/views/components/category/options.blade.php b/resources/forum/livewire-tailwind/views/components/category/options.blade.php new file mode 100644 index 000000000..9736cda0a --- /dev/null +++ b/resources/forum/livewire-tailwind/views/components/category/options.blade.php @@ -0,0 +1,10 @@ +@foreach ($categories as $category) + + + @if ($category->children) + @include ('forum::components.category.options', ['categories' => $category->children]) + @endif +@endforeach diff --git a/resources/forum/livewire-tailwind/views/components/form/error.blade.php b/resources/forum/livewire-tailwind/views/components/form/error.blade.php new file mode 100644 index 000000000..ef252c72f --- /dev/null +++ b/resources/forum/livewire-tailwind/views/components/form/error.blade.php @@ -0,0 +1,3 @@ +
    + @error($id) {{ $message }} @enderror +
    diff --git a/resources/forum/livewire-tailwind/views/components/form/input-checkbox.blade.php b/resources/forum/livewire-tailwind/views/components/form/input-checkbox.blade.php new file mode 100644 index 000000000..6b643223f --- /dev/null +++ b/resources/forum/livewire-tailwind/views/components/form/input-checkbox.blade.php @@ -0,0 +1,11 @@ +
    + + @if (isset($label)) + + @endif +
    diff --git a/resources/forum/livewire-tailwind/views/components/form/input-select.blade.php b/resources/forum/livewire-tailwind/views/components/form/input-select.blade.php new file mode 100644 index 000000000..c88db127a --- /dev/null +++ b/resources/forum/livewire-tailwind/views/components/form/input-select.blade.php @@ -0,0 +1,11 @@ +
    + + + + @include ('forum::components.form.error') +
    diff --git a/resources/forum/livewire-tailwind/views/components/form/input-text.blade.php b/resources/forum/livewire-tailwind/views/components/form/input-text.blade.php new file mode 100644 index 000000000..f5531a4b5 --- /dev/null +++ b/resources/forum/livewire-tailwind/views/components/form/input-text.blade.php @@ -0,0 +1,11 @@ +
    + + + + @include ('forum::components.form.error') +
    diff --git a/resources/forum/livewire-tailwind/views/components/form/input-textarea.blade.php b/resources/forum/livewire-tailwind/views/components/form/input-textarea.blade.php new file mode 100644 index 000000000..afb0004bf --- /dev/null +++ b/resources/forum/livewire-tailwind/views/components/form/input-textarea.blade.php @@ -0,0 +1,11 @@ +
    + @if (isset($label)) + + @endif + + + @include ('forum::components.form.error') +
    diff --git a/resources/forum/livewire-tailwind/views/components/group-button.blade.php b/resources/forum/livewire-tailwind/views/components/group-button.blade.php new file mode 100644 index 000000000..60dfea7b7 --- /dev/null +++ b/resources/forum/livewire-tailwind/views/components/group-button.blade.php @@ -0,0 +1,14 @@ +@php +$colorClasses = match ($intent) { + 'primary', '', null => 'text-white bg-blue-600 hover:text-white hover:bg-blue-500', + 'secondary' => 'text-zinc-800 bg-zinc-400/50 hover:bg-zinc-400/35 dark:text-slate-800 dark:bg-slate-400/50 dark:hover:bg-slate-400/65', + 'danger' => 'text-white bg-red-500 hover:bg-red-400' +}; +@endphp + + + @if (isset($icon) && !empty($icon)) + @include ("forum::components.icons.{$icon}", ['size' => '5']) + @endif + {{ $label }} + diff --git a/resources/forum/livewire-tailwind/views/components/icons/arrow-down-mini.blade.php b/resources/forum/livewire-tailwind/views/components/icons/arrow-down-mini.blade.php new file mode 100644 index 000000000..94a3f2e41 --- /dev/null +++ b/resources/forum/livewire-tailwind/views/components/icons/arrow-down-mini.blade.php @@ -0,0 +1,7 @@ + + + diff --git a/resources/forum/livewire-tailwind/views/components/icons/arrow-path-mini.blade.php b/resources/forum/livewire-tailwind/views/components/icons/arrow-path-mini.blade.php new file mode 100644 index 000000000..cc91c2a2d --- /dev/null +++ b/resources/forum/livewire-tailwind/views/components/icons/arrow-path-mini.blade.php @@ -0,0 +1,7 @@ + + + diff --git a/resources/forum/livewire-tailwind/views/components/icons/arrow-right-mini.blade.php b/resources/forum/livewire-tailwind/views/components/icons/arrow-right-mini.blade.php new file mode 100644 index 000000000..ec405c168 --- /dev/null +++ b/resources/forum/livewire-tailwind/views/components/icons/arrow-right-mini.blade.php @@ -0,0 +1,7 @@ + + + diff --git a/resources/forum/livewire-tailwind/views/components/icons/arrow-up-circle-mini.blade.php b/resources/forum/livewire-tailwind/views/components/icons/arrow-up-circle-mini.blade.php new file mode 100644 index 000000000..76fda48ea --- /dev/null +++ b/resources/forum/livewire-tailwind/views/components/icons/arrow-up-circle-mini.blade.php @@ -0,0 +1,7 @@ + + + diff --git a/resources/forum/livewire-tailwind/views/components/icons/arrow-up-mini.blade.php b/resources/forum/livewire-tailwind/views/components/icons/arrow-up-mini.blade.php new file mode 100644 index 000000000..d0034033f --- /dev/null +++ b/resources/forum/livewire-tailwind/views/components/icons/arrow-up-mini.blade.php @@ -0,0 +1,7 @@ + + + diff --git a/resources/forum/livewire-tailwind/views/components/icons/book-open-outline.blade.php b/resources/forum/livewire-tailwind/views/components/icons/book-open-outline.blade.php new file mode 100644 index 000000000..5e4afca6c --- /dev/null +++ b/resources/forum/livewire-tailwind/views/components/icons/book-open-outline.blade.php @@ -0,0 +1,9 @@ + + + diff --git a/resources/forum/livewire-tailwind/views/components/icons/chat-bubble-text-mini.blade.php b/resources/forum/livewire-tailwind/views/components/icons/chat-bubble-text-mini.blade.php new file mode 100644 index 000000000..04ad9f24b --- /dev/null +++ b/resources/forum/livewire-tailwind/views/components/icons/chat-bubble-text-mini.blade.php @@ -0,0 +1,7 @@ + + + diff --git a/resources/forum/livewire-tailwind/views/components/icons/chat-bubble-text-outline.blade.php b/resources/forum/livewire-tailwind/views/components/icons/chat-bubble-text-outline.blade.php new file mode 100644 index 000000000..9ddb8cb28 --- /dev/null +++ b/resources/forum/livewire-tailwind/views/components/icons/chat-bubble-text-outline.blade.php @@ -0,0 +1,7 @@ + + + diff --git a/resources/forum/livewire-tailwind/views/components/icons/chat-bubbles-mini.blade.php b/resources/forum/livewire-tailwind/views/components/icons/chat-bubbles-mini.blade.php new file mode 100644 index 000000000..33905dd0f --- /dev/null +++ b/resources/forum/livewire-tailwind/views/components/icons/chat-bubbles-mini.blade.php @@ -0,0 +1,8 @@ + + + + diff --git a/resources/forum/livewire-tailwind/views/components/icons/chat-bubbles-outline.blade.php b/resources/forum/livewire-tailwind/views/components/icons/chat-bubbles-outline.blade.php new file mode 100644 index 000000000..f94d5de70 --- /dev/null +++ b/resources/forum/livewire-tailwind/views/components/icons/chat-bubbles-outline.blade.php @@ -0,0 +1,7 @@ + + + diff --git a/resources/forum/livewire-tailwind/views/components/icons/drag-area-vertical.blade.php b/resources/forum/livewire-tailwind/views/components/icons/drag-area-vertical.blade.php new file mode 100644 index 000000000..be107bf12 --- /dev/null +++ b/resources/forum/livewire-tailwind/views/components/icons/drag-area-vertical.blade.php @@ -0,0 +1,7 @@ + + + diff --git a/resources/forum/livewire-tailwind/views/components/icons/home-mini.blade.php b/resources/forum/livewire-tailwind/views/components/icons/home-mini.blade.php new file mode 100644 index 000000000..64ff3200f --- /dev/null +++ b/resources/forum/livewire-tailwind/views/components/icons/home-mini.blade.php @@ -0,0 +1,7 @@ + + + diff --git a/resources/forum/livewire-tailwind/views/components/icons/lock-closed-mini.blade.php b/resources/forum/livewire-tailwind/views/components/icons/lock-closed-mini.blade.php new file mode 100644 index 000000000..2a0be423c --- /dev/null +++ b/resources/forum/livewire-tailwind/views/components/icons/lock-closed-mini.blade.php @@ -0,0 +1,7 @@ + + + diff --git a/resources/forum/livewire-tailwind/views/components/icons/lock-open-mini.blade.php b/resources/forum/livewire-tailwind/views/components/icons/lock-open-mini.blade.php new file mode 100644 index 000000000..2bba2f070 --- /dev/null +++ b/resources/forum/livewire-tailwind/views/components/icons/lock-open-mini.blade.php @@ -0,0 +1,7 @@ + + + diff --git a/resources/forum/livewire-tailwind/views/components/icons/pencil-mini.blade.php b/resources/forum/livewire-tailwind/views/components/icons/pencil-mini.blade.php new file mode 100644 index 000000000..5889e1357 --- /dev/null +++ b/resources/forum/livewire-tailwind/views/components/icons/pencil-mini.blade.php @@ -0,0 +1,7 @@ + + + diff --git a/resources/forum/livewire-tailwind/views/components/icons/pencil-outline.blade.php b/resources/forum/livewire-tailwind/views/components/icons/pencil-outline.blade.php new file mode 100644 index 000000000..39d34e482 --- /dev/null +++ b/resources/forum/livewire-tailwind/views/components/icons/pencil-outline.blade.php @@ -0,0 +1,7 @@ + + + diff --git a/resources/forum/livewire-tailwind/views/components/icons/sparkles-mini.blade.php b/resources/forum/livewire-tailwind/views/components/icons/sparkles-mini.blade.php new file mode 100644 index 000000000..508d57150 --- /dev/null +++ b/resources/forum/livewire-tailwind/views/components/icons/sparkles-mini.blade.php @@ -0,0 +1,7 @@ + + + diff --git a/resources/forum/livewire-tailwind/views/components/icons/squares-plus-outline.blade.php b/resources/forum/livewire-tailwind/views/components/icons/squares-plus-outline.blade.php new file mode 100644 index 000000000..dc17a13e8 --- /dev/null +++ b/resources/forum/livewire-tailwind/views/components/icons/squares-plus-outline.blade.php @@ -0,0 +1,9 @@ + + + diff --git a/resources/forum/livewire-tailwind/views/components/icons/subcategory.blade.php b/resources/forum/livewire-tailwind/views/components/icons/subcategory.blade.php new file mode 100644 index 000000000..e9e7691ad --- /dev/null +++ b/resources/forum/livewire-tailwind/views/components/icons/subcategory.blade.php @@ -0,0 +1,7 @@ + + + diff --git a/resources/forum/livewire-tailwind/views/components/icons/trash-mini.blade.php b/resources/forum/livewire-tailwind/views/components/icons/trash-mini.blade.php new file mode 100644 index 000000000..de2a9e41b --- /dev/null +++ b/resources/forum/livewire-tailwind/views/components/icons/trash-mini.blade.php @@ -0,0 +1,7 @@ + + + diff --git a/resources/forum/livewire-tailwind/views/components/icons/x-mark.blade.php b/resources/forum/livewire-tailwind/views/components/icons/x-mark.blade.php new file mode 100644 index 000000000..ac9f2466a --- /dev/null +++ b/resources/forum/livewire-tailwind/views/components/icons/x-mark.blade.php @@ -0,0 +1,8 @@ + + + diff --git a/resources/forum/livewire-tailwind/views/components/link-button.blade.php b/resources/forum/livewire-tailwind/views/components/link-button.blade.php new file mode 100644 index 000000000..06fcc448e --- /dev/null +++ b/resources/forum/livewire-tailwind/views/components/link-button.blade.php @@ -0,0 +1,19 @@ +@php +$colorClasses = match ($intent) { + 'primary', '', null => 'text-white bg-blue-600 hover:text-white hover:bg-blue-500', + 'secondary' => 'text-zinc-800 bg-zinc-400/50 hover:bg-zinc-400/35 dark:text-slate-800 dark:bg-slate-400/50 dark:hover:bg-slate-400/65', + 'danger' => 'text-white bg-red-500 hover:bg-red-400' +}; + +$sizeClasses = match ($size) { + 'regular', '', null => 'min-w-36 px-4 py-2', + 'small' => 'px-4 py-1', +}; +@endphp + + + @if (isset($icon) && !empty($icon)) + @include ("forum::components.icons.{$icon}", ['size' => '5']) + @endif + {{ $label }} + diff --git a/resources/forum/livewire-tailwind/views/components/loading-overlay.blade.php b/resources/forum/livewire-tailwind/views/components/loading-overlay.blade.php new file mode 100644 index 000000000..5432e33a6 --- /dev/null +++ b/resources/forum/livewire-tailwind/views/components/loading-overlay.blade.php @@ -0,0 +1,15 @@ +
    +
    + + + + + + + + + + + +
    +
    diff --git a/resources/forum/livewire-tailwind/views/components/modal.blade.php b/resources/forum/livewire-tailwind/views/components/modal.blade.php new file mode 100644 index 000000000..2c3974dcd --- /dev/null +++ b/resources/forum/livewire-tailwind/views/components/modal.blade.php @@ -0,0 +1,21 @@ +
    +
    +
    +
    +
    +

    {{ $heading }}

    +
    + @if (!empty($onClose)) + + @endif +
    +
    + {{ $slot }} +
    +
    +
    +
    diff --git a/resources/forum/livewire-tailwind/views/components/pagination.blade.php b/resources/forum/livewire-tailwind/views/components/pagination.blade.php new file mode 100644 index 000000000..f8f1a3fc0 --- /dev/null +++ b/resources/forum/livewire-tailwind/views/components/pagination.blade.php @@ -0,0 +1,106 @@ +@if ($paginator->hasPages()) + +@endif diff --git a/resources/forum/livewire-tailwind/views/components/pill.blade.php b/resources/forum/livewire-tailwind/views/components/pill.blade.php new file mode 100644 index 000000000..391726ed4 --- /dev/null +++ b/resources/forum/livewire-tailwind/views/components/pill.blade.php @@ -0,0 +1,14 @@ + + @if (isset($icon)) + @include ("forum::components.icons.{$icon}") + @endif + {{ $text }} + diff --git a/resources/forum/livewire-tailwind/views/components/post/card.blade.php b/resources/forum/livewire-tailwind/views/components/post/card.blade.php new file mode 100644 index 000000000..03433ffe3 --- /dev/null +++ b/resources/forum/livewire-tailwind/views/components/post/card.blade.php @@ -0,0 +1,101 @@ +
    +
    + @if ($showAuthorPane) +
    +
    + {{ $post->authorName }} +
    +
    + @if (! isset($single) || ! $single) + #{{ $post->sequence }} + @endif +
    +
    + @endif +
    + @if (isset($post->parent)) + + @endif + +
    + @if ($post->trashed()) + @can ('viewTrashedPosts') +
    + {!! Forum::render($post->content) !!} +
    + @endcan + +
    + +
    + @else + {!! Forum::render($post->content) !!} + @endif +
    + +
    +
    + + @if ($post->hasBeenUpdated()) + + {{ trans('forum::general.last_updated') }} + @endif +
    + @if (!isset($single) || !$single) +
    + @if (!$post->trashed()) + + {{ trans('forum::general.permalink') }} + + @can ('edit', $post) + + {{ trans('forum::general.edit') }} + + @endcan + @can ('reply', $post->thread) + + {{ trans('forum::general.reply') }} + + @endcan + @endif + @if ($selectable) +
    + +
    + @endif +
    + @endif +
    +
    +
    +
    + + +@script + +@endscript diff --git a/resources/forum/livewire-tailwind/views/components/post/quote.blade.php b/resources/forum/livewire-tailwind/views/components/post/quote.blade.php new file mode 100644 index 000000000..9f260440a --- /dev/null +++ b/resources/forum/livewire-tailwind/views/components/post/quote.blade.php @@ -0,0 +1,16 @@ +
    + {!! Forum::render($post->content) !!} +
    +
    + + {{ $post->authorName }} + + + + +
    +
    + #{{ $post->sequence }} +
    +
    +
    diff --git a/resources/forum/livewire-tailwind/views/components/thread/card.blade.php b/resources/forum/livewire-tailwind/views/components/thread/card.blade.php new file mode 100644 index 000000000..7186ab0cb --- /dev/null +++ b/resources/forum/livewire-tailwind/views/components/thread/card.blade.php @@ -0,0 +1,95 @@ +
    + +
    + +@script + +@endscript diff --git a/resources/forum/livewire-tailwind/views/components/timestamp.blade.php b/resources/forum/livewire-tailwind/views/components/timestamp.blade.php new file mode 100644 index 000000000..1cabe4359 --- /dev/null +++ b/resources/forum/livewire-tailwind/views/components/timestamp.blade.php @@ -0,0 +1,20 @@ + + +@script + +@endscript diff --git a/resources/forum/livewire-tailwind/views/layouts/main.blade.php b/resources/forum/livewire-tailwind/views/layouts/main.blade.php new file mode 100644 index 000000000..7fd2162a5 --- /dev/null +++ b/resources/forum/livewire-tailwind/views/layouts/main.blade.php @@ -0,0 +1,137 @@ + + + + + + + + + @if (isset($thread)) + {{ $thread->title }} — + @endif + @if (isset($category)) + {{ $category->title }} — + @endif + {{ trans('forum::general.home_title') }} + + + @vite([ + 'resources/forum/livewire-tailwind/css/forum.css', + 'resources/forum/livewire-tailwind/js/forum.js' + ]) + + +
    + +
    + +
    + {{ $slot }} +
    + + + + + + diff --git a/resources/forum/livewire-tailwind/views/pages/category/create.blade.php b/resources/forum/livewire-tailwind/views/pages/category/create.blade.php new file mode 100644 index 000000000..af65f9781 --- /dev/null +++ b/resources/forum/livewire-tailwind/views/pages/category/create.blade.php @@ -0,0 +1,60 @@ +
    + @include ('forum::components.loading-overlay') + @include ('forum::components.breadcrumbs') + +
    +
    +

    {{ trans('forum::categories.create') }}

    + +
    +
    + + + + + + + + + @if ($categories->count() > 0) + + + @include ('forum::components.category.options', ['categories' => $categories]) + + @endif + + + + + +
    + +
    + +
    +
    +
    +
    diff --git a/resources/forum/livewire-tailwind/views/pages/category/edit.blade.php b/resources/forum/livewire-tailwind/views/pages/category/edit.blade.php new file mode 100644 index 000000000..1261410c3 --- /dev/null +++ b/resources/forum/livewire-tailwind/views/pages/category/edit.blade.php @@ -0,0 +1,107 @@ +
    + @include ('forum::components.loading-overlay') + @include ('forum::components.breadcrumbs') + +
    +
    +

    {{ trans('forum::categories.edit') }}

    +

    {{ $category->title }}

    + +
    +
    + + + + + + + + + @if ($categories->count() > 0) + + + @include ('forum::components.category.options', ['categories' => $categories]) + + @endif + + + + + +
    +
    + +
    +
    + +
    +
    + +
    +
    +
    + + + {{ trans('forum::categories.confirm_nonempty_delete') }} + +
    +
    + +
    +
    + +
    +
    +
    +
    + +@script + +@endscript diff --git a/resources/forum/livewire-tailwind/views/pages/category/index.blade.php b/resources/forum/livewire-tailwind/views/pages/category/index.blade.php new file mode 100644 index 000000000..4e809f492 --- /dev/null +++ b/resources/forum/livewire-tailwind/views/pages/category/index.blade.php @@ -0,0 +1,23 @@ +
    + @include ('forum::components.loading-overlay') + @include ('forum::components.breadcrumbs') + +

    {{ trans('forum::general.index') }}

    + +
    +
    +
    +
    + @can ('createCategories') + + @endcan +
    +
    + + @foreach ($categories as $category) + + @endforeach +
    diff --git a/resources/forum/livewire-tailwind/views/pages/category/manage.blade.php b/resources/forum/livewire-tailwind/views/pages/category/manage.blade.php new file mode 100644 index 000000000..2f9561193 --- /dev/null +++ b/resources/forum/livewire-tailwind/views/pages/category/manage.blade.php @@ -0,0 +1,83 @@ +
    + @include ('forum::components.loading-overlay') + @include ('forum::components.breadcrumbs') + +
    +
    +

    {{ trans('forum::general.manage') }}

    + + @can ('createCategories') +
    + +
    + @endcan + +
    +
      + @include ('forum::components.category.draggable-items', ['categories' => $categories]) +
    + +
    + +
    +
    +
    +
    +
    + +@script + +@endscript diff --git a/resources/forum/livewire-tailwind/views/pages/category/show.blade.php b/resources/forum/livewire-tailwind/views/pages/category/show.blade.php new file mode 100644 index 000000000..0756ea1b5 --- /dev/null +++ b/resources/forum/livewire-tailwind/views/pages/category/show.blade.php @@ -0,0 +1,197 @@ +
    + @include ('forum::components.loading-overlay') + @include ('forum::components.breadcrumbs') + +

    {{ $category->title }}

    +

    {{ $category->description }}

    + +
    +
    + @can ('edit', $category) + + @endcan +
    + @can ('createCategories') +
    + +
    + @endcan +
    + + @foreach ($category->descendants as $child) + + @endforeach + +
    +
    +
    + @if ($category->accepts_threads) + @can ('createThreads', $category) +
    + +
    + @endcan + @endif +
    + + @if (count($selectableThreadIds) > 0) +
    + +
    + @endif + +
    + @foreach ($threads as $thread) + + @endforeach + + @if ($category->accepts_threads && $threads->count() == 0) +
    + {{ trans('forum::threads.none_found') }} +
    + @endif +
    + +
    +

    {{ trans('forum::general.with_selection') }}

    + + + + @can ('deleteThreads', $category) + + @endcan + @can ('restoreThreads', $category) + + @endcan + @can ('moveThreadsFrom', $category) + + @endcan + @can ('lockThreads', $category) + + + @endcan + @can ('pinThreads', $category) + + + @endcan + + + @if (config('forum.general.soft_deletes')) + + @endif + + + + @include ('forum::components.category.options', ['categories' => $threadDestinationCategories, 'disable' => $category->id]) + + + +
    + + {{ $threads->links('forum::components.pagination') }} +
    + +@script + +@endscript diff --git a/resources/forum/livewire-tailwind/views/pages/post/edit.blade.php b/resources/forum/livewire-tailwind/views/pages/post/edit.blade.php new file mode 100644 index 000000000..4e02cbd81 --- /dev/null +++ b/resources/forum/livewire-tailwind/views/pages/post/edit.blade.php @@ -0,0 +1,75 @@ +
    + @include ('forum::components.loading-overlay') + @include ('forum::components.breadcrumbs') + +
    +
    +

    {{ trans('forum::posts.edit') }}

    +

    Re: {{ $post->thread->title }}

    + +
    + +
    + +
    +
    + + +
    +
    + +
    +
    + +
    +
    + +
    +
    +
    + + + {{ trans_choice('forum::posts.confirm_delete', 1) }} + +
    +
    + +
    +
    + +
    +
    +
    +
    + +@script + +@endscript diff --git a/resources/forum/livewire-tailwind/views/pages/post/show.blade.php b/resources/forum/livewire-tailwind/views/pages/post/show.blade.php new file mode 100644 index 000000000..71eace7ee --- /dev/null +++ b/resources/forum/livewire-tailwind/views/pages/post/show.blade.php @@ -0,0 +1,17 @@ +
    + @include ('forum::components.loading-overlay') + @include ('forum::components.breadcrumbs') + +
    +
    +

    {{ trans('forum::posts.view') }}

    +

    Re: {{ $post->thread->title }}

    + +
    + +
    + + +
    +
    +
    diff --git a/resources/forum/livewire-tailwind/views/pages/thread/create.blade.php b/resources/forum/livewire-tailwind/views/pages/thread/create.blade.php new file mode 100644 index 000000000..03991d98b --- /dev/null +++ b/resources/forum/livewire-tailwind/views/pages/thread/create.blade.php @@ -0,0 +1,36 @@ +
    + @include ('forum::components.loading-overlay') + @include ('forum::components.breadcrumbs') + +
    +
    +

    {{ trans('forum::threads.new_thread') }} ({{ $category->title }})

    + +
    +
    + + + + +
    +
    + +
    +
    + +
    +
    + +
    +
    +
    +
    diff --git a/resources/forum/livewire-tailwind/views/pages/thread/recent.blade.php b/resources/forum/livewire-tailwind/views/pages/thread/recent.blade.php new file mode 100644 index 000000000..a6f91509c --- /dev/null +++ b/resources/forum/livewire-tailwind/views/pages/thread/recent.blade.php @@ -0,0 +1,22 @@ +
    + @include ('forum::components.loading-overlay') + @include ('forum::components.breadcrumbs') + +

    {{ trans('forum::threads.recent') }}

    + +
    + @foreach ($threads as $thread) + + @endforeach + + @if ($threads->count() == 0) +
    + {{ trans('forum::threads.none_found') }} +
    + @endif +
    +
    diff --git a/resources/forum/livewire-tailwind/views/pages/thread/reply.blade.php b/resources/forum/livewire-tailwind/views/pages/thread/reply.blade.php new file mode 100644 index 000000000..09849db1a --- /dev/null +++ b/resources/forum/livewire-tailwind/views/pages/thread/reply.blade.php @@ -0,0 +1,36 @@ +
    + @include ('forum::components.loading-overlay') + @include ('forum::components.breadcrumbs') + +
    +
    +

    {{ trans('forum::general.reply') }}

    +

    Re: {{ $thread->title }}

    + + @if (isset($parent) && !$parent->trashed()) +

    {{ trans('forum::general.replying_to', ['item' => $parent->authorName]) }}

    + + @endif + +
    +
    + + +
    +
    + +
    +
    + +
    +
    + +
    +
    +
    +
    diff --git a/resources/forum/livewire-tailwind/views/pages/thread/show.blade.php b/resources/forum/livewire-tailwind/views/pages/thread/show.blade.php new file mode 100644 index 000000000..53916f7a0 --- /dev/null +++ b/resources/forum/livewire-tailwind/views/pages/thread/show.blade.php @@ -0,0 +1,369 @@ +
    + @include ('forum::components.loading-overlay') + @include ('forum::components.breadcrumbs') + +

    {{ $thread->title }}

    + +
    +
    + @if ($thread->pinned) + + @endif + @if ($thread->locked) + + @endif + @if ($thread->trashed()) + + @endif +
    + + @if (count($selectablePostIds) > 0) +
    + +
    + @endif +
    + +
    +
    +
    + @if (Gate::allows('deleteThreads', $thread->category) && Gate::allows('delete', $thread)) + @if ($thread->trashed()) + + @else + + @endif + @endif + @if ($thread->trashed() && Gate::allows('restoreThreads', $thread->category) && Gate::allows('restore', $thread)) + + @endif + @if (!$thread->trashed()) + @can ('lockThreads', $thread->category) + @if ($thread->locked) + + @else + + @endif + @endcan + @can ('pinThreads', $thread->category) + @if ($thread->pinned) + + @else + + @endif + @endcan + @can ('rename', $thread) + + @endcan + @can ('moveThreadsFrom', $thread->category) + + @endcan + @endif +
    +
    + @if (!$thread->trashed()) + @can ('reply', $thread) +
    + + + +
    + @endcan + @endif +
    + +
    + @foreach ($posts as $post) + + @endforeach +
    + + {{ $posts->links('forum::components.pagination') }} + + @if (!$thread->trashed() && Gate::allows('reply', $thread)) +
    +

    {{ trans('forum::general.quick_reply') }}

    + +
    + + +
    + +
    +
    +
    + @endif + +
    +

    {{ trans('forum::general.with_selection') }}

    + + + + @can ('deletePosts', $thread) + + @endcan + @can ('restorePosts', $thread) + + @endcan + + + @if (config('forum.general.soft_deletes')) + + @endif + +
    + +
    +
    + + + + +
    + +
    + +
    + + + @include ('forum::components.category.options', ['categories' => $threadDestinationCategories, 'disable' => $thread->category->id]) + +
    + +
    +
    + +
    +
    + +
    +
    +
    + + + {{ trans('forum::general.generic_confirm') }} + +
    +
    + +
    +
    + +
    +
    +
    +
    + +@script + +@endscript diff --git a/resources/forum/livewire-tailwind/views/pages/thread/unread.blade.php b/resources/forum/livewire-tailwind/views/pages/thread/unread.blade.php new file mode 100644 index 000000000..e80bc32a7 --- /dev/null +++ b/resources/forum/livewire-tailwind/views/pages/thread/unread.blade.php @@ -0,0 +1,66 @@ +
    + @include ('forum::components.loading-overlay') + @include ('forum::components.breadcrumbs') + +

    {{ trans('forum::threads.unread_updated') }}

    + +
    + @foreach ($threads as $thread) + + @endforeach + + @if ($threads->count() == 0) +
    + {{ trans('forum::threads.none_found') }} +
    + @else +
    + +
    + @endif +
    + + + {{ trans('forum::general.generic_confirm') }} + +
    +
    + +
    +
    + +
    +
    +
    +
    + +@script + +@endscript diff --git a/resources/js/app.js b/resources/js/app.js new file mode 100644 index 000000000..e59d6a0ad --- /dev/null +++ b/resources/js/app.js @@ -0,0 +1 @@ +import './bootstrap'; diff --git a/resources/js/bootstrap.js b/resources/js/bootstrap.js new file mode 100644 index 000000000..5f1390b01 --- /dev/null +++ b/resources/js/bootstrap.js @@ -0,0 +1,4 @@ +import axios from 'axios'; +window.axios = axios; + +window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';