diff --git a/admin_message.php b/admin_message.php index fd5b427a..9ac8b53d 100644 --- a/admin_message.php +++ b/admin_message.php @@ -22,9 +22,13 @@ require __DIR__ . '/lib/init.php'; use Froxlor\Database\Database; use Froxlor\UI\Request; +use Froxlor\UI\Panel\UI; $id = (int) Request::get('id'); +$note_type = null; +$note_msg = null; + if ($page == 'message') { if ($action == '') { $log->logAction(\Froxlor\FroxlorLogger::ADM_ACTION, LOG_NOTICE, 'viewed panel_message'); @@ -53,7 +57,7 @@ if ($page == 'message') { $subject = $_POST['subject']; $message = wordwrap($_POST['message'], 70); - if (! empty($message)) { + if (!empty($message)) { $mailcounter = 0; $mail->Body = $message; $mail->Subject = $subject; @@ -70,7 +74,7 @@ if ($page == 'message') { $mail->From = $userinfo['email']; $mail->FromName = (isset($userinfo['firstname']) ? $userinfo['firstname'] . ' ' : '') . $userinfo['name']; - if (! $mail->Send()) { + if (!$mail->Send()) { if ($mail->ErrorInfo != '') { $mailerr_msg = $mail->ErrorInfo; } else { @@ -81,7 +85,7 @@ if ($page == 'message') { \Froxlor\UI\Response::standard_error('errorsendingmail', $row['email']); } - $mailcounter ++; + $mailcounter++; $mail->ClearAddresses(); } @@ -94,31 +98,39 @@ if ($page == 'message') { \Froxlor\UI\Response::standard_error('nomessagetosend'); } } - } + } elseif ($action == 'showsuccess') { - if ($action == 'showsuccess') { - - $success = 1; $sentitems = isset($_GET['sentitems']) ? (int) $_GET['sentitems'] : 0; if ($sentitems == 0) { - $successmessage = $lng['message']['norecipients']; + $note_type = 'info'; + $note_msg = $lng['message']['norecipients']; } else { - $successmessage = str_replace('%s', $sentitems, $lng['message']['success']); + $note_type = 'success'; + $note_msg = str_replace('%s', $sentitems, $lng['message']['success']); } - } else { - $success = 0; - $sentitems = 0; - $successmessage = ''; } - $action = ''; - $recipients = ''; + $recipients = []; if ($userinfo['customers_see_all'] == '1') { - $recipients .= \Froxlor\UI\HTML::makeoption($lng['panel']['reseller'], 0); + $recipients[0] = $lng['panel']['reseller']; } + $recipients[1] = $lng['panel']['customer']; - $recipients .= \Froxlor\UI\HTML::makeoption($lng['panel']['customer'], 1); - eval("echo \"" . \Froxlor\UI\Template::getTemplate('message/message') . "\";"); + $messages_add_data = include_once dirname(__FILE__) . '/lib/formfields/admin/messages/formfield.messages_add.php'; + + UI::view('user/form-note.html.twig', [ + 'formaction' => $linker->getLink(array('section' => 'message')), + 'formdata' => $messages_add_data['messages_add'], + 'actions_links' => [[ + 'href' => $linker->getLink(['section' => 'settings', 'page' => 'overview', 'part' => 'system', 'em' => 'system_mail_use_smtp']), + 'label' => $lng['admin']['smtpsettings'], + 'icon' => 'fa-solid fa-wrench', + 'class' => 'btn-outline-secondary' + ]], + // alert-box + 'type' => $note_type, + 'alert_msg' => $note_msg + ]); } diff --git a/lib/Froxlor/UI/Callbacks/Admin.php b/lib/Froxlor/UI/Callbacks/Admin.php index 18632ab1..c8d5e79e 100644 --- a/lib/Froxlor/UI/Callbacks/Admin.php +++ b/lib/Froxlor/UI/Callbacks/Admin.php @@ -24,4 +24,9 @@ class Admin { return (bool)UI::getCurrentUser()['change_serversettings']; } + + public static function isNotMe(array $attributes) + { + return (UI::getCurrentUser()['adminid'] != $attributes['fields']['adminid']); + } } diff --git a/lib/formfields/admin/ipsandports/formfield.ipsandports_add.php b/lib/formfields/admin/ipsandports/formfield.ipsandports_add.php index 05cea69c..ea6ea19e 100644 --- a/lib/formfields/admin/ipsandports/formfield.ipsandports_add.php +++ b/lib/formfields/admin/ipsandports/formfield.ipsandports_add.php @@ -47,14 +47,14 @@ return array( 'label' => $lng['admin']['ipsandports']['create_listen_statement'], 'type' => 'checkbox', 'value' => '1', - 'checked' => true + 'checked' => false ), 'namevirtualhost_statement' => array( 'visible' => \Froxlor\Settings::Get('system.webserver') == 'apache2' && (int) \Froxlor\Settings::Get('system.apache24') == 0, 'label' => $lng['admin']['ipsandports']['create_namevirtualhost_statement'], 'type' => 'checkbox', 'value' => '1', - 'checked' => true + 'checked' => \Froxlor\Settings::Get('system.webserver') == 'apache2' && (int) \Froxlor\Settings::Get('system.apache24') == 0 ? true : false ), 'vhostcontainer' => array( 'label' => $lng['admin']['ipsandports']['create_vhostcontainer'], diff --git a/lib/formfields/admin/messages/formfield.messages_add.php b/lib/formfields/admin/messages/formfield.messages_add.php new file mode 100644 index 00000000..8fefb25a --- /dev/null +++ b/lib/formfields/admin/messages/formfield.messages_add.php @@ -0,0 +1,45 @@ + (2010-) + * @license GPLv2 http://files.froxlor.org/misc/COPYING.txt + * @package Formfields + * + */ +return array( + 'messages_add' => array( + 'title' => $lng['admin']['message'], + 'image' => 'fa-solid fa-paper-plane', + 'sections' => array( + 'section_a' => array( + 'fields' => array( + 'recipient' => array( + 'label' => $lng['admin']['recipient'], + 'type' => 'select', + 'select_var' => $recipients, + 'selected' => 1 + ), + 'subject' => array( + 'label' => $lng['admin']['subject'], + 'type' => 'text', + 'value' => $lng['admin']['nosubject'], + 'mandatory' => true + ), + 'message' => array( + 'label' => $lng['admin']['text'], + 'type' => 'textarea', + 'mandatory' => true + ) + ) + ) + ) + ) +); diff --git a/lib/tablelisting/admin/tablelisting.admins.php b/lib/tablelisting/admin/tablelisting.admins.php index df473110..a48a7bf4 100644 --- a/lib/tablelisting/admin/tablelisting.admins.php +++ b/lib/tablelisting/admin/tablelisting.admins.php @@ -16,6 +16,7 @@ * */ +use Froxlor\UI\Callbacks\Admin; use Froxlor\UI\Callbacks\ProgressBar; use Froxlor\UI\Callbacks\Style; use Froxlor\UI\Callbacks\Text; @@ -93,6 +94,7 @@ return [ 'action' => 'delete', 'id' => ':adminid' ], + 'visible' => [Admin::class, 'isNotMe'] ], ], 'format_callback' => [ diff --git a/lng/czech.lng.php b/lng/czech.lng.php index 36d7cc1f..de0383bc 100644 --- a/lng/czech.lng.php +++ b/lng/czech.lng.php @@ -502,7 +502,7 @@ $lng['admin']['text'] = 'Zpráva'; $lng['menu']['message'] = 'Zprávy'; $lng['error']['errorsendingmail'] = 'Zpráva uživateli "%s" selhala'; $lng['error']['cannotreaddir'] = 'Nelze přečíst adresář "%s"'; -$lng['message']['success'] = 'Zpráva úspěšně odeslána %s příjemcům,'; +$lng['success']['messages_success'] = 'Zpráva úspěšně odeslána %s příjemcům,'; $lng['message']['norecipients'] = 'Email nebyl odeslán, protože databáze neobsahuje žádné příjemce'; $lng['admin']['sslsettings'] = 'SSL nastavení'; $lng['cronjobs']['notyetrun'] = 'Ještě nespuštěno'; diff --git a/lng/dutch.lng.php b/lng/dutch.lng.php index 5ada091e..cb14d9fc 100644 --- a/lng/dutch.lng.php +++ b/lng/dutch.lng.php @@ -601,7 +601,7 @@ $lng['admin']['text'] = 'Bericht'; $lng['menu']['message'] = 'Berichten'; $lng['error']['errorsendingmail'] = 'Het versturen van het bericht naar "%s" is mislukt'; $lng['error']['cannotreaddir'] = 'De map "%s" kan niet gelezen worden'; -$lng['message']['success'] = 'Bericht verzonden naar ontvangers %s'; +$lng['success']['messages_success'] = 'Bericht verzonden naar ontvangers %s'; $lng['message']['norecipients'] = 'Er is geen email verstuurd omdat er geen ontvangers in de database zijn'; $lng['admin']['sslsettings'] = 'Instellingen voor SSL'; $lng['cronjobs']['notyetrun'] = 'Nog niet uitgevoerd'; diff --git a/lng/english.lng.php b/lng/english.lng.php index ef0d6e71..38fb7a4d 100644 --- a/lng/english.lng.php +++ b/lng/english.lng.php @@ -677,7 +677,7 @@ $lng['admin']['text'] = 'Message'; $lng['menu']['message'] = 'Messages'; $lng['error']['errorsendingmail'] = 'The message to "%s" failed'; $lng['error']['cannotreaddir'] = 'Unable to read directory "%s"'; -$lng['message']['success'] = 'Successfully sent message to %s recipients'; +$lng['success']['messages_success'] = 'Successfully sent message to %s recipients'; $lng['message']['norecipients'] = 'No e-mail has been sent because there are no recipients in the database'; $lng['admin']['sslsettings'] = 'SSL settings'; $lng['cronjobs']['notyetrun'] = 'Not yet run'; @@ -2152,3 +2152,4 @@ $lng['admin']['configfiles']['skipconfig'] = 'Don\'t (re)configure'; $lng['admin']['configfiles']['recommendednote'] = 'Recommended/required services based on current system settings'; $lng['admin']['configfiles']['selectrecommended'] = 'Select recommended'; $lng['update']['description'] = 'Running database updates for your froxlor installation'; +$lng['admin']['smtpsettings'] = 'SMTP settings'; diff --git a/lng/french.lng.php b/lng/french.lng.php index ab22cbfc..4c401f56 100644 --- a/lng/french.lng.php +++ b/lng/french.lng.php @@ -641,7 +641,7 @@ $lng['admin']['text'] = 'Message'; $lng['menu']['message'] = 'Messages'; $lng['error']['errorsendingmail'] = 'Echec d\'envoi du message à "%s"'; $lng['error']['cannotreaddir'] = 'Impossible de lire dossier "%s"'; -$lng['message']['success'] = 'Le message a été envoyé aux destinataires "%s"'; +$lng['success']['messages_success'] = 'Le message a été envoyé aux destinataires "%s"'; $lng['message']['norecipients'] = 'Aucun e-mail n\'a été envoyé car il n\'existe aucun destinataire dans la base de données'; $lng['admin']['sslsettings'] = 'Paramètres SSL'; $lng['cronjobs']['notyetrun'] = 'Pas encore lancé'; diff --git a/lng/german.lng.php b/lng/german.lng.php index 44c850f0..84fdc337 100644 --- a/lng/german.lng.php +++ b/lng/german.lng.php @@ -670,7 +670,7 @@ $lng['admin']['text'] = 'Nachricht'; $lng['menu']['message'] = 'Nachrichten'; $lng['error']['errorsendingmail'] = 'Das Versenden der Nachricht an "%s" schlug fehl.'; $lng['error']['cannotreaddir'] = 'Der Ordner "%s" kann nicht gelesen werden'; -$lng['message']['success'] = 'Nachricht erfolgreich an "%s" Empfänger gesendet'; +$lng['success']['messages_success'] = 'Nachricht erfolgreich an "%s" Empfänger gesendet'; $lng['message']['norecipients'] = 'Es wurde keine E-Mail versendet, da sich keine Empfänger in der Datenbank befinden'; $lng['admin']['sslsettings'] = 'SSL-Einstellungen'; $lng['cronjobs']['notyetrun'] = 'Bisher nicht gestartet'; @@ -1794,3 +1794,4 @@ $lng['admin']['configfiles']['skipconfig'] = 'Nicht (erneut) konfigurieren'; $lng['admin']['configfiles']['recommendednote'] = 'Empfohlene/benötigte Dienste ahand der aktuellen Systemeinstellungen'; $lng['admin']['configfiles']['selectrecommended'] = 'Empfohlene wählen'; $lng['update']['description'] = 'Aktualisierung der froxlor Datenbank'; +$lng['admin']['smtpsettings'] = 'SMTP Einstellungen'; diff --git a/lng/italian.lng.php b/lng/italian.lng.php index 30e4a951..f90f3b53 100644 --- a/lng/italian.lng.php +++ b/lng/italian.lng.php @@ -624,7 +624,7 @@ $lng['admin']['text'] = 'Messaggio'; $lng['menu']['message'] = 'Messaggi'; $lng['error']['errorsendingmail'] = 'Il messaggio a "%s" fallito'; $lng['error']['cannotreaddir'] = 'Impossibile leggere la cartella "%s"'; -$lng['message']['success'] = 'Inviato correttamente il messaggio a %s recipients'; +$lng['success']['messages_success'] = 'Inviato correttamente il messaggio a %s recipients'; $lng['message']['norecipients'] = 'Nessuna e-mail è stata inviata perch¸ non ci sono i destinatari nel database'; $lng['admin']['sslsettings'] = 'Impostazioni SSL'; $lng['cronjobs']['notyetrun'] = 'Non ancora avviato'; diff --git a/lng/portugues.lng.php b/lng/portugues.lng.php index 98e3a1a5..f6f7acb6 100644 --- a/lng/portugues.lng.php +++ b/lng/portugues.lng.php @@ -568,7 +568,7 @@ $lng['admin']['text'] = 'Mensagem'; $lng['menu']['message'] = 'Mensagens'; $lng['error']['errorsendingmail'] = 'A mensagem para "%s" falhou'; $lng['error']['cannotreaddir'] = 'Não é possível ler o diretório "%s"'; -$lng['message']['success'] = 'Mensagens enviadas para %s destinatários com sucesso'; +$lng['success']['messages_success'] = 'Mensagens enviadas para %s destinatários com sucesso'; $lng['message']['norecipients'] = 'Email não enviado porque não tem destinatário no banco de dados'; $lng['admin']['sslsettings'] = 'Configuração de SSL'; $lng['cronjobs']['notyetrun'] = 'Ainda não está rodando'; diff --git a/templates/Froxlor/misc/alertbox.html.twig b/templates/Froxlor/misc/alertbox.html.twig index 544db932..c435cd5c 100644 --- a/templates/Froxlor/misc/alertbox.html.twig +++ b/templates/Froxlor/misc/alertbox.html.twig @@ -1,4 +1,4 @@ -