Initial xentral_oss_20.3.c9ffacf

This commit is contained in:
Alex
2021-05-21 08:49:41 +02:00
parent 5406e4a551
commit 34e5ac43d9
18884 changed files with 2109867 additions and 0 deletions
+45
View File
@@ -0,0 +1,45 @@
<?php
namespace Xentral\Modules\Company;
use Xentral\Core\DependencyInjection\ContainerInterface;
use Xentral\Modules\Company\Service\DocumentCustomizationService;
use Xentral\Modules\Company\Service\DocumentCustomizationBlockParser;
final class Bootstrap
{
/**
* @return array
*/
public static function registerServices()
{
return [
'DocumentCustomizationService' => 'onInitDocumentCustomizationService',
'DocumentCustomizationBlockParser' => 'onInitDocumentCustomizationBlockParser',
];
}
/**
* @param ContainerInterface $container
*
* @return DocumentCustomizationService
*/
public static function onInitDocumentCustomizationService(ContainerInterface $container)
{
return new DocumentCustomizationService(
$container->get('Database'),
$container->get('DocumentCustomizationBlockParser')
);
}
/**
* @param ContainerInterface $container
*
* @return DocumentCustomizationBlockParser
*/
public static function onInitDocumentCustomizationBlockParser(ContainerInterface $container)
{
$erp = $container->get('LegacyApplication')->erp;
return new DocumentCustomizationBlockParser($erp);
}
}
@@ -0,0 +1,9 @@
<?php
namespace Xentral\Modules\Company\Exception;
use Xentral\Core\Exception\ModuleExceptionInterface;
interface DocumentCustomizationExceptionInterface extends ModuleExceptionInterface
{
}
@@ -0,0 +1,9 @@
<?php
namespace Xentral\Modules\Company\Exception;
use InvalidArgumentException as SplInvalidArgumentException;
class InvalidArgumentException extends SplInvalidArgumentException implements DocumentCustomizationExceptionInterface
{
}
@@ -0,0 +1,9 @@
<?php
namespace Xentral\Modules\Company\Exception;
use RuntimeException as SplRuntimeException;
class RuntimeException extends SplRuntimeException implements DocumentCustomizationExceptionInterface
{
}
@@ -0,0 +1,50 @@
<?php
namespace Xentral\Modules\Company\Service;
final class DocumentCustomizationBlockParser
{
/**
* @deprecated
*/
private $erp;
/**
* @param \erpAPI $erp
*/
public function __construct($erp)
{
$this->erp = $erp;
}
/**
* @param string $content
* @param array $variables
*
* @return string
*/
public function parse($content, $variables)
{
$elements = explode("\n", str_replace("\r", '', trim($content)));
foreach ($elements as $key => $el) {
if ($el === '') {
$elements[$key] = '|';
}
}
foreach ($elements as $key => $el) {
$el = trim($el);
$elements[$key] = $el;
foreach ($variables as $prevKey => $preVal) {
if (strpos($el, '{' . $prevKey . '}') !== false) {
$elements[$key] = trim(str_replace('{' . $prevKey . '}', $preVal, $el));
break;
}
}
}
$content = $this->erp->ParseIfVars(implode("\n", $elements));
return $this->erp->RemoveUnusedParsevars($content);
}
}
@@ -0,0 +1,343 @@
<?php
namespace Xentral\Modules\Company\Service;
use Xentral\Components\Database\Database;
use Xentral\Modules\Company\Exception\InvalidArgumentException;
final class DocumentCustomizationService
{
/** @var Database */
private $db;
/** @var DocumentCustomizationBlockParser */
private $parser;
/**
* DocumentCustomizationService constructor.
*
* @param Database $db
* @param DocumentCustomizationBlockParser $parser
*/
public function __construct(Database $db, DocumentCustomizationBlockParser $parser)
{
$this->db = $db;
$this->parser = $parser;
}
/**
* @param string $keyword
* @param string $doctype
* @param string $content
* @param string $fontStyle
* @param bool $active
* @param string $alignment
*/
public function createBlock($keyword, $doctype, $content, $fontStyle, $projecId, $active, $alignment)
{
$this->db->perform(
'INSERT INTO document_customization_infoblock
(keyword, doctype, fontstyle, content, active, project_id, alignment)
VALUES (:keyword, :doctype, :fontstyle, :content, :active, :project_id, :alignment)',
[
'keyword' => $keyword,
'doctype' => $doctype,
'fontstyle' => $fontStyle,
'content' => $content,
'active' => (int)$active,
'project_id' => $projecId,
'alignment' => $alignment
]
);
}
/**
* @param int $documentCustomizationInfoBlockId
* @param string $doctype
* @param string $content
* @param string $fontStyle
* @param int $projectId
* @param bool $active
* @param string $alignment
*/
public function updateInfoBlock(
$documentCustomizationInfoBlockId,
$doctype,
$content,
$fontStyle,
$projectId,
$active,
$alignment
) {
$documentCustomizationBlockId = $this->getBlock($documentCustomizationInfoBlockId);
if ($documentCustomizationBlockId === false) {
throw new InvalidArgumentException('id not found: ' . $documentCustomizationInfoBlockId);
}
$this->db->perform(
'UPDATE document_customization_infoblock
SET content = :content, fontstyle = :fontstyle, active = :active, project_id = :project_id,
doctype = :doctype, alignment = :alignment
WHERE id = :id',
[
'content' => $content,
'fontstyle' => $fontStyle,
'project_id' => (int)$projectId,
'doctype' => $doctype,
'active' => (int)$active,
'id' => (int)$documentCustomizationInfoBlockId,
'alignment' => $alignment
]
);
}
/**
* @param string $languageCode
* @param int $documentCustomizationBlockId
* @param string $content
* @param bool $active
* @param string $fontstyle
* @param string $alignment
*/
public function saveTranslation($documentCustomizationBlockId, $languageCode, $content, $active, $fontstyle, $alignment)
{
if ($documentCustomizationBlockId === false) {
throw new $documentCustomizationBlockId('block not found');
}
$documentCustomizationInfoBlockTranslationId = $this->getTranslationBlock(
$documentCustomizationBlockId,
$languageCode
);
if ($documentCustomizationInfoBlockTranslationId === false) {
$this->db->perform(
'INSERT INTO document_customization_infoblock_translation
(document_customization_infoblock_id, language_code, content, active, fontstyle, alignment)
VALUES (:document_customization_infoblock_id, :language_code, :content, :active, :fontstyle, :alignment)',
[
'document_customization_infoblock_id' => (int)$documentCustomizationBlockId,
'language_code' => $languageCode,
'content' => $content,
'active' => (int)$active,
'fontstyle' => $fontstyle,
'alignment' => $alignment
]
);
return;
}
$this->db->perform(
'UPDATE document_customization_infoblock_translation
SET content = :content, active = :active, fontstyle = :fontstyle, alignment = :alignment
WHERE id = :id',
[
'id' => (int)$documentCustomizationInfoBlockTranslationId,
'content' => $content,
'active' => (int)$active,
'fontstyle' => $fontstyle,
'alignment' => $alignment
]
);
}
/**
* @param int $documentCustomizationInfoBlockId
*
* @throws InvalidArgumentException
*/
public function delete($documentCustomizationInfoBlockId)
{
if (!$this->getBlock($documentCustomizationInfoBlockId)) {
throw new InvalidArgumentException('customaziationblock not found id ' . $documentCustomizationInfoBlockId);
}
$this->db->perform(
'DELETE FROM document_customization_infoblock_translation WHERE document_customization_infoblock_id = :id',
['id' => (int)$documentCustomizationInfoBlockId]
);
$this->db->perform(
'DELETE FROM document_customization_infoblock WHERE id = :id',
['id' => (int)$documentCustomizationInfoBlockId]
);
}
/**
* @param int $documentCustomizationInfoBlockId
*/
public function copy($documentCustomizationInfoBlockId)
{
if (!$this->getBlock($documentCustomizationInfoBlockId)) {
throw new InvalidArgumentException('customaziationblock not found id ' . $documentCustomizationInfoBlockId);
}
$this->db->perform(
'INSERT INTO document_customization_infoblock (keyword, doctype, fontstyle, content, active, project_id, alignment)
SELECT keyword, doctype, fontstyle, content, active, project_id, alignment FROM document_customization_infoblock
WHERE id = :id',
['id' => (int)$documentCustomizationInfoBlockId]
);
$newDocumentCustomizationInfoBlockId = $this->db->lastInsertId();
$this->db->perform('INSERT INTO document_customization_infoblock_translation
(language_code, content, active, document_customization_infoblock_id, alignment, fontstyle)
SELECT language_code, content, active, :new_id , alignment, fontstyle
FROM document_customization_infoblock_translation WHERE document_customization_infoblock_id = :id',
[
'new_id' => (int)$newDocumentCustomizationInfoBlockId,
'id' => (int)$documentCustomizationInfoBlockId,
]
);
}
/**
* @param int $documentCustomizationInfoBlockId
*
* @return false|array
*/
public function getBlock($documentCustomizationInfoBlockId)
{
return $this->db->fetchRow(
'SELECT id, keyword, doctype, fontstyle, content, active, project_id, alignment
FROM document_customization_infoblock
WHERE id = :id',
['id' => (int)$documentCustomizationInfoBlockId]
);
}
/**
* @param string $languageCode
* @param int $documentCustomizationBlockId
*
* @return array
*/
public function getTranslationByCustomizationInfoBlockId($languageCode, $documentCustomizationBlockId)
{
return $this->db->fetchRow(
'SELECT id, content, active, language_code, document_customization_infoblock_id, fontstyle, alignment
FROM document_customization_infoblock_translation
WHERE document_customization_infoblock_id = :blockid AND language_code = :language_code',
['blockid' => (int)$documentCustomizationBlockId, 'language_code' => $languageCode]
);
}
/**
* @param string $languageCode
* @param string $keyword
* @param string $doctype
* @param array $variables
* @param int $projectId
*
* @return string
*/
public function parseBlock($languageCode, $keyword, $doctype, $variables, $projectId = 0)
{
$block = $this->findTranslation($languageCode, $keyword, $doctype, $projectId);
if (empty($block)) {
return '';
}
return $this->parser->parse($block['content'], $variables);
}
/**
* @param string $languageCode
* @param string $keyword
* @param string $doctype
* @param int $projectId
*
* @return array|bool
*/
public function findTranslation($languageCode, $keyword, $doctype, $projectId = 0)
{
$block = $this->findActiveBlock($keyword, $doctype, $projectId);
if (empty($block)) {
return false;
}
$translation = $this->db->fetchRow(
'SELECT * FROM document_customization_infoblock_translation
WHERE document_customization_infoblock_id = :block_id AND language_code = :language_code',
['block_id' => $block['id'], 'language_code' => $languageCode]
);
if (!empty($translation)) {
return $translation;
}
return $block;
}
/**
* @param string $languageCode
* @param string $keyword
* @param string $doctype
* @param array $variables
* @param int $projectId
*
* @return array
*/
public function parseBlockAsArray($languageCode, $keyword, $doctype, $variables, $projectId = 0)
{
$string = $this->parseBlock($languageCode, $keyword, $doctype, $variables, $projectId);
$sCD = [];
$elements = explode("\n", $string);
foreach ($elements as $key => $el) {
if (!empty($elements[$key])) {
$row = explode('|', $elements[$key], 2);
$sCD[trim(rtrim(trim($row[0]), ':'))] = !empty($row[1]) ? $row[1] : '';
}
}
return $sCD;
}
/**
* @param string $keyword
* @param string $doctype
* @param string $projectId
*
* @return bool
*/
public function isBlockActive($keyword, $doctype, $projectId = 0)
{
$infoBlocks = $this->findActiveBlock($keyword, $doctype, $projectId);
return !empty($infoBlocks);
}
/**
* @param string $keyword
* @param string $doctype
* @param string $projectId
*
* @return array
*/
public function findActiveBlock($keyword, $doctype, $projectId)
{
return $this->db->fetchRow(
'SELECT *
FROM document_customization_infoblock
WHERE active = 1 AND keyword = :keyword AND doctype = :doctype
AND (project_id = 0 OR project_id = :project_id)
LIMIT 1',
['keyword' => $keyword, 'doctype' => $doctype, 'project_id' => $projectId]
);
}
/**
* @param int $blockId
* @param string $languageCode
*
* @return false|int
*/
private function getTranslationBlock($blockId, $languageCode)
{
return $this->db->fetchValue(
'SELECT id
FROM document_customization_infoblock_translation
WHERE document_customization_infoblock_id = :blockid AND language_code = :language_code',
['blockid' => (int)$blockId, 'language_code' => $languageCode]
);
}
}
@@ -0,0 +1,171 @@
{namespace key='company_data'}
{block name="document_settings_list"}
<div class="row">
<div class="row-height">
<div class="col-sm-12 col-md-10 col-md-height">
<div class="inside-white inside-full-height">
{$datatable}
<fieldset>
<legend>{translate key='infobox_stack'}Stapelverarbeitung{/translate}</legend>
<table>
<tr>
<td>
<input type="checkbox" id="selectall" /> <label for="selectall">{translate key='select_all'}Alle markieren{/translate}</label>
</td>
<td>
<label for="actionselection">Aktion:</label>
</td>
<td>
<select id="actionselection">
<option value="">bitte w&auml;hlen...</option>
<option value="activate">aktivieren</option>
<option value="deactivate">deaktiveren</option>
</select>
</td>
<td>
<input type="button" id="doaction" value="ausf&uuml;hren" />
</td>
</tr>
</table>
</fieldset>
</div>
</div>
<div class="col-sm-12 col-md-2 col-md-height">
<div class="inside inside-full-height">
<fieldset>
<legend>{translate key='action'}Aktionen{/translate}</legend>
<input type="button" class="edit btnGreenNew" data-id="0" value="{translate key='newbutton'}&#10010; Neuer Eintrag{/translate}" />
</fieldset>
</div>
</div>
</div>
</div>
{/block}
{block name="document_popup"}
<div id="document_popup">
<fieldset>
<legend>{translate key='infobox'}Infobox{/translate}</legend>
<table>
<tr>
<td><label for="document_doctype">{translate key='format'}Dokument{/translate}:</label></td>
<td>
<select id="document_doctype">
{foreach from=$doctypearr key=doctypekey item=doctypeval}
<option value="{$doctypekey}">{$doctypeval}</option>
{/foreach}
</select>
</td>
</tr>
<tr>
<td><label for="document_project">{translate key='format'}Projekt{/translate}:</label></td>
<td><input type="text" id="document_project" name="document_project" /></td>
</tr>
<tr>
<td><label for="document_alignment">{translate key='format'}Ausrichtung{/translate}:</label></td>
<td>
<select name="document_alignment" id="document_alignment">
{foreach from=$alignments key=alignkey item=alignoption}
<option value="{$alignkey}">{$alignoption}</option>
{/foreach}
</select>
</td>
<td>
</td>
</tr>
<tr>
<td><label for="document_fontstyle">{translate key='format'}Format{/translate}:</label></td>
<td>
<select name="document_fontstyle" id="document_fontstyle">
{foreach from=$fontoptions key=fontkey item=fontoption}
<option value="{$fontkey}" {if $fontkey==$documentarr.fontstyle} selected="selected" {/if}>{$fontoption}</option>
{/foreach}
</select>
</td>
</tr>
<tr>
<td><label for="document_active">{translate key='format'}Aktiv{/translate}:</label></td>
<td>
<input type="hidden" id="document_id" />
<input type="checkbox" value="1" name="document_active" id="document_active" />
</td>
</tr>
<tr>
<td><label for="document_content">{translate key='elements'}Elemente{/translate}:</label></td>
<td><textarea cols="35" rows="15" name="document_content" id="document_content">{$documentarr.content}</textarea></td>
<td><button class="button button-primary getelements" alt="{translate key='getelement'}&Uuml;bernehmen{/translate}"><</button></td>
<td rowspan="3">
<select multiple size="15" id="document_preview">
{foreach from=$documentarr.preview key=prevkey item=prevval}
<option class="{foreach from=$prevval.doc_types key=dockey item=docval}doctype-{$docval} {/foreach}" value="{$prevval.value}">{$prevval.label}</option>
{/foreach}
</select>
</td>
<td style="vertical-align:top"><img src="./themes/new/images/globe.svg" id="opentranslation" class="translate" alt="globe" /></td>
</table>
<br />
Bitte beachten Sie, dass nicht alle Variablen in allen Belegen verfügbar sind!
</fieldset>
</div>
{/block}
{block name="translation_popup"}
<div id="translation_popup">
<fieldset>
<legend>{translate key='settings'}Infobox &Uuml;bersetzung{/translate}</legend>
<table>
<tr>
<td><label for="language">{translate key='language'}Sprache{/translate}:</label></td>
<td>
<select id="language">
{foreach from=$languages key=langkey item=langoption}
<option value="{$langkey}">{$langoption}</option>
{/foreach}
</select>
</td>
<td></td>
</tr>
<tr>
<td><label for="document_translation_alignment">{translate key='format'}Ausrichtung{/translate}:</label></td>
<td>
<select name="document_translation_alignment" id="document_translation_alignment">
{foreach from=$alignments key=alignkey item=alignoption}
<option value="{$alignkey}">{$alignoption}</option>
{/foreach}
</select>
</td>
<td></td>
</tr>
<tr>
<td><label for="document_translation_fontstyle">{translate key='format'}Format{/translate}:</label></td>
<td>
<select name="document_translation_fontstyle" id="document_translation_fontstyle">
{foreach from=$fontoptions key=fontkey item=fontoption}
<option value="{$fontkey}" {if $fontkey==$documentarr.fontstyle} selected="selected" {/if}>{$fontoption}</option>
{/foreach}
</select>
</td>
<td></td>
</tr>
<tr>
<td><label for="active">{translate key='active'}Aktiv{/translate}:</label></td>
<td><input type="hidden" id="doctype" /><input type="checkbox" value="1" id="active" /></td>
<td></td>
</tr>
<tr>
<td><label for="translationcontent">{translate key='translation'}&Uuml;bersetzung{/translate}:</label></td>
<td><textarea id="translationcontent" cols="35" rows="15" ></textarea></td>
<td><button class="button button-primary gettranslationelements" alt="{translate key='getelement'}&Uuml;bernehmen{/translate}"><</button></td>
<td>
<select multiple size="15" id="document_translation_preview">
{foreach from=$documentarr.preview key=prevkey item=prevval}
<option class="{foreach from=$prevval.doc_types key=dockey item=docval}doctype-{$docval} {/foreach}" value="{$prevval.value}">{$prevval.label}</option>
{/foreach}
</select>
</td>
</tr>
</table>
<br />
Bitte beachten Sie, dass nicht alle Variablen in allen Belegen verfügbar sind!
</fieldset>
</div>
{/block}
@@ -0,0 +1,532 @@
<!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" xmlns:o="urn:schemas-microsoft-com:office:office"
xmlns:v="urn:schemas-microsoft-com:vml" lang="de">
<head>
<meta name="x-apple-disable-message-reformatting">
<meta http-equiv="Content-Type" content="text/html; ">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="x-apple-disable-message-reformatting">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!--[if gte mso 9]>
<xml>
<o:OfficeDocumentSettings>
<o:AllowPNG/>
<o:PixelsPerInch>96</o:PixelsPerInch>
</o:OfficeDocumentSettings>
</xml>
<style>
ul > li {
text-indent: -1em;
}
</style>
<![endif]-->
<!--[if mso]>
<style type="text/css">
body, td {
font-family: Arial, Helvetica, sans-serif;
}
</style>
<![endif]-->
<!--[if !((mso)|(IE))]>
<style type="text/css">[owa] .hse-column-container {
max-width: 600px !important;
width: 600px !important
}
[owa] .hse-section-full-width .hse-column-container {
max-width: 100% !important;
width: 100% !important
}
[owa] .hse-column {
display: table-cell;
vertical-align: top
}
[owa] .hse-section-1-col .hse-column {
max-width: 600px !important;
width: 600px !important
}
[owa] .hse-section-full-width.hse-section .hse-column {
max-width: 100% !important;
width: 100% !important;
display: block !important
}
[owa] .hse-section-2-col .hse-wide {
max-width: 400px !important;
width: 400px !important
}
[owa] .hse-section-2-col .hse-narrow {
max-width: 200px !important;
width: 200px !important
}
[owa] .hse-section-2-col .hse-column {
max-width: 300px;
width: 300px
}
[owa] .hse-section-3-col .hse-column {
max-width: 200px !important;
width: 200px !important
}
[owa] .hse-section-4-col .hse-column {
max-width: 150px !important;
width: 150px !important
}
@media only screen and (min-width: 640px) {
.hse-section-full-width.hse-section .hse-column-container {
max-width: 100% !important;
width: 100% !important
}
.hse-section-full-width.hse-section .hse-column {
max-width: 100% !important;
width: 100% !important;
display: block !important
}
.hse-column-container {
max-width: 600px !important;
width: 600px !important
}
.hse-column {
display: table-cell;
vertical-align: top
}
.hse-section-1-col .hse-column {
max-width: 600px !important;
width: 600px !important
}
.hse-section-2-col .hse-column {
max-width: 300px !important;
width: 300px !important
}
.hse-section-2-col .hse-wide {
max-width: 400px !important;
width: 400px !important
}
.hse-section-2-col .hse-narrow {
max-width: 200px !important;
width: 200px !important
}
.hse-section-3-col .hse-column {
max-width: 200px !important;
width: 200px !important
}
.hse-section-4-col .hse-column {
max-width: 150px !important;
width: 150px !important
}
}
@media only screen and (max-width: 639px) {
img.stretch-on-mobile, .hs_rss_email_entries_table img {
height: auto !important;
width: 100% !important
}
.display_block_on_small_screens {
display: block
}
}</style><!--<![endif]-->
<style type="text/css">a[x-apple-data-detectors] {
color: inherit !important;
text-decoration: none !important;
font-size: inherit !important;
font-family: inherit !important;
font-weight: inherit !important;
line-height: inherit !important
}
#outlook a {
padding: 0
}
.yshortcuts a {
border-bottom: none !important
}
a {
text-decoration: underline
}
.ExternalClass {
width: 100%
}
.ExternalClass, .ExternalClass p, .ExternalClass td, .ExternalClass div, .ExternalClass span, .ExternalClass font {
line-height: 100%
}
p {
margin: 0
}
body {
-ms-text-size-adjust: 100%;
-webkit-text-size-adjust: 100%;
-webkit-font-smoothing: antialiased;
moz-osx-font-smoothing: grayscale
}</style>
</head>
<body bgcolor="#FAFAFA"
style="margin:0 !important; padding:0 !important; font-family:Verdana, sans-serif; font-size:10px; color:#23496d; word-break:break-word">
<div id="preview_text"
style="display:none!important;font-size:1px;color:#FAFAFA;line-height:1px;max-height:0px;max-width:0px;opacity:0;overflow:hidden;"></div>
<!--[if gte mso 9]>
<v:background xmlns:v="urn:schemas-microsoft-com:vml" fill="t">
<v:fill type="tile" src="" color="#FAFAFA"/>
</v:background>
<![endif]-->
<div class="hse-body-background" style="background-color:#fafafa" bgcolor="#fafafa">
<table role="presentation" class="hse-body-wrapper-table" cellpadding="0" cellspacing="0"
style="border-spacing:0 !important; border-collapse:collapse; mso-table-lspace:0pt; mso-table-rspace:0pt; margin:0; padding:0; width:100% !important; min-width:320px !important; height:100% !important"
width="100%" height="100%">
<tbody>
<tr>
<td class="hse-body-wrapper-td" valign="top"
style="border-collapse:collapse; mso-line-height-rule:exactly; font-family:Verdana, sans-serif; font-size:10px; color:#23496d; word-break:break-word">
<div id="hs_cos_wrapper_main" class="hs_cos_wrapper hs_cos_wrapper_widget hs_cos_wrapper_type_email_flex_area"
style="color: inherit; font-size: inherit; line-height: inherit;" data-hs-cos-general-type="widget"
data-hs-cos-type="email_flex_area">
<div id="section_1586263502194" class="hse-section hse-section-3-col hse-section-first"
style="padding-left:10px; padding-right:10px; padding-top:20px">
<!--[if !((mso)|(IE))]><!-- -->
<div class="hse-column-container"
style="min-width:280px; max-width:600px; width:100%; Margin-left:auto; Margin-right:auto; border-collapse:collapse; border-spacing:0; background-color:#ffffff; padding-top:7px"
bgcolor="#ffffff">
<!--<![endif]-->
<!--[if (mso)|(IE)]>
<div class="hse-column-container"
style="min-width:280px;max-width:600px;width:100%;Margin-left:auto;Margin-right:auto;border-collapse:collapse;border-spacing:0;">
<table align="center"
style="border-collapse:collapse;mso-table-lspace:0pt;mso-table-rspace:0pt;width:600px;"
cellpadding="0" cellspacing="0" role="presentation" width="600" bgcolor="#ffffff">
<tr style="background-color:#ffffff;">
<![endif]-->
<!--[if (mso)|(IE)]>
<td valign="top" style="width:200px;padding-top:7px;">
<![endif]-->
<!--[if gte mso 9]>
<table role="presentation" width="200" cellpadding="0" cellspacing="0"
style="border-collapse:collapse;mso-table-lspace:0pt;mso-table-rspace:0pt;width:200px">
<![endif]-->
<div id="column_1586263502194_0" class="hse-column">
<div id="hs_cos_wrapper_module_15862634608982"
class="hs_cos_wrapper hs_cos_wrapper_widget hs_cos_wrapper_type_module"
style="color: inherit; font-size: inherit; line-height: inherit;" data-hs-cos-general-type="widget"
data-hs-cos-type="module">
<table class="hse-image-wrapper" role="presentation" width="100%" cellpadding="0" cellspacing="0"
style="border-spacing:0 !important; border-collapse:collapse; mso-table-lspace:0pt; mso-table-rspace:0pt">
<tbody>
<tr>
<td class="hs_padded" align="left" valign="top"
style="border-collapse:collapse; mso-line-height-rule:exactly; font-family:Verdana, sans-serif; color:#23496d; word-break:break-word; text-align:left; padding:10px 20px; font-size:0px">
</td>
</tr>
</tbody>
</table>
</div>
</div>
<!--[if gte mso 9]></table><![endif]-->
<!--[if (mso)|(IE)]></td><![endif]-->
<!--[if (mso)|(IE)]>
<td valign="top" style="width:200px;padding-top:7px;">
<![endif]-->
<!--[if gte mso 9]>
<table role="presentation" width="200" cellpadding="0" cellspacing="0"
style="border-collapse:collapse;mso-table-lspace:0pt;mso-table-rspace:0pt;width:200px">
<![endif]-->
<div id="column_1586263502194_1" class="hse-column">
</div>
<!--[if gte mso 9]></table><![endif]-->
<!--[if (mso)|(IE)]></td><![endif]-->
<!--[if (mso)|(IE)]>
<td valign="top" style="width:200px;padding-top:7px;">
<![endif]-->
<!--[if gte mso 9]>
<table role="presentation" width="200" cellpadding="0" cellspacing="0"
style="border-collapse:collapse;mso-table-lspace:0pt;mso-table-rspace:0pt;width:200px">
<![endif]-->
<div id="column_1586263502194_2" class="hse-column">
<div id="hs_cos_wrapper_module_15862636107297"
class="hs_cos_wrapper hs_cos_wrapper_widget hs_cos_wrapper_type_module"
style="color: inherit; font-size: inherit; line-height: inherit;" data-hs-cos-general-type="widget"
data-hs-cos-type="module">
<table class="hse-image-wrapper" role="presentation" width="100%" cellpadding="0" cellspacing="0"
style="border-spacing:0 !important; border-collapse:collapse; mso-table-lspace:0pt; mso-table-rspace:0pt">
<tbody>
<tr>
<td align="center" valign="top"
style="border-collapse:collapse; mso-line-height-rule:exactly; font-family:Verdana, sans-serif; color:#23496d; word-break:break-word; text-align:center; padding:0px; font-size:0px">
<img alt="Xentral_Logo_quadratisch_RGB_300_300"
src="{SERVER}/themes/new/images/Xentral_ERP_Logo-200.png"
style="outline:none; text-decoration:none; -ms-interpolation-mode:bicubic; max-width:100%; font-size:16px"
width="81" align="middle" sizes="(max-width: 81px) 100vw, 81px">
</td>
</tr>
</tbody>
</table>
</div>
</div>
<!--[if gte mso 9]></table><![endif]-->
<!--[if (mso)|(IE)]></td><![endif]-->
<!--[if (mso)|(IE)]></tr></table><![endif]-->
</div>
</div>
<div id="builtin_section-2" class="hse-section hse-section-1-col"
style="padding-left:10px; padding-right:10px">
<!--[if !((mso)|(IE))]><!-- -->
<div class="hse-column-container"
style="min-width:280px; max-width:600px; width:100%; Margin-left:auto; Margin-right:auto; border-collapse:collapse; border-spacing:0; background-color:#ffffff; padding-top:10px"
bgcolor="#ffffff">
<!--<![endif]-->
<!--[if (mso)|(IE)]>
<div class="hse-column-container"
style="min-width:280px;max-width:600px;width:100%;Margin-left:auto;Margin-right:auto;border-collapse:collapse;border-spacing:0;">
<table align="center"
style="border-collapse:collapse;mso-table-lspace:0pt;mso-table-rspace:0pt;width:600px;"
cellpadding="0" cellspacing="0" role="presentation" width="600" bgcolor="#ffffff">
<tr style="background-color:#ffffff;">
<![endif]-->
<!--[if (mso)|(IE)]>
<td valign="top" style="width:600px;padding-top:10px;">
<![endif]-->
<!--[if gte mso 9]>
<table role="presentation" width="600" cellpadding="0" cellspacing="0"
style="border-collapse:collapse;mso-table-lspace:0pt;mso-table-rspace:0pt;width:600px">
<![endif]-->
<div id="builtin_column_2-0" class="hse-column">
<div id="hs_cos_wrapper_module_15862631325331"
class="hs_cos_wrapper hs_cos_wrapper_widget hs_cos_wrapper_type_module"
style="color: inherit; font-size: inherit; line-height: inherit;" data-hs-cos-general-type="widget"
data-hs-cos-type="module">
<!--[if gte mso 9]>
<v:rect xmlns:v="urn:schemas-microsoft-com:vml" fill="true" stroke="false"
style="width:600px; height:5px;" fillcolor="none">
<v:fill type="tile"/>
<v:textbox inset="0,0,0,0">
<div>
<![endif]-->
<table role="presentation" width="100%" align="left" border="0"
style="position:relative; top:-1px; min-width:20px; width:100%; max-width:100%; border-spacing:0; mso-table-lspace:0pt; mso-table-rspace:0pt; border-collapse:collapse; font-size:1px">
<tbody>
<tr>
<td width="100%" valign="middle"
style="border-collapse:collapse; mso-line-height-rule:exactly; font-family:Verdana, sans-serif; font-size:10px; color:#23496d; word-break:break-word; line-height:0; border:transparent; border-bottom:5px solid #e66dcb; mso-border-bottom-alt:5px solid #e66dcb; border-bottom-width:5px">
&nbsp;
</td>
</tr>
</tbody>
</table>
<!--[if gte mso 9]></div></v:textbox></v:rect><![endif]-->
</div>
<table role="presentation" cellpadding="0" cellspacing="0" width="100%"
style="border-spacing:0 !important; border-collapse:collapse; mso-table-lspace:0pt; mso-table-rspace:0pt">
<tbody>
<tr>
<td style="border-collapse:collapse; mso-line-height-rule:exactly; font-family:Verdana, sans-serif; font-size:10px; color:#23496d; word-break:break-word; padding:10px 20px">
<div id="hs_cos_wrapper_builtin_module_2_0_0"
class="hs_cos_wrapper hs_cos_wrapper_widget hs_cos_wrapper_type_module"
style="color: inherit; font-size: inherit; line-height: inherit;"
data-hs-cos-general-type="widget" data-hs-cos-type="module">
<div id="hs_cos_wrapper_builtin_module_2_0_0_"
class="hs_cos_wrapper hs_cos_wrapper_widget hs_cos_wrapper_type_rich_text"
style="color: inherit; font-size: inherit; line-height: inherit;"
data-hs-cos-general-type="widget" data-hs-cos-type="rich_text"><p
style="mso-line-height-rule:exactly; font-size:18px; line-height:150%; text-align:left"
align="left">&nbsp;</p>
</div>
<!--[if gte mso 9]></table><![endif]-->
<!--[if (mso)|(IE)]></td><![endif]-->
<!--[if (mso)|(IE)]></tr></table><![endif]-->
</div>
</td>
</tr>
</tbody>
</table>
</div>
<div id="section_1583351264074" class="hse-section hse-section-1-col"
style="padding-left:10px; padding-right:10px">
<!--[if !((mso)|(IE))]><!-- -->
<div class="hse-column-container"
style="min-width:280px; max-width:600px; width:100%; Margin-left:auto; Margin-right:auto; border-collapse:collapse; border-spacing:0; background-color:#ffffff; padding-bottom:35px"
bgcolor="#ffffff">
<!--<![endif]-->
<!--[if (mso)|(IE)]>
<div class="hse-column-container"
style="min-width:280px;max-width:600px;width:100%;Margin-left:auto;Margin-right:auto;border-collapse:collapse;border-spacing:0;">
<table align="center"
style="border-collapse:collapse;mso-table-lspace:0pt;mso-table-rspace:0pt;width:600px;"
cellpadding="0" cellspacing="0" role="presentation" width="600" bgcolor="#ffffff">
<tr style="background-color:#ffffff;">
<![endif]-->
<!--[if (mso)|(IE)]>
<td valign="top" style="width:600px;padding-bottom:35px;">
<![endif]-->
<!--[if gte mso 9]>
<table role="presentation" width="600" cellpadding="0" cellspacing="0"
style="border-collapse:collapse;mso-table-lspace:0pt;mso-table-rspace:0pt;width:600px">
<![endif]-->
<div id="column_1583351264075_0" class="hse-column">
<table role="presentation" cellpadding="0" cellspacing="0" width="100%"
style="border-spacing:0 !important; border-collapse:collapse; mso-table-lspace:0pt; mso-table-rspace:0pt">
<tbody>
<tr>
<td style="border-collapse:collapse; mso-line-height-rule:exactly; font-family:Verdana, sans-serif; font-size:10px; color:#23496d; word-break:break-word; padding:10px 20px">
<div id="hs_cos_wrapper_module_15863499554321"
class="hs_cos_wrapper hs_cos_wrapper_widget hs_cos_wrapper_type_module"
style="color: inherit; font-size: inherit; line-height: inherit;"
data-hs-cos-general-type="widget" data-hs-cos-type="module">
<table role="presentation" width="100%" border="0" cellspacing="0" cellpadding="0"
style="border-spacing:0 !important; border-collapse:collapse; mso-table-lspace:0pt; mso-table-rspace:0pt">
<tbody>
<tr>
<td align="left" width="auto"
style="border-collapse:collapse; mso-line-height-rule:exactly; font-family:Verdana, sans-serif; font-size:10px; color:#23496d; word-break:break-word; width:auto; display:block">
<table border="0" cellspacing="0" cellpadding="0"
style="border-spacing:0 !important; border-collapse:collapse; mso-table-lspace:0pt; mso-table-rspace:0pt">
<tbody>
<tr>
<td align="left"
style="border-collapse:collapse; mso-line-height-rule:exactly; font-family:Verdana, sans-serif; font-size:10px; color:#23496d; word-break:break-word">
{CONTENT}
</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!--[if gte mso 9]></table><![endif]-->
<!--[if (mso)|(IE)]></td><![endif]-->
<!--[if (mso)|(IE)]></tr></table><![endif]-->
</div>
</div>
<div id="builtin_section-7" class="hse-section hse-section-1-col hse-section-last"
style="padding-left:10px; padding-right:10px; padding-bottom:20px">
<!--[if !((mso)|(IE))]><!-- -->
<div class="hse-column-container"
style="min-width:280px; max-width:600px; width:100%; Margin-left:auto; Margin-right:auto; border-collapse:collapse; border-spacing:0; background-color:#FFFFFF; padding-bottom:10px; padding-top:31px"
bgcolor="#FFFFFF">
<!--<![endif]-->
<!--[if (mso)|(IE)]>
<div class="hse-column-container"
style="min-width:280px;max-width:600px;width:100%;Margin-left:auto;Margin-right:auto;border-collapse:collapse;border-spacing:0;">
<table align="center"
style="border-collapse:collapse;mso-table-lspace:0pt;mso-table-rspace:0pt;width:600px;"
cellpadding="0" cellspacing="0" role="presentation" width="600" bgcolor="#FFFFFF">
<tr style="background-color:#FFFFFF;">
<![endif]-->
<!--[if (mso)|(IE)]>
<td valign="top" style="width:600px;padding-bottom:10px; padding-top:31px;">
<![endif]-->
<!--[if gte mso 9]>
<table role="presentation" width="600" cellpadding="0" cellspacing="0"
style="border-collapse:collapse;mso-table-lspace:0pt;mso-table-rspace:0pt;width:600px">
<![endif]-->
<div id="builtin_column_7-0" class="hse-column">
<div id="hs_cos_wrapper_builtin_module_7_0_0"
class="hs_cos_wrapper hs_cos_wrapper_widget hs_cos_wrapper_type_module"
style="color: inherit; font-size: inherit; line-height: inherit;"
data-hs-cos-general-type="widget" data-hs-cos-type="module">
<table role="presentation" class="hse-footer hse-secondary" width="100%" cellpadding="0"
cellspacing="0"
style="border-spacing:0 !important; border-collapse:collapse; mso-table-lspace:0pt; mso-table-rspace:0pt; text-align:center; font-family:Arial, sans-serif; font-size:12px; line-height:135%; color:#23496d; margin-bottom:0; padding:0"
align="center">
<tbody>
<tr>
<td align="left" valign="top"
style="border-collapse:collapse; mso-line-height-rule:exactly; font-family:Verdana, sans-serif; font-size:10px; color:#23496d; word-break:break-word; text-align:left; margin-bottom:0; line-height:135%; padding:10px 20px">
<p style="mso-line-height-rule:exactly; font-family:Verdana, sans-serif; font-size:11px; font-weight:normal; text-decoration:none; font-style:normal; color:#999999">
xentral ERP Software GmbH, Fuggerstraße 11, Augsburg, Bayern 86150, Deutschland |
<span style="white-space: nowrap">Geschäftsführung: Dipl.-Inf.(FH) Benedikt Sauter M.Sc.</span> | <span style="white-space: nowrap">UStIdNr. DE263136143,</span><span style="white-space: nowrap"> +49 821 268
41 0 40</span>
</p>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<!--[if gte mso 9]></table><![endif]-->
<!--[if (mso)|(IE)]></td><![endif]-->
<!--[if (mso)|(IE)]></tr></table><![endif]-->
</div>
</div>
</div>
</div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</body>
</html>
@@ -0,0 +1,3 @@
span.grey{
color:grey;
}
@@ -0,0 +1,304 @@
var CompanyData = (function ($) {
var me = {
storage: {},
init: function () {
$('#document_popup').dialog(
{
modal: true,
autoOpen: false,
minWidth: 800,
title:'',
buttons: {
'ABBRECHEN': function() {
$(this).dialog('close');
},
'SPEICHERN': function()
{
$.ajax({
url: 'index.php?module=firmendaten&action=documentsettings&cmd=savedocument',
type: 'POST',
dataType: 'json',
data: {
id: $('#document_id').val(),
doctype: $('#document_doctype').val(),
content:$('#document_content').val(),
active:$('#document_active').prop('checked')?1:0,
project:$('#document_project').val(),
fontstyle:$('#document_fontstyle').val(),
alignment:$('#document_alignment').val()
},
success: function(data) {
if(typeof data.status != 'undefined' && data.status == 1) {
$('#company_document_setting').DataTable( ).ajax.reload();
$('#document_popup').dialog('close');
}else{
alert(data.statusText);
}
},
beforeSend: function() {
}
});
}
},
close: function(event, ui){
}
});
me.registerEvents();
$('#translation_popup').dialog(
{
modal: true,
autoOpen: false,
minWidth: 800,
title:'',
buttons: {
'ABBRECHEN': function() {
$(this).dialog('close');
},
'SPEICHERN': function()
{
$.ajax({
url: 'index.php?module=firmendaten&action=documentsettings&cmd=savetranslation',
type: 'POST',
dataType: 'json',
data: {
parent_id: $('#document_id').val(),
language: $('#language').val(),
doctype: $('#document_doctype').val(),
content:$('#translationcontent').val(),
active:$('#active').prop('checked')?1:0,
fontstyle:$('#document_translation_fontstyle').val(),
alignment:$('#document_translation_alignment').val()
},
success: function(data) {
$('#translation_popup').dialog('close');
},
beforeSend: function() {
}
});
}
},
close: function(event, ui){
}
});
$('#language').on('change',function() {
$.ajax({
url: 'index.php?module=firmendaten&action=documentsettings&cmd=loadtranslation',
type: 'POST',
dataType: 'json',
data: {
language: $(this).val(),
parent_id: $('#document_id').val()
},
success: function(data) {
if(typeof data.id != 'undefined' && data.id != '0') {
$('#active').prop('checked', data.active);
$('#translationcontent').val(data.content);
$('#document_translation_fontstyle').val(data.fontstyle);
$('#document_translation_alignment').val(data.alignment);
}
},
beforeSend: function() {
}
});
});
$('button.getelements').on('click',function(){
$($('#document_preview option:selected')).each(function(){
var $elements = $('#document_content');
if(($($elements).val()+'').indexOf('{'+$(this).val()+'}') < 0)
{
$($elements).val($($elements).val()+($($elements).val()+'' ===''?'':"\n")+$(this).text()+':|{'+$(this).val()+'}');
}
});
});
$('button.gettranslationelements').on('click',function(){
$($('#document_translation_preview option:selected')).each(function(){
var $elements = $('#translationcontent');
if(($($elements).val()+'').indexOf('{'+$(this).val()+'}') < 0)
{
$($elements).val($($elements).val()+($($elements).val()+'' ===''?'':"\n")+$(this).text()+':|{'+$(this).val()+'}');
}
});
});
$('img.translate').on('click', function(){
me.openTranslation($(this).data('document'));
});
$('input.edit').on('click', function(){
me.openDocument($(this).data('id'));
});
$('input#selectall').on('change', function(){
$('#company_document_setting input:checkbox').prop('checked', $(this).prop('checked'));
});
$('#doaction').on('click', function(){
if($('#actionselection').val() !== '' && $('#company_document_setting :checked').length) {
var ids = [];
$('#company_document_setting :checked').each(function(){
ids.push($(this).val());
});
$.ajax({
url: 'index.php?module=firmendaten&action=documentsettings&cmd=changestatus',
type: 'POST',
dataType: 'json',
data: {
action: $('#actionselection').val(),
ids: ids
},
success: function(data) {
$('#company_document_setting').DataTable( ).ajax.reload();
},
beforeSend: function() {
}
});
}
});
$('#document_doctype').on('change', function(){
$('#document_preview option').each(function() {
if ($(this).hasClass('doctype-'+$('#document_doctype').val())) {
$(this).show();
}else{
$(this).hide();
}
});
});
},
registerEvents: function () {
$(document).on('click', '.companydocument-edit', function (e) {
e.preventDefault();
var fieldId = $(this).data('companydocumentId');
me.openDocument(fieldId);
});
$(document).on('click', '.companydocument-copy', function (e) {
e.preventDefault();
var fieldId = $(this).data('companydocumentId');
me.copyInfoBlock(fieldId);
});
$(document).on('click', '.companydocument-delete', function (e) {
e.preventDefault();
var fieldId = $(this).data('companydocumentId');
me.deleteInfoBlock(fieldId);
});
},
openTranslation: function(doctype) {
$('#doctype').val(doctype);
$('#language').trigger('change');
$('#translation_popup').dialog('open');
},
deleteInfoBlock: function(id) {
if(id && confirm('Wirklich löschen?') )
{
$.ajax({
url: 'index.php?module=firmendaten&action=documentsettings&cmd=deleteinfoblock',
type: 'POST',
dataType: 'json',
data: {
id:id
},
success: function(data) {
$('#company_document_setting').DataTable( ).ajax.reload();
},
beforeSend: function() {
}
});
}
},
copyInfoBlock: function(id) {
if(id && confirm('Wirklich kopieren?') )
{
$.ajax({
url: 'index.php?module=firmendaten&action=documentsettings&cmd=copyinfoblock',
type: 'POST',
dataType: 'json',
data: {
id: id
},
success: function(data) {
$('#company_document_setting').DataTable( ).ajax.reload();
},
beforeSend: function() {
}
});
}
},
openDocument: function(id) {
$('#document_id').val(id);
if(id) {
$('img#opentranlation').show();
}
else {
$('img#opentranlation').hide();
}
$.ajax({
url: 'index.php?module=firmendaten&action=documentsettings&cmd=loaddocument',
type: 'POST',
dataType: 'json',
data: {
id: id,
},
success: function(data) {
$('#document_active').prop('checked',data.active);
$('#document_doctype').val(data.doctype);
$('#document_content').val(data.content);
$('#document_project').val(data.project);
$('#document_fontstyle').val(data.fontstyle);
$('#document_alignment').val(data.alignment);
$('#document_preview option').each(function() {
if($('#document_doctype').val() === null || $('#document_doctype').val == ''){
$(this).show();
}else{
if ($(this).hasClass('doctype-'+$('#document_doctype').val())) {
$(this).show();
}else{
$(this).hide();
}
}
});
$('#document_popup').dialog('open');
},
beforeSend: function() {
}
});
}
};
return {
init: me.init
}
})(jQuery);
$(document).ready(function(){
CompanyData.init();
});