diff --git a/app/Http/Controllers/FileFunctions/EditItemsController.php b/app/Http/Controllers/FileFunctions/EditItemsController.php index 7a6b451f..48844099 100644 --- a/app/Http/Controllers/FileFunctions/EditItemsController.php +++ b/app/Http/Controllers/FileFunctions/EditItemsController.php @@ -116,7 +116,7 @@ class EditItemsController extends Controller } // If request have a change folder icon values set the folder icon - if ($request->type === 'folder' && $request->filled('folder_icon')) { + if ($request->type === 'folder' && $request->filled('icon')) { Editor::set_folder_icon($request->folder_icon, $id); } @@ -158,9 +158,9 @@ class EditItemsController extends Controller } // If request have a change folder icon values set the folder icon - if ($request->type === 'folder' && $request->filled('folder_icon')) { + if ($request->type === 'folder' && $request->filled('icon')) { - Editor::set_folder_icon($request->folder_icon, $unique_id, $shared); + Editor::set_folder_icon($request->icon, $unique_id, $shared); } // Rename item diff --git a/app/Http/Tools/Demo.php b/app/Http/Tools/Demo.php index bc575845..2f1ae6ff 100644 --- a/app/Http/Tools/Demo.php +++ b/app/Http/Tools/Demo.php @@ -42,6 +42,8 @@ class Demo 'unique_id' => random_int(1000, 9999), 'user_scope' => $user_scope, 'items' => '0', + 'icon_color' => isset($request->icon['color']) ? $request->icon['color'] : null, + 'icon_emoji' => isset($request->icon['emoji']) ? $request->icon['emoji'] : null, 'updated_at' => Carbon::now()->format('j M Y \a\t H:i'), 'created_at' => Carbon::now()->format('j M Y \a\t H:i'), ]; @@ -72,8 +74,8 @@ class Demo if ($item) { $item->name = $request->name; - $item->icon_emoji = $request->folder_icon['emoji'] ?? null; - $item->icon_color = $request->folder_icon['color'] ?? null; + $item->icon_emoji = $request->icon['emoji'] ?? null; + $item->icon_color = $request->icon['color'] ?? null; return $item; diff --git a/app/Http/Tools/Editor.php b/app/Http/Tools/Editor.php index 9457eafa..821511f0 100644 --- a/app/Http/Tools/Editor.php +++ b/app/Http/Tools/Editor.php @@ -29,11 +29,11 @@ class Editor /** * Store folder icon * - * @param $folder_icon + * @param $icon * @param $unique_id * @param $shared */ - public static function set_folder_icon($folder_icon, $unique_id, $shared = null) + public static function set_folder_icon($icon, $unique_id, $shared = null) { $user_id = is_null($shared) ? Auth::id() : $shared->user_id; @@ -43,21 +43,21 @@ class Editor ->first(); // Set default folder icon - if ($folder_icon === 'default') { + if ($icon === 'default') { $folder->icon_emoji = null; $folder->icon_color = null; } // If request have emoji set folder icon emoji - if (isset($folder_icon['emoji'])) { - $folder->icon_emoji = $folder_icon['emoji']; + if (isset($icon['emoji'])) { + $folder->icon_emoji = $icon['emoji']; $folder->icon_color = null; } // If request have color set folder icon color - if (isset($folder_icon['color'])) { + if (isset($icon['color'])) { $folder->icon_emoji = null; - $folder->icon_color = $folder_icon['color']; + $folder->icon_color = $icon['color']; } // Save changes @@ -235,6 +235,8 @@ class Editor 'user_id' => $user_id, 'type' => 'folder', 'name' => $name, + 'icon_color' => isset($request->icon['color']) ? $request->icon['color'] : null, + 'icon_emoji' => isset($request->icon['emoji']) ? $request->icon['emoji'] : null, ]); // Return new folder diff --git a/app/Notifications/ResetPassword.php b/app/Notifications/ResetPassword.php index 74320caa..b7d63541 100644 --- a/app/Notifications/ResetPassword.php +++ b/app/Notifications/ResetPassword.php @@ -41,14 +41,15 @@ class ResetPassword extends Notification public function toMail($notifiable) { $reset_url = url('/create-new-password?token=' . $this->token); + $app_name = get_setting('app_title') ?? 'VueFileManager'; return (new MailMessage) - ->subject(__('vuefilemanager.reset_password_subject') . config('vuefilemanager.app_name')) + ->subject(__('vuefilemanager.reset_password_subject') . $app_name) ->greeting(__('vuefilemanager.reset_password_greeting')) ->line(__('vuefilemanager.reset_password_line_1')) ->action(__('vuefilemanager.reset_password_action'), $reset_url) ->line(__('vuefilemanager.reset_password_line_2')) - ->salutation(__('vuefilemanager.salutation') . ', ' . config('vuefilemanager.app_name')); + ->salutation(__('vuefilemanager.salutation') . ', ' . $app_name); } /** diff --git a/app/Notifications/SharedSendViaEmail.php b/app/Notifications/SharedSendViaEmail.php index 7cd1a2b5..cc1f9057 100644 --- a/app/Notifications/SharedSendViaEmail.php +++ b/app/Notifications/SharedSendViaEmail.php @@ -46,7 +46,8 @@ class SharedSendViaEmail extends Notification ->subject(__('vuefilemanager.shared_link_email_subject' , ['user' => $this->user->name])) ->greeting(__('vuefilemanager.shared_link_email_greeting')) ->line(__('vuefilemanager.shared_link_email_user', ['user' => $this->user->name, 'email' => $this->user->email])) - ->action(__('vuefilemanager.shared_link_email_link'), url('/shared', ['token' => $this->token])); + ->action(__('vuefilemanager.shared_link_email_link'), url('/shared', ['token' => $this->token])) + ->salutation(__('vuefilemanager.shared_link_email_salutation', ['app_name' => get_setting('app_title') ?? 'VueFileManager'])); } /** diff --git a/resources/js/components/FilesView/ContextMenu.vue b/resources/js/components/FilesView/ContextMenu.vue index 9330b94d..a7a0988c 100644 --- a/resources/js/components/FilesView/ContextMenu.vue +++ b/resources/js/components/FilesView/ContextMenu.vue @@ -114,8 +114,8 @@ - - diff --git a/resources/js/components/Others/ColorPicker.vue b/resources/js/components/Others/ColorPicker.vue new file mode 100644 index 00000000..a1a59743 --- /dev/null +++ b/resources/js/components/Others/ColorPicker.vue @@ -0,0 +1,128 @@ + + + + + diff --git a/resources/js/components/Others/CreateFolder.vue b/resources/js/components/Others/CreateFolder.vue index 45ab116b..a64e30d1 100644 --- a/resources/js/components/Others/CreateFolder.vue +++ b/resources/js/components/Others/CreateFolder.vue @@ -16,6 +16,10 @@ {{ errors[0] }} + + + + {{ moreOptionsTitle }} @@ -44,11 +48,11 @@ import PopupContent from '@/components/Others/Popup/PopupContent' import PopupHeader from '@/components/Others/Popup/PopupHeader' import ThumbnailItem from '@/components/Others/ThumbnailItem' + import SetFolderIcon from '@/components/Others/SetFolderIcon' import ActionButton from '@/components/Others/ActionButton' import ButtonBase from '@/components/FilesView/ButtonBase' import {required} from 'vee-validate/dist/rules' import {events} from '@/bus' - import axios from 'axios' export default { name: 'CreateFolder', @@ -56,6 +60,7 @@ ValidationProvider, ValidationObserver, ThumbnailItem, + SetFolderIcon, ActionButton, PopupWrapper, PopupActions, @@ -64,19 +69,29 @@ ButtonBase, required, }, + computed: { + moreOptionsTitle() { + return this.isMoreOptions ? this.$t('shared_form.button_close_options') : this.$t('shared_form.button_folder_icon_open') + } + }, data() { return { name: undefined, + isMoreOptions: false, + folderIcon: undefined } }, methods: { + moreOptions() { + this.isMoreOptions = !this.isMoreOptions + }, async createFolder() { // Validate fields const isValid = await this.$refs.createForm.validate(); if (isValid) { - this.$store.dispatch('createFolder', this.name) + this.$store.dispatch('createFolder', {'name':this.name, 'icon': this.folderIcon}) this.$closePopup() @@ -85,11 +100,19 @@ }, }, mounted() { + events.$on('setFolderIcon', (icon) => { + this.folderIcon = icon + }) + events.$on('popup:open', ({name}) => { if (name === 'create-folder' && ! this.$isMobile()) this.$nextTick(() => this.$refs.input.focus()) }) + + events.$on('setFolderIcon', (icon) => { + this.setFolderIcon = icon + }) } } diff --git a/resources/js/components/Others/EmojiPicker.vue b/resources/js/components/Others/EmojiPicker.vue new file mode 100644 index 00000000..b17d519d --- /dev/null +++ b/resources/js/components/Others/EmojiPicker.vue @@ -0,0 +1,497 @@ + + + + + diff --git a/resources/js/components/Others/Popup/PopupWrapper.vue b/resources/js/components/Others/Popup/PopupWrapper.vue index 7e5945e0..8b1e8790 100644 --- a/resources/js/components/Others/Popup/PopupWrapper.vue +++ b/resources/js/components/Others/Popup/PopupWrapper.vue @@ -33,6 +33,9 @@ if (this.name === name) this.isVisibleWrapper = true + + if( (this.name !== name)) + this.isVisibleWrapper = false }) // Open called popup diff --git a/resources/js/components/Others/RenameItem.vue b/resources/js/components/Others/RenameItem.vue index 88d83097..748c9189 100644 --- a/resources/js/components/Others/RenameItem.vue +++ b/resources/js/components/Others/RenameItem.vue @@ -24,7 +24,7 @@ {{ errors[0] }} - + {{ moreOptionsTitle }} @@ -56,7 +56,6 @@ import ButtonBase from '@/components/FilesView/ButtonBase' import { XIcon } from 'vue-feather-icons' import { required } from 'vee-validate/dist/rules' import { events } from '@/bus' -import axios from 'axios' export default { name: 'RenameItem', @@ -100,7 +99,7 @@ export default { unique_id: this.pickedItem.unique_id, type: this.pickedItem.type, name: this.pickedItem.name, - folder_icon: this.setFolderIcon ? this.setFolderIcon : null + icon: this.setFolderIcon ? this.setFolderIcon : null } // Rename item request @@ -133,7 +132,7 @@ export default { }) events.$on('setFolderIcon', (icon) => { - this.setFolderIcon = icon.value + this.setFolderIcon = icon }) } } diff --git a/resources/js/components/Others/SetFolderIcon.vue b/resources/js/components/Others/SetFolderIcon.vue index 9afef742..9e35f626 100644 --- a/resources/js/components/Others/SetFolderIcon.vue +++ b/resources/js/components/Others/SetFolderIcon.vue @@ -1,595 +1,101 @@ - diff --git a/resources/js/components/Others/ShareEdit.vue b/resources/js/components/Others/ShareEdit.vue index 8d154677..9e89bb43 100644 --- a/resources/js/components/Others/ShareEdit.vue +++ b/resources/js/components/Others/ShareEdit.vue @@ -333,6 +333,7 @@ if (args.sentToEmail) this.sendToRecipientsMenu = true + this.isEmailSended = false this.canChangePassword = args.item.shared.protected }) diff --git a/resources/js/store/modules/fileFunctions.js b/resources/js/store/modules/fileFunctions.js index 64b62165..d04dae2f 100644 --- a/resources/js/store/modules/fileFunctions.js +++ b/resources/js/store/modules/fileFunctions.js @@ -113,7 +113,7 @@ const actions = { }) .catch(() => Vue.prototype.$isSomethingWrong()) }, - createFolder: ({ commit, getters, dispatch }, folderName) => { + createFolder: ({ commit, getters, dispatch }, folder) => { // Get route let route = getters.sharedDetail && !getters.sharedDetail.protected @@ -123,7 +123,8 @@ const actions = { axios .post(route, { parent_id: getters.currentFolder.unique_id, - name: folderName + name: folder.name, + icon: folder.icon }) .then(response => { commit('ADD_NEW_FOLDER', response.data) @@ -158,7 +159,7 @@ const actions = { .post(route, { name: data.name, type: data.type, - folder_icon: data.folder_icon, + icon: data.icon, _method: 'patch' }) .then(response => { diff --git a/resources/lang/cn/vuefilemanager.php b/resources/lang/cn/vuefilemanager.php index 627117ba..83715e14 100644 --- a/resources/lang/cn/vuefilemanager.php +++ b/resources/lang/cn/vuefilemanager.php @@ -12,6 +12,7 @@ return [ 'shared_link_email_greeting' => 'Hello!', 'shared_link_email_user' => ':user (:email) send you a link to shared files.', 'shared_link_email_link' => 'Open your files', + 'shared_link_email_salutation' => 'Regards, :app_name', // Reset password email 'reset_password_greeting' => 'Hello!', diff --git a/resources/lang/en/vuefilemanager.php b/resources/lang/en/vuefilemanager.php index c0717c38..3095fb51 100644 --- a/resources/lang/en/vuefilemanager.php +++ b/resources/lang/en/vuefilemanager.php @@ -8,10 +8,11 @@ return [ 'home' => 'Home', //Shared link email message - 'shared_link_email_subject' => '🙋 :user share some files with you. Look at it!', - 'shared_link_email_greeting' => 'Hello!', - 'shared_link_email_user' => ':user (:email) send you a link to shared files.', - 'shared_link_email_link' => 'Open your files', + 'shared_link_email_subject' => '🙋 :user share some files with you. Look at it!', + 'shared_link_email_greeting' => 'Hello!', + 'shared_link_email_user' => ':user (:email) send you a link to shared files.', + 'shared_link_email_link' => 'Open your files', + 'shared_link_email_salutation' => 'Regards, :app_name', // Reset password email 'reset_password_greeting' => 'Hello!', diff --git a/resources/lang/sk/vuefilemanager.php b/resources/lang/sk/vuefilemanager.php index 0d88dc5f..ba130ab0 100644 --- a/resources/lang/sk/vuefilemanager.php +++ b/resources/lang/sk/vuefilemanager.php @@ -12,6 +12,7 @@ return [ 'shared_link_email_greeting' => 'Ahoj!', 'shared_link_email_user' => ':user (:email) vám posiela odkaz pre zdieľané súbory.', 'shared_link_email_link' => 'Vaše súbory', + 'shared_link_email_salutation' => 'S pozdravom, :app_name', // Reset password email 'reset_password_greeting' => 'Ahoj!', diff --git a/resources/sass/app.scss b/resources/sass/app.scss index 1186fdb6..43ff842a 100644 --- a/resources/sass/app.scss +++ b/resources/sass/app.scss @@ -459,21 +459,22 @@ width: 18px; height: 18px; cursor: pointer; - } ::-webkit-scrollbar-thumb { - border: 6px solid white; + border: 6px solid transparent; background: #7f7f7f; border-radius: 25px; + background-clip: padding-box ; } } @media (prefers-color-scheme: dark) { .windows { ::-webkit-scrollbar-thumb { - border: 6px solid $dark_mode_background; + border: 6px solid transparent; background: $dark_mode_foreground !important; + background-clip: padding-box !important ; } } } \ No newline at end of file diff --git a/resources/views/vendor/mail/html/button.blade.php b/resources/views/vendor/mail/html/button.blade.php new file mode 100644 index 00000000..e74fe55a --- /dev/null +++ b/resources/views/vendor/mail/html/button.blade.php @@ -0,0 +1,19 @@ + + + + + diff --git a/resources/views/vendor/mail/html/footer.blade.php b/resources/views/vendor/mail/html/footer.blade.php new file mode 100644 index 00000000..3ff41f89 --- /dev/null +++ b/resources/views/vendor/mail/html/footer.blade.php @@ -0,0 +1,11 @@ + + + + + + + + + diff --git a/resources/views/vendor/mail/html/header.blade.php b/resources/views/vendor/mail/html/header.blade.php new file mode 100644 index 00000000..fa1875ca --- /dev/null +++ b/resources/views/vendor/mail/html/header.blade.php @@ -0,0 +1,11 @@ + + + +@if (trim($slot) === 'Laravel') + +@else +{{ $slot }} +@endif + + + diff --git a/resources/views/vendor/mail/html/layout.blade.php b/resources/views/vendor/mail/html/layout.blade.php new file mode 100644 index 00000000..02a54e2d --- /dev/null +++ b/resources/views/vendor/mail/html/layout.blade.php @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + diff --git a/resources/views/vendor/mail/html/message.blade.php b/resources/views/vendor/mail/html/message.blade.php new file mode 100644 index 00000000..1a980860 --- /dev/null +++ b/resources/views/vendor/mail/html/message.blade.php @@ -0,0 +1,28 @@ + +@component('mail::layout') +{{-- Header --}} +@slot('header') +@component('mail::header', ['url' => config('app.url')]) +{{ get_setting('app_title') ?? 'VueFileManager' }} +@endcomponent +@endslot + +{{-- Body --}} +{{ $slot }} + +{{-- Subcopy --}} +@isset($subcopy) +@slot('subcopy') +@component('mail::subcopy') +{{ $subcopy }} +@endcomponent +@endslot +@endisset + +{{-- Footer --}} +@slot('footer') +@component('mail::footer') +© {{ date('Y') }} {{ get_setting('app_title') ?? 'VueFileManager' }}. @lang('All rights reserved.') +@endcomponent +@endslot +@endcomponent diff --git a/resources/views/vendor/mail/html/panel.blade.php b/resources/views/vendor/mail/html/panel.blade.php new file mode 100644 index 00000000..2975a60a --- /dev/null +++ b/resources/views/vendor/mail/html/panel.blade.php @@ -0,0 +1,14 @@ + + + + + + diff --git a/resources/views/vendor/mail/html/subcopy.blade.php b/resources/views/vendor/mail/html/subcopy.blade.php new file mode 100644 index 00000000..790ce6c2 --- /dev/null +++ b/resources/views/vendor/mail/html/subcopy.blade.php @@ -0,0 +1,7 @@ + + + + + diff --git a/resources/views/vendor/mail/html/table.blade.php b/resources/views/vendor/mail/html/table.blade.php new file mode 100644 index 00000000..a5f3348b --- /dev/null +++ b/resources/views/vendor/mail/html/table.blade.php @@ -0,0 +1,3 @@ +
+{{ Illuminate\Mail\Markdown::parse($slot) }} +
diff --git a/resources/views/vendor/mail/html/themes/default.css b/resources/views/vendor/mail/html/themes/default.css new file mode 100644 index 00000000..350fb838 --- /dev/null +++ b/resources/views/vendor/mail/html/themes/default.css @@ -0,0 +1,289 @@ +/* Base */ + +body, +body *:not(html):not(style):not(br):not(tr):not(code) { + box-sizing: border-box; + font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif, + 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'; + position: relative; +} + +body { + -webkit-text-size-adjust: none; + background-color: #ffffff; + color: #718096; + height: 100%; + line-height: 1.4; + margin: 0; + padding: 0; + width: 100% !important; +} + +p, +ul, +ol, +blockquote { + line-height: 1.4; + text-align: left; +} + +a { + color: #3869d4; +} + +a img { + border: none; +} + +/* Typography */ + +h1 { + color: #3d4852; + font-size: 18px; + font-weight: bold; + margin-top: 0; + text-align: left; +} + +h2 { + font-size: 16px; + font-weight: bold; + margin-top: 0; + text-align: left; +} + +h3 { + font-size: 14px; + font-weight: bold; + margin-top: 0; + text-align: left; +} + +p { + font-size: 16px; + line-height: 1.5em; + margin-top: 0; + text-align: left; +} + +p.sub { + font-size: 12px; +} + +img { + max-width: 100%; +} + +/* Layout */ + +.wrapper { + -premailer-cellpadding: 0; + -premailer-cellspacing: 0; + -premailer-width: 100%; + background-color: #edf2f7; + margin: 0; + padding: 0; + width: 100%; +} + +.content { + -premailer-cellpadding: 0; + -premailer-cellspacing: 0; + -premailer-width: 100%; + margin: 0; + padding: 0; + width: 100%; +} + +/* Header */ + +.header { + padding: 25px 0; + text-align: center; +} + +.header a { + color: #3d4852; + font-size: 19px; + font-weight: bold; + text-decoration: none; +} + +/* Logo */ + +.logo { + height: 75px; + width: 75px; +} + +/* Body */ + +.body { + -premailer-cellpadding: 0; + -premailer-cellspacing: 0; + -premailer-width: 100%; + background-color: #edf2f7; + border-bottom: 1px solid #edf2f7; + border-top: 1px solid #edf2f7; + margin: 0; + padding: 0; + width: 100%; +} + +.inner-body { + -premailer-cellpadding: 0; + -premailer-cellspacing: 0; + -premailer-width: 570px; + background-color: #ffffff; + border-color: #e8e5ef; + border-radius: 2px; + border-width: 1px; + box-shadow: 0 2px 0 rgba(0, 0, 150, 0.025), 2px 4px 0 rgba(0, 0, 150, 0.015); + margin: 0 auto; + padding: 0; + width: 570px; +} + +/* Subcopy */ + +.subcopy { + border-top: 1px solid #e8e5ef; + margin-top: 25px; + padding-top: 25px; +} + +.subcopy p { + font-size: 14px; +} + +/* Footer */ + +.footer { + -premailer-cellpadding: 0; + -premailer-cellspacing: 0; + -premailer-width: 570px; + margin: 0 auto; + padding: 0; + text-align: center; + width: 570px; +} + +.footer p { + color: #b0adc5; + font-size: 12px; + text-align: center; +} + +.footer a { + color: #b0adc5; + text-decoration: underline; +} + +/* Tables */ + +.table table { + -premailer-cellpadding: 0; + -premailer-cellspacing: 0; + -premailer-width: 100%; + margin: 30px auto; + width: 100%; +} + +.table th { + border-bottom: 1px solid #edeff2; + margin: 0; + padding-bottom: 8px; +} + +.table td { + color: #74787e; + font-size: 15px; + line-height: 18px; + margin: 0; + padding: 10px 0; +} + +.content-cell { + max-width: 100vw; + padding: 32px; +} + +/* Buttons */ + +.action { + -premailer-cellpadding: 0; + -premailer-cellspacing: 0; + -premailer-width: 100%; + margin: 30px auto; + padding: 0; + text-align: center; + width: 100%; +} + +.button { + -webkit-text-size-adjust: none; + border-radius: 4px; + color: #fff; + display: inline-block; + overflow: hidden; + text-decoration: none; +} + +.button-blue, +.button-primary { + background-color: #2d3748; + border-bottom: 8px solid #2d3748; + border-left: 18px solid #2d3748; + border-right: 18px solid #2d3748; + border-top: 8px solid #2d3748; +} + +.button-green, +.button-success { + background-color: #48bb78; + border-bottom: 8px solid #48bb78; + border-left: 18px solid #48bb78; + border-right: 18px solid #48bb78; + border-top: 8px solid #48bb78; +} + +.button-red, +.button-error { + background-color: #e53e3e; + border-bottom: 8px solid #e53e3e; + border-left: 18px solid #e53e3e; + border-right: 18px solid #e53e3e; + border-top: 8px solid #e53e3e; +} + +/* Panels */ + +.panel { + border-left: #2d3748 solid 4px; + margin: 21px 0; +} + +.panel-content { + background-color: #edf2f7; + color: #718096; + padding: 16px; +} + +.panel-content p { + color: #718096; +} + +.panel-item { + padding: 0; +} + +.panel-item p:last-of-type { + margin-bottom: 0; + padding-bottom: 0; +} + +/* Utilities */ + +.break-all { + word-break: break-all; +} diff --git a/resources/views/vendor/mail/text/button.blade.php b/resources/views/vendor/mail/text/button.blade.php new file mode 100644 index 00000000..97444ebd --- /dev/null +++ b/resources/views/vendor/mail/text/button.blade.php @@ -0,0 +1 @@ +{{ $slot }}: {{ $url }} diff --git a/resources/views/vendor/mail/text/footer.blade.php b/resources/views/vendor/mail/text/footer.blade.php new file mode 100644 index 00000000..3338f620 --- /dev/null +++ b/resources/views/vendor/mail/text/footer.blade.php @@ -0,0 +1 @@ +{{ $slot }} diff --git a/resources/views/vendor/mail/text/header.blade.php b/resources/views/vendor/mail/text/header.blade.php new file mode 100644 index 00000000..aaa3e575 --- /dev/null +++ b/resources/views/vendor/mail/text/header.blade.php @@ -0,0 +1 @@ +[{{ $slot }}]({{ $url }}) diff --git a/resources/views/vendor/mail/text/layout.blade.php b/resources/views/vendor/mail/text/layout.blade.php new file mode 100644 index 00000000..9378baa0 --- /dev/null +++ b/resources/views/vendor/mail/text/layout.blade.php @@ -0,0 +1,9 @@ +{!! strip_tags($header) !!} + +{!! strip_tags($slot) !!} +@isset($subcopy) + +{!! strip_tags($subcopy) !!} +@endisset + +{!! strip_tags($footer) !!} diff --git a/resources/views/vendor/mail/text/message.blade.php b/resources/views/vendor/mail/text/message.blade.php new file mode 100644 index 00000000..1ae9ed8f --- /dev/null +++ b/resources/views/vendor/mail/text/message.blade.php @@ -0,0 +1,27 @@ +@component('mail::layout') + {{-- Header --}} + @slot('header') + @component('mail::header', ['url' => config('app.url')]) + {{ config('app.name') }} + @endcomponent + @endslot + + {{-- Body --}} + {{ $slot }} + + {{-- Subcopy --}} + @isset($subcopy) + @slot('subcopy') + @component('mail::subcopy') + {{ $subcopy }} + @endcomponent + @endslot + @endisset + + {{-- Footer --}} + @slot('footer') + @component('mail::footer') + © {{ date('Y') }} {{ config('app.name') }}. @lang('All rights reserved.') + @endcomponent + @endslot +@endcomponent diff --git a/resources/views/vendor/mail/text/panel.blade.php b/resources/views/vendor/mail/text/panel.blade.php new file mode 100644 index 00000000..3338f620 --- /dev/null +++ b/resources/views/vendor/mail/text/panel.blade.php @@ -0,0 +1 @@ +{{ $slot }} diff --git a/resources/views/vendor/mail/text/subcopy.blade.php b/resources/views/vendor/mail/text/subcopy.blade.php new file mode 100644 index 00000000..3338f620 --- /dev/null +++ b/resources/views/vendor/mail/text/subcopy.blade.php @@ -0,0 +1 @@ +{{ $slot }} diff --git a/resources/views/vendor/mail/text/table.blade.php b/resources/views/vendor/mail/text/table.blade.php new file mode 100644 index 00000000..3338f620 --- /dev/null +++ b/resources/views/vendor/mail/text/table.blade.php @@ -0,0 +1 @@ +{{ $slot }}