middleware(['auth', 'isAdmin']); // Model $this->modelClass = Message::class; $this->modelType = StringHelper::toURL(__('models.messageboard')); $this->modelData = [ 'users' => [ 'type' => 'checkboxSelection', 'name' => 'name', 'label' => __('models.receiver'), 'checked' => false, 'foreign' => [ 'class' => User::class, 'model' => 'users', 'column' => 'name', 'label' => 'name', 'order' => [ 'column' => 'name', 'direction' => 'ASC' ], 'conditions' => [ [ 'column' => 'email', 'value' => '', 'condition' => '<>' ], ], ] ], 'title' => [ 'type' => 'inputText', 'label' => __('models.title'), 'placeholder' => __('models.title'), 'validation' => [ 'rules' => 'required|min:3', ] ], 'text' => [ 'type' => 'inputTextarea', 'label' => __('models.text'), 'placeholder' => __('models.text'), 'toolbar' => [ [ 'insertfile', 'undo', 'redo', ], [ 'bold', 'italic', 'strikethrough' ], [ 'alignleft', 'aligncenter', 'alignright', 'alignjustify' ], [ 'bullist', 'numlist' ], [ 'link', 'image', 'media' ] ], 'plugins' => [ 'paste', 'lists', 'media', 'link', 'image', 'imagetools', 'contextmenu' ], 'validation' => [ 'rules' => 'required', ] ], ]; if(AccessHelper::hasPermissionRoles(['Seitendesigner'])) { $this->modelData['text']['plugins'] = array_merge($this->modelData['text']['plugins'], [ 'preview', 'fullpage', 'searchreplace', 'autolink', 'directionality', 'visualblocks', 'visualchars', 'fullscreen', 'template', 'codesample', 'table', 'charmap', 'hr', 'pagebreak', 'nonbreaking', 'anchor', 'toc', 'insertdatetime', 'advlist', 'lists', 'textcolor', 'wordcount', 'contextmenu', 'colorpicker', 'textpattern' ]); } // URL options $this->url = 'messageboard'; $this->route = StringHelper::toURL(__('models.messageboard')); $this->adminIndexOptions = [ 'orderBy' => 'updated_at', 'orderDirection' => 'DESC', 'paginate' => 10, 'listdata' => [ 'title' => [], 'updated_at' => [ 'label' => __('general.datetime'), 'format' => __('general.datetime_format_short') ] ] ]; $this->wizardOptions = [ 'buttons' => [ 'save' => [ 'label' => __('models.send'), 'style' => 'btn-primary', 'icon' => 'fas fa-paper-plane' ] ] ]; parent::__construct(); } protected function hook_after_action_update(&$model, Request &$request) { $receiverCount = count($model->users); $receivers = array(); // Schicke die Nachricht per Email an alle gewählten Benutzer $model->users->each(function($user) use ($model, $receiverCount, &$receivers){ $job = (new MailUserMessage( config('mail.from.address'), __('admin.notify title'), $user->email, $model->title, $model->text, 'inc.emails.mailUserMessage'))->delay(1); dispatch($job); $receivers[] = $user->name; }); // Admin-Nachricht in Abhängigkeit von der Anzahl der Empfänger // Bei 3 oder weniger Empfängern if($receiverCount <= 3) { foreach($receivers as $receiver) { $this->addMessageInfo(__("admin.notification sent to"), $receiver); } } // Bei 4 oder mehr Empfängern else { $receiverString = implode(",
", array_slice($receivers, 0, 3))."
".__("admin.:number more", ['number' => ($receiverCount - 3)]); $this->addMessageInfo(__("admin.notification sent to"), $receiverString); } return $model; } }