Merge remote-tracking branch 'upstream/master' into subscriptioncycle

This commit is contained in:
Andreas Palm 2022-12-27 21:29:43 +01:00
commit 781fbc2600
14 changed files with 219 additions and 128 deletions

View File

@ -66,7 +66,7 @@ final class DatabaseLogHandler extends AbstractLogHandler
$sql = 'INSERT INTO `log` $sql = 'INSERT INTO `log`
(`log_time`, `level`, `message`, `class`, `method`, `line`, `origin_type`, `origin_detail`, `dump`) (`log_time`, `level`, `message`, `class`, `method`, `line`, `origin_type`, `origin_detail`, `dump`)
VALUES VALUES
(NOW(), :level, :message, :class, :method, :line, :origin_type, :origin_detail, :dump)'; (NOW(3), :level, :message, :class, :method, :line, :origin_type, :origin_detail, :dump)';
$this->db->perform($sql, $values); $this->db->perform($sql, $values);
} }
} }

View File

@ -493,12 +493,17 @@ class TicketImportHelper
$this->logger->debug('Start import', ['message' => $message->getSubject()]); $this->logger->debug('Start import', ['message' => $message->getSubject()]);
$this->importMessage($message); $result = $this->importMessage($message);
$insertedMailsCount++;
if ($this->mailAccount->isDeleteAfterImportEnabled()) { if ($result === true) {
$this->mailClient->deleteMessage((int)$messageNumber); $insertedMailsCount++;
if ($this->mailAccount->isDeleteAfterImportEnabled()) {
$this->mailClient->deleteMessage((int)$messageNumber);
} else {
$this->mailClient->setFlags((int)$messageNumber, ['\\Seen']);
}
} else { } else {
$this->mailClient->setFlags((int)$messageNumber, ['\\Seen']); $this->logger->error('Error during email import', ['']);
} }
} catch (Throwable $e) { } catch (Throwable $e) {
$this->logger->error('Error during email import', ['exception' => $e]); $this->logger->error('Error during email import', ['exception' => $e]);
@ -517,12 +522,10 @@ class TicketImportHelper
/** /**
* @param MailMessageInterface $message * @param MailMessageInterface $message
* *
* @return void * @return true on success
*/ */
public function importMessage(MailMessageInterface $message): void public function importMessage(MailMessageInterface $message): bool
{ {
$DEBUG = 0;
// extract email data // extract email data
$subject = $this->formatter->encodeToUtf8($message->getSubject()); $subject = $this->formatter->encodeToUtf8($message->getSubject());
$from = $this->formatter->encodeToUtf8($message->getSender()->getEmail()); $from = $this->formatter->encodeToUtf8($message->getSender()->getEmail());
@ -549,7 +552,7 @@ class TicketImportHelper
$action_html = nl2br($action); $action_html = nl2br($action);
} }
//check if email exists in database // Import database emailbackup
$date = $message->getDate(); $date = $message->getDate();
if (is_null($date)) { // This should not be happening -> Todo check getDate function if (is_null($date)) { // This should not be happening -> Todo check getDate function
$this->logger->debug('Null date',['subject' => $message->getSubject()]); $this->logger->debug('Null date',['subject' => $message->getSubject()]);
@ -563,21 +566,21 @@ class TicketImportHelper
FROM `emailbackup_mails` FROM `emailbackup_mails`
WHERE `checksum`='$frommd5' WHERE `checksum`='$frommd5'
AND `empfang`='$empfang' AND `empfang`='$empfang'
AND `ticketnachricht` != 0
AND `webmail`='" . $this->mailAccount->getId() . "'"; AND `webmail`='" . $this->mailAccount->getId() . "'";
$this->logger->debug('Importing message '.$from.' '.$fromname); $this->logger->debug('Importing message '.$from.' '.$fromname);
if ($this->db->Select($sql) == 0) { $result = $this->db->Select($sql);
$emailbackup_mails_id = null;
if ($result == 0) {
$this->logger->debug('Importing message',['']); $this->logger->debug('Importing message',['']);
$attachments = $message->getAttachments(); $attachments = $message->getAttachments();
$anhang = count($attachments) > 0 ? 1 : 0; $anhang = count($attachments) > 0 ? 1 : 0;
$mailacc = $this->mailAccount->getEmailAddress(); $mailacc = $this->mailAccount->getEmailAddress();
if (empty($mailacc) && count($message->getRecipients()) > 0) {
$mailacc = array_values($message->getRecipients())[0]->getEmail();
}
$mailaccid = $this->mailAccount->getId(); $mailaccid = $this->mailAccount->getId();
if (!$this->erpApi->isMailAdr($from)) { if (!$this->erpApi->isMailAdr($from)) {
@ -604,23 +607,24 @@ class TicketImportHelper
'$empfang','$anhang','$frommd5' '$empfang','$anhang','$frommd5'
)"; )";
$id = null; $this->db->InsertWithoutLog($sql);
if ($DEBUG) { $emailbackup_mails_id = $this->db->GetInsertID();
echo $sql; } else {
} else { $this->logger->debug('Message already imported.',['']);
$this->db->InsertWithoutLog($sql); return(true);
$id = $this->db->GetInsertID(); }
}
}
if ($DEBUG) {
echo "ticket suchen oder anlegen\n";
}
$this->logger->debug('Message emailbackup_mails imported.',['id' => $emailbackup_mails_id]);
// END database import emailbackup
// Find ticket and add or create new ticket
$ticketNumber = null; $ticketNumber = null;
$ticketexists = null; $ticketexists = null;
if (preg_match("/Ticket #[0-9]{12}/i", $subject, $matches)) { if (preg_match("/Ticket #[0-9]{12}/i", $subject, $matches)) {
$ticketNumber = str_replace('Ticket #', '', $matches[0]); $ticketNumber = str_replace('Ticket #', '', $matches[0]);
$this->logger->debug('Check for number',['ticketnummer' => $ticketNumber]);
$ticketexists = $this->db->Select( $ticketexists = $this->db->Select(
"SELECT schluessel "SELECT schluessel
FROM ticket FROM ticket
@ -648,7 +652,7 @@ class TicketImportHelper
$this->logger->debug('Add message to existing ticket',['ticketnummer' => $ticketNumber]); $this->logger->debug('Add message to existing ticket',['ticketnummer' => $ticketNumber]);
} }
// Add message to new or existing ticket // Database import ticket: Add message to new or existing ticket
$ticketnachricht = $this->addTicketMessage( $ticketnachricht = $this->addTicketMessage(
(string) $ticketNumber, (string) $ticketNumber,
$timestamp, $timestamp,
@ -661,11 +665,11 @@ class TicketImportHelper
$from $from
); );
if ($ticketnachricht > 0 && $id > 0) { if ($ticketnachricht > 0 && $emailbackup_mails_id > 0) {
$this->db->Update( $this->db->Update(
"UPDATE `emailbackup_mails` "UPDATE `emailbackup_mails`
SET ticketnachricht='$ticketnachricht' SET ticketnachricht='$ticketnachricht'
WHERE id='$id' LIMIT 1" WHERE id='$emailbackup_mails_id' LIMIT 1"
); );
@ -711,56 +715,58 @@ class TicketImportHelper
} }
} }
} }
} else {
$this->logger->error("Message not imported!", ['Time' => $timestamp, 'Subject' => $subject, 'From' => $from]);
$this->db->Delete("DELETE FROM emailbackup_mails WHERE id = ".$emailbackup_mails_id);
return(false);
} }
// END database import ticket
// Prüfen ob Ordner vorhanden ansonsten anlegen
$ordner = $this->config->WFuserdata . '/emailbackup/' . $this->config->WFdbname . "/$id"; // File management folder with raw text
if (!is_dir($ordner) && $id > 0) { $ordner = $this->config->WFuserdata . '/emailbackup/' . $this->config->WFdbname . "/$emailbackup_mails_id";
if (!is_dir($ordner) && $emailbackup_mails_id > 0) {
if (!mkdir($ordner, 0777, true) && !is_dir($ordner)) { if (!mkdir($ordner, 0777, true) && !is_dir($ordner)) {
$this->logger->error("Folder \"{folder}\" was not created", ['folder' => $ordner]);
$this->db->Delete("DELETE FROM emailbackup_mails WHERE id = ".$emailbackup_mails_id);
return(false);
} }
$raw_full_email = $message->getRawContent(); $raw_full_email = $message->getRawContent();
file_put_contents($ordner . '/mail.txt', $raw_full_email); file_put_contents($ordner . '/mail.txt', $raw_full_email);
} }
//speichere anhang als datei // File management attachments
if ($anhang == 1 && $id > 0) { if ($anhang == 1 && $emailbackup_mails_id > 0) {
$ordner = $this->config->WFuserdata . '/emailbackup/' . $this->config->WFdbname; $ordner = $this->config->WFuserdata . '/emailbackup/' . $this->config->WFdbname;
if (!is_dir($ordner)) { if (!is_dir($ordner)) {
if (!mkdir($ordner, 0777, true) && !is_dir($ordner)) { if (!mkdir($ordner, 0777, true) && !is_dir($ordner)) {
$this->logger->error("Folder \"{folder}\" was not created", ['folder' => $ordner]); $this->logger->error("Folder \"{folder}\" was not created", ['folder' => $ordner]);
$this->db->Delete("DELETE FROM emailbackup_mails WHERE id = ".$emailbackup_mails_id);
return(false);
} }
} }
// Prüfen ob Ordner vorhanden ansonsten anlegen // Prüfen ob Ordner vorhanden ansonsten anlegen
$ordner = $this->config->WFuserdata . '/emailbackup/' . $this->config->WFdbname . "/$id"; $ordner = $this->config->WFuserdata . '/emailbackup/' . $this->config->WFdbname . "/$emailbackup_mails_id";
if (!is_dir($ordner)) { if (!is_dir($ordner)) {
if ($DEBUG) { if (!mkdir($ordner, 0777, true) && !is_dir($ordner)) {
echo "mkdir $ordner\n"; $this->logger->error("Folder \"{folder}\" was not created", ['folder' => $ordner]);
} else { $this->db->Delete("DELETE FROM emailbackup_mails WHERE id = ".$emailbackup_mails_id);
if (!mkdir($ordner, 0777, true) && !is_dir($ordner)) { return(false);
$this->logger->error("Folder \"{folder}\" was not created", ['folder' => $ordner]);
}
} }
} }
$this->logger->debug('Add attachments',['ticketnummer' => $ticketNumber, 'nachricht' => $ticketnachricht, 'count' => count($attachments)]); $this->logger->debug('Add '.count($attachments).' attachments',['']);
foreach ($attachments as $attachment) { foreach ($attachments as $attachment) {
if ($attachment->getFileName() !== '') { if ($attachment->getFileName() !== '') {
if ($DEBUG) { $handle = fopen($ordner . '/' . $attachment->getFileName(), 'wb');
} else { if ($handle) {
$handle = fopen($ordner . '/' . $attachment->getFileName(), 'wb'); fwrite($handle, $attachment->getContent());
if ($handle) { fclose($handle);
fwrite($handle, $attachment->getContent());
fclose($handle);
}
} }
//Schreibe Anhänge in Datei-Tabelle //Schreibe Anhänge in Datei-Tabelle
$datei = $ordner . '/' . $attachment->getFileName(); $datei = $ordner . '/' . $attachment->getFileName();
$dateiname = $attachment->getFileName(); $dateiname = $attachment->getFileName();
$this->logger->debug("Attachment", ['filename' => $dateiname]);
if (stripos(strtoupper($dateiname), '=?UTF-8') !== false) { if (stripos(strtoupper($dateiname), '=?UTF-8') !== false) {
$dateiname = $this->formatter->encodeToUtf8($dateiname); $dateiname = $this->formatter->encodeToUtf8($dateiname);
$dateiname = htmlspecialchars_decode($dateiname); $dateiname = htmlspecialchars_decode($dateiname);
@ -774,42 +780,31 @@ class TicketImportHelper
$dateiname = htmlspecialchars_decode($dateiname); $dateiname = htmlspecialchars_decode($dateiname);
} }
$this->logger->debug("Attachment cleaned", ['filename' => $dateiname]); $tmpid = $this->erpApi->CreateDatei(
$dateiname,
$dateiname,
'',
'',
$datei,
'Support Mail',
true,
$this->config->WFuserdata . '/dms/' . $this->config->WFdbname
);
if ($DEBUG) { $this->logger->debug('Add attachment',['filename' => $dateiname, 'ticketnummer' => $ticketNumber,'id' => $tmpid, 'nachricht' => $ticketnachricht]);
echo "CreateDatei($dateiname,{$dateiname},\"\",\"\",\"datei\",\"Support Mail\",true,"
. $this->config->WFuserdata . "/dms/" . $this->config->WFdbname . ")\n";
} else {
$tmpid = $this->erpApi->CreateDatei(
$dateiname,
$dateiname,
'',
'',
$datei,
'Support Mail',
true,
$this->config->WFuserdata . '/dms/' . $this->config->WFdbname
);
}
if ($DEBUG) { $this->erpApi->AddDateiStichwort(
echo "AddDateiStichwort $tmpid,'Anhang','Ticket',$ticketnachricht,true)\n"; $tmpid,
} else { 'Anhang',
'Ticket',
$this->logger->debug('Add attachment',['ticketnummer' => $ticketNumber,'id' => $tmpid, 'nachricht' => $ticketnachricht]); $ticketnachricht,
true
$this->erpApi->AddDateiStichwort( );
$tmpid,
'Anhang',
'Ticket',
$ticketnachricht,
true
);
}
} }
} }
} } // END File management
// Autoresponder
if ( if (
$this->mailAccount->isAutoresponseEnabled() $this->mailAccount->isAutoresponseEnabled()
&& $this->mailAccount->getAutoresponseText() !== '' && $this->mailAccount->getAutoresponseText() !== ''
@ -843,5 +838,7 @@ class TicketImportHelper
$text $text
); );
} }
return(true);
} }
} }

