Neuigkeiten
  • Die modified eCommerce Shopsoftware ist kostenlos, aber nicht umsonst.
    Spenden
  • Damit wir die modified eCommerce Shopsoftware auch zukünftig kostenlos anbieten können:
    Spenden
  • Thema: Shopversion 2.0.0.0 - Neues für Module

    webald

    • modified Team
    • Beiträge: 2.795
    Re: Shopversion 2.0.0.0 - Neues für Module
    Antwort #15 am: 06. Mai 2016, 17:49:41
    Wieso"Datenbank erstellen"? Du fügst doch nur eine Tabelle hinzu und das geht so wie oben von mir geschrieben.

    hpzeller

    • Experte
    • Beiträge: 4.130
    • Geschlecht:
    Re: Shopversion 2.0.0.0 - Neues für Module
    Antwort #16 am: 06. Mai 2016, 18:55:07
    Hallo TobStar,

    wenn du deine Statements richtig schreibst dann sollte es funktionieren.

    Hier dein Beispiel aus Antwort #13 korrigiert.

    Code: PHP  [Auswählen]
    xtDBquery("CREATE TABLE `appix_blog` (
                `id` int(11) NOT NULL,
                `title` text NOT NULL,
                `content` mediumtext NOT NULL,
                `author` varchar(10) NOT NULL,
                `time` int(11) NOT NULL
                ) ENGINE=MyISAM;              
              "
    );
         
    xtDBquery("ALTER TABLE `appix_blog` ADD PRIMARY KEY (`id`);");

    xtDBquery("ALTER TABLE `appix_blog` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;");
     

    oder zusammengefasst

    Code: PHP  [Auswählen]
    xtDBquery("CREATE TABLE `appix_blog` (
                `id` int(11) NOT NULL AUTO_INCREMENT,
                `title` text NOT NULL,
                `content` mediumtext NOT NULL,
                `author` varchar(10) NOT NULL,
                `time` int(11) NOT NULL,
                PRIMARY KEY (`id`)
                ) ENGINE=MyISAM;              
              "
    );
     

    Gruss
    Hanspeter

    webald

    • modified Team
    • Beiträge: 2.795
    Re: Shopversion 2.0.0.0 - Neues für Module
    Antwort #17 am: 06. Juni 2016, 08:34:17
    Anbei eine Dummy-Datei als Vorlage zur Installation von Modulen übers Backend.

    Diese Datei bzw. die eigene Version davon ins Verzeichnis shoproot/admin/includes/modules/system kopieren.

    Danach kann über das Backend "Module" -> "System Module" eine Installation/Deinstallation durchgeführt werden.

    Ich habe folgendes ebenfalls in dieser Datei drin:
    • Installation => Anlegen/Ändern notwendiger Datenbanktabellen
    • Deinstallation => Löschen/Ändern notwendiger Datenbanktabellen
    • Protokollierung beider Aktivitäten im Logfile (inkl. UserID)
    • Aktivierung und Deaktivierung der Dateien in den auto_include-Ordnern durch Umbenennung (auto_include lädt nur php-Dateien). Damit werden auch keine Dateien geladen oder ausgeführt, bei denen z. B. Tabellen fehlen oder deren Ausführung nicht gewünscht ist.

    [EDIT Tomcraft 07.06.2016: Modul aktualisiert.]

    p3e

    • Experte
    • Beiträge: 2.395
    Re: Shopversion 2.0.0.0 - Neues für Module
    Antwort #18 am: 06. Juni 2016, 12:11:19
    Danke Webald!

    webald

    • modified Team
    • Beiträge: 2.795
    Re: Shopversion 2.0.0.0 - Neues für Module
    Antwort #19 am: 06. Juni 2016, 12:37:34
    Hilf mal mit und gib mir Hinweis:

    Ich würde gerne noch eine Rückfrage einbauen, ob die Tabellen wirklich gelöscht werden sollen, schließlich könnten da relevante Daten drin stehen, die man trotz löschen es Moduls erhalten will.

    p3e

    • Experte
    • Beiträge: 2.395
    Re: Shopversion 2.0.0.0 - Neues für Module
    Antwort #20 am: 06. Juni 2016, 13:41:41
    Ich fände sinnvoll, wenn bei der Deinstallation die Alternative geboten wird, alles zu löschen (Dateien und Tabellen) oder das Modul nur zu deaktivieren und die Daten in den Tabellen zu belassen.

    Bei der Installation sollte dann im ersten Schritt überprüft werden, ob die benötigten Tabellen vorhanden sind und nachfragen, ob die früheren Daten übernommen werden oder endgültig gelöscht werden sollen.
    Das ist für den Anwender toll, macht es aber in der Programmierung komplizierter, da es sich ja auch um ein Update des Moduls handeln kann, dass dann auch erkannt werden muss. In dem Fall sollten die alten umbenannten Dateien gelöscht werden und bei den Tabellen nur die eventuell durch das Update hinzugekommenen Tabellen installiert werden.

    webald

    • modified Team
    • Beiträge: 2.795
    Re: Shopversion 2.0.0.0 - Neues für Module
    Antwort #21 am: 06. Juni 2016, 14:20:20
    Hab das mal zu einem bestehend Ticket angehängt: https://trac.modified-shop.org/ticket/840#comment:1

    webald

    • modified Team
    • Beiträge: 2.795
    Re: Shopversion 2.0.0.0 - Neues für Module
    Antwort #22 am: 07. Juni 2016, 08:44:27
    ich habe bis jetzt keine Möglichkeit gefunden bei der Deinstallation eines Moduls in Admin=>Module=>Systemmodule eine Rückfrage (z. B. in Form einer Checkbox) einzubauen, ob Daten/Tabellen gelöscht werden sollen.

    Ich setze nun einen zusätzlichen Key in der Tabelle configuration (WEBALD_MODULE_DELETE_DATA_ON_UNINSTALL = 0). Diesen Wert kann man über Admin=>Module=>Systemmodule=>MEIN_MODUL=>bearbeiten dann ändern. Sollen die Daten/Tabellen gelöscht werden muss das ausdrücklich aktiviert werden. Im Standard wird nicht gelöscht.

    [EDIT Tomcraft 07.06.2016: Modul in Antwort #17 ausgetauscht.]

    web28

    • modified Team
    • Beiträge: 9.404
    Re: Shopversion 2.0.0.0 - Neues für Module
    Antwort #23 am: 07. Juni 2016, 12:23:46
    Das mit der Deinstalltionsroutine ist kein Problem, Beipsiel für das Wishlist Modul

    1. in der Installmethode eine zusätzliche Auswahlfeld anlegen (Default = false)

    Code: PHP  [Auswählen]
    xtc_db_query("INSERT INTO " . TABLE_CONFIGURATION . " (configuration_key, configuration_value,  configuration_group_id, sort_order, set_function, date_added) VALUES ('MODULE_WISHLIST_SYSTEM_UNINSTALL_DB', 'false',  '6', '1', 'xtc_cfg_select_option(array(\'true\', \'false\'), ', now())");

    2. in __construct() diese Zeile nach der Statuszeile einfügen:

    Code: PHP  [Auswählen]
    $this->uninstall_new_db_fields = ((MODULE_WISHLIST_SYSTEM_UNINSTALL_DB == 'true') ? true : false);

    3. und in der remove Methode:

    Code: PHP  [Auswählen]
    if ($this->uninstall_new_db_fields) {
            xtc_db_query("DROP TABLE `customers_wishlist`");
            xtc_db_query("DROP TABLE `customers_wishlist_attributes`");
        }

    4. Sprachdateien ergänzen:
    Code: PHP  [Auswählen]
    define('MODULE_WISHLIST_SYSTEM_UNINSTALL_DB_TITLE', 'Datenbanken beim Deinstallieren löschen?');
    define('MODULE_WISHLIST_SYSTEM_UNINSTALL_DB_DESC', 'Sollen die Merkzettel Datenbanken beim Deinstallieren diese Moduls gelöscht werden?');

    Damit werden die wishlist DB Tabellen nur gelöscht wenn das vorher aktiviert wird.

    webald

    • modified Team
    • Beiträge: 2.795
    Re: Shopversion 2.0.0.0 - Neues für Module
    Antwort #24 am: 07. Juni 2016, 12:29:35
    Andere Ausprogrammierung, gleicher Ansatz.

    Ich habe halt keine Property in __construct gesetzt und prüfe stattdessen den configuration_key in der Methode remove direkt. :cheers:

    webald

    • modified Team
    • Beiträge: 2.795
    Re: Shopversion 2.0.0.0 - Neues für Module
    Antwort #25 am: 13. Juni 2016, 19:01:17
    Was neues für die Serie: WYSIWYG

    in includes/extra/wysiwyg/meine_datei.php
    Code: PHP  [Auswählen]
    <?php

    /*-------------------------------
    Custom config CKEDITOR

    Hier können spezielle Einstellungen für den CKEDITOR definiert werden.
    Alle $customConfig Einstellungen in der inc/xtc_wysiwig.inc.php können hier
    überschrieben und/oder neue Definitionen angelegt werden.
    ---------------------------------*/


    //Custom Config Datei mit Einstellungen, die Datei muss sich in dem angegebenen Ordner befinden
    //$customConfig['customConfig'] = "customConfig : '../ckeditor/custom/ckeditor_config.js',";

    switch($type) {
            // WYSIWYG editor event_calender
            case 'appointment_description':

            //skin  - muss für jede CKEditor Version separat aktualisiert werden
            $customConfig['skin'] = "skin: '".moono."',"; // (defined('WYSIWYG_SKIN') ? WYSIWYG_SKIN : moonocolor)."',";

            //extraPlugins
            //$customConfig['extraPlugins'] = "extraPlugins: '',";

            //Plugins entfernen
            //$customConfig['removePlugins'] = "removePlugins: '',";

            //Eingabeoptionen
            $customConfig['enterMode'] = "enterMode: CKEDITOR.ENTER_BR,";
            $customConfig['shiftEnterMode'] = "shiftEnterMode: CKEDITOR.ENTER_P,";

            $editorName = 'appointment_description['.$langID.']';
            $default_editor_height = 200;
            break;
    }

    ?>

    Das ermöglicht den CKEditor in einem beliebig benennbaren Feld (hier: appointment_description) zu laden UND den Editor für dieses eine Feld anzupassen.

    Vorraussetzung ist natürlich dass die Seite, die dieses Feld (hier: appointment_description) enthält auch die Funktion wysiwyg() eingebunden hat und ausführt.
    Code: PHP  [Auswählen]
    ...
    require_once (DIR_FS_INC.'xtc_wysiwyg.inc.php');
    $languages = xtc_get_languages();
    ...
            // Include WYSIWYG if is activated
            if (USE_WYSIWYG == 'true') {
                    $query = xtc_db_query("SELECT code FROM ".TABLE_LANGUAGES." WHERE languages_id='".(int)$_SESSION['languages_id']."'");
                    $data = xtc_db_fetch_array($query);
                    echo PHP_EOL . (!function_exists('editorJSLink') ? '<script type="text/javascript" src="includes/modules/fckeditor/fckeditor.js"></script>' : '') . PHP_EOL;
                    for ($i = 0, $n = sizeof($languages); $i < $n; $i++) {
                            echo xtc_wysiwyg('appointment_description', $data['code'], $languages[$i]['id']);
                    }
            }
    ...
    echo xtc_draw_textarea_field('appointment_description[' . $languages[$i]['id'] . ']', 'soft', '103', '30', $event_details['appointment_description']);
    ...
     

    web28

    • modified Team
    • Beiträge: 9.404
    Re: Shopversion 2.0.0.0 - Neues für Module
    Antwort #26 am: 14. Juni 2016, 19:13:16
    includes/extra/wysiwyg/meine_datei.php muss NACH custom_config.php geladen werden ansonsten werden Einstellungen von custom_config.php wieder zurückgesetzt, Entscheident ist hier der Dateiname.

    Eigentlich ist die custom_config.php Quatsch, der Code kann auch in die xtc_wysywig.inc.php vor dem auto_include.

    Oder aber Umbennennung in z.B. 00_custom_config.php
    2 Antworten
    3148 Aufrufe
    03. September 2014, 16:11:30 von billybob
    18 Antworten
    9996 Aufrufe
    01. Februar 2016, 11:21:26 von Marcel86