Das Modul erfordert eine PHP-Version die nicht kleiner ist '.
- 'als %1$s.
'.
- '
Die passende PHP-Version '.
- 'ist auf Ihrem Server aktiv.
'.
- '
Das Modul kann in '.
- 'PHP-Versionen kleiner als %1$s nicht ausgeführt werden. Fragen Sie Ihren Serverprovider '.
- 'nach der Anpassung der PHP-Installation oder kontaktieren Sie uns für eine alternative '.
- 'Modulversion.
'.
- '
Über den [+]-Button können Sie Ergebnisse zu den getesteten Verzeichnissen '.
- 'abrufen. Je nach Servereinstellung können die Ergebnisse abweichen. Nur die rot markierten '.
- 'Verzeichnisse erfordern eine Anpassung.
'.
- '
Details zu Ihrer Serverinstallation sehen Sie durch Klick auf den Button "PHPInfo anzeigen". '.
- 'Bei Fragen kontaktieren Sie uns bitte über '.
- 'support@shopmodule.com.
Das Modul erfordert eine PHP-Version die nicht höher ist '.
- 'als %1$s.
'.
- '
Die passende PHP-Version '.
- 'ist auf Ihrem Server aktiv.
'.
- '
Das Modul kann in '.
- 'PHP-Versionen höher als %1$s nicht ausgeführt werden. Fragen Sie Ihren Serverprovider '.
- 'nach der Anpassung der PHP-Installation oder kontaktieren Sie uns für eine alternative '.
- 'Modulversion.
'.
- '
Über den [+]-Button können Sie Ergebnisse zu den getesteten Verzeichnissen '.
- 'abrufen. Je nach Servereinstellung können die Ergebnisse abweichen. Nur die rot markierten '.
- 'Verzeichnisse erfordern eine Anpassung.
'.
- '
Details zu Ihrer Serverinstallation sehen Sie durch Klick auf den Button "PHPInfo anzeigen". '.
- 'Bei Fragen kontaktieren Sie uns bitte über '.
- 'support@shopmodule.com.
',
- 'hasFromToPhpVersion' => 'Server verwendet PHP Version zwischen %1$s und %2$s',
- 'hasFromToPhpVersion_DESC' => '
Das Modul erfordert eine PHP-Version zwischen %1$s und %2$s.
'.
- '
Die passende PHP-Version '.
- 'ist auf Ihrem Server aktiv.
'.
- '
Das Modul kann '.
- 'außerhalb der PHP-Versionen nicht ausgeführt werden. Fragen Sie Ihren Serverprovider '.
- 'nach der Anpassung der PHP-Installation oder kontaktieren Sie uns für eine alternative '.
- 'Modulversion.
'.
- '
Über den [+]-Button können Sie Ergebnisse zu den getesteten Verzeichnissen '.
- 'abrufen. Je nach Servereinstellung können die Ergebnisse abweichen. Nur die rot markierten '.
- 'Verzeichnisse erfordern eine Anpassung.
'.
- '
Details zu Ihrer Serverinstallation sehen Sie durch Klick auf den Button "PHPInfo anzeigen". '.
- 'Bei Fragen kontaktieren Sie uns bitte über '.
- 'support@shopmodule.com.
Die %1$s-Erweiterung ist '.
- 'auf Ihrem Server vorhanden.
'.
- '
Das Modul kann ohne die '.
- '%1$s-Erweiterung nicht ausgeführt werden. Fragen Sie bei Ihrem Serverprovider nach der '.
- 'Installation dieser Erweiterung.
'.
- '
Über den [+]-Button können Sie Ergebnisse zu den getesteten Verzeichnissen '.
- 'abrufen. Je nach Servereinstellung können die Ergebnisse abweichen. Nur die rot markierten '.
- 'Verzeichnisse erfordern eine Anpassung.
'.
- '
Details zu Ihrer Serverinstallation sehen Sie durch Klick auf den Button "PHPInfo anzeigen". '.
- 'Bei Fragen kontaktieren Sie uns bitte über '.
- 'support@shopmodule.com.
cURL ist nicht oder in einer '.
- 'älteren Version installiert. Fragen Sie Ihren Serverprovider nach einer passenden '.
- 'cURL-Version.
'.
- '
Über den [+]-Button können Sie Ergebnisse zu den getesteten Verzeichnissen '.
- 'abrufen. Je nach Servereinstellung können die Ergebnisse abweichen. Nur die rot markierten '.
- 'Verzeichnisse erfordern eine Anpassung.
'.
- '
Details zu Ihrer Serverinstallation sehen Sie durch Klick auf den Button "PHPInfo anzeigen". '.
- 'Bei Fragen kontaktieren Sie uns bitte über '.
- 'support@shopmodule.com.
OpenSSL ist in '.
- 'passender Version installiert.
'.
- '
OpenSSL ist nicht oder in '.
- 'einer älteren Version installiert. Fragen Sie Ihren Serverprovider nach einer passenden '.
- 'OpenSSL-Version.
'.
- '
Über den [+]-Button können Sie Ergebnisse zu den getesteten Verzeichnissen '.
- 'abrufen. Je nach Servereinstellung können die Ergebnisse abweichen. Nur die rot markierten '.
- 'Verzeichnisse erfordern eine Anpassung.
'.
- '
Details zu Ihrer Serverinstallation sehen Sie durch Klick auf den Button "PHPInfo anzeigen". '.
- 'Bei Fragen kontaktieren Sie uns bitte über '.
- 'support@shopmodule.com.
Die Shopsoftware ist in '.
- 'passender Version installiert.
'.
- '
Das Modul kann in dieser '.
- 'Version der Shopsoftware nicht installiert werden. Fragen Sie nach einer früheren '.
- 'Modulversion, die für Ihre Shopversion getestet wurde.
Das Modul ist bis zur Shopversion %1$s freigegeben.
'.
- '
Die Shopsoftware ist in '.
- 'passender Version installiert.
'.
- '
Wir können nicht '.
- 'garantieren, dass das Modul in Ihrer Shopversion funktioniert. Fragen Sie nach einer aktuelleren '.
- 'Modulversion, die für Ihren Shop passt.
',
- 'hasMinModCfgVersion' => '%2$s (ModCfg-Eintrag "%1$s") mindestens in Version %3$s',
- 'hasMinModCfgVersion_DESC' => '
Das Modul benötigt die Zusatzsoftware "%2$s" mindestens in '.
- 'Version %3$s
'.
- '
Die Software ist in '.
- 'passender Version installiert.
'.
- '
Die Zusatzsoftware ist '.
- 'möglicherweise gar nicht oder in falscher Version installiert. Bitte installieren Sie die '.
- 'Zusatzsoftware, bevor Sie diese Installation fortsetzen.
',
- 'hasMaxModCfgVersion' => '%2$s (ModCfg-Eintrag "%1$s") maximal in Version %3$s',
- 'hasMaxModCfgVersion_DESC' => '
Das Modul benötigt die Zusatzsoftware "%2$s" höchstens '.
- 'in Version %3$s
'.
- '
Die Software ist in '.
- 'passender Version installiert.
'.
- '
Die Zusatzsoftware ist '.
- 'möglicherweise gar nicht oder in falscher Version installiert. Bitte installieren Sie die '.
- 'Zusatzsoftware, bevor Sie diese Installation fortsetzen.
',
- 'requireNewLicence' => 'bisheriger Lizenzschlüssel kann verwendet werden',
- 'requireNewLicence_DESC' => '
Diese Prüfung versucht zu ermitteln, ob Sie für den '.
- 'Einsatz dieses Moduls einen aktuellen Lizenzschlüssel benötigen:
'.
- '
Sie haben für dieses '.
- 'Modul einen Lizenzschlüssel hinterlegt, der wahrscheinlich auch für die neue '.
- 'Modulversion geeignet ist.
'.
- '
Sie benötigen '.
- 'für dieses Modul wahrscheinlich einen neuen Lizenzschlüssel. Haben Sie diesen schon '.
- 'vorliegen, führen Sie die Installation aus und tragen den Lizenzschlüssel dann im '.
- 'Adminbereich Ihres Shops ein. Ansonsten können Sie den Lizenzschlüssel in unserem Shop '.
- 'www.oxidmodule.com erwerben oder '.
- 'sich ebenfalls im Adminbereich Ihres Shops einen kostenfreien Test-Lizenzschlüssel '.
- 'erstellen.
Das Modul erfordert zwingend den D3 Modul-Connector.
'.
- '
Der Modul-Connector ist '.
- 'installiert.
'.
- '
Das Modul kann ohne den Modul-'.
- 'Connector nicht ausgeführt werden. Bitte laden Sie sich diesen kostenfrei aus unserem Shop '.
- 'unter www.oxidmodule.com/'.
- 'connector/ und installieren diesen vorab.
Das Modul erfordert (je nach PHP-Version) den Zend Optimizer '.
- 'bzw. den Zend Guard Loader. Achten Sie darauf, ein für den verfügbaren Decoder '.
- 'erstelltes Installationspaket zu verwenden.
'.
- '
Der passende Decoder ist '.
- 'auf Ihrem Server installiert.
'.
- '
Der passende Decoder ist '.
- 'auf Ihrem Server installiert. Es ist eine zusätzliche Erweiterungen (Zend OPcache) installiert, '.
- 'die im Zusammenspiel mit dem Decoder Fehler verursachen kann.
'.
- '
Das Modul kann ohne den '.
- 'passenden Decoder nicht ausgeführt werden. Fragen Sie Ihren Serverprovider nach der '.
- 'Installation des passenden Zend-Decoders.
'.
- '
Über den [+]-Button können Sie Ergebnisse zu den getesteten Verzeichnissen '.
- 'abrufen. Je nach Servereinstellung können die Ergebnisse abweichen. Nur die rot markierten '.
- 'Verzeichnisse erfordern eine Anpassung.
'.
- '
Details zu Ihrer Serverinstallation sehen Sie durch Klick auf den Button "PHPInfo anzeigen". '.
- 'Bei Fragen kontaktieren Sie uns bitte über '.
- 'support@shopmodule.com.
Das Modul erfordert den ionCube Loader. Achten Sie darauf, ein '.
- 'für den verfügbaren Decoder erstelltes Installationspaket zu verwenden.
'.
- '
Der passende Decoder ist '.
- 'auf Ihrem Server installiert.
'.
- '
Das Modul kann ohne den '.
- 'passenden Decoder nicht ausgeführt werden. Fragen Sie Ihren Serverprovider nach der '.
- 'Installation des ionCube Loaders.
'.
- '
Über den [+]-Button können Sie Ergebnisse zu den getesteten Verzeichnissen '.
- 'abrufen. Je nach Servereinstellung können die Ergebnisse abweichen. Nur die rot markierten '.
- 'Verzeichnisse erfordern eine Anpassung.
'.
- '
Details zu Ihrer Serverinstallation sehen Sie durch Klick auf den Button "PHPInfo anzeigen". '.
- 'Bei Fragen kontaktieren Sie uns bitte über '.
- 'support@shopmodule.com.
Das Modul erfordert den ionCube Loader oder den Zend '.
- 'Optimizer / Guard Loader. Achten Sie darauf, ein für die verfügbaren Decoder erstelltes '.
- 'Installationspaket zu verwenden (%1$s).
'.
- '
Ein passender Decoder ist '.
- 'auf Ihrem Server installiert.
'.
- '
Ein passender Decoder ist '.
- 'auf Ihrem Server installiert. Es ist jedoch ein Abbruchgrund festgestellt worden, der zu Fehlern '.
- 'führen kann. Details entnehmen Sie bitte den folgenden Hinweisen.
'.
- '
Das Modul kann ohne einen '.
- 'passenden Decoder nicht ausgeführt werden. Fragen Sie Ihren Serverprovider nach der '.
- 'Installation des ionCube Loaders oder des Zend Optimizers / Guard Loaders.
'.
- '%2$s'.
- '
Über den [+]-Button können Sie Ergebnisse zu den getesteten Verzeichnissen '.
- 'abrufen. Je nach Servereinstellung können die Ergebnisse abweichen. Nur die rot markierten '.
- 'Verzeichnisse erfordern eine Anpassung.
'.
- '
Details zu Ihrer Serverinstallation sehen Sie durch Klick auf den Button "PHPInfo anzeigen". '.
- 'Bei Fragen kontaktieren Sie uns bitte über '.
- 'support@shopmodule.com.
',
- 'RemoteVersionDiff' => ' (Remotescript hat abweichende Version oder ist nicht '.
- 'prüfbar, Ergebnis mglw. nicht sicher)',
- 'globalSuccess' => 'Die technische Prüfung war erfolgreich. Sie können das Modul '.
- 'installieren.*
',
- 'globalNotSuccess' => 'Die technische Prüfung war nicht erfolgreich. Bitte kontrollieren '.
- 'Sie die rot oder orange markierten Bedingungen.
',
- 'deleteFile1' => 'Löschen Sie diese Datei nach der Verwendung bitte unbedingt wieder von '.
- 'Ihrem Server! Klicken Sie hier, um diese Datei zu löschen.',
- 'showPhpInfo' => 'PHPinfo anzeigen',
- 'dependentoffurther' => '* abhängig von ungeprüften Voraussetzungen',
- 'oneandonedescription' => '** geprüft wurde das Ausführungsverzeichnis, '.
- 'providerabhängig müssen Unterverzeichnisse separat geprüft werden (z.B. bei 1&1)',
- 'or' => ' oder ',
- 'toggleswitch' => 'Klick für Details zur Prüfung',
- 'unableDeleteFile' => 'Datei konnte nicht gelöscht werden. Bitte löschen Sie diese '.
- 'manuell.',
- 'goodBye' => 'Auf Wiedersehen.',
- 'unableExecuteDirectoryIterator' => 'Es können nicht alle Unterverzeichnisse auf weitere Prüfungen '.
- 'kontrolliert werden. (%1$s)',
- 'availableDecoder' => 'verfügbar: %1$s - auf passendes Installationspaket achten!',
- 'noDecoderAvailable' => 'kein verwendbarer Decoder verfügbar',
- 'availableDecoder_hasZendLoaderOptimizer' => 'Zend Guard Loader / Optimizer',
- 'notAvailableDecoder_hasZendLoaderOptimizer' => '
Der Zend Guard Loader / Optimizer ist nicht '.
- 'installiert.
',
- 'decoderIssue_hasZendLoaderOptimizer' => '
Der Zend-Decoder ist '.
- 'auf Ihrem Server installiert. Es ist jedoch eine zusätzliche Erweiterungen (Zend OPcache) '.
- 'installiert, die im Zusammenspiel mit dem Zend-Decoder Fehler verursachen kann.
Es wurde ein nicht definierter Abbruchgrund bei der '.
- 'Verwendung des ionCube-Decoders festgestellt.
',
- ),
- 'en' => array(
- 'RequCheck' => 'Requirement check',
- 'ExecNotice' => 'Execute this check script in the root directory of your shop. In this '.
- 'case only checks can executed succesfully.',
- 'RequSucc' => 'condition is fulfilled',
- 'RequNotSucc' => 'condition isn\'t fulfilled',
- 'RequUnknown' => 'condition unclear, see notes in help text',
- 'RequNotCheckable' => 'condition isn\'t checkable',
- 'hasMinPhpVersion' => 'at least PHP version %1$s',
- 'hasMinPhpVersion_DESC' => '
The module requires a PHP version at least %1$s
'.
- '
The appropriate version of PHP '.
- 'is activated on your server.
'.
- '
The module can not be executed within '.
- 'the actived PHP version. Ask your server provider for for the adaption of your PHP installation or '.
- 'contact us for another module version.
'.
- '
The [+] button show details for all tested directories. Depending on the server settings, '.
- 'the results may vary. Only the red marked directories requires adaptation.
'.
- '
Details about your server installation you can see by clicking on the button "show PHPinfo". '.
- 'If you have any questions, please contact us at '.
- 'support@shopmodule.com.
',
- 'hasMaxPhpVersion' => 'not more than PHP version %1$s',
- 'hasMaxPhpVersion_DESC' => '
The module requires a PHP version not more than %1$s
'.
- '
The appropriate version of PHP '.
- 'is activated on your server.
'.
- '
The module can not be executed within '.
- 'the actived PHP version. Ask your server provider for for the adaption of your PHP installation or '.
- 'contact us for another module version.
'.
- '
The [+] button show details for all tested directories. Depending on the server settings, '.
- 'the results may vary. Only the red marked directories requires adaptation.
'.
- '
Details about your server installation you can see by clicking on the button "show PHPinfo". '.
- 'If you have any questions, please contact us at '.
- 'support@shopmodule.com.
',
- 'hasFromToPhpVersion' => 'server use PHP version between %1$s and %2$s',
- 'hasFromToPhpVersion_DESC'=> '
The module requires a PHP version between %1$s and %2$s
'.
- '
The appropriate version of PHP '.
- 'is activated on your server.
'.
- '
The module can not be executed within '.
- 'the actived PHP version. Ask your server provider for for the adaption of your PHP installation or '.
- 'contact us for another module version.
'.
- '
The [+] button show details for all tested directories. Depending on the server settings, '.
- 'the results may vary. Only the red marked directories requires adaptation.
'.
- '
Details about your server installation you can see by clicking on the button "show PHPinfo". '.
- 'If you have any questions, please contact us at '.
- 'support@shopmodule.com.
The %1$s server extension is '.
- 'available on your server.
'.
- '
The module can not be executed '.
- 'without the %1$s extension. Ask your server provider for installing this extension.
'.
- '
The [+] button show details for all tested directories. Depending on the server settings, '.
- 'the results may vary. Only the red marked directories requires adaptation.
'.
- '
Details about your server installation you can see by clicking on the button "show PHPinfo". '.
- 'If you have any questions, please contact us at '.
- 'support@shopmodule.com.
',
- 'hasMinCurlVersion' => 'at least cURL version %1$s',
- 'hasMinCurlVersion_DESC' => '
The module requires at least cURL version %1$s.
'.
- '
cURL is available '.
- 'in a compatible version.
'.
- '
cURL is not installed or '.
- 'installed in an older version. Ask your server provider for an appropriate version.
'.
- '
The [+] button show details for all tested directories. Depending on the server settings, '.
- 'the results may vary. Only the red marked directories requires adaptation.
'.
- '
Details about your server installation you can see by clicking on the button "show PHPinfo". '.
- 'If you have any questions, please contact us at '.
- 'support@shopmodule.com.
',
- 'hasMinOpenSSLVersion' => 'at least OpenSSL version %1$s',
- 'hasMinOpenSSLVersion_DESC' => '
The module requires at least OpenSSL version %1$s.
'.
- '
OpenSSL is availabe '.
- 'in a compatible version.
'.
- '
OpenSSL is not installed or '.
- 'installed in an older version. Ask your server provider for an appropriate version.
'.
- '
The [+] button show details for all tested directories. Depending on the server settings, '.
- 'the results may vary. Only the red marked directories requires adaptation.
'.
- '
Details about your server installation you can see by clicking on the button "show PHPinfo". '.
- 'If you have any questions, please contact us at '.
- 'support@shopmodule.com.
',
- 'hasMinShopVersion' => 'at least shop version %1$s',
- 'hasMinShopVersion_DESC' => '
The module is released to shop version %1$s
'.
- '
The shop software is installed '.
- 'in a compatible version.
'.
- '
We can not guarantee, '.
- 'that this module works properly in your shop version. Please ask for a matching module version.
',
- 'hasMinModCfgVersion' => '%2$s (ModCfg item "%1$s") at least in version %3$s',
- 'hasMinModCfgVersion_DESC' => '
The module requires additional software "%2$s" at least '.
- 'in version %3$s
'.
- '
The software is installed '.
- 'in a compatible version.
'.
- '
The additional software is '.
- 'not installed or in wrong version available. Please install the additional software before '.
- 'proceeding this installation.
',
- 'hasMaxModCfgVersion' => '%2$s (ModCfg item "%1$s") not more than in version %3$s',
- 'hasMaxModCfgVersion_DESC' => '
The module requires additional software "%2$s" not more than '.
- 'in version %3$s
'.
- '
The software is installed '.
- 'in a compatible version.
'.
- '
The additional software is '.
- 'be installed or in wrong version available. Please install the additional software before '.
- 'proceeding this installation.
',
- 'requireNewLicence' => 'former licence key can be used',
- 'requireNewLicence_DESC' => '
This test tries to determine whether you need a new licence key '.
- 'for the use of this module
'.
- '
You have stored a license key '.
- 'for this module, which is probably also compatible for the new module version.
'.
- '
You need likely a new license '.
- 'key for this module. Do you have already one, run the installation and then apply the license '.
- 'key in the admin panel of your shop. Otherwise, you can purchase it in our shop '.
- 'oxidmodule.com or also create a '.
- 'free trial license key in the admin panel of your shop.
The module requires necessarily the D3 Module Connector.
'.
- '
The Module Connector is '.
- 'installed.
'.
- '
The module can not be executed '.
- 'without the Module Connector. Please download this free of charge from our shop '.
- 'www.oxidmodule.com/'.
- 'connector/ and install it beforehand.
The module requires (depending on the PHP version) the Zend Guard Optimizer '.
- 'or the Zend Guard Loader.
'.
- '
The appropriate decoder is '.
- 'installed on your server.
'.
- '
The decoder is '.
- 'installed on your server. There is an additional installed extension (Zend OPcache), '.
- 'which can cause errors in combination with the decoder.
'.
- '
The decoder isn\'t '.
- 'installed on your server. The module can\'t installed or executed. Please contact your server provider.
'.
- '
The [+] button show details for all tested directories. Depending on the server settings, '.
- 'the results may vary. Only the red marked directories requires adaptation.
'.
- '
Details about your server installation you can see by clicking on the button "show PHPinfo". '.
- 'If you have any questions, please contact us at '.
- 'support@shopmodule.com.
',
- 'hasIonCubeLoader' => 'ionCube Loader installed (pay attention to the compatible ionCube installation package!)',
- 'hasIonCubeLoader_DESC' => '
The module requires the ionCube Loader.
'.
- '
The appropriate decoder is '.
- 'installed on your server.
'.
- '
The decoder isn\'t '.
- 'installed on your server. The module can\'t installed or executed. Please contact your server provider.
'.
- '
The [+] button show details for all tested directories. Depending on the server settings, '.
- 'the results may vary. Only the red marked directories requires adaptation.
'.
- '
Details about your server installation you can see by clicking on the button "show PHPinfo". '.
- 'If you have any questions, please contact us at '.
- 'support@shopmodule.com.
The module requires the ionCube Loader or the Zend '.
- 'Optimizer / Guard Loader. Pay attention to use a compatible installation package (%1$s).
'.
- '
One of the appropriate '.
- 'decoders is installed on your server.
'.
- '
One of the appropriate '.
- 'decoder is installed on your server. An undefined abort reason has been found, which can cause '.
- 'to errors. For details, please refer to the following notes.
'.
- '
None of the decoders is '.
- 'installed on your server. The module can\'t installed or executed. Please contact your server provider.
'.
- '%2$s'.
- '
The [+] button show details for all tested directories. Depending on the server settings, '.
- 'the results may vary. Only the red marked directories requires adaptation.
'.
- '
Details about your server installation you can see by clicking on the button "show PHPinfo". '.
- 'If you have any questions, please contact us at '.
- 'support@shopmodule.com.
',
- 'RemoteVersionDiff' => ' (Remote script has different version or isn\'t '.
- 'callable, result may not be safe)',
- 'globalSuccess' => 'The technical test was successful. Your server is ready for installing '.
- 'the module.*
',
- 'globalNotSuccess' => 'The technical test wasn\'t successfull. Please check the red or orange marked '.
- 'conditions.
',
- 'deleteFile1' => 'Please delete this file after use on your server! Click here, to delete this file.',
- 'showPhpInfo' => 'show PHPinfo',
- 'dependentoffurther' => '* dependent of further unchecked conditions',
- 'oneandonedescription' => '** this check use execution directory only, provider dependend '.
- 'subdirectories have to check separately (e.g. at 1&1)',
- 'or' => ' or ',
- 'toggleswitch' => 'click for details',
- 'unableDeleteFile' => 'Unable to delete file. Please delete it manually.',
- 'goodBye' => 'Good Bye.',
- 'unableExecuteDirectoryIterator' => 'Unable to check subdirectories for further checks. (%1$s)',
- 'availableDecoder' => 'available: %1$s - pay attention to the compatible installation package!',
- 'noDecoderAvailable' => 'no usable decoder available',
- 'availableDecoder_hasZendLoaderOptimizer' => 'Zend Guard Loader / Optimizer',
- 'notAvailableDecoder_hasZendLoaderOptimizer' => '
The Zend decoder is '.
- 'installed on your server. There is an additional installed extension (Zend OPcache), '.
- 'which can cause errors in combination with the decoder.
";
-}
-
-if (!isset($_SERVER['REMOTE_ADDR']) || !isset($_SERVER['HTTP_USER_AGENT'])) {
- $oPreCheck = new d3PreCheckInFolder();
- if (isset($_GET['fnc']) && $_GET['fnc']) {
- $aParams = isset($_GET['params']) ? unserialize(stripslashes(urldecode($_GET['params']))) : array();
- echo serialize(call_user_func(array($oPreCheck, $_GET['fnc']), $aParams));
- }
-}
\ No newline at end of file
diff --git a/docs/contentTabs_Installation.pdf b/docs/contentTabs_Installation.pdf
deleted file mode 100644
index a1f7d0d..0000000
Binary files a/docs/contentTabs_Installation.pdf and /dev/null differ
diff --git a/docs/daux/_index.md b/docs/daux/_index.md
new file mode 100644
index 0000000..9297503
--- /dev/null
+++ b/docs/daux/_index.md
@@ -0,0 +1,2 @@
+Weitere Informationen zum Modul **{$modulename}** finden Sie in unserem Shop:
+[https://www.oxidmodule.com/OXID-eShop/Module/Content-Tabs-fuer-Oxid-PE.html](https://www.oxidmodule.com/OXID-eShop/Module/Content-Tabs-fuer-Oxid-PE.html)
diff --git a/docs/daux/changelog/010_Changelog.md b/docs/daux/changelog/010_Changelog.md
new file mode 100644
index 0000000..265c6b1
--- /dev/null
+++ b/docs/daux/changelog/010_Changelog.md
@@ -0,0 +1,186 @@
+---
+title: Changelog
+---
+
+# Changelog
+All notable changes to this project will be documented in this file.
+
+## 4.1.0.0 - 2019-01-18
+- Variantenartikel erben Langtexte der Elternartikel
+- keine Bearbeitung von zwischen Mandanten vererbten Artikelinhalten möglich
+- Admin deaktiviert Eingabefelder, wenn deren Funktion vom Tab vordefiniert ist
+- Admin zeigt Hinweis für Standard-Tabtitel, wenn kein Titel vergeben wurde
+- modulspzifisches Thememapping eingefügt
+- Tab-Eigenschaften werden in Artikel-Objekt geladen und gespeichert (statt im proprietären eigenen Objekt)
+- Löschfunktion für angelegten Tab eingefügt
+- Logik aus Template ins Model verschoben (flow + azure)
+- auf HTML-Dokumentation umgestellt
+
+---
+
+## 4.0.0.2 - 2018-10-19
+- Freigabe für OXID 6.1.x
+- Fehlerhinweise eingefügt, wenn Langtexte nicht ausreichend befüllt sind
+- bugfix: Schreibschutz für Langtexte an Artikelvarianten entfernt
+
+---
+
+## 4.0.0.1 - 2018-03-01
+- Exception im Admin unter /Content Tabs/Tabverwaltung/Stamm/
+
+---
+
+## 4.0.0.0 - 2018-03-01
+- Kompatibilität und Support ab Oxid 6.0.0
+- Integration eines eigenen Admin-Bereich "D³ Content Tabs"
+- Titel und Langtexte der Tabs werden in einer eigenen Tabelle gespeichert
+- Langtexte haben eine "Aktiv" - Option erhalten, welche im Frontend zusätzlich geprüft wird
+- Altlasten und unnötige Dateien entfernt
+- Umstellung auf Namespaces
+- Grundinstallation via Composer
+
+---
+
+## 3.2.0.1 - 2016-12-19
+- Support für Apache 2.4
+- Paketbereitstellung für ionCube
+
+---
+
+## 3.2.0.0 - 2016-07-22
+- drop: techn. Support für Shopversionen 4.7.x eingestellt
+- add: Freigabe für 4.10.x
+- add: Prüfung auf gültige Modul-Dateien implementiert
+- add feature: Support für Oxid-Theme Flow
+
+---
+
+## 3.1.0.2 - 2015-10-07
+- bugfix: "Shop offline" Anzeige nach der Wahl einer Variante im Frontend
+- bugfix: gepflegte Tab-Inhalte wurden nicht angezeigt
+
+---
+
+## 3.1.0.1 - 2015-09-03
+- automatische Installation aufgeteilt, Anlegen der Datenbankfelder erfolgt "step by step"
+- Ãœbernahme Moduleigener Templates in copy_this und Verweis zur Ãœberladung siehe FAQ
+- fehlende Ãœbersetzungen im Shopadmin nachgetragen
+- Modulfreigabe für php5.5 und php5.6
+- Aktualisierung Vorabprüfung und Installationsanleitung
+
+---
+
+## 3.1.0.0 - 2014-11-12
+- support for mobile-themes
+- adjustment of the structure
+- update precheck
+
+---
+
+## 3.0.1.0 - 2014-08-08
+- Module compatible with Shopvesion 4.8.7
+- Show Message in Backend if Module is not active
+- rename module-tab-Templates
+- adjustment of the structure
+- delete deprecated files in autoupdate
+- fix module entrys in shopconfiguration
+
+---
+
+## 3.0.0.3 - 2014-05-05
+- Update Precheck
+
+---
+
+## 3.0.0.2 - 2014-03-18
+- bugfix for saving longdesc in admin
+
+---
+
+## 3.0.0.1 - 2013-02-22
+- bugfix when module is inactive, tabs will be shown in frontend
+
+---
+
+## 3.0.0.0 - 2013-02-19
+- restructured for 4.7 / 5.0
+
+---
+
+## 2.4.6.2 - 2013-06-27
+- add funktionality for Edition EE
+- add Versioncheck in oxarticle-extension
+ till 4.5.x other method for getting Longdescription than in 4.6.x
+
+---
+
+## 2.4.6.1 - 2013-03-12
+- bugfix in update.sql
+
+---
+
+## 2.4.6.0 - 2013-02-01
+- tab content moved to templates, add extendable blocks
+
+---
+
+## 2.4.5.0 - 2012-09-05
+- added 4.6.0 functionality
+
+---
+
+## 2.4.4 - 2012-05-31
+- bug fix: javaScript fallback causes shop-in-tab-problem
+
+---
+
+## 2.4.3 - 2011-11-02
+- added templates for 451 - 454
+- added javaScript fallback for non js user
+
+---
+
+## 2.4.2 - 2011-09-19
+- bug fix price doesn't save
+- bug fix showed empty tabs
+
+---
+
+## 2.4.1 - 2011-08-16
+- inheritance implemented
+- bug in save function fixed
+
+---
+
+## 2.4.0 - 2011-07-19
+- restructured
+- removed Ajax lib, switched to jQuery
+- removed ox_cmp module
+- renamed fields (from oxlongdescXXX to d3longdescXXX) in database
+- added 4.5.0 templates
+
+---
+
+## 2.1 - 2009-11-13
+- Xajax-Implementierung au neues Intergrationsschema umgestellt
+- langtext- und templatebasierte Versionen zusammengeführt
+- Fallback-Funktion für Nicht-JavaScript-Einsatz
+- Langtexte in einem Admin-Tab zusammengefaßt
+- Langtext mehrsprachig verfügbar
+
+---
+
+## 2.0 - 2009-08-26
+- auf PE4 portiert
+
+---
+
+## 1.1 - 2008-09-22
+- Fallback-Funktion für Nicht-JavaScript-Einsatz (tpl)
+- Attribute und Bewertungen stehen nun ebenfalls zur Verfügung (tpl)
+
+---
+
+## 1.0 - 2008-09-12
+- Grundfunktion zum Modul komplettiert
+- Scriptbasis ist aktuelles Xajax-Integrationsschema
diff --git a/docs/daux/config.json b/docs/daux/config.json
new file mode 100644
index 0000000..f1a61a0
--- /dev/null
+++ b/docs/daux/config.json
@@ -0,0 +1,76 @@
+{
+ "title": " Content Tabs",
+ "moduleversion": "4.1.0.0",
+ "titledesc": "für den Oxid eShop",
+ "author": "D³ Data Development",
+ "moduledate": "18.01.2019",
+ "editors": "SK/DS",
+ "tagline": "",
+ "image": "",
+ "ignore": {
+ "files": [],
+ "folders": [".idea"]
+ },
+ "live": {
+ "clean_urls": true
+ },
+ "html": {
+ "theme": "d3",
+ "breadcrumbs": true,
+ "breadcrumb_separator": "Chevrons",
+ "toggle_code": false,
+ "date_modified": true,
+ "date_modified_format": "d.m.Y",
+ "float": false,
+ "inherit_index": true,
+ "auto_landing": true,
+
+ "links": {
+ "Shop": "https://www.oxidmodule.com",
+ "Blog": "https://blog.oxidmodule.com",
+ "FAQ": "https://faq.oxidmodule.com",
+ "D³ Support-Center": "https://support.shopmodule.com/",
+ "Kontakt": "https://www.oxidmodule.com/kontakt",
+ "Impressum": "https://www.oxidmodule.com/impressum"
+ },
+
+ "powered_by": ""
+ },
+ "languages": {
+ "installation": "Installation",
+ "changelog": "Changelog",
+ "support": "Support"
+ },
+ "processor": "d3processor",
+ "language": "de",
+ "strings": {
+ "de": {
+ "CodeBlocks_title": "Code-Blöcke",
+ "CodeBlocks_hide": "Aus",
+ "CodeBlocks_below": "Unterhalb",
+ "CodeBlocks_inline": "Linear",
+ "CodeBlocks_show": "Code-Blöcke anzeigen",
+ "Search_placeholder": "Suchen...",
+ "Link_previous": "Zurück",
+ "Link_next": "Weiter",
+ "Edit_on": "Bearbeiten bei :name:",
+ "View_on_github": "Bei GitHub anzeigen",
+ "View_documentation": "Dokumentation anzeigen",
+ "Table_of_contents": "Inhaltsverzeichnis",
+ "author": "Autor",
+ "moduledate": "Stand",
+ "version": "Version",
+ "editors": "Bearbeiter",
+ "selectversion": "Version wechseln"
+ }
+ },
+ "variables": {
+ "modulename" : " Content Tabs",
+ "menutitle" : " Content Tabs",
+ "modulefolder" : "contenttabs",
+ "modcfgident" : "d3contenttabs",
+ "composerident" : "d3/contenttabs"
+ },
+ "versionselector": false,
+ "versiondirectoryindex": 2
+}
diff --git a/docs/daux/installation/010_Anforderungen/010_Systemanforderungen.md b/docs/daux/installation/010_Anforderungen/010_Systemanforderungen.md
new file mode 100644
index 0000000..871351e
--- /dev/null
+++ b/docs/daux/installation/010_Anforderungen/010_Systemanforderungen.md
@@ -0,0 +1,19 @@
+---
+title: Systemanforderungen
+---
+
+* PHP Version
+ * 5.6.x bis 7.2.x
+* PHP Decoder
+ * installierter ionCube Loader
+* Shopversionen / -editionen
+ * OXID eShop Community Edition (CE), Professional Edition (PE) oder Enterprise Edition (EE) in Compilation Version
+ * 6.0.x
+ * 6.1.x
+* D3 Modul-Connector ([kostenfrei bei D3 erhältlich](https://www.oxidmodule.com/connector/)) ab Version 5.1.0.0
+* Installation via [Composer](https://getcomposer.org)
+* mindestens ein freier Cronjob zur automatischen Ausführung der angelegten Aufgaben
+
+Beachten Sie, dass die Ihnen vorliegende Modulversion entsprechend für **PHP 5.6**, **PHP 7.0**, **PHP 7.1** oder **PHP 7.2** sowie dem auf Ihrem Server vorhandenen Decoder (**ionCube Loader**) kompatibel ist. Im Zweifelsfall kontaktieren Sie uns und nennen den für Ihren Shop genutzten Decoder und die PHP-Version.
+
+Kontrollieren Sie bitte auch, ob diese Modulversion für die von Ihnen eingesetzte Shopedition (Professional Edition (PE) oder Enterprise Edition (EE)) ausgelegt ist.
diff --git a/docs/daux/installation/010_Anforderungen/050_Vorbereitungen.md b/docs/daux/installation/010_Anforderungen/050_Vorbereitungen.md
new file mode 100644
index 0000000..45c5610
--- /dev/null
+++ b/docs/daux/installation/010_Anforderungen/050_Vorbereitungen.md
@@ -0,0 +1,9 @@
+---
+title: Vorbereitungen
+---
+
+Installieren Sie bitte zuerst unseren Modul-Connector in der erforderlichen Version.
+Ob dies evtl. schon geschehen ist, können Sie im Adminbereich Ihres Shops prüfen. Existiert der Punkt [ D3 Module ] -> [ Modul-Connector ], können Sie die installierte Version unter [ Bibliotheksverwaltung ] ablesen. Fehlt dieser Eintrag, installieren Sie den kostenfreien Connector.
+Informationen zu dessen Installation finden Sie auf unserer [Homepage](https://www.oxidmodule.com/Connector/).
+
+Klicken Sie auf den Reiter [ Downloads ] und wählen dort das für Ihre Installation passende Paket.
\ No newline at end of file
diff --git a/docs/daux/installation/020_Neuinstallation/005_Vorbereitung.md b/docs/daux/installation/020_Neuinstallation/005_Vorbereitung.md
new file mode 100644
index 0000000..58e0a6a
--- /dev/null
+++ b/docs/daux/installation/020_Neuinstallation/005_Vorbereitung.md
@@ -0,0 +1,9 @@
+---
+title: Vorbereitungen
+---
+
+Installieren Sie bitte zuerst unseren Modul-Connector in der erforderlichen Version. Ob dies evtl. schon geschehen ist, können Sie im Adminbereich Ihres Shops prüfen.
+Existiert der Punkt [ D3 Module ] -> [ Modul-Connector ], können Sie die installierte Version unter [ Bibliotheksverwaltung ] ablesen.
+Fehlt dieser Eintrag, laden Sie den Connector kostenfrei von unserer [Homepage](http://www.oxidmodule.com/Connector/).
+
+Klicken Sie auf den Reiter [ Download ] und dort auf den Link [ Download Erstinstallation Modul-Connector ].
\ No newline at end of file
diff --git a/docs/daux/installation/020_Neuinstallation/020_Modul_hinzufuegen.md b/docs/daux/installation/020_Neuinstallation/020_Modul_hinzufuegen.md
new file mode 100644
index 0000000..90d80bf
--- /dev/null
+++ b/docs/daux/installation/020_Neuinstallation/020_Modul_hinzufuegen.md
@@ -0,0 +1,11 @@
+---
+title: Modul zur Installation hinzufügen
+---
+
+Führen Sie in der Konsole im selben Verzeichnis diesen Befehl aus, um das Modul **{$modulename}** zur Installation hinzuzufügen:
+
+```bash
+php composer require {$composerident} --update-no-dev
+```
+
+> [i] Benötigt Ihre Installation einen anderen Aufruf von Composer, ändern Sie den Befehl bitte entsprechend ab. Für weitere Optionen dieses Befehls lesen Sie bitte die [Dokumentation von Composer](https://getcomposer.org/doc/03-cli.md#require).
\ No newline at end of file
diff --git a/docs/daux/installation/020_Neuinstallation/030_Verwendung_eigener_Themes.md b/docs/daux/installation/020_Neuinstallation/030_Verwendung_eigener_Themes.md
new file mode 100644
index 0000000..154f0c5
--- /dev/null
+++ b/docs/daux/installation/020_Neuinstallation/030_Verwendung_eigener_Themes.md
@@ -0,0 +1,14 @@
+---
+title: Verwendung eigener Themes
+---
+
+Das Modul ist für die Verwendung mit den folgenden OXID-Themes vorbereitet:
+
+* Flow
+* Azure
+
+Verwenden Sie in Ihrem Shop ein angepasstes Verzeichnis für Ihre Templates (neues Theme oder CustomTheme), kopieren Sie die Templates und / oder die CSS-Dateien in die neuen Ordner.
+
+Ähnelt Ihr neues Theme technisch einem der OXID-Originale, können Sie dieses darauf umleiten. Childs von originalen OXID- Themes benötigen keine Umleitung.
+
+Weitere Informationen zur Umleitung finden Sie in unserer [FAQ](http://faq.oxidmodule.com/Modulinstallation/Modulanpassungen/themespezifische-Templatebloecke-fuer-eigenes-Theme-verwenden.html).
\ No newline at end of file
diff --git a/docs/daux/installation/020_Neuinstallation/040_Providerspezifische_Installation.md b/docs/daux/installation/020_Neuinstallation/040_Providerspezifische_Installation.md
new file mode 100644
index 0000000..d8d5d0c
--- /dev/null
+++ b/docs/daux/installation/020_Neuinstallation/040_Providerspezifische_Installation.md
@@ -0,0 +1,5 @@
+---
+title: Providerspezifische Installation
+---
+
+Manche Provider erfordern besondere Einstellungen für installierte Module. Ob Ihr Anbieter spezielle Anforderungen stellt und wie diese aussehen, kontrollieren Sie bitte in unserer [FAQ](http://faq.oxidmodule.com/Modulinstallation/providerspezifische-Installation/).
\ No newline at end of file
diff --git a/docs/daux/installation/020_Neuinstallation/050_Modul_im_Shop_aktivieren.md b/docs/daux/installation/020_Neuinstallation/050_Modul_im_Shop_aktivieren.md
new file mode 100644
index 0000000..02ea797
--- /dev/null
+++ b/docs/daux/installation/020_Neuinstallation/050_Modul_im_Shop_aktivieren.md
@@ -0,0 +1,7 @@
+---
+title: Modul im Shop aktivieren
+---
+
+Aktivieren Sie das Modul über den Shopadmin unter [ Erweiterungen ] -> [ Module ]. Klicken Sie nach Auswahl von [ {$menutitle} ] auf den Button [ Aktivieren ].
+
+> [!] **Enterprise Editon**: Achten Sie darauf, dass das Modul in weiteren Shops (Mall) ebenfalls aktiviert werden muss, um dessen Funktion dort auch zu nutzen.
\ No newline at end of file
diff --git a/docs/daux/installation/020_Neuinstallation/060_Shopanpassungen_installieren.md b/docs/daux/installation/020_Neuinstallation/060_Shopanpassungen_installieren.md
new file mode 100644
index 0000000..7135098
--- /dev/null
+++ b/docs/daux/installation/020_Neuinstallation/060_Shopanpassungen_installieren.md
@@ -0,0 +1,11 @@
+---
+title: Shopanpassungen installieren
+---
+
+Direkt nach der Modulaktivierung startet der Assistent, der Sie durch die Shopanpassung führt. Darin können Sie verschiedene Optionen der Installation wählen.
+
+Den Installationsassistenten finden Sie auch unter den Menüpunkten [ Admin ] -> [ D3 Module ] -> [ Modul-Connector ] -> [ Modulverwaltung ] -> [ Modulinstallation ].
+
+Bei tiefgreifenden Änderungen an Ihrem Shop (z.B. Hinzufügen weiterer Sprachen oder Mandanten) rufen Sie den Installationsassistenten bitte erneut auf, um dann eventuell notwendige Nacharbeiten für das Modul ausführen zu lassen.
+
+Möchten Sie die Änderungen manuell installieren, können Sie sich über diesen Assistenten ebenfalls eine Checkliste erstellen.
\ No newline at end of file
diff --git a/docs/daux/installation/020_Neuinstallation/070_TMP-Ordner_leeren.md b/docs/daux/installation/020_Neuinstallation/070_TMP-Ordner_leeren.md
new file mode 100644
index 0000000..0c31efc
--- /dev/null
+++ b/docs/daux/installation/020_Neuinstallation/070_TMP-Ordner_leeren.md
@@ -0,0 +1,9 @@
+---
+title: TMP-Ordner leeren
+---
+
+Leeren Sie das Verzeichnis `tmp` über [ Admin ] -> [ D3 Module ] -> [ Modul-Connector ] -> [ TMP leeren ]. Markieren Sie [ komplett leeren ] und klicken auf [ TMP leeren ].
+
+Sofern die Views nicht automatisch aktualisiert werden, führen Sie dies noch durch.
+
+> [i] Erfordert Ihre Installation eine andere Vorgehensweise zum Leeren des Caches oder zum Aktualisieren der Datenbank-Viewtabellen, führen Sie diese bitte aus.
\ No newline at end of file
diff --git a/docs/daux/installation/020_Neuinstallation/080_Lizenz_eintragen.md b/docs/daux/installation/020_Neuinstallation/080_Lizenz_eintragen.md
new file mode 100644
index 0000000..1280479
--- /dev/null
+++ b/docs/daux/installation/020_Neuinstallation/080_Lizenz_eintragen.md
@@ -0,0 +1,7 @@
+---
+title: Lizenzschlüssel eintragen
+---
+
+Das Modul verwendet Lizenzschlüssel, um die Lizenzverwaltung für Sie und auch für uns einfacher zu gestalten. Hierbei haben Sie je nach Modul die Wahl zwischen einer kostenfreien Testlizenz und einer Lizenz für den Einsatz im Livebetrieb.
+
+Rufen Sie zum Anfordern des Lizenzschlüssels die Modulverwaltung im Adminbereich unter [ D3 Module ] -> [ Modul-Connector ] -> [ Modulverwaltung ] auf. Klappen Sie den Eintrag des jeweiligen Moduls aus. Sofern erforderlich, können Sie hier den Lizenzassistenten starten, der schnell und einfach ihr Modul aktiviert.
\ No newline at end of file
diff --git a/docs/daux/installation/020_Neuinstallation/100_Updatefaehigkeit.md b/docs/daux/installation/020_Neuinstallation/100_Updatefaehigkeit.md
new file mode 100644
index 0000000..e525385
--- /dev/null
+++ b/docs/daux/installation/020_Neuinstallation/100_Updatefaehigkeit.md
@@ -0,0 +1,7 @@
+---
+title: Updatefähigkeit
+---
+
+Bei individuellen Änderungen von Moduldateien empfehlen wir, jeweils die Überladungsmöglichkeiten des Shops dafür zu verwenden. So brauchen Sie die originalen Moduldateien nicht verändern und erhalten sich so die Updatefähigkeit des Shops und des Moduls. Beachten Sie, dass Moduldateien bei Updateinstallationen überschrieben werden.
+
+Weitere Informationen zu den Überladungsmöglichkeiten verschiedener Dateien finden Sie in unserer [FAQ](http://faq.oxidmodule.com/Modulinstallation/Modulanpassungen/).
\ No newline at end of file
diff --git a/docs/daux/installation/020_Neuinstallation/_index.md b/docs/daux/installation/020_Neuinstallation/_index.md
new file mode 100644
index 0000000..99e8a78
--- /dev/null
+++ b/docs/daux/installation/020_Neuinstallation/_index.md
@@ -0,0 +1,11 @@
+---
+Title: Schnellstart per Composer
+---
+
+## Schnellstart per Composer
+
+```bash
+php composer require {$composerident} –-update-no-dev
+```
+
+Detailliertere Angaben zur Installation entnehmen Sie bitte den folgenden Seiten.
\ No newline at end of file
diff --git a/docs/daux/installation/030_Update/010_Modul_deaktivieren.md b/docs/daux/installation/030_Update/010_Modul_deaktivieren.md
new file mode 100644
index 0000000..ba3f82d
--- /dev/null
+++ b/docs/daux/installation/030_Update/010_Modul_deaktivieren.md
@@ -0,0 +1,5 @@
+---
+title: Modul deaktivieren
+---
+
+Deaktivieren Sie das Modul über den Shopadmin unter [ Erweiterungen ] -> [ Module ]. Klicken Sie nach Auswahl von [ {$menutitle} ] auf den Button [ Deaktivieren ].
\ No newline at end of file
diff --git a/docs/daux/installation/030_Update/015_Paketquelle_entfernen.md b/docs/daux/installation/030_Update/015_Paketquelle_entfernen.md
new file mode 100644
index 0000000..33179d1
--- /dev/null
+++ b/docs/daux/installation/030_Update/015_Paketquelle_entfernen.md
@@ -0,0 +1,16 @@
+---
+title: Paketquelle entfernen
+---
+
+Durch einen Wechsel der Paketquelle ist die veraltete Angabe nicht mehr erforderlich. Um Konflikte zu vermeiden, sollte die alte Paketquelle entfernt werden. Haben Sie diese schon früher entfernt, können Sie diesen Schritt überspringen.
+
+Starten Sie die Konsole Ihres Webservers und wechseln in das Hauptverzeichnis Ihres Shops (oberhalb des `source`- und `vendor`-Verzeichnisses). Senden Sie dort diesen Befehl ab:
+
+```bash
+php composer config --unset repositories.d3
+php composer config --unset repositories.D3modules
+```
+
+> [!] Achten Sie darauf, dass die Installation über Composer mit derselben PHP-Version erfolgt, in der auch Ihr Shop installiert ist. Sie erhalten sonst unpassende Modulpakete.
+
+> [i] Benötigt Ihre Installation einen anderen Aufruf von Composer, ändern Sie den Befehl bitte entsprechend ab. Für weitere Optionen dieses Befehls lesen Sie bitte die [Dokumentation von Composer](https://getcomposer.org/doc/03-cli.md#require).
diff --git a/docs/daux/installation/030_Update/020_Dateien_erneuern.md b/docs/daux/installation/030_Update/020_Dateien_erneuern.md
new file mode 100644
index 0000000..950d51e
--- /dev/null
+++ b/docs/daux/installation/030_Update/020_Dateien_erneuern.md
@@ -0,0 +1,14 @@
+---
+title: Dateien erneuern
+---
+
+Starten Sie die Konsole Ihres Webservers und wechseln in das Hauptverzeichnis Ihres
+Shops (oberhalb des `source`- und `vendor`-Verzeichnisses). Führen Sie dort diesen Befehl aus:
+
+```bash
+php composer update {$composerident} --no-dev
+```
+
+> [!] Achten Sie darauf, dass die Installation über Composer mit derselben PHP-Version erfolgt, in der auch Ihr Shop installiert ist. Sie erhalten sonst unpassende Modulpakete.
+
+> [i] Benötigt Ihre Installation einen anderen Aufruf von Composer, ändern Sie den Befehl bitte entsprechend ab. Für weitere Optionen dieses Befehls lesen Sie bitte die [Dokumentation von Composer](https://getcomposer.org/doc/03-cli.md#require).
\ No newline at end of file
diff --git a/docs/daux/installation/030_Update/030_Providerspezifische_Installation.md b/docs/daux/installation/030_Update/030_Providerspezifische_Installation.md
new file mode 100644
index 0000000..d8d5d0c
--- /dev/null
+++ b/docs/daux/installation/030_Update/030_Providerspezifische_Installation.md
@@ -0,0 +1,5 @@
+---
+title: Providerspezifische Installation
+---
+
+Manche Provider erfordern besondere Einstellungen für installierte Module. Ob Ihr Anbieter spezielle Anforderungen stellt und wie diese aussehen, kontrollieren Sie bitte in unserer [FAQ](http://faq.oxidmodule.com/Modulinstallation/providerspezifische-Installation/).
\ No newline at end of file
diff --git a/docs/daux/installation/030_Update/040_Modulinformationen_aktualisieren.md b/docs/daux/installation/030_Update/040_Modulinformationen_aktualisieren.md
new file mode 100644
index 0000000..5e27899
--- /dev/null
+++ b/docs/daux/installation/030_Update/040_Modulinformationen_aktualisieren.md
@@ -0,0 +1,5 @@
+---
+title: Modulinformationen aktualisieren
+---
+
+Wechseln Sie im Adminbereich zu [ Erweiterungen ] -> [ Module ]. Klicken Sie nach Auswahl von [ {$menutitle} ] auf den Button [ Aktivieren ].
\ No newline at end of file
diff --git a/docs/daux/installation/030_Update/050_Shopanpassungen_installieren.md b/docs/daux/installation/030_Update/050_Shopanpassungen_installieren.md
new file mode 100644
index 0000000..b97fbb8
--- /dev/null
+++ b/docs/daux/installation/030_Update/050_Shopanpassungen_installieren.md
@@ -0,0 +1,11 @@
+---
+title: Shopanpassungen installierren
+---
+
+Ob Shopanpassungen notwendig sind, ist von der Versionsänderung des Moduls abhängig.
+
+Möglicherweise sehen Sie nach dem Neuaktivieren des Moduls den Installationsassistent, der Sie durch die Änderungen führt. Folgen Sie dann den einzelnen Schritten. Möchten Sie die Änderungen manuell installieren, können Sie sich über diesen Assistenten ebenfalls eine Checkliste erstellen.
+
+Wird der Assistent nicht gezeigt (Sie sehen wieder die Modulübersicht), waren keine Anpassungen am Shop notwendig.
+
+Ob erforderliche Updates ausgeführt werden sollen, können Sie jederzeit im Adminbereich unter [ D3 Module ] -> [ Modul-Connector ] -> [ Modulverwaltung ] -> [ Modulinstallation ] prüfen.
\ No newline at end of file
diff --git a/docs/daux/installation/030_Update/060_TMP-Ordner_leeren.md b/docs/daux/installation/030_Update/060_TMP-Ordner_leeren.md
new file mode 100644
index 0000000..0c31efc
--- /dev/null
+++ b/docs/daux/installation/030_Update/060_TMP-Ordner_leeren.md
@@ -0,0 +1,9 @@
+---
+title: TMP-Ordner leeren
+---
+
+Leeren Sie das Verzeichnis `tmp` über [ Admin ] -> [ D3 Module ] -> [ Modul-Connector ] -> [ TMP leeren ]. Markieren Sie [ komplett leeren ] und klicken auf [ TMP leeren ].
+
+Sofern die Views nicht automatisch aktualisiert werden, führen Sie dies noch durch.
+
+> [i] Erfordert Ihre Installation eine andere Vorgehensweise zum Leeren des Caches oder zum Aktualisieren der Datenbank-Viewtabellen, führen Sie diese bitte aus.
\ No newline at end of file
diff --git a/docs/daux/installation/030_Update/070_Lizenzschluessel_aktualisieren.md b/docs/daux/installation/030_Update/070_Lizenzschluessel_aktualisieren.md
new file mode 100644
index 0000000..4ee267e
--- /dev/null
+++ b/docs/daux/installation/030_Update/070_Lizenzschluessel_aktualisieren.md
@@ -0,0 +1,5 @@
+---
+title: Lizenzschlüssel aktualisieren
+---
+
+Wird für die neue Modulversion ein aktualisierter Lizenzschlüssel benötigt, tragen Sie diesen im Adminbereich unter [ D3 Module ] -> [ Modul-Connector ] -> [ Modulverwaltung ] ein. Klappen Sie dazu den Eintrag des jeweiligen Moduls aus und starten den Lizenzassistent.
\ No newline at end of file
diff --git a/docs/daux/installation/030_Update/080_Erweiterungen_anpassen.md b/docs/daux/installation/030_Update/080_Erweiterungen_anpassen.md
new file mode 100644
index 0000000..5fc0aa2
--- /dev/null
+++ b/docs/daux/installation/030_Update/080_Erweiterungen_anpassen.md
@@ -0,0 +1,5 @@
+---
+title: Erweiterungen anpassen
+---
+
+Haben Sie für dieses Modul eigene Erweiterung entwickelt, gleichen Sie dies bitte mit der neuen Fassung des Moduls ab.
\ No newline at end of file
diff --git a/docs/daux/installation/030_Update/_index.md b/docs/daux/installation/030_Update/_index.md
new file mode 100644
index 0000000..639291f
--- /dev/null
+++ b/docs/daux/installation/030_Update/_index.md
@@ -0,0 +1,60 @@
+---
+Title: Update von älteren Modulversionen (3.0.0.3 / 3.0.1.0 oder niedriger)
+---
+
+# versionsabhängige Besonderheiten
+
+Bei den Modulversionen 3.0.1.0 sowie 3.1.0.0 hat sich die Struktur der Block- und Template-Dateien innerhalb des Moduls geändert. Des Weiteren wurde der Bereich `changed_full` im Modul entfernt.
+Haben Sie Anpassungen an damaligen, moduleigenen Dateien vorgenommen, übernehmen Sie diese bitte in eine eigene Erweiterung. Die Modulstrukturen finden Sie nachfolgend:
+
+## Version 3.0.0.3 oder niedriger
+
+ab Verzeichnis `/modules/d3/d3contenttabs/views/azure/tpl/`
+
+| | |
+|:-:|--------------------------------------------|
+| A | -/- |
+| B | page/details/inc/d3_ajax_content_tab_1.tpl |
+| C | page/details/inc/d3_ajax_content_tab_2.tpl |
+| D | page/details/inc/d3_ajax_content_tab_3.tpl |
+| E | page/details/inc/d3_ajax_content_tab_4.tpl |
+| F | page/details/inc/d3_ajax_content_tab_5.tpl |
+
+## Version 3.0.1.0
+
+ab Verzeichnis `/modules/d3/d3contenttabs/views/`
+
+| | |
+|:-:|-----------------------------------------|
+| A | blocks/details_tabs_longdescription.tpl |
+| B | azure/tpl/d3contenttabs_tab1.tpl |
+| C | azure/tpl/d3contenttabs_tab2.tpl |
+| D | azure/tpl/d3contenttabs_tab3.tpl |
+| E | azure/tpl/d3contenttabs_tab4.tpl |
+| F | azure/tpl/d3contenttabs_tab5.tpl |
+
+## bis Version 3.2.0.x
+
+ab Verzeichnis `/modules/d3/d3contenttabs/views/`
+
+| | |
+|:-:|-----------------------------------------------|
+| A | azure/blocks/details_tabs_longdescription.tpl |
+| B | tpl/d3contenttabs_tab1.tpl |
+| C | tpl/d3contenttabs_tab2.tpl |
+| D | tpl/d3contenttabs_tab3.tpl |
+| E | tpl/d3contenttabs_tab4.tpl |
+| F | tpl/d3contenttabs_tab5.tpl |
+
+## aktuelle Struktur ab Version 4.0.0.0
+
+ab Verzeichnis `/sources/modules/d3/contenttabs/Application/views/`
+
+| | |
+|:---:|-----------------------------------------|
+| A | blocks/details_tabs_longdescription.tpl |
+| B | tpl/d3contenttabs_tab1.tpl |
+| C | tpl/d3contenttabs_tab1.tpl |
+| ... | ... |
+
+Alle weiteren Updateschritte entnehmen Sie bitte den weiteren Unterseiten.
\ No newline at end of file
diff --git a/docs/daux/installation/040_Installationspruefung.md b/docs/daux/installation/040_Installationspruefung.md
new file mode 100644
index 0000000..d337a6c
--- /dev/null
+++ b/docs/daux/installation/040_Installationspruefung.md
@@ -0,0 +1,20 @@
+---
+title: Installationsprüfung
+---
+
+Um die erfolgreiche Installation zu prüfen, können Sie die folgende(n) Checkliste(n) verwenden:
+
+## Einstellungsunabhängige Prüfungen
+
+### Backend
+
+* Modul ist unter [ Erweiterungen ] -> [ Module ] aktiv geschaltet
+* Modul ist unter [ D3 Module ] -> [ Modul-Connector ] -> [ Modulverwaltung ] aktiv geschaltet
+* Modul zeigt unter [ D3 Module ] -> [ {$menutitle} ] einen eigenen Bereich für Einstellungen
+
+## Einstellungsabhängige Prüfungen
+
+### Frontend
+
+* das Modul zeigt auf der Produktdetailseite eigene Tab-Bezeichnungen an
+* nach Auswahl eines Tabs werden die dazugehörigen Langtexte an gezeigt
diff --git a/docs/daux/installation/050_Schnellstart.md b/docs/daux/installation/050_Schnellstart.md
new file mode 100644
index 0000000..b957db6
--- /dev/null
+++ b/docs/daux/installation/050_Schnellstart.md
@@ -0,0 +1,5 @@
+---
+title: Schnellstart
+---
+
+Das Modul **{$modulename}** bringt einen umfangreichen Adminbereich mit, in dem Sie die Konfigurationseinstellungen des Moduls setzen können. Über das Menü [ D3 Module ] -> [ {$menutitle} ] -> [ Tabverwaltung ] erreichen Sie die Einstellungen für die zusätzlichen Langtexte der Artikel.
\ No newline at end of file
diff --git a/docs/daux/installation/060_Deinstallation/010_Modulerweiterungen_deaktivieren_und_entfernen.md b/docs/daux/installation/060_Deinstallation/010_Modulerweiterungen_deaktivieren_und_entfernen.md
new file mode 100644
index 0000000..e67e777
--- /dev/null
+++ b/docs/daux/installation/060_Deinstallation/010_Modulerweiterungen_deaktivieren_und_entfernen.md
@@ -0,0 +1,5 @@
+---
+title: Modulerweiterungen deaktivieren und entfernen
+---
+
+Deaktivieren Sie alle vorhandenen Erweiterungen, die auf dem Modul **{$modulename}** aufbauen und löschen bitte alle Dateien dieser Erweiterungen. Entfernen Sie ebenfalls alle individuellen Templateanpassungen für dieses Modul.
\ No newline at end of file
diff --git a/docs/daux/installation/060_Deinstallation/020_Modul_deaktivieren.md b/docs/daux/installation/060_Deinstallation/020_Modul_deaktivieren.md
new file mode 100644
index 0000000..067dc42
--- /dev/null
+++ b/docs/daux/installation/060_Deinstallation/020_Modul_deaktivieren.md
@@ -0,0 +1,6 @@
+---
+title: Modul deaktivieren
+---
+
+Deaktivieren Sie das Modul **{$modulename}** über den Shopadmin [ Erweiterungen ] -> [ Module ]. Klicken Sie nach Auswahl von [ {$menutitle} ] auf den Button [ Deaktivieren ].
+
diff --git a/docs/daux/installation/060_Deinstallation/030_Modul_aus_der_Installation_entfernen.md b/docs/daux/installation/060_Deinstallation/030_Modul_aus_der_Installation_entfernen.md
new file mode 100644
index 0000000..344eb78
--- /dev/null
+++ b/docs/daux/installation/060_Deinstallation/030_Modul_aus_der_Installation_entfernen.md
@@ -0,0 +1,13 @@
+---
+title: Modul aus der Installation entfernen
+---
+
+Starten Sie die Konsole Ihres Webservers und wechseln in das Hauptverzeichnis Ihres Shops (oberhalb des `source`- und `vendor`-Verzeichnisses). Führen Sie Sie dort diesen Befehl aus:
+
+```Bash
+php composer remove {$composerident} --no-update
+```
+
+> [!] Achten Sie darauf, dass die Installation über Composer mit derselben PHP-Version erfolgt, in der auch Ihr Shop installiert ist. Sie erhalten sonst unpassende Modulpakete.
+
+> [i] Benötigt Ihre Installation einen anderen Aufruf von Composer, ändern Sie den Befehl bitte entsprechend ab. Für weitere Optionen dieses Befehls lesen Sie bitte die [Dokumentation von Composer](https://getcomposer.org/doc/03-cli.md#require).
diff --git a/docs/daux/installation/060_Deinstallation/040_Dateien_loeschen.md b/docs/daux/installation/060_Deinstallation/040_Dateien_loeschen.md
new file mode 100644
index 0000000..7eeab89
--- /dev/null
+++ b/docs/daux/installation/060_Deinstallation/040_Dateien_loeschen.md
@@ -0,0 +1,9 @@
+---
+title: Dateien löschen
+---
+
+Löschen Sie den Ordner `{$modulefolder}` und seine enthaltenen Elemente aus dem Verzeichnis `source/modules/d3` Ihres Shops.
+Bestätigen Sie anschließend im Shopadmin unter [ Erweiterungen ] -> [ Module ] -> [ Installierte Shop-Module ] die Nachricht:
+
+> Es gibt registrierte Erweiterungen im eShop, deren Verzeichnis nicht vorhanden ist.
+Möchten Sie alle Modulinformationen einschließlich Konfigurationseinstellungen und Blockinformationen für Templates löschen?
diff --git a/docs/daux/installation/060_Deinstallation/050_Datenbank_bereinigen.md b/docs/daux/installation/060_Deinstallation/050_Datenbank_bereinigen.md
new file mode 100644
index 0000000..43c8ce5
--- /dev/null
+++ b/docs/daux/installation/060_Deinstallation/050_Datenbank_bereinigen.md
@@ -0,0 +1,22 @@
+---
+title: Datenbank bereinigen
+---
+
+Das Modul legt Informationen in der Datenbank ab. Sofern diese Daten nicht mehr benötigt werden, können diese gelöscht werden.
+
+> [!] Legen Sie sich vorab bitte unbedingt eine Sicherung an, um die Daten im Zweifelsfall wiederherstellen zu können.
+
+Für das Modul **{$modulename}** sind dies die folgende Tabellen und Felder:
+
+* die komplette Tabelle `d3contenttabs`
+* sofern vorhanden: `d3contenttabs_setX` *)
+
+sowie diese Einträge bestehenden Tabellen:
+
+* in Tabelle `d3_cfg_mod`:
+ * den Eintrag `oxmodid = "{$modcfgident}"` **)
+
+*) `_setX` ist eine Tabellenliste, die mit `_set1` beginnen und shopabhängig auch Tabellen mit höheren Nummerierungen enthalten kann (z.B. `_set2`, `_set3`, …).
+Zu einigen dieser Tabellen wurden die Config-Einträge `aMultiLangTables` (bei Enterprise Edition auch `aMultiShopTables`) um entsprechende Einträge ergänzt). Bereinigen Sie diese ebenfalls.
+
+**) Diesen Eintrag gibt es ggf. für jeden Subshop. Entfernen Sie diesen nur für die Mandanten, in denen das Modul **nicht** mehr installiert ist.
\ No newline at end of file
diff --git a/docs/daux/installation/060_Deinstallation/060_TMP-Ordner_leeren.md b/docs/daux/installation/060_Deinstallation/060_TMP-Ordner_leeren.md
new file mode 100644
index 0000000..0c31efc
--- /dev/null
+++ b/docs/daux/installation/060_Deinstallation/060_TMP-Ordner_leeren.md
@@ -0,0 +1,9 @@
+---
+title: TMP-Ordner leeren
+---
+
+Leeren Sie das Verzeichnis `tmp` über [ Admin ] -> [ D3 Module ] -> [ Modul-Connector ] -> [ TMP leeren ]. Markieren Sie [ komplett leeren ] und klicken auf [ TMP leeren ].
+
+Sofern die Views nicht automatisch aktualisiert werden, führen Sie dies noch durch.
+
+> [i] Erfordert Ihre Installation eine andere Vorgehensweise zum Leeren des Caches oder zum Aktualisieren der Datenbank-Viewtabellen, führen Sie diese bitte aus.
\ No newline at end of file
diff --git a/docs/daux/installation/_index.md b/docs/daux/installation/_index.md
new file mode 100644
index 0000000..4b178ab
--- /dev/null
+++ b/docs/daux/installation/_index.md
@@ -0,0 +1,10 @@
+---
+title: Installation / Update / Deinstallation
+---
+
+* [Anforderungen](installation/010_Anforderungen/010_Systemanforderungen.md)
+* [Neuinstallation](installation/020_Neuinstallation/005_Vorbereitung.md)
+* [Update](installation/030_Update/010_Modul_deaktivieren.md)
+* [Deinstallation](installation/060_Deinstallation/010_Modulerweiterungen_deaktivieren_und_entfernen.md)
+
+Bei Bedarf bieten wir Ihnen auch gern die Installation des Moduls in Ihrem Shop an. Geben Sie uns bitte unter den unter [Hilfe und Support](support/010_Hilfe-und-Support.md) genannten Kontaktdaten Bescheid.
diff --git a/docs/daux/support/010_Hilfe-und-Support.md b/docs/daux/support/010_Hilfe-und-Support.md
new file mode 100644
index 0000000..8e9bd17
--- /dev/null
+++ b/docs/daux/support/010_Hilfe-und-Support.md
@@ -0,0 +1,16 @@
+---
+title: Hilfe und Support
+---
+
+Bei Bedarf bieten wir Ihnen auch gern die Installation des Moduls in Ihrem Shop an. Geben Sie uns bitte unter den unten genannten Kontaktdaten Bescheid.
+
+Haben Sie Fragen oder Unklarheiten in Verbindung mit diesem Modul oder dessen Installation, stehen Ihnen Hilfetexte in unserer [Modul-FAQ](http://faq.oxidmodule.com/) zur Verfügung. Finden Sie darin die benötigten Antworten nicht, kontaktieren Sie uns bitte unter den folgenden Möglichkeiten:
+1. per E-Mail: oder
+2. über das Kontaktformular auf [Oxidmodule.com](https://www.oxidmodule.com/) oder
+3. per Telefon: (+49) 37 21 / 26 80 90 zu unseren Bürozeiten
+
+Geben Sie bitte an, wo und wie wir gegebenenfalls vorhandene Schwierigkeiten nachvollziehen können. Sind Ihre Fragen shopspezifisch, benötigen wir möglicherweise Zugangsdaten zum betreffenden Shop.
+
+Wir wünschen Ihnen mit Ihrem Shop und dem Modul viel Erfolg!
+
+Ihr D³-Team.
diff --git a/docs/html/changelog/Changelog.html b/docs/html/changelog/Changelog.html
new file mode 100644
index 0000000..696f143
--- /dev/null
+++ b/docs/html/changelog/Changelog.html
@@ -0,0 +1,296 @@
+
+
+
+ Changelog - Content Tabs
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
mindestens ein freier Cronjob zur automatischen Ausführung der angelegten Aufgaben
+
+
Beachten Sie, dass die Ihnen vorliegende Modulversion entsprechend für PHP 5.6, PHP 7.0, PHP 7.1 oder PHP 7.2 sowie dem auf Ihrem Server vorhandenen Decoder (ionCube Loader) kompatibel ist. Im Zweifelsfall kontaktieren Sie uns und nennen den für Ihren Shop genutzten Decoder und die PHP-Version.
+
Kontrollieren Sie bitte auch, ob diese Modulversion für die von Ihnen eingesetzte Shopedition (Professional Edition (PE) oder Enterprise Edition (EE)) ausgelegt ist.
Installieren Sie bitte zuerst unseren Modul-Connector in der erforderlichen Version.
+Ob dies evtl. schon geschehen ist, können Sie im Adminbereich Ihres Shops prüfen. Existiert der Punkt Module -> Modul-Connector, können Sie die installierte Version unter Bibliotheksverwaltung ablesen. Fehlt dieser Eintrag, installieren Sie den kostenfreien Connector.
+Informationen zu dessen Installation finden Sie auf unserer Homepage.
+
Klicken Sie auf den Reiter Downloads und wählen dort das für Ihre Installation passende Paket.
Löschen Sie den Ordner contenttabs und seine enthaltenen Elemente aus dem Verzeichnis source/modules/d3 Ihres Shops.
+Bestätigen Sie anschließend im Shopadmin unter Erweiterungen -> Module -> Installierte Shop-Module die Nachricht:
+
+
Es gibt registrierte Erweiterungen im eShop, deren Verzeichnis nicht vorhanden ist.
+Möchten Sie alle Modulinformationen einschließlich Konfigurationseinstellungen und Blockinformationen für Templates löschen?
Das Modul legt Informationen in der Datenbank ab. Sofern diese Daten nicht mehr benötigt werden, können diese gelöscht werden.
+
+
Legen Sie sich vorab bitte unbedingt eine Sicherung an, um die Daten im Zweifelsfall wiederherstellen zu können.
+
+
Für das Modul Content Tabs sind dies die folgende Tabellen und Felder:
+
+
die komplette Tabelle d3contenttabs
+
+
sofern vorhanden: d3contenttabs_setX *)
+
+
sowie diese Einträge bestehenden Tabellen:
+
+
in Tabelle d3_cfg_mod:
+
+
den Eintrag oxmodid = "d3contenttabs" **)
+
+
+
+
*) _setX ist eine Tabellenliste, die mit _set1 beginnen und shopabhängig auch Tabellen mit höheren Nummerierungen enthalten kann (z.B. _set2, _set3, …).
+Zu einigen dieser Tabellen wurden die Config-Einträge aMultiLangTables (bei Enterprise Edition auch aMultiShopTables) um entsprechende Einträge ergänzt). Bereinigen Sie diese ebenfalls.
+
**) Diesen Eintrag gibt es ggf. für jeden Subshop. Entfernen Sie diesen nur für die Mandanten, in denen das Modul nicht mehr installiert ist.
Starten Sie die Konsole Ihres Webservers und wechseln in das Hauptverzeichnis Ihres Shops (oberhalb des source- und vendor-Verzeichnisses). Führen Sie Sie dort diesen Befehl aus:
+
php composer remove d3/contenttabs --no-update
+
+
+
Achten Sie darauf, dass die Installation über Composer mit derselben PHP-Version erfolgt, in der auch Ihr Shop installiert ist. Sie erhalten sonst unpassende Modulpakete.
+
+
+
Benötigt Ihre Installation einen anderen Aufruf von Composer, ändern Sie den Befehl bitte entsprechend ab. Für weitere Optionen dieses Befehls lesen Sie bitte die Dokumentation von Composer.
Deaktivieren Sie das Modul Content Tabs über den Shopadmin Erweiterungen -> Module. Klicken Sie nach Auswahl von Content Tabs auf den Button Deaktivieren.
Deaktivieren Sie alle vorhandenen Erweiterungen, die auf dem Modul Content Tabs aufbauen und löschen bitte alle Dateien dieser Erweiterungen. Entfernen Sie ebenfalls alle individuellen Templateanpassungen für dieses Modul.
Leeren Sie das Verzeichnis tmp über Admin -> Module -> Modul-Connector -> TMP leeren. Markieren Sie komplett leeren und klicken auf TMP leeren.
+
Sofern die Views nicht automatisch aktualisiert werden, führen Sie dies noch durch.
+
+
Erfordert Ihre Installation eine andere Vorgehensweise zum Leeren des Caches oder zum Aktualisieren der Datenbank-Viewtabellen, führen Sie diese bitte aus.
Das Modul verwendet Lizenzschlüssel, um die Lizenzverwaltung für Sie und auch für uns einfacher zu gestalten. Hierbei haben Sie je nach Modul die Wahl zwischen einer kostenfreien Testlizenz und einer Lizenz für den Einsatz im Livebetrieb.
+
Rufen Sie zum Anfordern des Lizenzschlüssels die Modulverwaltung im Adminbereich unter Module -> Modul-Connector -> Modulverwaltung auf. Klappen Sie den Eintrag des jeweiligen Moduls aus. Sofern erforderlich, können Sie hier den Lizenzassistenten starten, der schnell und einfach ihr Modul aktiviert.
Benötigt Ihre Installation einen anderen Aufruf von Composer, ändern Sie den Befehl bitte entsprechend ab. Für weitere Optionen dieses Befehls lesen Sie bitte die Dokumentation von Composer.
Manche Provider erfordern besondere Einstellungen für installierte Module. Ob Ihr Anbieter spezielle Anforderungen stellt und wie diese aussehen, kontrollieren Sie bitte in unserer FAQ.
Direkt nach der Modulaktivierung startet der Assistent, der Sie durch die Shopanpassung führt. Darin können Sie verschiedene Optionen der Installation wählen.
+
Den Installationsassistenten finden Sie auch unter den Menüpunkten Admin -> Module -> Modul-Connector -> Modulverwaltung -> Modulinstallation.
+
Bei tiefgreifenden Änderungen an Ihrem Shop (z.B. Hinzufügen weiterer Sprachen oder Mandanten) rufen Sie den Installationsassistenten bitte erneut auf, um dann eventuell notwendige Nacharbeiten für das Modul ausführen zu lassen.
+
Möchten Sie die Änderungen manuell installieren, können Sie sich über diesen Assistenten ebenfalls eine Checkliste erstellen.
Leeren Sie das Verzeichnis tmp über Admin -> Module -> Modul-Connector -> TMP leeren. Markieren Sie komplett leeren und klicken auf TMP leeren.
+
Sofern die Views nicht automatisch aktualisiert werden, führen Sie dies noch durch.
+
+
Erfordert Ihre Installation eine andere Vorgehensweise zum Leeren des Caches oder zum Aktualisieren der Datenbank-Viewtabellen, führen Sie diese bitte aus.
Bei individuellen Änderungen von Moduldateien empfehlen wir, jeweils die Überladungsmöglichkeiten des Shops dafür zu verwenden. So brauchen Sie die originalen Moduldateien nicht verändern und erhalten sich so die Updatefähigkeit des Shops und des Moduls. Beachten Sie, dass Moduldateien bei Updateinstallationen überschrieben werden.
+
Weitere Informationen zu den Überladungsmöglichkeiten verschiedener Dateien finden Sie in unserer FAQ.
Das Modul ist für die Verwendung mit den folgenden OXID-Themes vorbereitet:
+
+
Flow
+
Azure
+
+
Verwenden Sie in Ihrem Shop ein angepasstes Verzeichnis für Ihre Templates (neues Theme oder CustomTheme), kopieren Sie die Templates und / oder die CSS-Dateien in die neuen Ordner.
+
Ähnelt Ihr neues Theme technisch einem der OXID-Originale, können Sie dieses darauf umleiten. Childs von originalen OXID- Themes benötigen keine Umleitung.
+
Weitere Informationen zur Umleitung finden Sie in unserer FAQ.
Installieren Sie bitte zuerst unseren Modul-Connector in der erforderlichen Version. Ob dies evtl. schon geschehen ist, können Sie im Adminbereich Ihres Shops prüfen.
+Existiert der Punkt Module -> Modul-Connector, können Sie die installierte Version unter Bibliotheksverwaltung ablesen.
+Fehlt dieser Eintrag, laden Sie den Connector kostenfrei von unserer Homepage.
+
Klicken Sie auf den Reiter Download und dort auf den Link Download Erstinstallation Modul-Connector.
Das Modul Content Tabs bringt einen umfangreichen Adminbereich mit, in dem Sie die Konfigurationseinstellungen des Moduls setzen können. Über das Menü Module -> Content Tabs -> Tabverwaltung erreichen Sie die Einstellungen für die zusätzlichen Langtexte der Artikel.
Starten Sie die Konsole Ihres Webservers und wechseln in das Hauptverzeichnis Ihres
+Shops (oberhalb des source- und vendor-Verzeichnisses). Führen Sie dort diesen Befehl aus:
+
php composer update d3/contenttabs --no-dev
+
+
+
Achten Sie darauf, dass die Installation über Composer mit derselben PHP-Version erfolgt, in der auch Ihr Shop installiert ist. Sie erhalten sonst unpassende Modulpakete.
+
+
+
Benötigt Ihre Installation einen anderen Aufruf von Composer, ändern Sie den Befehl bitte entsprechend ab. Für weitere Optionen dieses Befehls lesen Sie bitte die Dokumentation von Composer.
Wird für die neue Modulversion ein aktualisierter Lizenzschlüssel benötigt, tragen Sie diesen im Adminbereich unter Module -> Modul-Connector -> Modulverwaltung ein. Klappen Sie dazu den Eintrag des jeweiligen Moduls aus und starten den Lizenzassistent.
Durch einen Wechsel der Paketquelle ist die veraltete Angabe nicht mehr erforderlich. Um Konflikte zu vermeiden, sollte die alte Paketquelle entfernt werden. Haben Sie diese schon früher entfernt, können Sie diesen Schritt überspringen.
+
Starten Sie die Konsole Ihres Webservers und wechseln in das Hauptverzeichnis Ihres Shops (oberhalb des source- und vendor-Verzeichnisses). Senden Sie dort diesen Befehl ab:
Achten Sie darauf, dass die Installation über Composer mit derselben PHP-Version erfolgt, in der auch Ihr Shop installiert ist. Sie erhalten sonst unpassende Modulpakete.
+
+
+
Benötigt Ihre Installation einen anderen Aufruf von Composer, ändern Sie den Befehl bitte entsprechend ab. Für weitere Optionen dieses Befehls lesen Sie bitte die Dokumentation von Composer.
Manche Provider erfordern besondere Einstellungen für installierte Module. Ob Ihr Anbieter spezielle Anforderungen stellt und wie diese aussehen, kontrollieren Sie bitte in unserer FAQ.
Ob Shopanpassungen notwendig sind, ist von der Versionsänderung des Moduls abhängig.
+
Möglicherweise sehen Sie nach dem Neuaktivieren des Moduls den Installationsassistent, der Sie durch die Änderungen führt. Folgen Sie dann den einzelnen Schritten. Möchten Sie die Änderungen manuell installieren, können Sie sich über diesen Assistenten ebenfalls eine Checkliste erstellen.
+
Wird der Assistent nicht gezeigt (Sie sehen wieder die Modulübersicht), waren keine Anpassungen am Shop notwendig.
+
Ob erforderliche Updates ausgeführt werden sollen, können Sie jederzeit im Adminbereich unter Module -> Modul-Connector -> Modulverwaltung -> Modulinstallation prüfen.
Leeren Sie das Verzeichnis tmp über Admin -> Module -> Modul-Connector -> TMP leeren. Markieren Sie komplett leeren und klicken auf TMP leeren.
+
Sofern die Views nicht automatisch aktualisiert werden, führen Sie dies noch durch.
+
+
Erfordert Ihre Installation eine andere Vorgehensweise zum Leeren des Caches oder zum Aktualisieren der Datenbank-Viewtabellen, führen Sie diese bitte aus.
Bei den Modulversionen 3.0.1.0 sowie 3.1.0.0 hat sich die Struktur der Block- und Template-Dateien innerhalb des Moduls geändert. Des Weiteren wurde der Bereich changed_full im Modul entfernt.
+Haben Sie Anpassungen an damaligen, moduleigenen Dateien vorgenommen, übernehmen Sie diese bitte in eine eigene Erweiterung. Die Modulstrukturen finden Sie nachfolgend:
+
Version 3.0.0.3 oder niedriger
+
ab Verzeichnis /modules/d3/d3contenttabs/views/azure/tpl/
+
+
+
+
+
+
+
+
+
+
A
+
-/-
+
+
+
B
+
page/details/inc/d3_ajax_content_tab_1.tpl
+
+
+
C
+
page/details/inc/d3_ajax_content_tab_2.tpl
+
+
+
D
+
page/details/inc/d3_ajax_content_tab_3.tpl
+
+
+
E
+
page/details/inc/d3_ajax_content_tab_4.tpl
+
+
+
F
+
page/details/inc/d3_ajax_content_tab_5.tpl
+
+
+
+
Version 3.0.1.0
+
ab Verzeichnis /modules/d3/d3contenttabs/views/
+
+
+
+
+
+
+
+
+
+
A
+
blocks/details_tabs_longdescription.tpl
+
+
+
B
+
azure/tpl/d3contenttabs_tab1.tpl
+
+
+
C
+
azure/tpl/d3contenttabs_tab2.tpl
+
+
+
D
+
azure/tpl/d3contenttabs_tab3.tpl
+
+
+
E
+
azure/tpl/d3contenttabs_tab4.tpl
+
+
+
F
+
azure/tpl/d3contenttabs_tab5.tpl
+
+
+
+
bis Version 3.2.0.x
+
ab Verzeichnis /modules/d3/d3contenttabs/views/
+
+
+
+
+
+
+
+
+
+
A
+
azure/blocks/details_tabs_longdescription.tpl
+
+
+
B
+
tpl/d3contenttabs_tab1.tpl
+
+
+
C
+
tpl/d3contenttabs_tab2.tpl
+
+
+
D
+
tpl/d3contenttabs_tab3.tpl
+
+
+
E
+
tpl/d3contenttabs_tab4.tpl
+
+
+
F
+
tpl/d3contenttabs_tab5.tpl
+
+
+
+
aktuelle Struktur ab Version 4.0.0.0
+
ab Verzeichnis /sources/modules/d3/contenttabs/Application/views/
+
+
+
+
+
+
+
+
+
+
A
+
blocks/details_tabs_longdescription.tpl
+
+
+
B
+
tpl/d3contenttabs_tab1.tpl
+
+
+
C
+
tpl/d3contenttabs_tab1.tpl
+
+
+
...
+
...
+
+
+
+
Alle weiteren Updateschritte entnehmen Sie bitte den weiteren Unterseiten.
Bei Bedarf bieten wir Ihnen auch gern die Installation des Moduls in Ihrem Shop an. Geben Sie uns bitte unter den unter Hilfe und Support genannten Kontaktdaten Bescheid.
Bei Bedarf bieten wir Ihnen auch gern die Installation des Moduls in Ihrem Shop an. Geben Sie uns bitte unter den unten genannten Kontaktdaten Bescheid.
+
Haben Sie Fragen oder Unklarheiten in Verbindung mit diesem Modul oder dessen Installation, stehen Ihnen Hilfetexte in unserer Modul-FAQ zur Verfügung. Finden Sie darin die benötigten Antworten nicht, kontaktieren Sie uns bitte unter den folgenden Möglichkeiten:
per Telefon: (+49) 37 21 / 26 80 90 zu unseren Bürozeiten
+
+
Geben Sie bitte an, wo und wie wir gegebenenfalls vorhandene Schwierigkeiten nachvollziehen können. Sind Ihre Fragen shopspezifisch, benötigen wir möglicherweise Zugangsdaten zum betreffenden Shop.
+
Wir wünschen Ihnen mit Ihrem Shop und dem Modul viel Erfolg!
';
+ }
+ }
+ }
+
+ $("body").addClass("with-search").scrollTop(0);
+ tipue_backdrop.show();
+ tipue_container.scrollTop(0);
+ tipue_container.show().html(output);
+ }
+
+ };
+
+})(jQuery);
diff --git a/docs/html/tipuesearch/tipuesearch_content.json b/docs/html/tipuesearch/tipuesearch_content.json
new file mode 100644
index 0000000..ac32586
--- /dev/null
+++ b/docs/html/tipuesearch/tipuesearch_content.json
@@ -0,0 +1 @@
+{"pages":[{"title":"<\/i> Content Tabs","text":"Weitere Informationen zum Modul Content Tabs finden Sie in unserem Shop: https:\/\/www.oxidmodule.com\/OXID-eShop\/Module\/Content-Tabs-fuer-Oxid-PE.html","tags":"","url":"index.html"},{"title":"Changelog","text":"Changelog All notable changes to this project will be documented in this file. 4.1.0.0 - 2019-01-18 Variantenartikel erben Langtexte der Elternartikel keine Bearbeitung von zwischen Mandanten vererbten Artikelinhalten m\u00f6glich Admin deaktiviert Eingabefelder, wenn deren Funktion vom Tab vordefiniert ist Admin zeigt Hinweis f\u00fcr Standard-Tabtitel, wenn kein Titel vergeben wurde modulspzifisches Thememapping eingef\u00fcgt Tab-Eigenschaften werden in Artikel-Objekt geladen und gespeichert (statt im propriet\u00e4ren eigenen Objekt) L\u00f6schfunktion f\u00fcr angelegten Tab eingef\u00fcgt Logik aus Template ins Model verschoben (flow + azure) auf HTML-Dokumentation umgestellt 4.0.0.2 - 2018-10-19 Freigabe f\u00fcr OXID 6.1.x Fehlerhinweise eingef\u00fcgt, wenn Langtexte nicht ausreichend bef\u00fcllt sind bugfix: Schreibschutz f\u00fcr Langtexte an Artikelvarianten entfernt 4.0.0.1 - 2018-03-01 Exception im Admin unter \/Content Tabs\/Tabverwaltung\/Stamm\/ 4.0.0.0 - 2018-03-01 Kompatibilit\u00e4t und Support ab Oxid 6.0.0 Integration eines eigenen Admin-Bereich " Content Tabs" Titel und Langtexte der Tabs werden in einer eigenen Tabelle gespeichert Langtexte haben eine "Aktiv" - Option erhalten, welche im Frontend zus\u00e4tzlich gepr\u00fcft wird Altlasten und unn\u00f6tige Dateien entfernt Umstellung auf Namespaces Grundinstallation via Composer 3.2.0.1 - 2016-12-19 Support f\u00fcr Apache 2.4 Paketbereitstellung f\u00fcr ionCube 3.2.0.0 - 2016-07-22 drop: techn. Support f\u00fcr Shopversionen 4.7.x eingestellt add: Freigabe f\u00fcr 4.10.x add: Pr\u00fcfung auf g\u00fcltige Modul-Dateien implementiert add feature: Support f\u00fcr Oxid-Theme Flow 3.1.0.2 - 2015-10-07 bugfix: "Shop offline" Anzeige nach der Wahl einer Variante im Frontend bugfix: gepflegte Tab-Inhalte wurden nicht angezeigt 3.1.0.1 - 2015-09-03 automatische Installation aufgeteilt, Anlegen der Datenbankfelder erfolgt "step by step" \u00dcbernahme Moduleigener Templates in copy_this und Verweis zur \u00dcberladung siehe FAQ fehlende \u00dcbersetzungen im Shopadmin nachgetragen Modulfreigabe f\u00fcr php5.5 und php5.6 Aktualisierung Vorabpr\u00fcfung und Installationsanleitung 3.1.0.0 - 2014-11-12 support for mobile-themes adjustment of the structure update precheck 3.0.1.0 - 2014-08-08 Module compatible with Shopvesion 4.8.7 Show Message in Backend if Module is not active rename module-tab-Templates adjustment of the structure delete deprecated files in autoupdate fix module entrys in shopconfiguration 3.0.0.3 - 2014-05-05 Update Precheck 3.0.0.2 - 2014-03-18 bugfix for saving longdesc in admin 3.0.0.1 - 2013-02-22 bugfix when module is inactive, tabs will be shown in frontend 3.0.0.0 - 2013-02-19 restructured for 4.7 \/ 5.0 2.4.6.2 - 2013-06-27 add funktionality for Edition EE add Versioncheck in oxarticle-extension till 4.5.x other method for getting Longdescription than in 4.6.x 2.4.6.1 - 2013-03-12 bugfix in update.sql 2.4.6.0 - 2013-02-01 tab content moved to templates, add extendable blocks 2.4.5.0 - 2012-09-05 added 4.6.0 functionality 2.4.4 - 2012-05-31 bug fix: javaScript fallback causes shop-in-tab-problem 2.4.3 - 2011-11-02 added templates for 451 - 454 added javaScript fallback for non js user 2.4.2 - 2011-09-19 bug fix price doesn't save bug fix showed empty tabs 2.4.1 - 2011-08-16 inheritance implemented bug in save function fixed 2.4.0 - 2011-07-19 restructured removed Ajax lib, switched to jQuery removed ox_cmp module renamed fields (from oxlongdescXXX to d3longdescXXX) in database added 4.5.0 templates 2.1 - 2009-11-13 Xajax-Implementierung au neues Intergrationsschema umgestellt langtext- und templatebasierte Versionen zusammengef\u00fchrt Fallback-Funktion f\u00fcr Nicht-JavaScript-Einsatz Langtexte in einem Admin-Tab zusammengefa\u00dft Langtext mehrsprachig verf\u00fcgbar 2.0 - 2009-08-26 auf PE4 portiert 1.1 - 2008-09-22 Fallback-Funktion f\u00fcr Nicht-JavaScript-Einsatz (tpl) Attribute und Bewertungen stehen nun ebenfalls zur Verf\u00fcgung (tpl) 1.0 - 2008-09-12 Grundfunktion zum Modul komplettiert Scriptbasis ist aktuelles Xajax-Integrationsschema","tags":"","url":"changelog\/Changelog.html"},{"title":"Installation \/ Update \/ Deinstallation","text":"Anforderungen Neuinstallation Update Deinstallation Bei Bedarf bieten wir Ihnen auch gern die Installation des Moduls in Ihrem Shop an. Geben Sie uns bitte unter den unter Hilfe und Support genannten Kontaktdaten Bescheid.","tags":"","url":"installation\/index.html"},{"title":"Systemanforderungen","text":"PHP Version 5.6.x bis 7.2.x PHP Decoder installierter ionCube Loader Shopversionen \/ -editionen OXID eShop Community Edition (CE), Professional Edition (PE) oder Enterprise Edition (EE) in Compilation Version 6.0.x 6.1.x Modul-Connector (kostenfrei bei erh\u00e4ltlich) ab Version 5.1.0.0 Installation via Composer mindestens ein freier Cronjob zur automatischen Ausf\u00fchrung der angelegten Aufgaben Beachten Sie, dass die Ihnen vorliegende Modulversion entsprechend f\u00fcr PHP 5.6, PHP 7.0, PHP 7.1 oder PHP 7.2 sowie dem auf Ihrem Server vorhandenen Decoder (ionCube Loader) kompatibel ist. Im Zweifelsfall kontaktieren Sie uns und nennen den f\u00fcr Ihren Shop genutzten Decoder und die PHP-Version. Kontrollieren Sie bitte auch, ob diese Modulversion f\u00fcr die von Ihnen eingesetzte Shopedition (Professional Edition (PE) oder Enterprise Edition (EE)) ausgelegt ist.","tags":"","url":"installation\/Anforderungen\/Systemanforderungen.html"},{"title":"Vorbereitungen","text":"Installieren Sie bitte zuerst unseren Modul-Connector in der erforderlichen Version. Ob dies evtl. schon geschehen ist, k\u00f6nnen Sie im Adminbereich Ihres Shops pr\u00fcfen. Existiert der Punkt Module -> Modul-Connector, k\u00f6nnen Sie die installierte Version unter Bibliotheksverwaltung ablesen. Fehlt dieser Eintrag, installieren Sie den kostenfreien Connector. Informationen zu dessen Installation finden Sie auf unserer Homepage. Klicken Sie auf den Reiter Downloads und w\u00e4hlen dort das f\u00fcr Ihre Installation passende Paket.","tags":"","url":"installation\/Anforderungen\/Vorbereitungen.html"},{"title":"Neuinstallation","text":"Schnellstart per Composer php composer require d3\/contenttabs \u2013-update-no-dev Detailliertere Angaben zur Installation entnehmen Sie bitte den folgenden Seiten.","tags":"","url":"installation\/Neuinstallation\/index.html"},{"title":"Vorbereitungen","text":"Installieren Sie bitte zuerst unseren Modul-Connector in der erforderlichen Version. Ob dies evtl. schon geschehen ist, k\u00f6nnen Sie im Adminbereich Ihres Shops pr\u00fcfen. Existiert der Punkt Module -> Modul-Connector, k\u00f6nnen Sie die installierte Version unter Bibliotheksverwaltung ablesen. Fehlt dieser Eintrag, laden Sie den Connector kostenfrei von unserer Homepage. Klicken Sie auf den Reiter Download und dort auf den Link Download Erstinstallation Modul-Connector.","tags":"","url":"installation\/Neuinstallation\/Vorbereitung.html"},{"title":"Modul zur Installation hinzuf\u00fcgen","text":"F\u00fchren Sie in der Konsole im selben Verzeichnis diesen Befehl aus, um das Modul Content Tabs zur Installation hinzuzuf\u00fcgen: php composer require d3\/contenttabs --update-no-dev Ben\u00f6tigt Ihre Installation einen anderen Aufruf von Composer, \u00e4ndern Sie den Befehl bitte entsprechend ab. F\u00fcr weitere Optionen dieses Befehls lesen Sie bitte die Dokumentation von Composer.","tags":"","url":"installation\/Neuinstallation\/Modul_hinzufuegen.html"},{"title":"Verwendung eigener Themes","text":"Das Modul ist f\u00fcr die Verwendung mit den folgenden OXID-Themes vorbereitet: Flow Azure Verwenden Sie in Ihrem Shop ein angepasstes Verzeichnis f\u00fcr Ihre Templates (neues Theme oder CustomTheme), kopieren Sie die Templates und \/ oder die CSS-Dateien in die neuen Ordner. \u00c4hnelt Ihr neues Theme technisch einem der OXID-Originale, k\u00f6nnen Sie dieses darauf umleiten. Childs von originalen OXID- Themes ben\u00f6tigen keine Umleitung. Weitere Informationen zur Umleitung finden Sie in unserer FAQ.","tags":"","url":"installation\/Neuinstallation\/Verwendung_eigener_Themes.html"},{"title":"Providerspezifische Installation","text":"Manche Provider erfordern besondere Einstellungen f\u00fcr installierte Module. Ob Ihr Anbieter spezielle Anforderungen stellt und wie diese aussehen, kontrollieren Sie bitte in unserer FAQ.","tags":"","url":"installation\/Neuinstallation\/Providerspezifische_Installation.html"},{"title":"Modul im Shop aktivieren","text":"Aktivieren Sie das Modul \u00fcber den Shopadmin unter Erweiterungen -> Module. Klicken Sie nach Auswahl von Content Tabs auf den Button Aktivieren. Enterprise Editon: Achten Sie darauf, dass das Modul in weiteren Shops (Mall) ebenfalls aktiviert werden muss, um dessen Funktion dort auch zu nutzen.","tags":"","url":"installation\/Neuinstallation\/Modul_im_Shop_aktivieren.html"},{"title":"Shopanpassungen installieren","text":"Direkt nach der Modulaktivierung startet der Assistent, der Sie durch die Shopanpassung f\u00fchrt. Darin k\u00f6nnen Sie verschiedene Optionen der Installation w\u00e4hlen. Den Installationsassistenten finden Sie auch unter den Men\u00fcpunkten Admin -> Module -> Modul-Connector -> Modulverwaltung -> Modulinstallation. Bei tiefgreifenden \u00c4nderungen an Ihrem Shop (z.B. Hinzuf\u00fcgen weiterer Sprachen oder Mandanten) rufen Sie den Installationsassistenten bitte erneut auf, um dann eventuell notwendige Nacharbeiten f\u00fcr das Modul ausf\u00fchren zu lassen. M\u00f6chten Sie die \u00c4nderungen manuell installieren, k\u00f6nnen Sie sich \u00fcber diesen Assistenten ebenfalls eine Checkliste erstellen.","tags":"","url":"installation\/Neuinstallation\/Shopanpassungen_installieren.html"},{"title":"TMP-Ordner leeren","text":"Leeren Sie das Verzeichnis tmp \u00fcber Admin -> Module -> Modul-Connector -> TMP leeren. Markieren Sie komplett leeren und klicken auf TMP leeren. Sofern die Views nicht automatisch aktualisiert werden, f\u00fchren Sie dies noch durch. Erfordert Ihre Installation eine andere Vorgehensweise zum Leeren des Caches oder zum Aktualisieren der Datenbank-Viewtabellen, f\u00fchren Sie diese bitte aus.","tags":"","url":"installation\/Neuinstallation\/TMP-Ordner_leeren.html"},{"title":"Lizenzschl\u00fcssel eintragen","text":"Das Modul verwendet Lizenzschl\u00fcssel, um die Lizenzverwaltung f\u00fcr Sie und auch f\u00fcr uns einfacher zu gestalten. Hierbei haben Sie je nach Modul die Wahl zwischen einer kostenfreien Testlizenz und einer Lizenz f\u00fcr den Einsatz im Livebetrieb. Rufen Sie zum Anfordern des Lizenzschl\u00fcssels die Modulverwaltung im Adminbereich unter Module -> Modul-Connector -> Modulverwaltung auf. Klappen Sie den Eintrag des jeweiligen Moduls aus. Sofern erforderlich, k\u00f6nnen Sie hier den Lizenzassistenten starten, der schnell und einfach ihr Modul aktiviert.","tags":"","url":"installation\/Neuinstallation\/Lizenz_eintragen.html"},{"title":"Updatef\u00e4higkeit","text":"Bei individuellen \u00c4nderungen von Moduldateien empfehlen wir, jeweils die \u00dcberladungsm\u00f6glichkeiten des Shops daf\u00fcr zu verwenden. So brauchen Sie die originalen Moduldateien nicht ver\u00e4ndern und erhalten sich so die Updatef\u00e4higkeit des Shops und des Moduls. Beachten Sie, dass Moduldateien bei Updateinstallationen \u00fcberschrieben werden. Weitere Informationen zu den \u00dcberladungsm\u00f6glichkeiten verschiedener Dateien finden Sie in unserer FAQ.","tags":"","url":"installation\/Neuinstallation\/Updatefaehigkeit.html"},{"title":"Update","text":"versionsabh\u00e4ngige Besonderheiten Bei den Modulversionen 3.0.1.0 sowie 3.1.0.0 hat sich die Struktur der Block- und Template-Dateien innerhalb des Moduls ge\u00e4ndert. Des Weiteren wurde der Bereich changed_full im Modul entfernt. Haben Sie Anpassungen an damaligen, moduleigenen Dateien vorgenommen, \u00fcbernehmen Sie diese bitte in eine eigene Erweiterung. Die Modulstrukturen finden Sie nachfolgend: Version 3.0.0.3 oder niedriger ab Verzeichnis \/modules\/d3\/d3contenttabs\/views\/azure\/tpl\/ A -\/- B page\/details\/inc\/d3_ajax_content_tab_1.tpl C page\/details\/inc\/d3_ajax_content_tab_2.tpl D page\/details\/inc\/d3_ajax_content_tab_3.tpl E page\/details\/inc\/d3_ajax_content_tab_4.tpl F page\/details\/inc\/d3_ajax_content_tab_5.tpl Version 3.0.1.0 ab Verzeichnis \/modules\/d3\/d3contenttabs\/views\/ A blocks\/details_tabs_longdescription.tpl B azure\/tpl\/d3contenttabs_tab1.tpl C azure\/tpl\/d3contenttabs_tab2.tpl D azure\/tpl\/d3contenttabs_tab3.tpl E azure\/tpl\/d3contenttabs_tab4.tpl F azure\/tpl\/d3contenttabs_tab5.tpl bis Version 3.2.0.x ab Verzeichnis \/modules\/d3\/d3contenttabs\/views\/ A azure\/blocks\/details_tabs_longdescription.tpl B tpl\/d3contenttabs_tab1.tpl C tpl\/d3contenttabs_tab2.tpl D tpl\/d3contenttabs_tab3.tpl E tpl\/d3contenttabs_tab4.tpl F tpl\/d3contenttabs_tab5.tpl aktuelle Struktur ab Version 4.0.0.0 ab Verzeichnis \/sources\/modules\/d3\/contenttabs\/Application\/views\/ A blocks\/details_tabs_longdescription.tpl B tpl\/d3contenttabs_tab1.tpl C tpl\/d3contenttabs_tab1.tpl ... ... Alle weiteren Updateschritte entnehmen Sie bitte den weiteren Unterseiten.","tags":"","url":"installation\/Update\/index.html"},{"title":"Modul deaktivieren","text":"Deaktivieren Sie das Modul \u00fcber den Shopadmin unter Erweiterungen -> Module. Klicken Sie nach Auswahl von Content Tabs auf den Button Deaktivieren.","tags":"","url":"installation\/Update\/Modul_deaktivieren.html"},{"title":"Paketquelle entfernen","text":"Durch einen Wechsel der Paketquelle ist die veraltete Angabe nicht mehr erforderlich. Um Konflikte zu vermeiden, sollte die alte Paketquelle entfernt werden. Haben Sie diese schon fr\u00fcher entfernt, k\u00f6nnen Sie diesen Schritt \u00fcberspringen. Starten Sie die Konsole Ihres Webservers und wechseln in das Hauptverzeichnis Ihres Shops (oberhalb des source- und vendor-Verzeichnisses). Senden Sie dort diesen Befehl ab: php composer config --unset repositories.d3 php composer config --unset repositories.D3modules Achten Sie darauf, dass die Installation \u00fcber Composer mit derselben PHP-Version erfolgt, in der auch Ihr Shop installiert ist. Sie erhalten sonst unpassende Modulpakete. Ben\u00f6tigt Ihre Installation einen anderen Aufruf von Composer, \u00e4ndern Sie den Befehl bitte entsprechend ab. F\u00fcr weitere Optionen dieses Befehls lesen Sie bitte die Dokumentation von Composer.","tags":"","url":"installation\/Update\/Paketquelle_entfernen.html"},{"title":"Dateien erneuern","text":"Starten Sie die Konsole Ihres Webservers und wechseln in das Hauptverzeichnis Ihres Shops (oberhalb des source- und vendor-Verzeichnisses). F\u00fchren Sie dort diesen Befehl aus: php composer update d3\/contenttabs --no-dev Achten Sie darauf, dass die Installation \u00fcber Composer mit derselben PHP-Version erfolgt, in der auch Ihr Shop installiert ist. Sie erhalten sonst unpassende Modulpakete. Ben\u00f6tigt Ihre Installation einen anderen Aufruf von Composer, \u00e4ndern Sie den Befehl bitte entsprechend ab. F\u00fcr weitere Optionen dieses Befehls lesen Sie bitte die Dokumentation von Composer.","tags":"","url":"installation\/Update\/Dateien_erneuern.html"},{"title":"Providerspezifische Installation","text":"Manche Provider erfordern besondere Einstellungen f\u00fcr installierte Module. Ob Ihr Anbieter spezielle Anforderungen stellt und wie diese aussehen, kontrollieren Sie bitte in unserer FAQ.","tags":"","url":"installation\/Update\/Providerspezifische_Installation.html"},{"title":"Modulinformationen aktualisieren","text":"Wechseln Sie im Adminbereich zu Erweiterungen -> Module. Klicken Sie nach Auswahl von Content Tabs auf den Button Aktivieren.","tags":"","url":"installation\/Update\/Modulinformationen_aktualisieren.html"},{"title":"Shopanpassungen installierren","text":"Ob Shopanpassungen notwendig sind, ist von der Versions\u00e4nderung des Moduls abh\u00e4ngig. M\u00f6glicherweise sehen Sie nach dem Neuaktivieren des Moduls den Installationsassistent, der Sie durch die \u00c4nderungen f\u00fchrt. Folgen Sie dann den einzelnen Schritten. M\u00f6chten Sie die \u00c4nderungen manuell installieren, k\u00f6nnen Sie sich \u00fcber diesen Assistenten ebenfalls eine Checkliste erstellen. Wird der Assistent nicht gezeigt (Sie sehen wieder die Modul\u00fcbersicht), waren keine Anpassungen am Shop notwendig. Ob erforderliche Updates ausgef\u00fchrt werden sollen, k\u00f6nnen Sie jederzeit im Adminbereich unter Module -> Modul-Connector -> Modulverwaltung -> Modulinstallation pr\u00fcfen.","tags":"","url":"installation\/Update\/Shopanpassungen_installieren.html"},{"title":"TMP-Ordner leeren","text":"Leeren Sie das Verzeichnis tmp \u00fcber Admin -> Module -> Modul-Connector -> TMP leeren. Markieren Sie komplett leeren und klicken auf TMP leeren. Sofern die Views nicht automatisch aktualisiert werden, f\u00fchren Sie dies noch durch. Erfordert Ihre Installation eine andere Vorgehensweise zum Leeren des Caches oder zum Aktualisieren der Datenbank-Viewtabellen, f\u00fchren Sie diese bitte aus.","tags":"","url":"installation\/Update\/TMP-Ordner_leeren.html"},{"title":"Lizenzschl\u00fcssel aktualisieren","text":"Wird f\u00fcr die neue Modulversion ein aktualisierter Lizenzschl\u00fcssel ben\u00f6tigt, tragen Sie diesen im Adminbereich unter Module -> Modul-Connector -> Modulverwaltung ein. Klappen Sie dazu den Eintrag des jeweiligen Moduls aus und starten den Lizenzassistent.","tags":"","url":"installation\/Update\/Lizenzschluessel_aktualisieren.html"},{"title":"Erweiterungen anpassen","text":"Haben Sie f\u00fcr dieses Modul eigene Erweiterung entwickelt, gleichen Sie dies bitte mit der neuen Fassung des Moduls ab.","tags":"","url":"installation\/Update\/Erweiterungen_anpassen.html"},{"title":"Installationspr\u00fcfung","text":"Um die erfolgreiche Installation zu pr\u00fcfen, k\u00f6nnen Sie die folgende(n) Checkliste(n) verwenden: Einstellungsunabh\u00e4ngige Pr\u00fcfungen Backend Modul ist unter Erweiterungen -> Module aktiv geschaltet Modul ist unter Module -> Modul-Connector -> Modulverwaltung aktiv geschaltet Modul zeigt unter Module -> Content Tabs einen eigenen Bereich f\u00fcr Einstellungen Einstellungsabh\u00e4ngige Pr\u00fcfungen Frontend das Modul zeigt auf der Produktdetailseite eigene Tab-Bezeichnungen an nach Auswahl eines Tabs werden die dazugeh\u00f6rigen Langtexte an gezeigt","tags":"","url":"installation\/Installationspruefung.html"},{"title":"Schnellstart","text":"Das Modul Content Tabs bringt einen umfangreichen Adminbereich mit, in dem Sie die Konfigurationseinstellungen des Moduls setzen k\u00f6nnen. \u00dcber das Men\u00fc Module -> Content Tabs -> Tabverwaltung erreichen Sie die Einstellungen f\u00fcr die zus\u00e4tzlichen Langtexte der Artikel.","tags":"","url":"installation\/Schnellstart.html"},{"title":"Modulerweiterungen deaktivieren und entfernen","text":"Deaktivieren Sie alle vorhandenen Erweiterungen, die auf dem Modul Content Tabs aufbauen und l\u00f6schen bitte alle Dateien dieser Erweiterungen. Entfernen Sie ebenfalls alle individuellen Templateanpassungen f\u00fcr dieses Modul.","tags":"","url":"installation\/Deinstallation\/Modulerweiterungen_deaktivieren_und_entfernen.html"},{"title":"Modul deaktivieren","text":"Deaktivieren Sie das Modul Content Tabs \u00fcber den Shopadmin Erweiterungen -> Module. Klicken Sie nach Auswahl von Content Tabs auf den Button Deaktivieren.","tags":"","url":"installation\/Deinstallation\/Modul_deaktivieren.html"},{"title":"Modul aus der Installation entfernen","text":"Starten Sie die Konsole Ihres Webservers und wechseln in das Hauptverzeichnis Ihres Shops (oberhalb des source- und vendor-Verzeichnisses). F\u00fchren Sie Sie dort diesen Befehl aus: php composer remove d3\/contenttabs --no-update Achten Sie darauf, dass die Installation \u00fcber Composer mit derselben PHP-Version erfolgt, in der auch Ihr Shop installiert ist. Sie erhalten sonst unpassende Modulpakete. Ben\u00f6tigt Ihre Installation einen anderen Aufruf von Composer, \u00e4ndern Sie den Befehl bitte entsprechend ab. F\u00fcr weitere Optionen dieses Befehls lesen Sie bitte die Dokumentation von Composer.","tags":"","url":"installation\/Deinstallation\/Modul_aus_der_Installation_entfernen.html"},{"title":"Dateien l\u00f6schen","text":"L\u00f6schen Sie den Ordner contenttabs und seine enthaltenen Elemente aus dem Verzeichnis source\/modules\/d3 Ihres Shops. Best\u00e4tigen Sie anschlie\u00dfend im Shopadmin unter Erweiterungen -> Module -> Installierte Shop-Module die Nachricht: Es gibt registrierte Erweiterungen im eShop, deren Verzeichnis nicht vorhanden ist. M\u00f6chten Sie alle Modulinformationen einschlie\u00dflich Konfigurationseinstellungen und Blockinformationen f\u00fcr Templates l\u00f6schen?","tags":"","url":"installation\/Deinstallation\/Dateien_loeschen.html"},{"title":"Datenbank bereinigen","text":"Das Modul legt Informationen in der Datenbank ab. Sofern diese Daten nicht mehr ben\u00f6tigt werden, k\u00f6nnen diese gel\u00f6scht werden. Legen Sie sich vorab bitte unbedingt eine Sicherung an, um die Daten im Zweifelsfall wiederherstellen zu k\u00f6nnen. F\u00fcr das Modul Content Tabs sind dies die folgende Tabellen und Felder: die komplette Tabelle d3contenttabs sofern vorhanden: d3contenttabs_setX *) sowie diese Eintr\u00e4ge bestehenden Tabellen: in Tabelle d3_cfg_mod: den Eintrag oxmodid = "d3contenttabs" **) *) _setX ist eine Tabellenliste, die mit _set1 beginnen und shopabh\u00e4ngig auch Tabellen mit h\u00f6heren Nummerierungen enthalten kann (z.B. _set2, _set3, \u2026). Zu einigen dieser Tabellen wurden die Config-Eintr\u00e4ge aMultiLangTables (bei Enterprise Edition auch aMultiShopTables) um entsprechende Eintr\u00e4ge erg\u00e4nzt). Bereinigen Sie diese ebenfalls. **) Diesen Eintrag gibt es ggf. f\u00fcr jeden Subshop. Entfernen Sie diesen nur f\u00fcr die Mandanten, in denen das Modul nicht mehr installiert ist.","tags":"","url":"installation\/Deinstallation\/Datenbank_bereinigen.html"},{"title":"TMP-Ordner leeren","text":"Leeren Sie das Verzeichnis tmp \u00fcber Admin -> Module -> Modul-Connector -> TMP leeren. Markieren Sie komplett leeren und klicken auf TMP leeren. Sofern die Views nicht automatisch aktualisiert werden, f\u00fchren Sie dies noch durch. Erfordert Ihre Installation eine andere Vorgehensweise zum Leeren des Caches oder zum Aktualisieren der Datenbank-Viewtabellen, f\u00fchren Sie diese bitte aus.","tags":"","url":"installation\/Deinstallation\/TMP-Ordner_leeren.html"},{"title":"Hilfe und Support","text":"Bei Bedarf bieten wir Ihnen auch gern die Installation des Moduls in Ihrem Shop an. Geben Sie uns bitte unter den unten genannten Kontaktdaten Bescheid. Haben Sie Fragen oder Unklarheiten in Verbindung mit diesem Modul oder dessen Installation, stehen Ihnen Hilfetexte in unserer Modul-FAQ zur Verf\u00fcgung. Finden Sie darin die ben\u00f6tigten Antworten nicht, kontaktieren Sie uns bitte unter den folgenden M\u00f6glichkeiten: per E-Mail: support@shopmodule.com oder \u00fcber das Kontaktformular auf Oxidmodule.com oder per Telefon: (+49) 37 21 \/ 26 80 90 zu unseren B\u00fcrozeiten Geben Sie bitte an, wo und wie wir gegebenenfalls vorhandene Schwierigkeiten nachvollziehen k\u00f6nnen. Sind Ihre Fragen shopspezifisch, ben\u00f6tigen wir m\u00f6glicherweise Zugangsdaten zum betreffenden Shop. Wir w\u00fcnschen Ihnen mit Ihrem Shop und dem Modul viel Erfolg! Ihr -Team.","tags":"","url":"support\/Hilfe-und-Support.html"}]}
\ No newline at end of file
diff --git a/src/Application/Controller/Admin/contentTabList.php b/src/Application/Controller/Admin/contentTabList.php
index da50810..1b28b53 100644
--- a/src/Application/Controller/Admin/contentTabList.php
+++ b/src/Application/Controller/Admin/contentTabList.php
@@ -1,146 +1,260 @@
-1&&$__id[1]==':'){$__id=str_replace('\\','/',substr($__id,2));$__here=str_replace('\\','/',substr($__here,2));}$__rd=str_repeat('/..',substr_count($__id,'/')).$__here.'/';$__i=strlen($__rd);while($__i--){if($__rd[$__i]=='/'){$__lp=substr($__rd,0,$__i).$__ln;if(file_exists($__oid.$__lp)){$__ln=$__lp;break;}}}if(function_exists('dl')){@dl($__ln);}}else{die('The file '.__FILE__." is corrupted.\n");}if(function_exists('_il_exec')){return _il_exec();}echo("Site error: the ".(php_sapi_name()=='cli'?'ionCube':'ionCube')." PHP Loader needs to be installed. This is a widely used PHP extension for running ionCube protected PHP code, website security and malware blocking.\n\nPlease visit ".(php_sapi_name()=='cli'?'get-loader.ioncube.com':'get-loader.ioncube.com')." for install assistance.\n\n");exit(199);
-?>
-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
\ No newline at end of file
+
+ * @link http://www.oxidmodule.com
+ */
+
+namespace D3\Contenttabs\Application\Controller\Admin;
+
+// Controller
+use \OxidEsales\Eshop\Application\Controller\Admin\AdminListController;
+// Core
+use OxidEsales\Eshop\Core\Exception\DatabaseConnectionException;
+use \OxidEsales\Eshop\Core\Registry;
+use \OxidEsales\Eshop\Core\Request;
+use \OxidEsales\Eshop\Core\DatabaseProvider;
+// Models
+use \OxidEsales\Eshop\Application\Model\Article;
+use \OxidEsales\Eshop\Application\Model\ArticleList;
+use \OxidEsales\Eshop\Application\Model\CategoryList;
+use \OxidEsales\Eshop\Application\Model\ManufacturerList;
+use \OxidEsales\Eshop\Application\Model\VendorList;
+
+
+/**
+ * Class contentTabList
+ * @package D3\Contenttabs\Application\Controller\Admin
+ */
+class contentTabList extends AdminListController
+{
+ protected $_iViewListSize = 5;
+
+ protected $_sThisTemplate = 'contentTabList.tpl';
+
+ /**
+ * Name of chosen object class (default null).
+ *
+ * @var string
+ */
+ protected $_sListClass = Article::class;
+
+ /**
+ * Type of list.
+ *
+ * @var string
+ */
+ protected $_sListType = ArticleList::class;
+
+ /**
+ * @return string
+ */
+ public function render()
+ {
+ $myConfig = $this->getConfig();
+ $request = Registry::get(Request::class);
+ $sPwrSearchFld = $request->getRequestEscapedParameter("pwrsearchfld");
+ $sPwrSearchFld = $sPwrSearchFld ? strtolower($sPwrSearchFld) : "oxtitle";
+ $oArticle = null;
+ $oList = $this->getItemList();
+
+ if ($oList) {
+ foreach ($oList as $key => $oArticle) {
+ $sFieldName = "oxarticles__{$sPwrSearchFld}";
+
+ // formatting view
+ if (!$myConfig->getConfigParam('blSkipFormatConversion')) {
+ if ($oArticle->$sFieldName->fldtype == "datetime") {
+ Registry::getUtilsDate()->convertDBDateTime($oArticle->$sFieldName);
+ } elseif ($oArticle->$sFieldName->fldtype == "timestamp") {
+ Registry::getUtilsDate()->convertDBTimestamp($oArticle->$sFieldName);
+ } elseif ($oArticle->$sFieldName->fldtype == "date") {
+ Registry::getUtilsDate()->convertDBDate($oArticle->$sFieldName);
+ }
+ }
+
+ $oArticle->pwrsearchval = $oArticle->$sFieldName->value;
+ $oList[$key] = $oArticle;
+ }
+ }
+
+ $return = parent::render();
+
+ // load fields
+ if (!$oArticle && $oList) {
+ $oArticle = $oList->getBaseObject();
+ }
+ $this->_aViewData["pwrsearchfields"] = $oArticle ? $this->getSearchFields() : null;
+ $this->_aViewData["pwrsearchfld"] = strtoupper($sPwrSearchFld);
+
+ $aFilter = $this->getListFilter();
+ if (isset($aFilter["oxarticles"][$sPwrSearchFld])) {
+ $this->_aViewData["pwrsearchinput"] = $aFilter["oxarticles"][$sPwrSearchFld];
+ }
+
+ $sType = '';
+ $sValue = '';
+ $sArtCat = $request->getRequestEscapedParameter("art_category");
+
+ if ($sArtCat && strstr($sArtCat, "@@") !== false) {
+ list($sType, $sValue) = explode("@@", $sArtCat);
+ }
+ $this->_aViewData["art_category"] = $sArtCat;
+
+ // parent categorie tree
+ $this->_aViewData["cattree"] = $this->getCategoryList($sType, $sValue);
+
+ // manufacturer list
+ $this->_aViewData["mnftree"] = $this->getManufacturerList($sType, $sValue);
+
+ // vendor list
+ $this->_aViewData["vndtree"] = $this->getVendorList($sType, $sValue);
+
+ return $return;
+ }
+
+ public function getSearchFields()
+ {
+ $aSkipFields = [
+ "oxblfixedprice", "oxvarselect", "oxamitemid",
+ "oxamtaskid", "oxpixiexport", "oxpixiexported"
+ ];
+ $oArticle = oxNew(Article::class);
+
+ return array_diff($oArticle->getFieldNames(), $aSkipFields);
+ }
+
+ public function getCategoryList($sType, $sValue)
+ {
+ /** @var \OxidEsales\Eshop\Application\Model\CategoryList $oCatTree parent category tree */
+ $oCatTree = oxNew(CategoryList::class);
+ $oCatTree->loadList();
+ if ($sType === 'cat') {
+ foreach ($oCatTree as $oCategory) {
+ if ($oCategory->oxcategories__oxid->value == $sValue) {
+ $oCategory->selected = 1;
+ break;
+ }
+ }
+ }
+
+ return $oCatTree;
+ }
+
+
+ /**
+ * Load manufacturer list, mark active category;
+ *
+ * @param string $sType active list type
+ * @param string $sValue active list item id
+ *
+ * @return ManufacturerList
+ */
+ public function getManufacturerList($sType, $sValue)
+ {
+ $oMnfTree = oxNew(ManufacturerList::class);
+ $oMnfTree->loadManufacturerList();
+ if ($sType === 'mnf') {
+ foreach ($oMnfTree as $oManufacturer) {
+ if ($oManufacturer->oxmanufacturers__oxid->value == $sValue) {
+ $oManufacturer->selected = 1;
+ break;
+ }
+ }
+ }
+
+ return $oMnfTree;
+ }
+
+ /**
+ * Load vendor list, mark active category;
+ *
+ * @param string $sType active list type
+ * @param string $sValue active list item id
+ *
+ * @return VendorList
+ */
+ public function getVendorList($sType, $sValue)
+ {
+ $oVndTree = oxNew(VendorList::class);
+ $oVndTree->loadVendorList();
+ if ($sType === 'vnd') {
+ foreach ($oVndTree as $oVendor) {
+ if ($oVendor->oxvendor__oxid->value == $sValue) {
+ $oVendor->selected = 1;
+ break;
+ }
+ }
+ }
+
+ return $oVndTree;
+ }
+
+ /**
+ * @param null $oListObject
+ * @return string
+ * @throws DatabaseConnectionException
+ */
+ protected function _buildSelectString($oListObject = null)
+ {
+ $sQ = parent::_buildSelectString($oListObject);
+ if ($sQ) {
+ $sTable = getViewName("oxarticles");
+ $sQ .= " and $sTable.oxparentid = '' ";
+
+ $sType = false;
+ $request = Registry::get(Request::class);
+ $sArtCat = $request->getRequestEscapedParameter("art_category");
+ if ($sArtCat && strstr($sArtCat, "@@") !== false) {
+ list($sType, $sValue) = explode("@@", $sArtCat);
+ }
+
+ switch ($sType) {
+ // add category
+ case 'cat':
+ $oStr = getStr();
+ $sViewName = getViewName("oxobject2category");
+ $sInsert = "from $sTable left join {$sViewName} on {$sTable}.oxid = {$sViewName}.oxobjectid " .
+ "where {$sViewName}.oxcatnid = " . DatabaseProvider::getDb()->quote($sValue) . " and ";
+ $sQ = $oStr->preg_replace("/from\s+$sTable\s+where/i", $sInsert, $sQ);
+ break;
+ // add category
+ case 'mnf':
+ $sQ .= " and $sTable.oxmanufacturerid = " . DatabaseProvider::getDb()->quote($sValue);
+ break;
+ // add vendor
+ case 'vnd':
+ $sQ .= " and $sTable.oxvendorid = " . DatabaseProvider::getDb()->quote($sValue);
+ break;
+ }
+ }
+
+ return $sQ;
+ }
+
+ public function buildWhere()
+ {
+ // we override this to select only parent articles
+ $this->_aWhere = parent::buildWhere();
+
+ // adding folder check
+ $request = Registry::get(Request::class);
+ $sFolder = $request->getRequestEscapedParameter('folder');
+ if ($sFolder && $sFolder != '-1') {
+ $this->_aWhere[getViewName("oxarticles") . ".oxfolder"] = $sFolder;
+ }
+
+ return $this->_aWhere;
+ }
+}
diff --git a/src/Application/Controller/Admin/contentTabs.php b/src/Application/Controller/Admin/contentTabs.php
index 339bedc..0eb6891 100644
--- a/src/Application/Controller/Admin/contentTabs.php
+++ b/src/Application/Controller/Admin/contentTabs.php
@@ -1,232 +1,384 @@
-1&&$__id[1]==':'){$__id=str_replace('\\','/',substr($__id,2));$__here=str_replace('\\','/',substr($__here,2));}$__rd=str_repeat('/..',substr_count($__id,'/')).$__here.'/';$__i=strlen($__rd);while($__i--){if($__rd[$__i]=='/'){$__lp=substr($__rd,0,$__i).$__ln;if(file_exists($__oid.$__lp)){$__ln=$__lp;break;}}}if(function_exists('dl')){@dl($__ln);}}else{die('The file '.__FILE__." is corrupted.\n");}if(function_exists('_il_exec')){return _il_exec();}echo("Site error: the ".(php_sapi_name()=='cli'?'ionCube':'ionCube')." PHP Loader needs to be installed. This is a widely used PHP extension for running ionCube protected PHP code, website security and malware blocking.\n\nPlease visit ".(php_sapi_name()=='cli'?'get-loader.ioncube.com':'get-loader.ioncube.com')." for install assistance.\n\n");exit(199);
-?>
-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
-Op9ldKKp+D5AVwEpwRlNC0==
\ No newline at end of file
+
+ * @link http://www.oxidmodule.com
+ */
+
+namespace D3\Contenttabs\Application\Controller\Admin;
+
+use D3\Contenttabs\Application\Model\contentTabs as TabsModel;
+use D3\Contenttabs\Modules\Application\Model\d3_oxarticle_longtexts;
+use Exception;
+use OxidEsales\Eshop\Application\Controller\Admin\AdminDetailsController;
+use D3\ModCfg\Application\Model\Exception\d3_cfg_mod_exception;
+use D3\ModCfg\Application\Model\Exception\d3ShopCompatibilityAdapterException;
+use Doctrine\DBAL\DBALException;
+use OxidEsales\Eshop\Core\Exception\DatabaseConnectionException;
+use OxidEsales\Eshop\Core\Exception\DatabaseErrorException;
+use OxidEsales\Eshop\Core\Exception\StandardException;
+use \OxidEsales\Eshop\Core\Registry;
+use \OxidEsales\Eshop\Core\Request;
+use \OxidEsales\Eshop\Application\Model\Article;
+
+/**
+ * Class contentTabs
+ * @package D3\Contenttabs\Application\Controller\Admin
+ */
+class contentTabs extends AdminDetailsController
+{
+ protected $_sTabsTemplate = 'contentTabs.tpl';
+
+ /**
+ * Variant parent product object
+ *
+ * @var Article
+ */
+ protected $_oProductParent = null;
+
+ protected $_sCurrentTabId = '';
+ protected $_sActFieldTitleName = '';
+
+ /**
+ * Loads article variants data, passes it to Smarty engine and returns name of
+ * template file "article_variant.tpl".
+ *
+ * @return string
+ */
+ public function render()
+ {
+ parent::render();
+
+ $soxId = $this->getEditObjectId();
+
+ /** @var d3_oxarticle_longtexts $oArticle */
+ $oArticle = oxNew(Article::class);
+ $this->_aViewData["edit"] = $oArticle;
+
+ if (isset($soxId) && $soxId != "-1") {
+ // load object
+ $oArticle->loadInLang($this->_iEditLang, $soxId);
+
+ if ($oArticle->isDerived()) {
+ $this->_aViewData['readonly'] = true;
+ }
+
+ $_POST["language"] = $_GET["language"] = $this->_iEditLang;
+
+ if (0 < $oArticle->getFieldData('oxvarcount')) {
+ $oVariants = $oArticle->getAdminVariants($this->_iEditLang);
+ if (false == empty($oVariants)) {
+ $this->_aViewData["mylist"] = $oVariants;
+ }
+ }
+
+ if ($oArticle->getFieldData('oxparentid')) {
+ $this->_aViewData["parentarticle"] = $this->_getProductParent($oArticle->getFieldData('oxparentid'));
+ }
+
+ /** @var TabsModel $oTabsModel */
+ $oTabsModel = oxNew(TabsModel::class, $oArticle);
+ $sFullLongDescField = $oTabsModel->getArticleContentFieldName( $this->getSelectedTabId());
+ if (false == empty($sFullLongDescField)) {
+ $this->_aViewData["editor"] = $this->generateTextEditor(
+ '100%',
+ 280,
+ $oArticle,
+ $sFullLongDescField,
+ 'details.tpl.css'
+ );
+ }
+ }
+
+ return $this->_sTabsTemplate;
+ }
+
+ /**
+ * Returns variant parent object
+ *
+ * @param string $sParentId parent product id
+ *
+ * @return Article
+ */
+ protected function _getProductParent($sParentId)
+ {
+ if ($this->_oProductParent === null ||
+ ($this->_oProductParent !== false && $this->_oProductParent->getId() != $sParentId)
+ ) {
+ $this->_oProductParent = false;
+ $oProduct = oxNew(Article::class);
+ if ($oProduct->load($sParentId)) {
+ $this->_oProductParent = $oProduct;
+ }
+ }
+
+ return $this->_oProductParent;
+ }
+
+ /**
+ * @return mixed|string
+ */
+ public function getLongDescActiveField()
+ {
+ /** @var TabsModel $oTabsModel */
+ $oTabsModel = oxNew(TabsModel::class, oxNew(Article::class));
+ return $oTabsModel->getArticleActiveFieldName( $this->getSelectedTabId());
+ }
+
+ /**
+ * @return mixed|string
+ */
+ public function getLongDescTitleField()
+ {
+ /** @var TabsModel $oTabsModel */
+ $oTabsModel = oxNew(TabsModel::class, oxNew(Article::class));
+ return $oTabsModel->getArticleTitleFieldName( $this->getSelectedTabId());
+ }
+
+ /**
+ * @return mixed|string
+ */
+ public function getLongDescContentField()
+ {
+ /** @var TabsModel $oTabsModel */
+ $oTabsModel = oxNew(TabsModel::class, oxNew(Article::class));
+ return $oTabsModel->getArticleContentFieldName( $this->getSelectedTabId());
+ }
+
+ /**
+ * @return null|string
+ */
+ public function getSelectedTabId()
+ {
+ $request = Registry::get(Request::class);
+ $this->_sCurrentTabId = $request->getRequestEscapedParameter( 'sTabId');
+
+ if (empty($this->_sCurrentTabId)) {
+ $this->_sCurrentTabId = 1;
+ }
+
+ $this->addTplParam('sCurrentTabId', $this->_sCurrentTabId);
+
+ return $this->_sCurrentTabId;
+ }
+
+ /**
+ * @return bool
+ * @throws DBALException
+ * @throws DatabaseConnectionException
+ * @throws DatabaseErrorException
+ * @throws StandardException
+ * @throws d3ShopCompatibilityAdapterException
+ * @throws d3_cfg_mod_exception
+ */
+ public function isActiveFieldSaveable()
+ {
+ $soxId = $this->getEditObjectId();
+
+ $oArticle = oxNew(Article::class);
+ if (isset($soxId) && $soxId != "-1") {
+ $oArticle->loadInLang( $this->_iEditLang, $soxId );
+ }
+
+ $sTabId = Registry::get(Request::class)->getRequestEscapedParameter('sTabId');
+ $sTabId = $sTabId === NULL ? 1 : $sTabId;
+
+ if (isset($soxId)
+ && $soxId != "-1"
+ && in_array($sTabId, array(1, NULL))
+ && !strlen($this->getLongDescTitle($oArticle, $sTabId))
+ ) {
+ return false;
+ };
+
+ return true;
+ }
+
+ /**
+ * template getter for backend / admin
+ *
+ * @param $oArticle Article
+ * @param $sTabId
+ *
+ * @return string
+ * @throws DBALException
+ * @throws DatabaseConnectionException
+ * @throws DatabaseErrorException
+ * @throws StandardException
+ * @throws d3ShopCompatibilityAdapterException
+ * @throws d3_cfg_mod_exception
+ */
+ public function getLongDescTitle($oArticle, $sTabId)
+ {
+ $oTabsModel = oxNew(TabsModel::class, $oArticle);
+ return $this->_getEditValue( $oArticle, $oTabsModel->getArticleTitleFieldName( $sTabId));
+ }
+
+ /**
+ * @param $oArticle
+ * @param $sTabId
+ *
+ * @return bool
+ * @throws DBALException
+ * @throws DatabaseConnectionException
+ * @throws DatabaseErrorException
+ * @throws StandardException
+ * @throws d3ShopCompatibilityAdapterException
+ * @throws d3_cfg_mod_exception
+ */
+ public function isLongDescActive($oArticle, $sTabId)
+ {
+ /** @var TabsModel $oTabsModel */
+ $oTabsModel = oxNew(TabsModel::class, $oArticle);
+ return $oTabsModel->isTabActive($sTabId);
+ }
+
+ /**
+ * @param $oArticle
+ * @param $sTabId
+ *
+ * @return bool
+ * @throws DBALException
+ * @throws DatabaseConnectionException
+ * @throws DatabaseErrorException
+ * @throws StandardException
+ * @throws d3ShopCompatibilityAdapterException
+ * @throws d3_cfg_mod_exception
+ */
+ public function tabExists($oArticle, $sTabId)
+ {
+ /** @var TabsModel $oTabsModel */
+ $oTabsModel = oxNew(TabsModel::class, $oArticle);
+
+ return !is_null($oTabsModel->isTabActive($sTabId))
+ || !is_null($oTabsModel->getLongDescriptionTitleFromArticleObject($sTabId))
+ || !is_null($oTabsModel->getLongDescriptionFromArticleObject($sTabId));
+ }
+
+ /**
+ * template getter for backend / admin
+ * @return array
+ */
+ public function getTabIdList()
+ {
+ return range(1, oxNew(TabsModel::class, oxNew(Article::class))->getTabCount());
+ }
+
+ /**
+ * @throws Exception
+ */
+ public function save()
+ {
+ $request = Registry::get( Request::class );
+ $isAllowedToSave = $request->getRequestEscapedParameter( "isPermittedToSaveData" );
+
+ if ( empty( $isAllowedToSave ) ) {
+ return;
+ }
+
+ parent::save();
+
+ $soxId = $this->getEditObjectId();
+ $this->setEditObjectId( $soxId );
+
+ if ( $soxId == "-1" ) {
+ return;
+ }
+
+ /** @var d3_oxarticle_longtexts $oArticle */
+ $oArticle = oxNew( Article::class );
+ $oArticle->setLanguage( $this->_iEditLang );
+
+ if ( false == $oArticle->load( $soxId ) ) {
+ return;
+ }
+
+ $aParams = $request->getRequestEscapedParameter( "editval" );
+ $oArticle->assign( $aParams );
+ $oArticle->setArticleLongDesc( $this->_processLongDesc( $aParams['oxarticles__oxlongdesc'] ) );
+
+ $oArticle->save();
+ }
+
+ /**
+ * @throws DBALException
+ * @throws DatabaseConnectionException
+ */
+ public function delete()
+ {
+ $request = Registry::get( Request::class );
+ $isAllowedToSave = $request->getRequestEscapedParameter( "isPermittedToSaveData" );
+
+ if ( empty( $isAllowedToSave ) ) {
+ return;
+ }
+
+ $aParams = $request->getRequestEscapedParameter( "editval" );
+
+ $oArticle = oxNew(Article::class);
+ $oArticle->load($aParams['oxarticles__oxid']);
+
+ /** @var TabsModel $oTabsModel */
+ $oTabsModel = oxNew(TabsModel::class, $oArticle);
+ $oTabsModel->loadByArticleTab($aParams['oxarticles__oxid'], $this->getSelectedTabId());
+ $oTabsModel->delete();
+ }
+
+ /**
+ * inhaltliche Uebernahme analog Article_Main
+ * wird genutzt zum Abspeichern der Artikel-Langbeschreibung
+ *
+ * @param $sValue
+ *
+ * @return mixed
+ */
+ protected function _processLongDesc($sValue)
+ {
+ $aSearch = array(' ', '&', '"', '&lang=', '
Unsere Module sind für die Standardthemes des '.
+ 'OXID-Shops vorbereitet. Sie müssen hier nichts eintragen, wenn sich das von Ihnen im Shop verwendete Theme von '.
+ 'einem dieser Standard-Themes ableitet (vererbt wird). Handelt es sich um ein komplett eigenes Theme, so tragen '.
+ 'Sie dessen Parent-Theme-ID bei dem OXID-Standard-Theme ein, dem es am nächsten kommt.
'.
+ '
Weitere Informationen hierzu finden Sie in unserem FAQ-Eintrag.
';
+
+$aLang = array(
+ 'charset' => 'UTF-8',
+
+ 'SHOP_MODULE_GROUP_d3thememapping_global' => 'Template-Blöcke dem eigenen Theme zuordnen (globale Einstellungen für D3-Module)',
+ 'SHOP_MODULE_GROUP_d3thememapping_module' => 'Template-Blöcke dem eigenen Theme zuordnen (Einstellung nur für dieses Modul)',
+ 'SHOP_MODULE_d3custParentThemeMappedToMobile_'.$sModId => 'Ist das hier eingetragene Theme aktiv, werden die "Mobile"-Templateblöcke des Moduls verwendet.',
+ 'SHOP_MODULE_d3custParentThemeMappedToAzure_'.$sModId => 'Ist das hier eingetragene Theme aktiv, werden die "Azure"-Templateblöcke des Moduls verwendet.',
+ 'SHOP_MODULE_d3custParentThemeMappedToFlow_'.$sModId => 'Ist das hier eingetragene Theme aktiv, werden die "Flow"-Templateblöcke des Moduls verwendet.',
+
+ 'HELP_SHOP_MODULE_d3custParentThemeMappedToMobile_'.$sModId => $sD3Help_mappedTo,
+ 'HELP_SHOP_MODULE_d3custParentThemeMappedToAzure_'.$sModId => $sD3Help_mappedTo,
+ 'HELP_SHOP_MODULE_d3custParentThemeMappedToFlow_'.$sModId => $sD3Help_mappedTo,
+);
diff --git a/src/Application/views/admin/tpl/contentTabs.tpl b/src/Application/views/admin/tpl/contentTabs.tpl
index fb72c52..e88fafb 100644
--- a/src/Application/views/admin/tpl/contentTabs.tpl
+++ b/src/Application/views/admin/tpl/contentTabs.tpl
@@ -43,17 +43,16 @@
[{oxmultilang ident="D3_CONTENT_TABS_FIRST_SELECT_ARTICLE"}]