View File

@ -16728,7 +16728,9 @@ INSERT INTO `firmendaten_werte` (`id`, `name`, `typ`, `typ1`, `typ2`, `wert`, `d
(385, 'cleaner_shopimport', 'tinyint', '1', '', '1', '1', 0, 0), (385, 'cleaner_shopimport', 'tinyint', '1', '', '1', '1', 0, 0),
(386, 'cleaner_shopimport_tage', 'int', '11', '', '90', '90', 0, 0), (386, 'cleaner_shopimport_tage', 'int', '11', '', '90', '90', 0, 0),
(387, 'cleaner_adapterbox', 'tinyint', '1', '', '1', '1', 0, 0), (387, 'cleaner_adapterbox', 'tinyint', '1', '', '1', '1', 0, 0),
(388, 'cleaner_adapterbox_tage', 'int', '11', '', '90', '90', 0, 0); (388, 'cleaner_adapterbox_tage', 'int', '11', '', '90', '90', 0, 0),
(389, 'bcc3', 'varchar', '128', '', '', '', 0, 0)
;
INSERT INTO `geschaeftsbrief_vorlagen` (`id`, `sprache`, `betreff`, `text`, `subjekt`, `projekt`, `firma`) VALUES INSERT INTO `geschaeftsbrief_vorlagen` (`id`, `sprache`, `betreff`, `text`, `subjekt`, `projekt`, `firma`) VALUES
(1, 'deutsch', 'Bestellung {BELEGNR} von {FIRMA}', '{ANSCHREIBEN},<br><br>anbei übersenden wir Ihnen unsere Bestellung zu. Bitte senden Sie uns als Bestätigung für den Empfang eine Auftragsbestätigung zu.', 'Bestellung', 1, 1), (1, 'deutsch', 'Bestellung {BELEGNR} von {FIRMA}', '{ANSCHREIBEN},<br><br>anbei übersenden wir Ihnen unsere Bestellung zu. Bitte senden Sie uns als Bestätigung für den Empfang eine Auftragsbestätigung zu.', 'Bestellung', 1, 1),

View File

@ -56922,7 +56922,7 @@
}, },
{ {
"Field": "log_time", "Field": "log_time",
"Type": "datetime", "Type": "datetime(3)",
"Collation": null, "Collation": null,
"Null": "YES", "Null": "YES",
"Key": "", "Key": "",

View File

@ -27328,7 +27328,7 @@ function MailSendFinal($from,$from_name,$to,$to_name,$betreff,$text,$files="",$p
$bcc3 = $this->Firmendaten('bcc3'); $bcc3 = $this->Firmendaten('bcc3');
if($bcc3!="") if($bcc3!="")
{ {
$bccRecipients[] = new EmailRecipient($bcc3[0], $bcc3[1]); $bccRecipients[] = new EmailRecipient($bcc3, $bcc3);
} }
// This will build the mail with phpmailer 6 and send it out // This will build the mail with phpmailer 6 and send it out

View File

@ -1289,7 +1289,7 @@ class Ajax {
} }
break; break;
case 'warteschlangename': case 'warteschlangename':
$arr = $this->app->DB->SelectArr("SELECT CONCAT(label, ' ', warteschlange) as result from warteschlangen"); $arr = $this->app->DB->SelectArr("SELECT CONCAT(label, ' ', warteschlange) as result from warteschlangen WHERE label LIKE '%$term%' OR warteschlange LIKE '%$term%' ORDER BY label");
$carr = !empty($arr)?count($arr):0; $carr = !empty($arr)?count($arr):0;
for($i = 0; $i < $carr; $i++) { for($i = 0; $i < $carr; $i++) {
$newarr[] = "{$arr[$i]['result']}"; $newarr[] = "{$arr[$i]['result']}";

View File

@ -21,7 +21,7 @@
<legend>{|[STATUSICON]<b>Ticket <font color="blue">#[SCHLUESSEL]</font></b>|}</legend> <legend>{|[STATUSICON]<b>Ticket <font color="blue">#[SCHLUESSEL]</font></b>|}</legend>
<tr><td>{|Betreff|}:</td><td><input type="text" name="betreff" id="betreff" value="[BETREFF]" size="20"></td></tr> <tr><td>{|Betreff|}:</td><td><input type="text" name="betreff" id="betreff" value="[BETREFF]" size="20"></td></tr>
<tr><td>{|Letzte Aktion|}:</td><td>[ZEIT]</td></tr> <tr><td>{|Letzte Aktion|}:</td><td>[ZEIT]</td></tr>
<tr><td>{|Von|}:</td><td>[MAILADRESSE] ([KUNDE])</td></tr> <tr><td>{|Von|}:</td><td>[KUNDE]&nbsp;[MAILADRESSE]</td></tr>
<tr><td>{|Projekt|}:</td><td><input type="text" name="projekt" id="projekt" value="[PROJEKT]" size="20"></td></tr> <tr><td>{|Projekt|}:</td><td><input type="text" name="projekt" id="projekt" value="[PROJEKT]" size="20"></td></tr>
<tr><td>{|Adresse|}:</td><td><input type="text" name="adresse" id="adresse" value="[ADRESSE]" size="20"><a href="index.php?module=adresse&action=edit&id=[ADRESSE_ID]"><img src="./themes/new/images/forward.svg" border="0" style="top:6px; position:relative"></a></td></tr> <tr><td>{|Adresse|}:</td><td><input type="text" name="adresse" id="adresse" value="[ADRESSE]" size="20"><a href="index.php?module=adresse&action=edit&id=[ADRESSE_ID]"><img src="./themes/new/images/forward.svg" border="0" style="top:6px; position:relative"></a></td></tr>
<tr><td>{|Tags|}:</td><td><input type="text" name="tags" id="tags" value="[TAGS]" size="20"></td></tr> <tr><td>{|Tags|}:</td><td><input type="text" name="tags" id="tags" value="[TAGS]" size="20"></td></tr>

View File

@ -1,19 +1,34 @@
<div class="row"> <div class="row">
<div class="row-height"> <div class="row-height">
<div class="col-xs-12 col-md-10 col-md-height" style="float:[NACHRICHT_FLOAT];"> <div class="col-xs-12 col-md-12 col-md-height">
<div class="inside inside-full-height" style= "border:1px solid black;"> <div class="inside inside-full-height" >
<fieldset> <div class="row">
<legend>{|<b>[NACHRICHT_BETREFF]</b>|}</legend> <div class="row-height">
<table width="100%" border="0" class="mkTableFormular"> <div class="col-xs-12 col-md-4 col-md-height" style="float:[META_FLOAT];">
<tr><td>{|Zeit|}:</td><td>[NACHRICHT_ZEIT]</td></tr> <div class="inside inside-full-height" >
<tr><td>{|Von|}:</td><td>[NACHRICHT_SENDER]</td></tr> <fieldset>
<tr><td>{|An|}:</td><td>[NACHRICHT_RECIPIENTS]</td></tr> <table width="100%" border="0" class="mkTableFormular">
<tr><td>{|CC|}:</td><td>[NACHRICHT_CC_RECIPIENTS]</td></tr> <tr><td>{|Betreff|}:</td><td><b>[NACHRICHT_BETREFF]<b></td></tr>
<tr><td colspan=2><hr style="border-style:solid; border-width:1px"></td></tr> <tr><td>{|Zeit|}:</td><td>[NACHRICHT_ZEIT]</td></tr>
<tr><td colspan=2><div id="body" class="ticket_text_div">[NACHRICHT_TEXT]</div></td></tr> <tr><td>{|Von|}:</td><td>[NACHRICHT_SENDER]</td></tr>
<tr><td colspan=2><div id="body" class="ticket_attachments">[NACHRICHT_ANHANG]</div></td></tr> <tr><td>{|An|}:</td><td>[NACHRICHT_RECIPIENTS]</td></tr>
</table> <tr><td>{|CC|}:</td><td>[NACHRICHT_CC_RECIPIENTS]</td></tr>
</fieldset> <tr><td colspan=2><div id="body" class="ticket_attachments">[NACHRICHT_ANHANG]</div></td></tr>
</table>
</fieldset>
</div>
</div>
<div class="col-xs-12 col-md-8 col-md-height ticket_nachricht_box" style="float:[NACHRICHT_FLOAT]">
<div class="inside inside-full-height">
<fieldset>
<table width="100%" border="0" class="mkTableFormular">
<tr><td colspan=2><div id="body" class="ticket_text_div">[NACHRICHT_TEXT]</div></td></tr>
</table>
</fieldset>
</div>
</div>
</div>
</div>
</div> </div>
</div> </div>
</div> </div>

View File

@ -1016,7 +1016,7 @@ class Firmendaten {
,'zahlungszielskonto','kleinunternehmer','schnellanlegen','bestellvorschlaggroessernull','immernettorechnungen','rechnung_header','rechnung_footer', ,'zahlungszielskonto','kleinunternehmer','schnellanlegen','bestellvorschlaggroessernull','immernettorechnungen','rechnung_header','rechnung_footer',
'lieferschein_header','lieferschein_footer','auftrag_header','auftrag_footer','angebot_header','angebot_footer','gutschrift_header','gutschrift_footer','bestellung_header','bestellung_footer', 'lieferschein_header','lieferschein_footer','auftrag_header','auftrag_footer','angebot_header','angebot_footer','gutschrift_header','gutschrift_footer','bestellung_header','bestellung_footer',
'arbeitsnachweis_header','arbeitsnachweis_footer','provisionsgutschrift_header','provisionsgutschrift_footer','proformarechnung_header','proformarechnung_footer','eu_lieferung_vermerk','export_lieferung_vermerk' 'arbeitsnachweis_header','arbeitsnachweis_footer','provisionsgutschrift_header','provisionsgutschrift_footer','proformarechnung_header','proformarechnung_footer','eu_lieferung_vermerk','export_lieferung_vermerk'
,'wareneingang_kamera_waage','layout_iconbar','passwort','host','port','mailssl','signatur','email','absendername','bcc1','bcc2' ,'wareneingang_kamera_waage','layout_iconbar','passwort','host','port','mailssl','signatur','email','absendername','bcc1','bcc2','bcc3'
,'firmenfarbe','name','strasse','plz','ort','steuernummer','projekt','steuer_positionen_export','tabsnavigationfarbe','tabsnavigationfarbeschrift' ,'firmenfarbe','name','strasse','plz','ort','steuernummer','projekt','steuer_positionen_export','tabsnavigationfarbe','tabsnavigationfarbeschrift'
); );
@ -1719,6 +1719,7 @@ class Firmendaten {
$this->app->Tpl->Set('ABSENDERNAME' , $data[0]['absendername']); $this->app->Tpl->Set('ABSENDERNAME' , $data[0]['absendername']);
$this->app->Tpl->Set('BCC1' , $data[0]['bcc1']); $this->app->Tpl->Set('BCC1' , $data[0]['bcc1']);
$this->app->Tpl->Set('BCC2' , $data[0]['bcc2']); $this->app->Tpl->Set('BCC2' , $data[0]['bcc2']);
$this->app->Tpl->Set('BCC3' , $data[0]['bcc3']);
$this->app->Tpl->Set('FIRMENFARBE' , $data[0]['firmenfarbe']); $this->app->Tpl->Set('FIRMENFARBE' , $data[0]['firmenfarbe']);
$this->app->Tpl->Set('NAME' , $data[0]['name']); $this->app->Tpl->Set('NAME' , $data[0]['name']);
$this->app->Tpl->Set('STRASSE' , $data[0]['strasse']); $this->app->Tpl->Set('STRASSE' , $data[0]['strasse']);
@ -2072,7 +2073,8 @@ class Firmendaten {
$this->app->Tpl->Set('EMAIL' , $data['email']); $this->app->Tpl->Set('EMAIL' , $data['email']);
$this->app->Tpl->Set('ABSENDERNAME' , $data['absendername']); $this->app->Tpl->Set('ABSENDERNAME' , $data['absendername']);
$this->app->Tpl->Set('BCC1' , $data['bcc1']); $this->app->Tpl->Set('BCC1' , $data['bcc1']);
$this->app->Tpl->Set('BCC2' , $data['bcc2']); $this->app->Tpl->Set('BCC2' , $data['bcc2']);
$this->app->Tpl->Set('BCC3' , $data['bcc3']);
$this->app->Tpl->Set('FIRMENFARBE' , $data['firmenfarbe']); $this->app->Tpl->Set('FIRMENFARBE' , $data['firmenfarbe']);
$this->app->Tpl->Set('NAME' , $data['name']); $this->app->Tpl->Set('NAME' , $data['name']);
$this->app->Tpl->Set('STRASSE' , $data['strasse']); $this->app->Tpl->Set('STRASSE' , $data['strasse']);
@ -2224,6 +2226,7 @@ class Firmendaten {
$data['absendername'] = ($this->app->Secure->POST["absendername"]); $data['absendername'] = ($this->app->Secure->POST["absendername"]);
$data['bcc1'] = ($this->app->Secure->POST["bcc1"]); $data['bcc1'] = ($this->app->Secure->POST["bcc1"]);
$data['bcc2'] = ($this->app->Secure->POST["bcc2"]); $data['bcc2'] = ($this->app->Secure->POST["bcc2"]);
$data['bcc3'] = ($this->app->Secure->POST["bcc3"]);
$data['name'] = ($this->app->Secure->POST["name"]); $data['name'] = ($this->app->Secure->POST["name"]);
$data['firmenfarbe'] = ($this->app->Secure->POST["firmenfarbe"]); $data['firmenfarbe'] = ($this->app->Secure->POST["firmenfarbe"]);
$data['strasse'] = ($this->app->Secure->POST["strasse"]); $data['strasse'] = ($this->app->Secure->POST["strasse"]);

View File

@ -82,7 +82,7 @@ class Log
'Nachricht', 'Nachricht',
'', '',
]; ];
$width = ['1%', '4%', '8%', '4%', '10%', '15%', '20%', '10%', '5%', '40%']; $width = ['1%', '4%', '9%', '4%', '10%', '15%', '20%', '10%', '5%', '40%'];
$findcols = [ $findcols = [
'open', 'open',
'l.id', 'l.id',
@ -116,7 +116,7 @@ class Log
$sql = "SELECT l.id, $sql = "SELECT l.id,
'<img src=./themes/new/images/details_open.png class=details>' AS `open`, '<img src=./themes/new/images/details_open.png class=details>' AS `open`,
l.id, l.id,
DATE_FORMAT(l.log_time,'%d.%m.%Y %H:%i:%s') AS `log_time`, SUBSTRING(DATE_FORMAT(l.log_time,'%d.%m.%Y %H:%i:%s %f'),1,23) AS `log_time`,
l.level, l.origin_type, l.origin_detail, l.class, l.method, l.line, l.message, l.id l.level, l.origin_type, l.origin_detail, l.class, l.method, l.line, l.message, l.id
FROM `log` AS `l`"; FROM `log` AS `l`";
$fastcount = 'SELECT COUNT(l.id) FROM `log` AS `l`'; $fastcount = 'SELECT COUNT(l.id) FROM `log` AS `l`';

View File

@ -307,6 +307,7 @@ class Ticket {
$this->app->Tpl->Set("NACHRICHT_BETREFF",'<a href="index.php?module=ticket&action=text_ausgang&mid='.$message['id'].'" target="_blank">'.htmlentities($message['betreff']).'</a>'); $this->app->Tpl->Set("NACHRICHT_BETREFF",'<a href="index.php?module=ticket&action=text_ausgang&mid='.$message['id'].'" target="_blank">'.htmlentities($message['betreff']).'</a>');
$this->app->Tpl->Set("NACHRICHT_ZEIT",$message['zeitausgang']); $this->app->Tpl->Set("NACHRICHT_ZEIT",$message['zeitausgang']);
$this->app->Tpl->Set("NACHRICHT_FLOAT","right"); $this->app->Tpl->Set("NACHRICHT_FLOAT","right");
$this->app->Tpl->Set("META_FLOAT","left");
$this->app->Tpl->Set("NACHRICHT_TEXT",$message['textausgang']); $this->app->Tpl->Set("NACHRICHT_TEXT",$message['textausgang']);
$this->app->Tpl->Set("NACHRICHT_SENDER",htmlentities($message['bearbeiter'])); $this->app->Tpl->Set("NACHRICHT_SENDER",htmlentities($message['bearbeiter']));
$this->app->Tpl->Set("NACHRICHT_RECIPIENTS",htmlentities($message['verfasser']." <".$message['mail'].">")); $this->app->Tpl->Set("NACHRICHT_RECIPIENTS",htmlentities($message['verfasser']." <".$message['mail'].">"));
@ -327,12 +328,13 @@ class Ticket {
} }
$this->app->Tpl->Set("NACHRICHT_BETREFF",htmlentities($message['betreff']." (Entwurf)")); $this->app->Tpl->Set("NACHRICHT_BETREFF",htmlentities($message['betreff']." (Entwurf)"));
} else { } else {
$this->app->Tpl->Set("NACHRICHT_BETREFF",htmlentities($message['betreff'])); $this->app->Tpl->Set("NACHRICHT_BETREFF",'<a href="index.php?module=ticket&action=text&mid='.$message['id'].'" target="_blank">'.htmlentities($message['betreff']).'</a>');
} }
$this->app->Tpl->Set("NACHRICHT_SENDER",htmlentities($message['verfasser']." <".$message['mail_replyto'].">")); $this->app->Tpl->Set("NACHRICHT_SENDER",htmlentities($message['verfasser']." <".$message['mail_replyto'].">"));
$this->app->Tpl->Set("NACHRICHT_RECIPIENTS",htmlentities($message['mail'])); $this->app->Tpl->Set("NACHRICHT_RECIPIENTS",htmlentities($message['mail']));
$this->app->Tpl->Set("NACHRICHT_CC_RECIPIENTS",htmlentities($message['mail_cc'])); $this->app->Tpl->Set("NACHRICHT_CC_RECIPIENTS",htmlentities($message['mail_cc']));
$this->app->Tpl->Set("NACHRICHT_FLOAT","right"); $this->app->Tpl->Set("NACHRICHT_FLOAT","right");
$this->app->Tpl->Set("META_FLOAT","left");
$this->app->Tpl->Set("NACHRICHT_ZEIT",$message['zeitausgang']); $this->app->Tpl->Set("NACHRICHT_ZEIT",$message['zeitausgang']);
$this->app->Tpl->Set("NACHRICHT_NAME",htmlentities($message['verfasser'])); $this->app->Tpl->Set("NACHRICHT_NAME",htmlentities($message['verfasser']));
} else { } else {
@ -351,6 +353,7 @@ class Ticket {
$this->app->Tpl->Set("NACHRICHT_CC_RECIPIENTS",htmlentities($message['mail_cc_recipients'])); $this->app->Tpl->Set("NACHRICHT_CC_RECIPIENTS",htmlentities($message['mail_cc_recipients']));
$this->app->Tpl->Set("NACHRICHT_BETREFF",'<a href="index.php?module=ticket&action=text&mid='.$message['id'].'" target="_blank">'.htmlentities($message['betreff']).'</a>'); $this->app->Tpl->Set("NACHRICHT_BETREFF",'<a href="index.php?module=ticket&action=text&mid='.$message['id'].'" target="_blank">'.htmlentities($message['betreff']).'</a>');
$this->app->Tpl->Set("NACHRICHT_FLOAT","left"); $this->app->Tpl->Set("NACHRICHT_FLOAT","left");
$this->app->Tpl->Set("META_FLOAT","right");
$this->app->Tpl->Set("NACHRICHT_ZEIT",$message['zeit']); $this->app->Tpl->Set("NACHRICHT_ZEIT",$message['zeit']);
} }
@ -561,6 +564,10 @@ class Ticket {
$this->app->Tpl->Set('ADRESSE', $this->app->erp->ReplaceAdresse(false,$ticket_from_db['adresse'],false)); // Convert ID to form display $this->app->Tpl->Set('ADRESSE', $this->app->erp->ReplaceAdresse(false,$ticket_from_db['adresse'],false)); // Convert ID to form display
if ($ticket_from_db['mailadresse'] != "") {
$this->app->Tpl->Set('MAILADRESSE',"&lt;".$ticket_from_db['mailadresse']."&gt;");
}
$this->app->Tpl->Set('ADRESSE_ID',$ticket_from_db['adresse']); $this->app->Tpl->Set('ADRESSE_ID',$ticket_from_db['adresse']);
$this->app->YUI->AutoComplete("projekt","projektname",1); $this->app->YUI->AutoComplete("projekt","projektname",1);

View File

@ -1809,12 +1809,12 @@ fieldset.usersave div.filter-item > label {
fieldset { fieldset {
position: relative; position: relative;
margin: 0; margin: 0;
margin-top: 5px; /* margin-top: 5px;
padding: 5px; padding: 5px;
border: 0 solid transparent; border: 0 solid transparent;
border-top: 25px solid transparent; border-top: 25px solid transparent;
border-bottom: 5px solid transparent; border-bottom: 5px solid transparent;
border-width: 24px 5px 0; border-width: 24px 5px 0;*/
border-color: transparent; border-color: transparent;
background-color: transparent; background-color: transparent;
} }
@ -2139,7 +2139,7 @@ img {
-webkit-border-radius: 4px; -webkit-border-radius: 4px;
-moz-border-radius: 4px; -moz-border-radius: 4px;
border-radius: 4px; border-radius: 4px;
padding-top: 2px; /* padding-top: 2px;*/
} }
@ -2467,12 +2467,23 @@ ul.tag-editor {
visibility: hidden; visibility: hidden;
} }
.ticket_nachricht_box {
border: solid 1px;
border-color: var(--textfield-border);
border-radius: 7px;
padding: 0px !important;
}
.ticket_nachricht_box fieldset {
padding: 0px !important;
}
.ticket_text { .ticket_text {
width: 100%; width: 100%;
border: none; border: none;
height: 300px;
} }
.ui-button-icon, .ui-button-icon,
.ui-button:not(.ui-dialog-titlebar-close):not(.button-secondary), .ui-button:not(.ui-dialog-titlebar-close):not(.button-secondary),
input[type=submit]:not(.button-secondary) { input[type=submit]:not(.button-secondary) {
@ -3373,7 +3384,7 @@ div.noteit_highprio {
right: 10px; right: 10px;
top: 28px; top: 28px;
} }
/*
@media screen and (min-width: 320px) { @media screen and (min-width: 320px) {
.mkTableFormular tr td:first-child { .mkTableFormular tr td:first-child {
padding-top: 7px; padding-top: 7px;
@ -3386,7 +3397,7 @@ div.noteit_highprio {
} }
.mkTableFormular tr td { .mkTableFormular tr td {
vertical-align: top; vertical-align: top;
} }*/
@media screen and (max-width: 768px) { @media screen and (max-width: 768px) {
.hide768 { .hide768 {
display: none; display: none;

View File

@ -13,6 +13,7 @@
<script src="themes/new/js/scripts_login.js"></script> <script src="themes/new/js/scripts_login.js"></script>
<link rel="stylesheet" href="themes/new/css/normalize.min.css?v=5"> <link rel="stylesheet" href="themes/new/css/normalize.min.css?v=5">
<link rel="stylesheet" href="themes/new/css/login_styles.css?v=3"> <link rel="stylesheet" href="themes/new/css/login_styles.css?v=3">
<link rel="stylesheet" href="themes/new/css/custom.css?v=3">
</head> </head>
<body> <body>

View File

@ -83,7 +83,7 @@ function abweichend2()
<fieldset><legend>{|Allgemein|}</legend> <fieldset><legend>{|Allgemein|}</legend>
<table class="mkTableFormular"> <table class="mkTableFormular">
<tr id="kundestyle"><td><legend>{|Kunde|}</legend></td><td nowrap>[ADRESSE][MSGADRESSE]&nbsp;[BUTTON_UEBERNEHMEN]</td></tr> <tr id="kundestyle"><td>{|Kunde|}</td><td nowrap>[ADRESSE][MSGADRESSE]&nbsp;[BUTTON_UEBERNEHMEN]</td></tr>
<tr id="lieferantenauftragstyle"><td><legend>{|Lieferant|}</legend></td><td nowrap>[LIEFERANT][MSGLIEFERANT]&nbsp;[BUTTON_UEBERNEHMEN2]</td></tr> <tr id="lieferantenauftragstyle"><td><legend>{|Lieferant|}</legend></td><td nowrap>[LIEFERANT][MSGLIEFERANT]&nbsp;[BUTTON_UEBERNEHMEN2]</td></tr>
<tr><td>{|an Lieferanten|}:</td><td nowrap>[LIEFERANTENAUFTRAG][MSGLIEFERANTENAUFTRAG]&nbsp;</td></tr> <tr><td>{|an Lieferanten|}:</td><td nowrap>[LIEFERANTENAUFTRAG][MSGLIEFERANTENAUFTRAG]&nbsp;</td></tr>
<tr><td>{|Projekt|}:</td><td>[PROJEKT][MSGPROJEKT]</td></tr> <tr><td>{|Projekt|}:</td><td>[PROJEKT][MSGPROJEKT]</td></tr>
@ -228,18 +228,51 @@ function abweichend2()
<fieldset><legend>{|Auftrag|}</legend> <fieldset><legend>{|Auftrag|}</legend>
<table class="mkTableFormular"> <table class="mkTableFormular">
<tr><td>{|Zahlungsweise|}:</td><td>[ZAHLUNGSWEISE][MSGZAHLUNGSWEISE] <tr>
<br>[VORABBEZAHLTMARKIEREN][MSGVORABBEZAHLTMARKIEREN]&nbsp;manuell Zahlungsfreigabe erteilen <td>
</td></tr> {|Zahlungsweise|}:
</td>
<td>
[ZAHLUNGSWEISE][MSGZAHLUNGSWEISE]
</td>
</tr>
<tr>
<td>
{|Manuell Zahlungsfreigabe erteilen|}:
</td>
<td>
[VORABBEZAHLTMARKIEREN][MSGVORABBEZAHLTMARKIEREN]
</td>
</tr>
<tr><td>{|Versandart|}:</td><td>[VERSANDART][MSGVERSANDART]</td></tr> <tr><td>{|Versandart|}:</td><td>[VERSANDART][MSGVERSANDART]</td></tr>
<tr><td><label for="lieferbedingung">{|Lieferbedingung|}:</label></td><td>[LIEFERBEDINGUNG][MSGLIEFERBEDINGUNG]</td></tr> <tr><td><label for="lieferbedingung">{|Lieferbedingung|}:</label></td><td>[LIEFERBEDINGUNG][MSGLIEFERBEDINGUNG]</td></tr>
<tr><td>{|Vertrieb|}:</td><td>[VERTRIEB][MSGVERTRIEB]&nbsp;[VERTRIEBBUTTON]</td></tr> <tr><td>{|Vertrieb|}:</td><td>[VERTRIEB][MSGVERTRIEB]&nbsp;[VERTRIEBBUTTON]</td></tr>
<tr><td>{|Bearbeiter|}:</td><td>[BEARBEITER][MSGBEARBEITER]&nbsp;[INNENDIENSTBUTTON]</td></tr> <tr><td>{|Bearbeiter|}:</td><td>[BEARBEITER][MSGBEARBEITER]&nbsp;[INNENDIENSTBUTTON]</td></tr>
<tr><td>{|Portopr&uuml;fung ausschalten|}:</td><td>[KEINPORTO][MSGKEINPORTO]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <tr>
{|Kein Briefpapier und Logo|}:&nbsp;[OHNE_BRIEFPAPIER][MSGOHNE_BRIEFPAPIER]</td></tr> <td>
<tr><td>{|Artikeltexte ausblenden|}:</td><td>[OHNE_ARTIKELTEXT][MSGOHNE_ARTIKELTEXT]</td></tr> {|Portopr&uuml;fung ausschalten|}:
</td>
<td>
[KEINPORTO][MSGKEINPORTO]
</td>
</tr>
<tr>
<td>
{|Kein Briefpapier und Logo|}:
</td>
<td>
[OHNE_BRIEFPAPIER][MSGOHNE_BRIEFPAPIER]
</td>
</tr>
<tr>
<td>
{|Artikeltexte ausblenden|}:
</td>
<td>
[OHNE_ARTIKELTEXT][MSGOHNE_ARTIKELTEXT]
</td>
</tr>
</table> </table>
</fieldset> </fieldset>
<fieldset><legend>{|Versandzentrum Optionen|}</legend> <fieldset><legend>{|Versandzentrum Optionen|}</legend>
@ -261,7 +294,7 @@ function abweichend2()
<div class="col-xs-12 col-sm-6 col-sm-height"> <div class="col-xs-12 col-sm-6 col-sm-height">
<div class="inside inside-full-height"> <div class="inside inside-full-height">
<fieldset><legend>{|Sonstiges|}</legend> <fieldset><legend>{|Sonstigess|}</legend>
<table class="mkTableFormular"><tr><td>{|GLN|}:</td><td>[GLN][MSGGLN]</td></tr>[EXTRABEREICHSONSTIGES]</table> <table class="mkTableFormular"><tr><td>{|GLN|}:</td><td>[GLN][MSGGLN]</td></tr>[EXTRABEREICHSONSTIGES]</table>
</fieldset> </fieldset>
@ -295,7 +328,7 @@ function abweichend(cmd)
<div id="rechnung" style="display:[RECHNUNG]"> <div id="rechnung">
<fieldset><legend>{|Rechnung|}</legend> <fieldset><legend>{|Rechnung|}</legend>
<table width="100%"> <table width="100%">
<tr><td width="200">{|Zahlungsziel (in Tagen)|}:</td><td>[ZAHLUNGSZIELTAGE][MSGZAHLUNGSZIELTAGE]</td></tr> <tr><td width="200">{|Zahlungsziel (in Tagen)|}:</td><td>[ZAHLUNGSZIELTAGE][MSGZAHLUNGSZIELTAGE]</td></tr>
@ -397,8 +430,30 @@ function abweichend(cmd)
<fieldset><legend>UST-Pr&uuml;fung</legend> <fieldset><legend>UST-Pr&uuml;fung</legend>
<table width="100%"> <table width="100%">
<tr><td width="200">{|UST ID|}:</td><td>[USTID][MSGUSTID]</td></tr> <tr><td width="200">{|UST ID|}:</td><td>[USTID][MSGUSTID]</td></tr>
<tr><td>{|Besteuerung|}:</td><td>[UST_BEFREIT][MSGUST_BEFREIT]&nbsp;[KEINSTEUERSATZ][MSGKEINSTEUERSATZ]&nbsp;{|ohne Hinweis bei EU oder Export|}</td></tr> <tr>
<tr><td>{|UST-ID gepr&uuml;ft|}:</td><td>[UST_OK][MSGUST_OK]&nbsp;UST / Export gepr&uuml;ft + Freigabe f&uuml;r Versand</td></tr> <td>
{|Besteuerung|}:
</td>
<td>
[UST_BEFREIT][MSGUST_BEFREIT]
</td>
</tr>
<tr>
<td>
{|Ohne Hinweis bei EU oder Export|}:
</td>
<td>
[KEINSTEUERSATZ][MSGKEINSTEUERSATZ]
</td>
</tr>
<tr>
<td>
{|UST-ID gepr&uuml;ft|}:
</td>
<td>
[UST_OK]&nbsp;UST / Export gepr&uuml;ft + Freigabe f&uuml;r Versand
</td>
</tr>
</table> </table>
</fieldset> </fieldset>