Admin Menü erweitern

Thema wurde von Cyrus (LeGong), 23. Dezember 2014 erstellt.

  1. Cyrus (LeGong)

    Cyrus (LeGong) Erfahrener Benutzer

    Registriert seit:
    21. Dezember 2011
    Beiträge:
    1.432
    Danke erhalten:
    342
    Danke vergeben:
    176
    #1 Cyrus (LeGong), 23. Dezember 2014
    Zuletzt bearbeitet: 23. Dezember 2014
    Wie kann man Updatessicher neue Menüpunkte an Admin-Menü einfügen?
    folgende Arbeiten habe ich schon gemacht:
    1: Ein neues Modul in Ordner admin angelegt.
    2: Die Datei:- lang/german/sections/-samples/admin_menu.lang.inc.php angepasst und in Ordner ../sections gespeichert
    PHP:
    <?php
    /* --------------------------------------------------------------
       admin_menu.lang.inc.php 2014-08-05 gm
       Gambio GmbH
       http://www.gambio.de
       Copyright (c) 2014 Gambio GmbH
       Released under the GNU General Public License (Version 2)
       [http://www.gnu.org/licenses/gpl-2.0.html]
       --------------------------------------------------------------
    */

    $t_language_text_section_content_array = array
    (
        
    // BOF CP
        
    'BOX_HEADING_CP' => 'CP Module',
        
    'BOX_PRODUCTS_EDIT' => 'Artikel Preise &Auml;ndern',
        
    // EOF CP
        
    'BOX_HEADING_FAVS' => 'FAVS',
        
    'BOX_HEADING_LAYOUT_DESIGN' => 'Layout / Design',
        
    'BOX_HEADING_GAMBIO_SEO' => 'Gambio SEO',
        
    'BOX_HEADING_CUSTOMERS' => 'Kunden',
        
    'BOX_HEADING_PRODUCTS' => 'Artikel',
        
    'BOX_HEADING_MODULES' => 'Module',
        
    'BOX_HEADING_STATISTICS' => 'Statistiken',
        
    'BOX_HEADING_TOOLS' => 'Toolbox',
        
    'BOX_HEADING_GV_ADMIN' => 'Gutscheine',
        
    'BOX_HEADING_ZONE' => 'Land/Steuer',
        
    'BOX_HEADING_CONFIGURATION' => 'Konfiguration',
        
    'BOX_GM_STYLE_EDIT' => 'Template-Einstellungen',
        
    'BOX_GM_LOGO' => 'Logo Manager',
        
    'BOX_GM_LIGHTBOX' => 'Lightbox Konfiguration',
        
    'BOX_GM_SLIDER' => 'Teaser-Slider',
        
    'BOX_GM_SEO_BOOST' => 'Gambio SEO Boost',
        
    'BOX_GM_ANALYTICS' => 'Tracking-Codes',
        
    'BOX_GM_META' => 'Meta-Angaben',
        
    'BOX_ROBOTS' => 'Robots Datei',
        
    'BOX_GM_SITEMAP' => 'Sitemap Generator',
        
    'BOX_GM_BOOKMARKS' => 'Social Bookmarking',
        
    'BOX_ORDERS' => 'Bestellungen',
        
    'BOX_CUSTOMERS' => 'Kunden',
        
    'BOX_GM_MODULE_EXPORT' => 'Kundenexport',
        
    'BOX_CUSTOMERS_STATUS' => 'Kundengruppen',
        
    'BOX_GM_INVOICING' => 'Rechnungsexport',
        
    'BOX_CATEGORIES' => 'Artikel / Kategorien',
        
    'BOX_GM_FEATURE_CONTROL' => 'Artikel-Filter',
        
    'BOX_PRODUCTS_ATTRIBUTES' => 'Artikelattribute',
        
    'BOX_REVIEWS' => 'Kundenrezensionen',
        
    'BOX_QUANTITYUNITS' => 'Mengeneinheiten',
        
    'BOX_PROPERTIES' => 'Artikeleigenschaften',
        
    'BOX_GM_PRODUCT_EXPORT' => 'Artikelexport',
        
    'BOX_ATTRIBUTES_MANAGER' => 'Attributverwaltung',
        
    'BOX_IMPORT' => 'CSV Import / Export',
        
    'BOX_PRODUCTS_EXPECTED' => 'Erwartete Artikel',
        
    'BOX_GM_GPRINT' => 'GX-Customizer',
        
    'BOX_MANUFACTURERS' => 'Hersteller',
        
    'BOX_SPECIALS' => 'Sonderangebote',
        
    'BOX_ECONDA' => 'ECONDA Shop Monitor',
        
    'BOX_GM_GUESTBOOK' => 'G&amp;auml;stebuch',
        
    'BOX_GM_JANOLAW' => 'janolaw AGB Hosting',
        
    'BOX_MODULE_EXPORT' => 'Modul-Center',
        
    'BOX_GM_SCROLLER' => 'News-Scroller',
        
    'BOX_PAYPAL' => 'PayPal',
        
    'BOX_GM_TRUSTED_SHOP_ID' => 'Trusted Shops G&amp;uuml;tesiegel',
        
    'BOX_SHIPPING' => 'Versandarten',
        
    'BOX_YATEGO' => 'Yatego',
        
    'BOX_YOOCHOOSE' => 'YOOCHOOSE Empfehlungen',
        
    'BOX_PAYMENT' => 'Zahlungsweisen',
        
    'BOX_ORDER_TOTAL' => 'Zusammenfassung',
        
    'BOX_GM_COUNTER' => 'Besucherstatistik',
        
    'BOX_PRODUCTS_VIEWED' => 'Besuchte Artikel',
        
    'BOX_CAMPAIGNS_REPORT' => 'Kampagnen Report',
        
    'BOX_STATS_CUSTOMERS' => 'Kunden-Bestellstatistik',
        
    'BOX_SALES_REPORT' => 'Umsatzstatistik',
        
    'BOX_PRODUCTS_PURCHASED' => 'Verkaufte Artikel',
        
    'BOX_BANNER_MANAGER' => 'Banner Manager',
        
    'BOX_CONTENT' => 'Content Manager',
        
    'BOX_GM_BACKUP_FILES_ZIP' => 'Dateien sichern',
        
    'BOX_BACKUP' => 'Datenbanksicherung',
        
    'BOX_TOOLS_BLACKLIST' => 'Kreditkarten sperren',
        
    'BOX_SHOW_LOGS' => 'Logs anzeigen',
        
    'BOX_MODULE_NEWSLETTER' => 'Newsletter',
        
    'BOX_GM_OPENSEARCH' => 'OpenSearch Plugin',
        
    'BOX_CLEAR_CACHE' => 'Cache leeren',
        
    'BOX_SERVER_INFO' => 'Server Info',
        
    'BOX_GM_OFFLINE' => 'Shop online/offline',
        
    'BOX_GM_SQL' => 'SQL',
        
    'BOX_GM_LANG_EDIT' => 'Texte anpassen',
        
    'BOX_WHOS_ONLINE' => 'Wer ist online?',
        
    'BOX_GV_ADMIN_MAIL' => 'Gutschein E-Mail',
        
    'BOX_GV_ADMIN_QUEUE' => 'Gutschein Queue',
        
    'BOX_GV_ADMIN_SENT' => 'Gutscheine versandt',
        
    'BOX_COUPON_ADMIN' => 'Rabatt Kupons',
        
    'BOX_ZONES' => 'Bundesl&amp;auml;nder',
        
    'BOX_COUNTRIES' => 'L&amp;auml;nder',
        
    'BOX_LANGUAGES' => 'Sprachen',
        
    'BOX_TAX_CLASSES' => 'Steuerklassen',
        
    'BOX_TAX_RATES' => 'Steuers&amp;auml;tze',
        
    'BOX_GEO_ZONES' => 'Steuerzonen',
        
    'BOX_CURRENCIES' => 'W&amp;auml;hrungen',
        
    'BOX_GM_MISCELLANEOUS' => 'Allgemeines',
        
    'BOX_CONFIGURATION_8' => 'Artikel&amp;uuml;bersicht-Optionen',
        
    'BOX_ORDERS_STATUS' => 'Bestellstatus',
        
    'BOX_CONFIGURATION_4' => 'Bild-Optionen',
        
    'BOX_CONFIGURATION_11' => 'Cache-Optionen',
        
    'BOX_ORDERS_XSELL_GROUP' => 'Cross-Marketing Gruppen',
        
    'BOX_CONFIGURATION_13' => 'Download-Optionen',
        
    'BOX_CONFIGURATION_12' => 'E-Mail-Optionen',
        
    'BOX_GM_EMAILS' => 'E-Mail Vorlagen',
        
    'BOX_CAMPAIGNS' => 'Kampagnen',
        
    'BOX_CONFIGURATION_5' => 'Kunden-Details',
        
    'BOX_CONFIGURATION_9' => 'Lagerverwaltungs-Optionen',
        
    'BOX_SHIPPING_STATUS' => 'Lieferstatus',
        
    'BOX_CONFIGURATION_10' => 'Logging-Optionen',
        
    'BOX_CONFIGURATION_3' => 'Maximum Werte',
        
    'BOX_CONFIGURATION_1' => 'Mein Shop',
        
    'BOX_CONFIGURATION_2' => 'Minimum Werte',
        
    'BOX_GM_ID_STARTS' => 'Nummernkreise',
        
    'BOX_GM_PDF' => 'Rechnung/Lieferschein',
        
    'BOX_CONFIGURATION_19' => 'Schnittstellen',
        
    'BOX_CONFIGURATION_15' => 'Sessions',
        
    'BOX_GM_SECURITY' => 'Sicherheitscenter',
        
    'BOX_CONFIGURATION_16' => 'Suchmaschinen',
        
    'BOX_CONFIGURATION_22' => 'Such-Optionen',
        
    'BOX_CONFIGURATION_18' => 'USt-IdNr.',
        
    'BOX_PRODUCTS_VPE' => 'Verpackungseinheiten',
        
    'BOX_CONFIGURATION_7' => 'Versand-Optionen',
        
    'BOX_CONFIGURATION_17' => 'Zusatzmodule',
        
    'BOX_CONFIGURATION_14' => 'GZip Kompression',
        
    'BOX_CONFIGURATION_753' => 'Shop-Key'    
    );
    3: Eine xml Datei in user_classes/conf/admin_menu/ mit dem Namen "menu_cp erstellt und gespeichert.
    Code:
    <?xml version="1.0"?>
    {load_language_text section="admin_menu" use_fallback=$smarty.const.SHOW_UNTRANSLATED_MENUITEMS}
    <admin_menu>
        <menugroup id="BOX_HEADING_CP" sort="150" background="artkatalog.png" title="CP-Tools">
            <menuitem sort="140" link="FILENAME_PRODUCTS_EDIT" titel="{$txt.BOX_PRODUCTS_EDIT}" />
        </menugroup>
    </admin_menu>
    
    4: Eine Datei in Ordner user_classes/overloads/AdminApplicationTopExtenderComponent erstellt und gespeichert.
    PHP:
    <?php

    class CP_AdminApplicationTopExtender extends CP_AdminApplicationTopExtender_parent
    {
        function 
    proceed()
        {
            
    parent::proceed();
            
                
    define('FILENAME_PRODUCTS_EDIT''products_edit.php');
        }

    }
    ?>
    5: In DB unter die Tabelle "admin_access" eine neue Spalte mit dem Dateiname eingefügt und den Wert auf 1 gesetzt.
    6: Cache und templates_c geleert.
    Meine Menüpunkt wird trotzdem in Adminbereich nicht angezeigt!:confused::mad:
    Nun wenn ich in user_classes/overloads/ ein Ordner Namens AdminMenuSource anlege und dadrin eine Datei mit dem Namen CP_AdminMenuSource.inc.php mit folgenden Codes speichere dann funktioniert alles! Aber da steht:
    Was mache ich dann FALSCH?!:confused:
     
  2. barbara

    barbara G-WARD 2014-2020

    Registriert seit:
    14. August 2011
    Beiträge:
    35.352
    Danke erhalten:
    11.198
    Danke vergeben:
    1.601
    Hallo Cyros

    in der Shopversion 2.0 ist es
    user_classes/ conf/ AdminMenu
    und ab Version 2.1 ist es
    user_classes/ conf/ admin_menu
     
  3. Cyrus (LeGong)

    Cyrus (LeGong) Erfahrener Benutzer

    Registriert seit:
    21. Dezember 2011
    Beiträge:
    1.432
    Danke erhalten:
    342
    Danke vergeben:
    176
    Hallo Barbara,
    SORRY habe ich vergessen es zu erwähnen. Ich arbeite gerade an version 2.1.4
     
  4. Cyrus (LeGong)

    Cyrus (LeGong) Erfahrener Benutzer

    Registriert seit:
    21. Dezember 2011
    Beiträge:
    1.432
    Danke erhalten:
    342
    Danke vergeben:
    176
    Alle beide Varianten habe ich versucht. Es will einfach nicht:mad:
    Ich habe alle beide Versionen GX_2.0 und GX_2.1 getestet. Ohne Überladung von AdminMenuSource funktioniert das Ganze nicht? Hat es bis jetzt jemand nur mit der XML-Erweiterung geschaft?
     
  5. barbara

    barbara G-WARD 2014-2020

    Registriert seit:
    14. August 2011
    Beiträge:
    35.352
    Danke erhalten:
    11.198
    Danke vergeben:
    1.601
    ja, z.B. für die IT-Recht-Kanzlei.

    Inhalt:
    Code:
    <?xml version="1.0"?>
    <!--
    	menu_itrecht.xml 2014 gm
    	Gambio GmbH
    	http://www.gambio.de
    	Copyright (c) 2014 Gambio GmbH
    	Released under the GNU General Public License (Version 2)
    	[http://www.gnu.org/licenses/gpl-2.0.html]
    -->
    <admin_menu>
    	<menugroup id="BOX_HEADING_MODULES">
    		<menuitem sort="35" link="itrecht_config.php" title="IT-Recht Kanzlei Rechtstexte" />
    	</menugroup>
    </admin_menu>
    sowohl in 2.0.als auch in 2.1
     
  6. Moritz (Gambio)

    Moritz (Gambio) Administrator

    Registriert seit:
    26. April 2011
    Beiträge:
    5.786
    Danke erhalten:
    2.692
    Danke vergeben:
    903
    Der Modulcache muss geleert werden, bevor Änderungen am Menü sichtbar werden. War das vielleicht nur das Problem?
     
  7. Cyrus (LeGong)

    Cyrus (LeGong) Erfahrener Benutzer

    Registriert seit:
    21. Dezember 2011
    Beiträge:
    1.432
    Danke erhalten:
    342
    Danke vergeben:
    176
    hallo Barbara,
    hast du sonst was gemacht? oder nur die XML-Datei? Was ist mit der DB->admin_access?
     
  8. Cyrus (LeGong)

    Cyrus (LeGong) Erfahrener Benutzer

    Registriert seit:
    21. Dezember 2011
    Beiträge:
    1.432
    Danke erhalten:
    342
    Danke vergeben:
    176
    Ich bitte dich! das habe ich natürlich alles schon gemacht.
     
  9. barbara

    barbara G-WARD 2014-2020

    Registriert seit:
    14. August 2011
    Beiträge:
    35.352
    Danke erhalten:
    11.198
    Danke vergeben:
    1.601
    In die Datenbank muss das rein und die Admin-Rechte muss man danach auch setzen.
     
  10. Cyrus (LeGong)

    Cyrus (LeGong) Erfahrener Benutzer

    Registriert seit:
    21. Dezember 2011
    Beiträge:
    1.432
    Danke erhalten:
    342
    Danke vergeben:
    176
    Das habe ich auch gemacht, also die Datei-name ohne Endung. Rechte identisch mit "itrecht".
     
  11. Moritz (Gambio)

    Moritz (Gambio) Administrator

    Registriert seit:
    26. April 2011
    Beiträge:
    5.786
    Danke erhalten:
    2.692
    Danke vergeben:
    903
    Habs mal unter die Lupe genommen. Du hast einen Tippfehler. Es muss title statt titel heißen.
    Code:
    title="{$txt.BOX_PRODUCTS_EDIT}"
    Dann wirds auch sofort angezeigt.
     
  12. Cyrus (LeGong)

    Cyrus (LeGong) Erfahrener Benutzer

    Registriert seit:
    21. Dezember 2011
    Beiträge:
    1.432
    Danke erhalten:
    342
    Danke vergeben:
    176
    also jetzt habe ich das geändert
    Code:
    <?xml version="1.0"?>
    <!-- {load_language_text section="admin_menu" use_fallback=$smarty.const.SHOW_UNTRANSLATED_MENUITEMS} -->
    <admin_menu>
        <menugroup id="BOX_HEADING_CP">
            <menuitem sort="140" link="products_edit.php" title="Artikelpreise &auml;ndern" />
        </menugroup>
    </admin_menu>
    die Datei products_edit.php in Ordner admin hochgeladen, In der DB-Tabelle "admin_access" die Spalte "products_edit" eigefügt. Name = products_edit; TYP = (int)1; Null = nein; Standard = wie definiert 1. Beide Caches geleert. Es geht leider trotzdem nicht. Kann es sein dass meine alle 3 Test-Installationen Incomplett sind oder mache ich sonst irgendwo einen fehler?
     
  13. Moritz (Gambio)

    Moritz (Gambio) Administrator

    Registriert seit:
    26. April 2011
    Beiträge:
    5.786
    Danke erhalten:
    2.692
    Danke vergeben:
    903
    Also nachdem der Tippfehler beseitigt wurde, hats in meiner Testumgebung sofort geklappt. Lösch mal im cache-Ordner die Datei(en), die mit AdminMenuSource_ beginnt bzw. beginnen.
     
  14. Cyrus (LeGong)

    Cyrus (LeGong) Erfahrener Benutzer

    Registriert seit:
    21. Dezember 2011
    Beiträge:
    1.432
    Danke erhalten:
    342
    Danke vergeben:
    176
    Vielen Dank Barbara und Moritz,
    jetzt auf einmal geht es. Es hat mit der Rechte in der DB zu tun gehabt. Und bestimmt auch mit dem Fehler "TITLE" statt "TITLE".
    Nochmals Dankeschön und ein erfolgreiches neues Jahr mit viele schöne Momente.
     
  15. Cyrus (LeGong)

    Cyrus (LeGong) Erfahrener Benutzer

    Registriert seit:
    21. Dezember 2011
    Beiträge:
    1.432
    Danke erhalten:
    342
    Danke vergeben:
    176
    übrigens Moritz,
    jetzt das wir dabei sind, wäre eine erweiterung wie folgt sicher genug?
    PHP:
    <?php
    require_once ('includes/application_top.php');
    /*$coo_lang_file_master->init_from_lang_file('lang/' . basename($_SESSION['language']). '/admin/gm_gmotion.php');
    $coo_lang_file_master->init_from_lang_file('lang/' . basename($_SESSION['language']). '/admin/gm_product_images.php');
    include_once(DIR_FS_ADMIN . 'gm/classes/GMProductUpload.php');
    include_once(DIR_FS_ADMIN . 'gm/classes/GMUpload.php');
    include_once(DIR_FS_ADMIN . 'gm/classes/GMAltText.php');
    // EOF GM_MOD
    require_once ('includes/classes/categories.php');*/
    require_once (DIR_FS_INC.'xtc_get_tax_rate.inc.php');
    /*require_once (DIR_FS_INC.'xtc_get_products_mo_images.inc.php');
    require_once (DIR_WS_CLASSES.'currencies.php');*/

    /*$currencies = new currencies();
    $catfunc = new categories();*/


    // end of pre-checks and actions, HTML output follows

    /*if($_GET['action'] != 'new_category' 
        && $_GET['action'] != 'edit_category' 
        && $_GET['action'] != 'new_product' 
        && $_GET['action'] != 'edit_crossselling'
    )
    {
    echo '<!doctype html public "-//W3C//DTD HTML 4.01 Transitional//EN">';
    }
    else
    {
    echo '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">';
    }*/

    /*xtc_db_close();

    if($_SESSION['customers_status']['customers_status_id'] !== '0')
    {
        die('Zugriff verweigert');
    }

    echo '<html>';
    echo '<head>';
    echo '<link rel="stylesheet" type="text/css" href="ChangeProductsInfo.css" />';
    echo '<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />';
    echo '<title>Produkte in Datenbak ändern</title>';*/

    ?>

    <html <?php echo HTML_PARAMS?>>
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=<?php echo $_SESSION['language_charset']; ?>">
            <?php
            
    if(preg_match('/MSIE [\d]{2}\./i'$_SERVER['HTTP_USER_AGENT']))
            {
            
    ?>
            <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE9" />
            <?php
            
    }
            
    ?>
            <title><?php echo "Produkt-Info-&Auml;ndern" ?></title>
            <link rel="stylesheet" type="text/css" href="includes/stylesheet.css">
            <link rel="stylesheet" type="text/css" href="gm/css/lightbox.css">
            <link rel="stylesheet" type="text/css" href="gm/css/buttons.css">
            <link rel="stylesheet" type="text/css" href="gm/css/feature_set.css">
            <link rel="stylesheet" type="text/css" href="gm/css/scrollpane.css">
            <link rel="stylesheet" type="text/css" href="gm/css/article_tabs.css">
            <!--<script type="text/javascript" src="includes/general.js"></script>
            <script type="text/javascript" src="includes/javascript/categories.js"></script>-->
            
            <?php
            $coo_js_options_control 
    MainFactory::create_object('JSOptionsControl', array(false));
            
    $t_js_options_array =  $coo_js_options_control->get_options_array($_GET);
            
    ?>
            
            
            <?php /* BOF CP Admin_Menu_Erweiterung products_edit.php*/ ?>
            <script type="text/javascript"> var js_options = <?php echo json_encode($t_js_options_array?>; </script>
            <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

    <script type="text/javascript">
    function send(ak,id)
    {
        if(ak==1)
            document.f.ak.value = "up";
            document.f.id.value = id;
            document.f.submit();
    }
    </script>

            <?php /* EOF CP Admin_Menu_Erweiterung products_edit.php*/ ?>
            
            
    </head>
    <body style="margin: 0; background-color: #FFFFFF">


            <div id="spiffycalendar" class="text"></div>
            <!-- header //-->
            <?php require(DIR_WS_INCLUDES 'header.php'); ?>
            <!-- header_eof //-->

            <!-- body //-->
            <table style="border:none; width:100%;" cellspacing="2" cellpadding="2">
                <tr>
                    <td class="columnLeft2" width="<?php echo BOX_WIDTH?>" valign="top">
                        <!-- left_navigation //-->
                        <?php require(DIR_WS_INCLUDES 'column_left.php'); ?>
                        <!-- left_navigation_eof //-->
                    </td>
                    <!-- body_text //-->
                    <td class="boxCenter" valign="top">
                    
                    <?php /* BOF CP Admin_Menu_Erweiterung products_edit.php*/ ?>
                <?php
                  
                  
    // Aktion ausführen
    if(isset($_POST["ak"]))
    {
        
    // Datensätze ändern
        
    if($_POST["ak"]=="up")
        {
            
    $id = (int)$_POST["id"]; // sicherstellen, dass id eine Zahl ist, um SQL-Injection zu verhindern
            
            // mysql_real_escape ersetzt ' durch \', um SQL-Injection zu verhindern
            
    $sqlab "UPDATE products p, products_description pd set "
                     
    " p.products_model = '" mysql_real_escape_string($_POST["p_mod"][$id]) . "', "
                     
    " p.products_price = '" mysql_real_escape_string($_POST["p_p"][$id]) . "', "
                     
    " pd.products_meta_title = '" mysql_real_escape_string($_POST["p_mt"][$id]) . "', "
                     
    " pd.products_name = '" mysql_real_escape_string($_POST["p_n"][$id]) . "', "
                     
    " pd.products_keywords = '" mysql_real_escape_string($_POST["p_kw"][$id]) . "'"
                     
    " WHERE p.products_id = $id"
                     
    " and pd.products_id = p.products_id";
            
    mysql_query($sqlab);
        }


    }

    // Formularbeginn
    echo '<form name="f" action="products_edit.php" method="post">';
    echo 
    '<input name="ak" type="hidden" />';
    echo 
    '<input name="id" type="hidden" />';

    //Tabellenbeginn
    echo "\n\n" '<table border="1px">'
         
    '<tr bgcolor="#585858" style="color:#fff">'
         
    '<td style="color:#cccccc">Kategorie</td>'
         
    '<td>Art-Nr.</td>'
         
    '<td>Prod-Name</td>'
         
    '<td style="color:#cccccc">Price-Brutto</td>'
         
    '<td>Price-Netto</td>'
         
    '<td>Prod-Meta-Titel</td>'
         
    '<td>Prod-Keywords</td>'
         
    '<td>Aktion</td>'
         
    '</tr>';

    //Anzeigen
    $products_query 'SELECT
                       p.products_model,
                       pd.products_name,
                       p.products_price,
                       p.products_tax_class_id,
                       pd.products_meta_title,
                       pd.products_keywords,
                       cd.categories_name,
                       p.products_id as products_id,
                       pd.products_id as products_id,
                       p2c.categories_id as categories_id,
                       cd.categories_id as categories_id
                    FROM
                       (products as p INNER JOIN products_description as pd ON pd.products_id = p.products_id)
                       inner join products_to_categories as p2c on p2c.products_id = pd.products_id
                       inner join categories_description as cd ON cd.categories_id = p2c.categories_id
                       
                    WHERE 
                    pd.language_id=2 AND cd.language_id=2 order by pd.products_name asc'
    ;
    $res mysql_query($products_query)
    or die (
    'MySQL-Error: ' mysql_error());

    //Alle vorhandene Datensätze
    while ($dsatz mysql_fetch_array($res))
    {
        if (
    $dsatz['products_tax_class_id'] == '')
    {
        
    $price_brutto round($dsatz['products_price'], 2);
    }
    else
        if (
    $dsatz['products_tax_class_id'] == '1')
        {
            
    $price_brutto round($dsatz['products_price'] * ((100 19)/100), 2);
        }
        else
        {
                
    $price_brutto round($dsatz['products_price'] * ((100 7)/100), 2);
        }
        
    $id $dsatz['products_id'];
            
        
    // htmlspecialchars ersetzt " durch &quot; , um XSS zu verhindern
        
    echo "\n\n" '<tr>'
             
    '<td><input name="cat-name[' $id ']" value="' htmlspecialchars($dsatz['categories_name']) . '" size="16" readonly style="color:#FF0000" title="' htmlspecialchars($dsatz['categories_name']) . '" /></td>'
             
    '<td><input name="p_mod[' $id ']" value="' htmlspecialchars($dsatz['products_model']) . '" size="8" style="text-align:right" /></td>'
             
    '<td><input name="p_n[' $id ']" value="' htmlspecialchars($dsatz['products_name']) . '" size="25" /></td>'
             
    '<td><input name="p_p_b[' $id ']" value="' $price_brutto '" size="10" style="color:#FF0000; text-align:right" /></td>'
             
    '<td><input name="p_p[' $id ']" value="' htmlspecialchars($dsatz['products_price']) . '" size="9" style="text-align:right" /></td>'
             
    '<td><input name="p_mt[' $id ']" value="' htmlspecialchars($dsatz['products_meta_title']) . '" size="20" title="' htmlspecialchars($dsatz['products_meta_title']) . '" /></td>'
             
    '<td><input name="p_kw[' $id ']" value="' htmlspecialchars($dsatz['products_keywords']) . '" size="30" title="' htmlspecialchars($dsatz['products_keywords']) . '" /></td>'
             
    '<td><a href="javascript:send(1,' $id ');" style="color:#006633">speichern</a>'
             
    '</tr>';
    }
    echo 
    '</table>';
    echo 
    '</form>';         
                
    ?>
                
                <?php /* EOF CP Admin_Menu_Erweiterung products_edit.php*/ ?>
                
                
              <!-- close tables from above modules //-->
            </td>
                    <!-- body_text_eof //-->
                </tr>
            </table>
            <!-- body_eof //-->
    <!-- footer //-->
    <?php require(DIR_WS_INCLUDES 'footer.php'); ?>
            <!-- footer_eof //-->
        </body>
    </html>
    <?php require(DIR_WS_INCLUDES 'application_bottom.php'); ?>
     
  16. Cyrus (LeGong)

    Cyrus (LeGong) Erfahrener Benutzer

    Registriert seit:
    21. Dezember 2011
    Beiträge:
    1.432
    Danke erhalten:
    342
    Danke vergeben:
    176
    Übrigens die XML-Datei mag auch keine UMLAUTE. Auch nicht wenn man sie in Form &auml; schreibt.
     
  17. Moritz (Gambio)

    Moritz (Gambio) Administrator

    Registriert seit:
    26. April 2011
    Beiträge:
    5.786
    Danke erhalten:
    2.692
    Danke vergeben:
    903
    Die XML-Schreibweise ist z. B. für ein ä &amp;auml; wenn ich mich recht entsinne. Code sieht auf den ersten schnellen Blick sicherheitstechnisch gut aus. Aber dafür lege ich nicht meine Hand ins Feuer ;).
     
  18. Cyrus (LeGong)

    Cyrus (LeGong) Erfahrener Benutzer

    Registriert seit:
    21. Dezember 2011
    Beiträge:
    1.432
    Danke erhalten:
    342
    Danke vergeben:
    176
    Da entsinnst du dich genau richtig. Vielen Dank nochmals, dass du dir die Datein angeschaut hast.