]> _ Git - fluidbook-toolbox.git/commitdiff
wip #5835 @2
authorVincent Vanwaelscappel <vincent@cubedesigners.com>
Tue, 28 Mar 2023 18:09:12 +0000 (20:09 +0200)
committerVincent Vanwaelscappel <vincent@cubedesigners.com>
Tue, 28 Mar 2023 18:09:12 +0000 (20:09 +0200)
27 files changed:
app/Fluidbook/Packager/Download.php
app/Jobs/DownloadBase.php
app/Jobs/ElearningMediaDownload.php
app/Jobs/ElearningPackageDownload.php
app/Jobs/FluidbookCollectionDownload.php
app/Jobs/QuizDownload.php
app/Jobs/Tools/FluidbookAssetsDownloader.php
app/Notifications/DownloadReady.php
public/images/logo-email.png [new file with mode: 0644]
resources/views/vendor/mail/html/button.blade.php [new file with mode: 0644]
resources/views/vendor/mail/html/footer.blade.php [new file with mode: 0644]
resources/views/vendor/mail/html/header.blade.php [new file with mode: 0644]
resources/views/vendor/mail/html/layout.blade.php [new file with mode: 0644]
resources/views/vendor/mail/html/message.blade.php [new file with mode: 0644]
resources/views/vendor/mail/html/panel.blade.php [new file with mode: 0644]
resources/views/vendor/mail/html/subcopy.blade.php [new file with mode: 0644]
resources/views/vendor/mail/html/table.blade.php [new file with mode: 0644]
resources/views/vendor/mail/html/themes/default.css [new file with mode: 0644]
resources/views/vendor/mail/text/button.blade.php [new file with mode: 0644]
resources/views/vendor/mail/text/footer.blade.php [new file with mode: 0644]
resources/views/vendor/mail/text/header.blade.php [new file with mode: 0644]
resources/views/vendor/mail/text/layout.blade.php [new file with mode: 0644]
resources/views/vendor/mail/text/message.blade.php [new file with mode: 0644]
resources/views/vendor/mail/text/panel.blade.php [new file with mode: 0644]
resources/views/vendor/mail/text/subcopy.blade.php [new file with mode: 0644]
resources/views/vendor/mail/text/table.blade.php [new file with mode: 0644]
resources/views/vendor/notifications/email.blade.php [new file with mode: 0644]

index 281418ddfa94e5d416ffcb71720571d0bd142b44..02a7c71d49b5f6e64fbc1d384f8b44f11c524909 100644 (file)
@@ -22,6 +22,12 @@ class Download extends DownloadBase
     // __('Fluidbook ":title" (#:nb) installé sur :server')
     protected $_installSubject = 'Fluidbook ":title" (#:nb) installé sur :server';
 
+    // __('Le Fluidbook ":title" est prêt au téléchargement.');
+    protected $_text = 'Le Fluidbook ":title" est prêt au téléchargement.';
+
+    // __('Le Fluidbook ":title" a été installé sur :server.')
+    protected $_installText = 'Le Fluidbook ":title" a été installé sur :server.';
+
     protected $_params = [];
 
     public function __construct($entry, $version, $action, $user, $params = [])
@@ -71,8 +77,10 @@ class Download extends DownloadBase
     {
         try {
             $url = $this->_compileandpackage();
-            $subject = __($this->_subject, ['title' => $this->_title(), 'nb' => $this->_id()]);
-            $text = '';
+            $translateVariables = ['title' => $this->_title(), 'nb' => $this->_id()];
+
+            $subject = __($this->_subject, $translateVariables);
+            $text = __($this->_text, $translateVariables);
             $actions = [];
             if ($this->action === 'download' || $this->action === 'scormcloud') {
                 $actions = ['Télécharger' => $url];
@@ -97,7 +105,10 @@ class Download extends DownloadBase
                 if (!$dest) {
                     throw new \Exception('No path defined for external server installation');
                 }
-                $subject = __($this->_installSubject, ['title' => $this->_title(), 'nb' => $this->_id(), 'server' => $server->name]);
+
+                $translateVariables['server'] = $server->name;
+                $subject = __($this->_installSubject, $translateVariables);
+                $text = __($this->_installText, $translateVariables);
                 $path = $this->_compileandpackage(false);
 
                 $driver = $server->getTransferDriver();
index 7150fb3bfc027cb71318235061fddf7ad99f40ac..6f479df7ed1aeaca8251fb93cb058a88186ec1cb 100644 (file)
@@ -37,6 +37,8 @@ class DownloadBase extends Base
 
     protected $_subject;
 
+    protected $_text;
+
     /**
      * @param $entry CubistMagicAbstractModel
      * @param $action string
@@ -123,9 +125,10 @@ class DownloadBase extends Base
     {
         try {
             $url = $this->_compileandpackage();
-            $subject = __($this->_subject, ['title' => $this->_title(), 'nb' => $this->_id()]);
-            $text = '';
-            $actions = ['Télécharger' => $url];
+            $translateVariables = $this->_getTranslateVariables();
+            $subject = __($this->_subject, $translateVariables);
+            $text = __($this->_text, $translateVariables);
+            $actions = [__('Télécharger') => $url];
             try {
                 if ($this->action === 'scormcloud') {
                     $scormURL = ScormCloud::send($url, 'toolbox_' . $this->type . '_' . $this->_id());
@@ -143,6 +146,11 @@ class DownloadBase extends Base
         $this->sendNotification($subject, $text, $actions);
     }
 
+    protected function _getTranslateVariables()
+    {
+        return ['title' => $this->_title(), 'nb' => $this->_id()];
+    }
+
     protected function _compileandpackage()
     {
 
index dea8bb12f67574f3b57b4286d4d31c9686b4ce6f..8d350e1ae7fd24fa6c4ffc694412b5835de65857 100644 (file)
@@ -11,4 +11,6 @@ class ElearningMediaDownload extends DownloadBase
     protected $type = 'elearningmedia';
     // __('Media ":title" (#:nb) prêt au téléchargement')
     protected $_subject = 'Media ":title" (#:nb) prêt au téléchargement';
+    // __('Le media ":title" est prêt au téléchargement');
+    protected $_text = 'Le media ":title" est prêt au téléchargement';
 }
index d4fbb5845e956f08721584202e9fa46865159fce..53a73876c2dbfc24bbf47d0c095ab8087766788f 100644 (file)
@@ -11,4 +11,6 @@ class ElearningPackageDownload extends DownloadBase
     protected $type = 'elearningpackage';
     // __('Package ":title" (#:nb) prêt au téléchargement')
     protected $_subject = 'Package ":title" (#:nb) prêt au téléchargement';
+    // __('Le package ":title" est prêt au téléchargement');
+    protected $_text = 'Le package ":title" est prêt au téléchargement';
 }
index 76974023d0f571d83e915259c85fd0466946eb04..7bdb873d25314547eb109032b6dd8b0ff6eb5ac4 100644 (file)
@@ -18,16 +18,19 @@ class FluidbookCollectionDownload extends DownloadBase
 
     // __('Collection ":title" (#:nb) prête au téléchargement')
     protected $_subject = 'Collection ":title" (#:nb) prête au téléchargement';
+    // __('La collection ":title" est prêt au téléchargement');
+    protected $_text = 'La collection ":title" est prêt au téléchargement';
 
 
     public function handle()
     {
+        $translateVariables = $this->_getTranslateVariables();
         if ($this->action === 'install') {
             $url = $this->installHosting($this->entry->getPageData());
-            $this->sendNotification(__('Collection ":title" (#:nb) installée sur le serveur hosting', ['title' => $this->_title(), 'nb' => $this->_id()]), '', $url);
+            $this->sendNotification(__('Collection ":title" (#:nb) installée sur le serveur hosting', $translateVariables), '', $url);
         } else if ($this->action === 'export' && in_array($this->entry->version, ['win_inss_html', 'win_ins_html'])) {
             $url = $this->downloadList($this->entry->getPageData());
-            $this->sendNotification(__('Collection ":title" (#:nb) prête au téléchargement', ['title' => $this->_title(), 'nb' => $this->_id()]), '', $url);
+            $this->sendNotification(__($this->_subject, $translateVariables), __($this->_text,$translateVariables), $url);
         } else {
             parent::handle();
         }
index 8489f1c2dc488bcc8a0b87bdf07b6b09b2fb37f4..9d2ce29610e9f6803f0e03d33a4c277df0ebb263 100644 (file)
@@ -12,4 +12,7 @@ class QuizDownload extends DownloadBase
     protected $type = 'quiz';
     // __('Quiz ":title" (#:nb) prêt au téléchargement')
     protected $_subject = 'Quiz ":title" (#:nb) prêt au téléchargement';
+    // __('Le quiz ":title" est prêt au téléchargement')
+    protected $_text = 'Le quiz ":title" est prêt au téléchargement';
+
 }
index 2454cc38892bfd9eae07d5d46295e3c1077bd7a4..f6b47d97b99ddde78ef650a1287fae327ebe85c3 100644 (file)
@@ -24,7 +24,7 @@ class FluidbookAssetsDownloader extends Base
             throw new \Exception('Fluidbook has not be set');
         }
         $this->setJobName(__('Téléchargement massif d\'assets dans un fluidbook'));
-        $this->dest = '/application/protected/fluidbookpublication/working/' . $fluidbook . '/';
+        $this->dest = Files::mkdir(protected_path('fluidbookpublication/working/' . $fluidbook));
         if ($folder !== 'working') {
             $this->dest .= $folder . '/';
         }
index 444b465732989404ff925ef1da4d6e1e7e128fdf..316587ded8aec67df04c088e64ddbc41f5b0d4d4 100644 (file)
@@ -6,6 +6,7 @@ use Illuminate\Bus\Queueable;
 use Illuminate\Contracts\Queue\ShouldQueue;
 use Illuminate\Notifications\Messages\MailMessage;
 use Illuminate\Notifications\Notification;
+use Illuminate\Support\HtmlString;
 
 class DownloadReady extends Notification
 {
@@ -14,17 +15,19 @@ class DownloadReady extends Notification
     protected $subject;
     protected $text;
     protected $actions = [];
+    protected $error = false;
 
     /**
      * Create a new notification instance.
      *
      * @return void
      */
-    public function __construct($subject = '', $text = '', $actions = [])
+    public function __construct($subject = '', $text = '', $actions = [], $error = false)
     {
         $this->subject = $subject;
         $this->text = $text;
         $this->actions = $actions;
+        $this->error = $error;
     }
 
     /**
@@ -35,6 +38,7 @@ class DownloadReady extends Notification
      */
     public function via($notifiable)
     {
+        return ['database', 'mail'];
         if ($notifiable->slack) {
             return ['database', FluidbookslackChannel::class];
         } else {
@@ -50,10 +54,22 @@ class DownloadReady extends Notification
      */
     public function toMail($notifiable)
     {
-        return (new MailMessage)
-            ->line('The introduction to the notification.')
-            ->action('Notification Action', url('/'))
-            ->line('Thank you for using our application!');
+        $m = (new MailMessage)->greeting(__('Bonjour !'))
+            ->subject($this->subject);
+        if ($this->text) {
+            $m->line($this->text);
+        }
+        foreach ($this->actions as $label => $url) {
+            $m->line(new HtmlString($label . __(': ') . ' <a href="' . $url . '">' . $url . '</a>'));
+        }
+        $m->salutation(new HtmlString(__('Cordialement,') . "<br>" . __('L\'équipe Fluidbook')));
+        if ($this->error) {
+            $m->error();
+        } else {
+            $m->success();
+        }
+        return $m;
+
     }
 
     /**
diff --git a/public/images/logo-email.png b/public/images/logo-email.png
new file mode 100644 (file)
index 0000000..07e2899
Binary files /dev/null and b/public/images/logo-email.png differ
diff --git a/resources/views/vendor/mail/html/button.blade.php b/resources/views/vendor/mail/html/button.blade.php
new file mode 100644 (file)
index 0000000..e74fe55
--- /dev/null
@@ -0,0 +1,19 @@
+<table class="action" align="center" width="100%" cellpadding="0" cellspacing="0" role="presentation">
+<tr>
+<td align="center">
+<table width="100%" border="0" cellpadding="0" cellspacing="0" role="presentation">
+<tr>
+<td align="center">
+<table border="0" cellpadding="0" cellspacing="0" role="presentation">
+<tr>
+<td>
+<a href="{{ $url }}" class="button button-{{ $color ?? 'primary' }}" target="_blank" rel="noopener">{{ $slot }}</a>
+</td>
+</tr>
+</table>
+</td>
+</tr>
+</table>
+</td>
+</tr>
+</table>
diff --git a/resources/views/vendor/mail/html/footer.blade.php b/resources/views/vendor/mail/html/footer.blade.php
new file mode 100644 (file)
index 0000000..3ff41f8
--- /dev/null
@@ -0,0 +1,11 @@
+<tr>
+<td>
+<table class="footer" align="center" width="570" cellpadding="0" cellspacing="0" role="presentation">
+<tr>
+<td class="content-cell" align="center">
+{{ Illuminate\Mail\Markdown::parse($slot) }}
+</td>
+</tr>
+</table>
+</td>
+</tr>
diff --git a/resources/views/vendor/mail/html/header.blade.php b/resources/views/vendor/mail/html/header.blade.php
new file mode 100644 (file)
index 0000000..fa1875c
--- /dev/null
@@ -0,0 +1,11 @@
+<tr>
+<td class="header">
+<a href="{{ $url }}" style="display: inline-block;">
+@if (trim($slot) === 'Laravel')
+<img src="https://laravel.com/img/notification-logo.png" class="logo" alt="Laravel Logo">
+@else
+{{ $slot }}
+@endif
+</a>
+</td>
+</tr>
diff --git a/resources/views/vendor/mail/html/layout.blade.php b/resources/views/vendor/mail/html/layout.blade.php
new file mode 100644 (file)
index 0000000..21d349b
--- /dev/null
@@ -0,0 +1,56 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta name="viewport" content="width=device-width, initial-scale=1.0" />
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+<meta name="color-scheme" content="light">
+<meta name="supported-color-schemes" content="light">
+<style>
+@media only screen and (max-width: 600px) {
+.inner-body {
+width: 100% !important;
+}
+
+.footer {
+width: 100% !important;
+}
+}
+
+@media only screen and (max-width: 500px) {
+.button {
+width: 100% !important;
+}
+}
+</style>
+</head>
+<body>
+
+<table class="wrapper" width="100%" cellpadding="0" cellspacing="0" role="presentation">
+<tr>
+<td align="center">
+<table class="content" width="100%" cellpadding="0" cellspacing="0" role="presentation">
+{{ $header ?? '' }}
+
+<!-- Email Body -->
+<tr>
+<td class="body" width="100%" cellpadding="0" cellspacing="0">
+<table class="inner-body" align="center" width="570" cellpadding="0" cellspacing="0" role="presentation">
+<!-- Body content -->
+<tr>
+<td class="content-cell">
+{{ Illuminate\Mail\Markdown::parse($slot) }}
+
+{{ $subcopy ?? '' }}
+</td>
+</tr>
+</table>
+</td>
+</tr>
+
+{{ $footer ?? '' }}
+</table>
+</td>
+</tr>
+</table>
+</body>
+</html>
diff --git a/resources/views/vendor/mail/html/message.blade.php b/resources/views/vendor/mail/html/message.blade.php
new file mode 100644 (file)
index 0000000..b5adaa7
--- /dev/null
@@ -0,0 +1,27 @@
+@component('mail::layout')
+    {{-- Header --}}
+    @slot('header')
+        @component('mail::header', ['url' => config('app.url')])
+            <img src="{{url('/images/logo-email.png')}}" height="47" width="300" alt="{{ 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') }}
+@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 (file)
index 0000000..2975a60
--- /dev/null
@@ -0,0 +1,14 @@
+<table class="panel" width="100%" cellpadding="0" cellspacing="0" role="presentation">
+<tr>
+<td class="panel-content">
+<table width="100%" cellpadding="0" cellspacing="0" role="presentation">
+<tr>
+<td class="panel-item">
+{{ Illuminate\Mail\Markdown::parse($slot) }}
+</td>
+</tr>
+</table>
+</td>
+</tr>
+</table>
+
diff --git a/resources/views/vendor/mail/html/subcopy.blade.php b/resources/views/vendor/mail/html/subcopy.blade.php
new file mode 100644 (file)
index 0000000..790ce6c
--- /dev/null
@@ -0,0 +1,7 @@
+<table class="subcopy" width="100%" cellpadding="0" cellspacing="0" role="presentation">
+<tr>
+<td>
+{{ Illuminate\Mail\Markdown::parse($slot) }}
+</td>
+</tr>
+</table>
diff --git a/resources/views/vendor/mail/html/table.blade.php b/resources/views/vendor/mail/html/table.blade.php
new file mode 100644 (file)
index 0000000..a5f3348
--- /dev/null
@@ -0,0 +1,3 @@
+<div class="table">
+{{ Illuminate\Mail\Markdown::parse($slot) }}
+</div>
diff --git a/resources/views/vendor/mail/html/themes/default.css b/resources/views/vendor/mail/html/themes/default.css
new file mode 100644 (file)
index 0000000..95c3cd1
--- /dev/null
@@ -0,0 +1,296 @@
+/* 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;
+}
+
+html{
+    min-height: 100%;
+    height: 100%;
+}
+
+body {
+    -webkit-text-size-adjust: none;
+    background-color: #edf2f7;
+    color: #718096;
+    min-height: 100%;
+    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;
+    max-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 (file)
index 0000000..97444eb
--- /dev/null
@@ -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 (file)
index 0000000..3338f62
--- /dev/null
@@ -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 (file)
index 0000000..aaa3e57
--- /dev/null
@@ -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 (file)
index 0000000..9378baa
--- /dev/null
@@ -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 (file)
index 0000000..ec50544
--- /dev/null
@@ -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') }}.
+        @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 (file)
index 0000000..3338f62
--- /dev/null
@@ -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 (file)
index 0000000..3338f62
--- /dev/null
@@ -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 (file)
index 0000000..3338f62
--- /dev/null
@@ -0,0 +1 @@
+{{ $slot }}
diff --git a/resources/views/vendor/notifications/email.blade.php b/resources/views/vendor/notifications/email.blade.php
new file mode 100644 (file)
index 0000000..2a8ebdd
--- /dev/null
@@ -0,0 +1,66 @@
+@component('mail::message')
+{{-- Greeting --}}
+@if (! empty($greeting))
+# {{ $greeting }}
+@else
+@if ($level === 'error')
+# @lang('Whoops!')
+@else
+# @lang('Hello!')
+@endif
+@endif
+
+@slot('header')
+
+@endslot
+
+{{-- Intro Lines --}}
+@foreach ($introLines as $line)
+{{ $line }}
+
+@endforeach
+
+{{-- Action Button --}}
+@isset($actionText)
+<?php
+    switch ($level) {
+        case 'success':
+        case 'error':
+            $color = $level;
+            break;
+        default:
+            $color = 'primary';
+    }
+?>
+@component('mail::button', ['url' => $actionUrl, 'color' => $color])
+{{ $actionText }}
+@endcomponent
+@endisset
+
+{{-- Outro Lines --}}
+@foreach ($outroLines as $line)
+{{ $line }}
+
+@endforeach
+
+{{-- Salutation --}}
+@if (! empty($salutation))
+{{ $salutation }}
+@else
+@lang('Regards'),<br>
+{{ config('app.name') }}
+@endif
+
+{{-- Subcopy --}}
+@isset($actionText)
+@slot('subcopy')
+@lang(
+    "If you're having trouble clicking the \":actionText\" button, copy and paste the URL below\n".
+    'into your web browser:',
+    [
+        'actionText' => $actionText,
+    ]
+) <span class="break-all">[{{ $displayableActionUrl }}]({{ $actionUrl }})</span>
+@endslot
+@endisset
+@endcomponent