Tracking 2.0

Thema wurde von HolgerNils (xycons.de), 17. September 2012 erstellt.

  1. HolgerNils (xycons.de)

    HolgerNils (xycons.de) G-WARD 2013/2014

    Registriert seit:
    29. Oktober 2011
    Beiträge:
    1.972
    Danke erhalten:
    456
    Danke vergeben:
    369
    #1 HolgerNils (xycons.de), 17. September 2012
    Zuletzt bearbeitet: 17. September 2012
    Hallo,
    nachfolgend eine Überarbeitung / Neuausrichtung des "Tracking Lite", welches bereits vor einigen Wochen im Bereich "Tutorials" vorgestellt wurde. Um störende Unzulänglichkeiten auszubessern und mehr Flexibilität in die Sache zu bringen entstand diese Nachfolgeversion.

    Features:
    - Freie Definition der Versanddienstleister (Carrier) je nach Notwendigkeit
    - Keine Vorgabe von Carrieren, die gar nicht verwendet werden somit genau die, die man braucht
    - Setzen eines Standard-Carriers, der dann als Vorgabe benutzt wird.
    - Freie HTML-Gestaltung der gewünschten Texte über den bekannten HTML-Editor im Admin-Bereich
    - Einbindung in die Admin-Menüs des GX2
    - Deutsch und Englisch

    So sieht das Ganze nach dem Einbau aus...

    Die Verwaltung der Versanddienstleister:
    track1.JPG

    track2.JPG

    Die Elemente in der Bestellverwaltung:
    Ein Link im Kopf (nach Speicherung der Tracking-Nummer) erlaubt die direkte Kontrolle der Trackingstatusinformation und verzweigt auf die jeweilige Trackingabfrageseite des Versandanbieters.
    track3.JPG

    Fortsetzung gleich, max. 5 Bilder pro Post ;-)
     
  2. HolgerNils (xycons.de)

    HolgerNils (xycons.de) G-WARD 2013/2014

    Registriert seit:
    29. Oktober 2011
    Beiträge:
    1.972
    Danke erhalten:
    456
    Danke vergeben:
    369
    Die Tracking-Id wird im entsprechenden Bereich der Order (oberhalb der Statusveränderungen) eingetragen:
    track4.JPG

    In der Templatevorlage für Bestellstatusänderungen stehen nun verwendbare Platzhalter zur Verfügung:
    track6.JPG

    Sobald eine Tracking-Id eingetragen und gespeichert wurde wird entsprechend dem gewählten Versanddienstleister der notwendige Text in HTML und TXT - sowie der Trackingabfrage-Link - aufbereitet und verwendet:
    track5.JPG
     
  3. HolgerNils (xycons.de)

    HolgerNils (xycons.de) G-WARD 2013/2014

    Registriert seit:
    29. Oktober 2011
    Beiträge:
    1.972
    Danke erhalten:
    456
    Danke vergeben:
    369
    #3 HolgerNils (xycons.de), 17. September 2012
    Zuletzt bearbeitet: 19. September 2012
    Hier die Files und Installationsinformationen.

    Bitte zunächst NICHT PRODUKTIV einsetzen und erst in einem eigenen Testshop prüfen und testen!

    ==============================================================================================
    SQL:
    ALTER TABLE `admin_access` ADD `tracking_carrier` INT( 1 ) NOT NULL DEFAULT '0';
    UPDATE `admin_access` SET tracking_carrier = 1;

    CREATE TABLE IF NOT EXISTS `carrier_tracking` (
    `ct_id` int(11) NOT NULL AUTO_INCREMENT,
    `ct_language_id` int(11) NOT NULL DEFAULT '1',
    `ct_carrier` varchar(30) COLLATE latin1_german1_ci NOT NULL DEFAULT '',
    `ct_default` int(1) NOT NULL DEFAULT '0',
    `ct_infotemplate_html` text COLLATE latin1_german1_ci NOT NULL,
    `ct_infotemplate_txt` text COLLATE latin1_german1_ci NOT NULL,
    `ct_link` text COLLATE latin1_german1_ci NOT NULL,
    PRIMARY KEY (`ct_id`)
    );


    CREATE TABLE IF NOT EXISTS `orders_tracking` (
    `orders_id` int(11) NOT NULL,
    `tracking_code` varchar(39) COLLATE latin1_german1_ci NOT NULL DEFAULT '',
    `tracking_carrier` varchar(30) COLLATE latin1_german1_ci NOT NULL DEFAULT '',
    PRIMARY KEY (`orders_id`)
    );

    Wenn bereits das Statuslogging integriert wurde dann noch folgende SQLs ausführen:
    INSERT INTO `orders_status` (`orders_status_id`, `language_id`, `orders_status_name`) VALUES(1000, 2, 'Tracking-ID gespeichert');
    INSERT INTO `orders_status` (`orders_status_id`, `language_id`, `orders_status_name`) VALUES(1000, 3, 'Tracking-ID stored');
    =============================================================================================
    File hochladen /user_classes/conf/AdminMenu/menu_tracking_carrier.xml
    Folgender Inhalt:

    <?xml version="1.0"?>
    <!-- {load_language_text section="admin_menu"} -->
    <admin_menu>
    <menugroup id="BOX_HEADING_CONFIGURATION">
    <menuitem sort="145" link="tracking_carrier.php" title="Versandtracking" />
    </menugroup>
    </admin_menu>

    ==============================================================================================
    File hochladen /lang/german/sections/carrier_tracking.lang.inc.php
    Folgender Inhalt:

    <?php

    $t_language_text_section_content_array = array
    (
    'BOX_CARRIER_TRACKING' => 'Versandtracking',
    'TABLE_HEADING_CARRIER_TRACKING' => 'Versender',
    'TEXT_CARRIERS' => 'Versender',
    'TEXT_SELECTED_LANGUAGE' => 'Gewählte Sprache',
    'TEXT_NEW_CARRIER_FIELDNAME' => 'Neuer Versender',
    'TEXT_USE_PLACEHOLDER' => 'Benutzen Sie jeweils den Platzhalter <b>{$TRACKING_ID}</b> wo später die entsprechende Tracking-ID eingefügt werden soll!',
    'TEXT_TEMPLATE' => 'Mailvorlage',
    'TEXT_LINK_TO_CARRIER' => 'Link zur Versender-Resource',
    'TEXT_ADD_VALUE' => 'Hinzufügen',
    'IMAGE_ICON_INFO_EDIT' => 'Bearbeiten',
    'IMAGE_ICON_INFO_DELETE' => 'Löschen',
    );

    ?>

    ==============================================================================================
    File hochladen /lang/english/sections/carrier_tracking.lang.inc.php
    Folgender Inhalt:

    <?php

    $t_language_text_section_content_array = array
    (
    'BOX_CARRIER_TRACKING' => 'Carriertracking',
    'TABLE_HEADING_CARRIER_TRACKING' => 'Carrier',
    'TEXT_CARRIERS' => 'Carrier',
    'TEXT_SELECTED_LANGUAGE' => 'Chosen language',
    'TEXT_NEW_CARRIER_FIELDNAME' => 'New Carrier',
    'TEXT_USE_PLACEHOLDER' => 'Use the placeholder <b>{$TRACKING_ID}</b> where the tracking ID should appear!',
    'TEXT_TEMPLATE' => 'Mailtemplate',
    'TEXT_LINK_TO_CARRIER' => 'Link to Carrier-TT-Resource',
    'TEXT_ADD_VALUE' => 'Add Record',
    'IMAGE_ICON_INFO_EDIT' => 'Edit',
    'IMAGE_ICON_INFO_DELETE' => 'Delete',
    );

    ?>

    ==============================================================================================
     

    Anhänge:

  4. HolgerNils (xycons.de)

    HolgerNils (xycons.de) G-WARD 2013/2014

    Registriert seit:
    29. Oktober 2011
    Beiträge:
    1.972
    Danke erhalten:
    456
    Danke vergeben:
    369
    File hochladen /admin/tracking_carrier.php
    Folgender Inhalt:

    <?php
    /* --------------------------------------------------------------
    tracking_carrier.php 2012-09-17 gm
    Gambio GmbH
    http://www.gambio.de
    Copyright (c) 2010 Gambio GmbH
    Released under the GNU General Public License (Version 2)
    [http://www.gnu.org/licenses/gpl-2.0.html]
    Modification: Holger Schrörs (2012)
    --------------------------------------------------------------
    based on:
    (c) 2000-2001 The Exchange Project (earlier name of osCommerce)
    (c) 2002-2003 osCommerce(orders_status.php,v 1.19 2003/02/06); www.oscommerce.com
    (c) 2003 nextcommerce (orders_status.php,v 1.9 2003/08/18); www.nextcommerce.org
    (c) 2003 XT-Commerce - community made shopping http://www.xt-commerce.com ($Id: orders_status.php 1125 2005-07-28 09:59:44Z novalis $)

    Released under the GNU General Public License
    --------------------------------------------------------------*/

    require('includes/application_top.php');
    require_once(DIR_FS_ADMIN . 'gm/fckeditor/fckeditor.php');

    define('TABLE_CARRIER_TRACKING', 'carrier_tracking');
    define('FILENAME_CARRIER_TRACKING', 'tracking_carrier.php');

    $coo_text_mgr = MainFactory::create_object('LanguageTextManager', array('carrier_tracking', $_SESSION['languages_id']) );
    define('TABLE_HEADING_CARRIER_TRACKING', $coo_text_mgr->get_text('TABLE_HEADING_CARRIER_TRACKING'));
    define('BOX_CARRIER_TRACKING', $coo_text_mgr->get_text('BOX_CARRIER_TRACKING'));
    define('TEXT_CARRIERS', $coo_text_mgr->get_text('TEXT_CARRIERS'));
    define('TEXT_SELECTED_LANGUAGE', $coo_text_mgr->get_text('TEXT_SELECTED_LANGUAGE'));
    define('TEXT_NEW_CARRIER_FIELDNAME', $coo_text_mgr->get_text('TEXT_NEW_CARRIER_FIELDNAME'));
    define('TEXT_USE_PLACEHOLDER', $coo_text_mgr->get_text('TEXT_USE_PLACEHOLDER'));
    define('TEXT_TEMPLATE', $coo_text_mgr->get_text('TEXT_TEMPLATE'));
    define('TEXT_LINK_TO_CARRIER', $coo_text_mgr->get_text('TEXT_LINK_TO_CARRIER'));
    define('TEXT_ADD_VALUE', $coo_text_mgr->get_text('TEXT_ADD_VALUE'));
    define('IMAGE_ICON_INFO_EDIT', $coo_text_mgr->get_text('IMAGE_ICON_INFO_EDIT'));
    define('IMAGE_ICON_INFO_DELETE', $coo_text_mgr->get_text('IMAGE_ICON_INFO_DELETE'));


    if ($_GET['action'] == 'new') {
    $oID = '-1';
    }

    if(empty($_GET['lang'])){
    $gm_get_language = xtc_db_query("SELECT * FROM " .TABLE_LANGUAGES. " WHERE directory = '" .$_SESSION['language']. "' LIMIT 1");
    $row = xtc_db_fetch_array($gm_get_language);
    $lang_id = $row['languages_id'];
    $lang = $row['directory'];
    $lang_headline = $row['name'];
    } else {
    $gm_get_language = xtc_db_query("SELECT * FROM " .TABLE_LANGUAGES. " WHERE directory = '" .$_GET['lang']. "' LIMIT 1");
    $row = xtc_db_fetch_array($gm_get_language);
    $lang_id = $row['languages_id'];
    $lang = $row['directory'];
    $lang_headline = $row['name'];
    }

    if ($_GET['oID']) {
    $oID = xtc_db_prepare_input($_GET['oID']);
    }

    $missing_name = false;

    if(isset($_POST['go'])) {
    if ($_POST['gm_as_default'] == 'on') {
    $gm_default = '1';
    $sql_update = "UPDATE " .TABLE_CARRIER_TRACKING. " SET ct_default = '0' WHERE ct_language_id = '" .$lang_id. "'";
    xtc_db_query($sql_update);
    } else {
    $gm_default = '0';
    }
    if($oID != '-1') {
    $sql_update = "UPDATE " .TABLE_CARRIER_TRACKING. " SET ct_infotemplate_html = '" .xtc_db_prepare_input($_POST['gm_carrier_content_html']). "', ct_infotemplate_txt = '" .xtc_db_prepare_input($_POST['gm_carrier_content_txt']). "', ct_link = '" .xtc_db_prepare_input($_POST['gm_carrier_content_link']). "', ct_default = '" .xtc_db_input($gm_default). "' WHERE ct_id = '" .$oID. "' and ct_language_id = '" .$lang_id. "';";
    xtc_db_query($sql_update);
    $oID = '';
    } else {
    if(!empty($_POST['new_carrier_name'])) {
    $sql_insert = "INSERT INTO " .TABLE_CARRIER_TRACKING. " VALUES
    (NULL,
    '" .$lang_id. "','"
    .$_POST['new_carrier_name'] . "','"
    .xtc_db_input($gm_default) ."','"
    .$_POST['gm_carrier_content_html']. "','"
    .$_POST['gm_carrier_content_txt']. "','"
    .$_POST['new_carrier_content_link']. "');";
    echo 'Insert(' . $sql_insert .')';
    xtc_db_query($sql_insert);
    $oID = '';
    } else {
    $missing_name = true;
    }
    }
    }

    if(isset($_POST['cancel'])) {
    $oID = '';
    }

    if(isset($_POST['delete'])) {
    $sql_delete =
    "DELETE FROM " .TABLE_CARRIER_TRACKING. "
    WHERE ct_id = '" .$oID. "' AND ct_language_id = '" .$lang_id. "'";
    xtc_db_query($sql_delete);
    $oID = '';
    }
    ?>

    <!DOCTYPE html public "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html <?php echo HTML_PARAMS; ?>>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=<?php echo $_SESSION['language_charset']; ?>">
    <title><?php echo TITLE; ?></title>
    <link rel="stylesheet" type="text/css" href="includes/stylesheet.css">
    <script type="text/javascript" src="includes/general.js"></script>
    </head>
    <body marginwidth="0" marginheight="0" topmargin="0" bottommargin="0" leftmargin="0" rightmargin="0" bgcolor="#FFFFFF" onload="SetFocus();">
    <!-- header //-->
    <?php require(DIR_WS_INCLUDES . 'header.php'); ?>
    <!-- header_eof //-->

    <!-- body //-->
    <table border="0" width="100%" cellspacing="2" cellpadding="2">
    <tr>
    <td class="columnLeft2" width="<?php echo BOX_WIDTH; ?>" valign="top"><table border="0" width="<?php echo BOX_WIDTH; ?>" cellspacing="1" cellpadding="1" class="columnLeft">
    <!-- left_navigation //-->
    <?php require(DIR_WS_INCLUDES . 'column_left.php'); ?>
    <!-- left_navigation_eof //-->
    </table></td>
    <!-- body_text //-->
    <td class="boxCenter" width="100%" valign="top">
    <table border="0" width="100%" cellspacing="0" cellpadding="2">
    <tr>
    <td>
    <div class="pageHeading" style="background-image:url(images/gm_icons/meinshop.png)"><?php echo BOX_CARRIER_TRACKING; ?></div>
    <br>
    </td>
    </tr>
    <tr>
    <td>
    <?php
    $gm_get_languages = xtc_db_query("SELECT languages_id, name, image, directory FROM languages ORDER BY name");
    while($row = xtc_db_fetch_array($gm_get_languages)){
    /* echo '<a style="a:hover { font-weight:bold; color:green; text-decoration:none; }" href="' . $_SERVER['PHP_SELF'] . '?oID=' . $_GET['oID'] . '&lang=' . $row['directory'] . '"><img src="'.DIR_WS_LANGUAGES.$row['directory'].'/admin/images/'.$row['image'].'" border="0" alt="' . $row['name'] . '" title="' . $row['name'] . '" /></a>'; */
    echo '<a style="a:hover { font-weight:bold; color:green; text-decoration:none; }" href="' . $_SERVER['PHP_SELF'] . '?oID=0&lang=' . $row['directory'] . '"><img src="'.DIR_WS_LANGUAGES.$row['directory'].'/admin/images/'.$row['image'].'" border="0" alt="' . $row['name'] . '" title="' . $row['name'] . '" /></a>';
    echo ' ';
    }
    ?>
    </td>
    </tr>
    <tr>
    <td valign="top">
    <table border="0" width="100%" cellspacing="0" cellpadding="0">
    <tr>
    <td valign="top"><table border="0" width="75%" cellspacing="0" cellpadding="2">
    <tr class="dataTableHeadingRow">
    <td class="dataTableHeadingContent"><?php echo TABLE_HEADING_CARRIER_TRACKING .' - ('. TEXT_SELECTED_LANGUAGE .': '. $lang_headline .')'; ?></td>
    </tr>
    <!-- Datenzeile generieren... -->
    <tr>
    <td valign="top"><table border="0" width="100%" cellspacing="0" cellpadding="2">
    <?php
    $ctracking_query_raw = "select * from " . TABLE_CARRIER_TRACKING . " where ct_language_id = '" . $lang_id. "' order by ct_id";
    $ctracking_query = xtc_db_query($ctracking_query_raw);
    while ($ctracking = xtc_db_fetch_array($ctracking_query))
    {
    if ( $oID == $ctracking['ct_id'] )
    {
    echo '<tr class="dataTableRowSelected" onmouseover="this.style.cursor=\'hand\'" onclick="document.location.href=\'' . xtc_href_link(FILENAME_CARRIER_TRACKING, 'oID=' . $oInfo->ct_id . '&lang=' . $lang .'&action=edit') . '\'">' . "\n";
    } else {
    echo '<tr class="dataTableRow" onmouseover="this.className=\'dataTableRowOver\';this.style.cursor=\'hand\'" onmouseout="this.className=\'dataTableRow\'" onclick="document.location.href=\'' . xtc_href_link(FILENAME_CARRIER_TRACKING, 'oID=' . $ctracking['ct_id'] . '&lang=' . $lang) . '\'">' . "\n";
    }
    if($ctracking['ct_default'] == '1') {
    echo '<td class="dataTableContent"><b>' . $ctracking['ct_carrier'] . '</b> (Standard)</td>' . "\n";
    } else {
    echo '<td class="dataTableContent">' . $ctracking['ct_carrier'] . '</td>' . "\n";
    }
    { ?>
    <td class="dataTableContent" align="right">
    <?php if ( $oID == $ctracking['ct_id'] ) { echo xtc_image(DIR_WS_IMAGES . 'icons/red.png', ''); } else { echo '<a href="' . xtc_href_link(FILENAME_CARRIER_TRACKING, 'oID=' . $ctracking['ct_id']) . '&lang=' . $lang . '">' . xtc_image(DIR_WS_IMAGES . 'icons/icon_edit.gif', IMAGE_ICON_INFO_EDIT) . '</a>'; } ?>
    <?php echo '<a href="' . xtc_href_link(FILENAME_CARRIER_TRACKING, '&oID=' . $ctracking['ct_id']) . '&lang=' . $lang . '&action=delete' . '">' . xtc_image(DIR_WS_IMAGES . 'buttons/button_cancel_red_cross.png', IMAGE_ICON_INFO_DELETE) . '</a>'; ?>&nbsp;
    </td>
    </tr>
    <?php
    }
    }
    ?>
    <!-- Datenzeile generieren... ENDE -->
    </table></td>
    </tr>
    </table>
    </td>
    </tr>
    </table></td>
    <tr>
    <?php
    if(empty($oID)){
    echo '<td colspan="2" align="left"><a class="button" onClick="this.blur();" href="tracking_carrier.php?action=new&lang=' .$lang. '">' .TEXT_ADD_VALUE. '</a></td>';
    }
    ?>
    </tr>
    </table>

    <?php
    if( !empty($oID) && $_GET['action'] != 'delete'){
    $tmpl_query = "SELECT ct_carrier, ct_default, ct_infotemplate_html, ct_infotemplate_txt, ct_link FROM " .TABLE_CARRIER_TRACKING. " WHERE ct_id = '" .$oID. "' AND ct_language_id = '" .$lang_id. "'";
    $gm_get_templates = xtc_db_query($tmpl_query);
    $templates = xtc_db_fetch_array($gm_get_templates);
    ?>
    <br />
    <form name="gm_carrier_form" action="<?php echo xtc_href_link('tracking_carrier.php', 'oID='.$oID.'&lang='.$lang); ?>" method="post" enctype="multipart/form-data">
    <table style="border: 1px solid #dddddd" border="0" cellpadding="0" cellspacing="0" width="95%"></table>
    <table style="border: 1px solid #dddddd" border="0" cellpadding="0" cellspacing="0" height="500" width="1000">
    <tbody>
    <?php if($oID == '-1'){ ?>
    <tr class="dataTableRow">
    <?php if($missing_name) { ?>
    <td style="color: red; font-size: 12px; padding: 0px 10px 11px 10px; text-align: justify; width: 752px;"><b>
    <?php } else { ?>
    <td style="color: black; font-size: 12px; padding: 0px 10px 11px 10px; text-align: justify; width: 752px;"><b><b>
    <?php } ?>
    <?php echo TEXT_NEW_CARRIER_FIELDNAME .': '; ?> </b> <input type="text" name="new_carrier_name" size="30" maxlength="30">
    </td>
    </tr>
    <?php } ?>
    <tr class="dataTableRow">
    <td style="font-size: 12px; padding: 0px 10px 11px 10px; text-align: justify">
    <br />
    <?php if($oID != '-1') { ?>
    <strong>HTML-<?php echo TEXT_TEMPLATE ?> - <?php echo TEXT_CARRIERS . ': ' .$templates['ct_carrier']. ' (' .$lang_headline.')'; ?></strong>
    <?php } else { ?>
    <strong>HTML-<?php echo TEXT_TEMPLATE ?> - <?php echo TEXT_CARRIERS . ': ' .TEXT_NEW_CARRIER_FIELDNAME. ' (' .$lang_headline.')'; ?></strong>
    <?php } ?>
    <br />
    <?php
    @clearstatcache();
    if($oID != '-1') {
    $content = xtc_db_prepare_input($templates['ct_infotemplate_html']);
    } else {
    $content = '';
    }
    if(USE_WYSIWYG == 'true') {
    $oFCKeditor = new FCKeditor('gm_carrier_content_html');
    $oFCKeditor->BasePath = DIR_WS_ADMIN . 'gm/fckeditor/';
    $oFCKeditor->Height = 200;
    $oFCKeditor->Value = $content;
    $oFCKeditor->ToolbarSet = "Content";
    $oFCKeditor->Config["CustomConfigurationsPath"] = DIR_WS_ADMIN . "gm/fckeditor/gm_config.js";
    $oFCKeditor->Config["DefaultLanguage"] = $_SESSION['language_code'];
    $oFCKeditor->Create();
    } else {
    echo '<textarea id="gm_carrier_content" name="gm_carrier_content" wrap="" style="width:100%; height:300px">';
    echo $content;
    echo '</textarea>';
    }
    ?>
    <br /><br />
    <strong>TEXT-<?php echo TEXT_TEMPLATE ?> - <?php echo TEXT_CARRIERS .': '.$templates['ct_carrier'].' ('.$lang_headline.')' ?>;</strong>
    <br />
    <?php
    echo '<textarea id="gm_carrier_content_txt" name="gm_carrier_content_txt" wrap="" style="width:100%; height:100px">';
    @clearstatcache();
    echo $content = xtc_db_prepare_input($templates['ct_infotemplate_txt']);
    echo '</textarea>';
    ?>
    <br /><br />
    <strong><?php echo TEXT_LINK_TO_CARRIER ?> - <?php echo TEXT_CARRIERS .': '.$templates['ct_carrier'].' ('.$lang_headline.')' ?>;</strong>
    <br />
    <?php
    echo '<textarea id="gm_carrier_content_link" name="gm_carrier_content_link" wrap="" style="width:100%; height:50px">';
    @clearstatcache();
    echo $content = xtc_db_prepare_input($templates['ct_link']);
    echo '</textarea>';
    ?>
    <br /><br />
    </td>
    <?php if($templates['ct_default'] == '1') { ?>
    <td style="width: 159px;" class="infoBoxContent"><br /><?php echo xtc_draw_checkbox_field('gm_as_default','', true) ?> <?php echo TEXT_SET_DEFAULT ?> <br><br><br>
    <?php } else { ?>
    <td style="width: 159px;" class="infoBoxContent"><br /><?php echo xtc_draw_checkbox_field('gm_as_default','', false) ?> <?php echo TEXT_SET_DEFAULT ?> <br><br><br>
    <?php } ?>
    <?php echo '<input type="submit" name="go" class="button;" value="' . BUTTON_SAVE . '"/> ' ?>
    <br />
    <?php echo '<input type="submit" name="cancel" class="button;" value="' . BUTTON_CANCEL . '"/> ' ?>
    </td>
    </tr>
    </tbody>
    </table>
    <div class="main"><br /><?php echo TEXT_USE_PLACEHOLDER ?></div>
    </form>
    <?php } else {
    if( !empty($oID) && $_GET['action'] == 'delete'){ ?>
    <form name="gm_carrier_form" action="<?php echo xtc_href_link('tracking_carrier.php', 'oID='.$oID.'&action=DELETE' . '&lang='.$lang); ?>" method="post" enctype="multipart/form-data">
    <input type="submit" name="delete" class="button" value="<?php echo BUTTON_DELETE ?>"/>
    </form>
    <?php } } ?>
    <!-- body_text_eof //-->
    <!-- body_eof //-->
    </tr></table>
    <!-- footer //-->
    <?php require(DIR_WS_INCLUDES . 'footer.php'); ?>
    <!-- footer_eof //-->
    <br />
    </body>
    </html>
    <?php require(DIR_WS_INCLUDES . 'application_bottom.php'); ?>
     
  5. Dennis (MotivMonster.de)

    Dennis (MotivMonster.de) G-WARD 2013/14/15/16

    Registriert seit:
    22. September 2011
    Beiträge:
    30.984
    Danke erhalten:
    6.097
    Danke vergeben:
    1.079
    Beruf:
    Mann für alles :)
    Ort:
    Weilburg
    Aufgrund oftmals auftretender Copy & Paste Fehler durch Leerzeichen im forum. Evtl. das ganze einfach samt TXT Anleitung in ein IP / RAR File packen ?
    Nur sicherheitshalber, so als Vorschlag.

    PS. Sieht immer besser aus deine Version !! Hut ab !
     
  6. HolgerNils (xycons.de)

    HolgerNils (xycons.de) G-WARD 2013/2014

    Registriert seit:
    29. Oktober 2011
    Beiträge:
    1.972
    Danke erhalten:
    456
    Danke vergeben:
    369
    #6 HolgerNils (xycons.de), 17. September 2012
    Zuletzt bearbeitet: 17. September 2012
    ==============================================================================================
    Notwendige Modifikationen an der Datei /admin/order.php
    Die Anweisungen basieren auf einer "order.php" aus der Version 2.0.10g.
    Die Zeilenangabe basiert auf derselben Version, ggf. nach Enfügung vorangeganger Zeilen.

    Einfügen nach Zeile 27/28:

    Released under the GNU General Public License
    --------------------------------------------------------------*/
    //Tracking-GX2 (Start)
    define('TABLE_ORDERS_TRACKING', 'orders_tracking');
    define('TABLE_CARRIER_TRACKING', 'carrier_tracking');
    //Tracking-GX2 (Start)

    require ('includes/application_top.php');
    <<==============================================================================================>>
    Einfügen nach Zeile (106):

    $lang_query = xtc_db_query("select languages_id from " . TABLE_LANGUAGES . " where directory = '" . $order->info['language'] . "'");
    $lang = xtc_db_fetch_array($lang_query);
    $lang=$lang['languages_id'];

    //Tracking-GX2 (Start)
    if (!isset($lang)) $lang=$_SESSION['languages_id'];

    if (isset($_GET['oID'])) {
    $oID = xtc_db_prepare_input($_GET['oID']);
    $clanguage_query = xtc_db_query("SELECT language FROM " . TABLE_ORDERS . " WHERE orders_id = '" . xtc_db_input($oID) . "'");
    $clanguage = xtc_db_fetch_array($clanguage_query);
    $customer_lang=$clanguage['directory'];
    $clang_query = xtc_db_query("select languages_id from " . TABLE_LANGUAGES . " where directory = '" . $clanguage['language'] . "'");
    $clang = xtc_db_fetch_array($clang_query);
    $customer_lang_id=$clang['languages_id'];
    if($customer_lang_id == '') {
    $customer_lang_id = '2';
    $customer_lang = 'german';
    }
    } else {
    $customer_lang_id = '2';
    $customer_lang = 'german';
    }

    $track_query = xtc_db_query("select tracking_code, tracking_carrier from " . TABLE_ORDERS_TRACKING . " where orders_id = '".xtc_db_input($oID)."'");
    $track = xtc_db_fetch_array($track_query);
    $trackingcode = xtc_db_prepare_input($track['tracking_code']);
    $trackingcarrier = xtc_db_prepare_input($track['tracking_carrier']);

    $carrier_ids = array ();
    $carrier_id_array = array();
    $carrier_id_query = xtc_db_query("select ct_id, ct_carrier, ct_link, ct_infotemplate_html, ct_infotemplate_txt, ct_default from " .TABLE_CARRIER_TRACKING. " where ct_language_id = '".$lang."'");
    while ($carrier_id = xtc_db_fetch_array($carrier_id_query)) {
    $carrier_ids[] = array ('id' => $carrier_id['ct_id'], 'text' => $carrier_id['ct_carrier']);
    $carrier_id_array[$carrier_id['ct_id']] = $carrier_id['ct_carrier'];

    if(($carrier_id['ct_default'] == '1' && $trackingcarrier == '' ) || empty($trackingcarrier)) {
    $trackingcarrier = $carrier_id['ct_id'];
    }

    if(xtc_db_prepare_input($carrier_id['ct_id']) == $trackingcarrier ) {
    $trackinglink = str_replace("TRACKING_ID", $track['tracking_code'], $carrier_id['ct_link']);
    $trackinglink = str_replace("{", "", $trackinglink);
    $trackinglink = str_replace("}", "", $trackinglink);
    $trackinglink = str_replace("=$", "=", $trackinglink);

    $tracking_html = str_replace("TRACKING_ID", $track['tracking_code'], $carrier_id['ct_infotemplate_html']);
    $tracking_html = str_replace("{", "", $tracking_html);
    $tracking_html = str_replace("}", "", $tracking_html);
    $tracking_html = str_replace("$", "", $tracking_html);

    $tracking_text = str_replace("TRACKING_ID", $track['tracking_code'], $carrier_id['ct_infotemplate_txt']);
    $tracking_text = str_replace("{", "", $tracking_text);
    $tracking_text = str_replace("}", "", $tracking_text);
    $tracking_text = str_replace("$", "", $tracking_text);
    }
    }

    //Tracking-GX2 (Ende)

    <<==============================================================================================>>
    Einfügen ca. an Zeile 249:
    $smarty->assign('ORDER_DATE', xtc_date_long($check_status['date_purchased']));
    $smarty->assign('ORDER_STATUS', $orders_status_array[$gm_status]);
    //Tracking-GX2 (Start)
    $smarty->assign('TRACKING_ID', $trackingcode);
    $smarty->assign('TRACKING_HTML', $tracking_html);
    $smarty->assign('TRACKING_TXT', $tracking_text);
    $smarty->assign('TRACKING_LINK', $trackinglink);
    //Tracking-GX2 (Ende)

    if(defined('EMAIL_SIGNATURE')) {
    $smarty->assign('EMAIL_SIGNATURE_HTML', nl2br(EMAIL_SIGNATURE));
    $smarty->assign('EMAIL_SIGNATURE_TEXT', EMAIL_SIGNATURE);
    <<==============================================================================================>>
    Einfügen ca. an Zeile 349:
    $smarty->assign('ORDER_DATE', xtc_date_long($check_status['date_purchased']));

    $smarty->assign('ORDER_STATUS', $orders_status_array[$status]);
    //Tracking-GX2 (Start)
    $smarty->assign('TRACKING_ID', $trackingcode);
    $smarty->assign('TRACKING_HTML', $tracking_html);
    $smarty->assign('TRACKING_TXT', $tracking_text);
    $smarty->assign('TRACKING_LINK', $trackinglink);
    //Tracking-GX2 (Ende)

    if(defined('EMAIL_SIGNATURE')) {
    $smarty->assign('EMAIL_SIGNATURE_HTML', nl2br(EMAIL_SIGNATURE));
    $smarty->assign('EMAIL_SIGNATURE_TEXT', EMAIL_SIGNATURE);
    }
    <<==============================================================================================>>
    Einfügen ca. an Zeile 395:
    Die grünen Zeilen nur übernehmen, wenn auch das Statuslogging integriert wurde - ansonsten ersatzlos weglassen! Status-Logging: http://www.gambio-forum.de/threads/7738-GX2-Loggen-von-Lieferscheinen-Rechnungen-in-der-History

    xtc_redirect(xtc_href_link(FILENAME_ORDERS, xtc_get_all_get_params(array ('action')).'action=edit'));
    break;
    //Tracking-GX2 (Start)
    case 'update_tid':
    $oID = xtc_db_prepare_input($_GET['oID']);
    $TID = xtc_db_prepare_input($_POST['gm_trackcode']);
    $TCA = xtc_db_prepare_input($_POST['gm_carrier']);
    xtc_db_query("INSERT INTO " . TABLE_ORDERS_TRACKING . " (orders_id, tracking_code, tracking_carrier)
    VALUES ('".xtc_db_input($oID)."', '".$TID."', '".$TCA."')
    ON DUPLICATE KEY UPDATE tracking_code = '".$TID."', tracking_carrier = '".$TCA."'");
    $gm_status_entry = 'Tracking-ID (' .$carrier_id_array[$TCA]. ')[' .$TID. ']';
    $gm_status = '1000'; //Fixwert für "Tracking-ID erfasst'
    $customer_notified = '0';
    xtc_db_query("INSERT INTO " . TABLE_ORDERS_STATUS_HISTORY . " (orders_id, orders_status_id, date_added, customer_notified, comments) values ('".xtc_db_input($oID)."', '".xtc_db_input($gm_status)."', now(), '".$customer_notified."', '".xtc_db_input($gm_status_entry)."')");
    $messageStack->add_session(SUCCESS_ORDER_UPDATED, 'success');
    xtc_redirect(xtc_href_link(FILENAME_ORDERS, xtc_get_all_get_params(array ('action')).'action=edit'));
    break;
    //Tracking-GX2 (Ende)

    case 'resendordermail':
    break;
    <<==============================================================================================>>
    Einfügen ca. an Zeile 607:
    <?php if ( $order->customer['cIP']!='') { ?>
    <tr>
    <td width="80" class="main gm_strong" valign="top">
    <?php echo IP; ?>
    </td>
    <td colspan="5" class="main" valign="top">
    <?php echo $order->customer['cIP']; ?>
    </td>
    </tr>
    <?php } ?>
    <!-- Tracking-GX2 (Start) -->
    <?php if ( $track['tracking_code']!='') { ?>

    <?php
    $track_query = xtc_db_query("select tracking_code, tracking_carrier from " . TABLE_ORDERS_TRACKING . " where orders_id = '".$oID."'");
    $track = xtc_db_fetch_array($track_query);
    $trackingcode=$track['tracking_code'];
    $trackingcarrier=$track['tracking_carrier'];
    $track_link_query = xtc_db_query("select ct_carrier, ct_link from " .TABLE_CARRIER_TRACKING. " where ct_id = '".$trackingcarrier."' and ct_language_id = '".$customer_lang_id."'");
    $track_link = xtc_db_fetch_array($track_link_query);
    $trackinglink = str_replace("TRACKING_ID", $track['tracking_code'], $track_link['ct_link']);
    $trackinglink = str_replace("{", "", $trackinglink);
    $trackinglink = str_replace("}", "", $trackinglink);
    $trackinglink = str_replace("=$", "=", $trackinglink);
    ?>

    <tr>
    <td width="80" class="main gm_strong" valign="top">
    <?php echo 'Track-ID'; ?>
    </td>
    <td colspan="5" class="main" valign="top">
    <?php echo '(' . $carrier_id_array[$track['tracking_carrier']] . ') ' . '<a href="' .$trackinglink. '" target="_blank">'.$track['tracking_code'].'</a>'; ?>
    </td>
    </tr>
    <?php } ?>
    <!-- Tracking-GX2 (Ende) -->

    <tr>
    <td width="80" class="main gm_strong" valign="top">
    <?php echo ENTRY_LANGUAGE; ?>
    </td>
    <td colspan="5" class="main" valign="top">
    <?php echo $order->info['language']; ?>
    </td>
    </tr>
    <<==============================================================================================>>
    Einfügen ca. an Zeile 1254:
    // EOF GM_MOD
    ?>
    <!-- zmb clickandbuy end -->

    <!-- Tracking-GX2 (Start) -->
    <table border="0" width="100%" cellspacing="0" cellpadding="0" class="pdf_menu">
    <tr>
    <td class="dataTableHeadingContent" style="border-right: 0px;">
    <?php echo 'PAKET-TRACKING'; ?>
    </td>
    </tr>
    </table>
    <?php echo xtc_draw_form('tracking', FILENAME_ORDERS, xtc_get_all_get_params(array('action')) . 'action=update_tid'); ?>
    <table border="0" width="100%" cellspacing="0" cellpadding="2" class="gm_border dataTableRow">
    <tr>
    <td width="160" class="main" valign="top">
    <?php echo 'Carrier:'; ?>
    </td>
    <td class="main" valign="top">
    <?php echo xtc_draw_pull_down_menu('gm_carrier', $carrier_ids, $trackingcarrier); ?>
    </td>
    </tr>
    <tr>
    <td width="160" class="main" valign="top">
    <?php echo 'Tracking-ID:'; ?>
    </td>
    <td class="main" valign="top">
    <?php echo xtc_draw_input_field('gm_trackcode', $trackingcode, true); ?>
    </td>
    </tr>
    <tr>
    <td colspan="2" class="main" valign="top">
    <input type="submit" class="button" value="ID speichern">
    </td>
    </tr>
    </form>
    <!-- Tracking-GX2 (Ende) -->


    <!-- ORDERS - STATUS SEND -->
    <table border="0" width="100%" cellspacing="0" cellpadding="0" class="pdf_menu">
    <tr>
    <td class="dataTableHeadingContent" style="border-right: 0px;">
    <?php echo TABLE_HEADING_STATUS; ?>
    </td>
    </tr>
    </table>
    <<==============================================================================================>>
    Einfügen ca. an Zeile 1631:
    if (xtc_not_null($oInfo->last_modified))
    $contents[] = array ('text' => TEXT_DATE_ORDER_LAST_MODIFIED.' '.xtc_date_short($oInfo->last_modified));
    //Tracking-GX2 (Start)
    $track_query = xtc_db_query("select tracking_code, tracking_carrier from " . TABLE_ORDERS_TRACKING . " where orders_id = '".$oInfo->orders_id."'");
    $track = xtc_db_fetch_array($track_query);
    $trackingcode=$track['tracking_code'];
    $trackingcarrier=$track['tracking_carrier'];
    $track_link_query = xtc_db_query("select ct_carrier, ct_link from " .TABLE_CARRIER_TRACKING. " where ct_id = '".$trackingcarrier."' and ct_language_id = '".$customer_lang_id."'");
    $track_link = xtc_db_fetch_array($track_link_query);
    $trackinglink = str_replace("TRACKING_ID", $track['tracking_code'], $track_link['ct_link']);
    $trackinglink = str_replace("{", "", $trackinglink);
    $trackinglink = str_replace("}", "", $trackinglink);
    $trackinglink = str_replace("=$", "=", $trackinglink);
    $contents[] = array ('text' => 'Track-ID: ' . '(' . $track_link['ct_carrier'] . ') ' . '<a href="' .$trackinglink. '" target="_blank">' .$track['tracking_code']. '</a>');
    //Tracking-GX2 (Ende)

    $contents[] = array ('text' => '<br />'.TEXT_INFO_PAYMENT_METHOD.' '.$oInfo->payment_method);
    if ($oInfo->payment_method == 'clickandbuy_v2') {
    <<==============================================================================================>>
     
  7. HolgerNils (xycons.de)

    HolgerNils (xycons.de) G-WARD 2013/2014

    Registriert seit:
    29. Oktober 2011
    Beiträge:
    1.972
    Danke erhalten:
    456
    Danke vergeben:
    369
    Achso, hinterher nicht vergessen CACHE LÖSCHEN: Seiten und Module.
     
  8. Danny

    Danny Erfahrener Benutzer

    Registriert seit:
    17. Juni 2011
    Beiträge:
    1.398
    Danke erhalten:
    179
    Danke vergeben:
    213
    Hi Holger,
    sieht sehr spannend aus. Werde ich gerne mal testen. Wie schauts aus, wenn ich deine "Lite-Version" bereits im Einsatz habe? Einfach drüber bügeln?
     
  9. Bianca

    Bianca Erfahrener Benutzer

    Registriert seit:
    13. Oktober 2011
    Beiträge:
    406
    Danke erhalten:
    20
    Danke vergeben:
    35
    Aaaaalso ich werd's mal versuchen ;D Vielleicht versteh ich's ja step by step, so leider nur Bahnhof ;)
     
  10. HolgerNils (xycons.de)

    HolgerNils (xycons.de) G-WARD 2013/2014

    Registriert seit:
    29. Oktober 2011
    Beiträge:
    1.972
    Danke erhalten:
    456
    Danke vergeben:
    369
    Hi Danny,
    ja, einfach drüberbügeln. Aber die Daten der Lite-Version müssen angepasst werden, da sie in der Lite-Version ja in einer Zusatzspalte in der "orders" gespeichert wurden und nun hat das Ganze eine eigene Tabelle bekommen.

    Komme gleich mit einem SQL. Moment...
    Bis dahin wirst Du die bereits mit Lite erfassten Tracking-Code nicht sehen können.
     
  11. HolgerNils (xycons.de)

    HolgerNils (xycons.de) G-WARD 2013/2014

    Registriert seit:
    29. Oktober 2011
    Beiträge:
    1.972
    Danke erhalten:
    456
    Danke vergeben:
    369
    Wie Danny bemerkte, die Datei, die ganz oben anhängt, beinhaltet den Code.
    Die Passagen hier im Forum werden manchmal mit zusätzlichen Leerzeichen versehen, daher empfiehlt sich die in orders.php notwendigen Änderungen aus der beigelegten datei "MODIFIED_orders.php" zu nehmen und nicht aus dem Forum. Wenn Probleme auftauchen sag Bescheid.
     
  12. HolgerNils (xycons.de)

    HolgerNils (xycons.de) G-WARD 2013/2014

    Registriert seit:
    29. Oktober 2011
    Beiträge:
    1.972
    Danke erhalten:
    456
    Danke vergeben:
    369
    UPDATE von Tracking-Lite Version:

    Die erste Version dieses Moduls (Tracking Lite) speicherte die Tracking-IDs in einer zusätzlichen Spalte ('trackingcode') in der Tabelle "orders".
    In der neuen Version sind diese Daten in einer eigenen Tabelle gespeichert: "orders_tracking".
    Um die Daten der Lite-Version in die Struktur der jetzigen Version zu überführen bitte folgendermassen vorgehen.

    Den in der Lite-Version genutzen Versender als erstes im neuen Modul anlegen, somit sollte er die ID "1" erhalten.
    Ggf. in der Tabelle "carrier_tracking" nachschauen, welcher Wert in der Spalte "ct_id" steht. Diese ID, in der Regel die "1", wird benutzt für folgenden SQL-Befehl:

    Code:
    INSERT into orders_tracking (SELECT orders_id, trackingcode as tracking_code, '[B][COLOR=red]1[/COLOR][/B]' as tracking_carrier FROM orders WHERE trackingcode <> '')
    
    Die rote 1 steht für den Wert, der in "ct_id" in der Tabelle "carrier_tracking" bei dem Eintrag steht, der dem in der Lite-Version genutzten Versender entspricht.

    Die Spalte "trackingcode" der Liteversion in der Tabelle "orders" wird dann nicht mehr benutzt und kann nach einer gewissen Sicherheitsphase gelöscht werden.
     
  13. Bianca

    Bianca Erfahrener Benutzer

    Registriert seit:
    13. Oktober 2011
    Beiträge:
    406
    Danke erhalten:
    20
    Danke vergeben:
    35
    Also ich hab keinen Testshop, sollte ich vielleicht mal anlegen...
    Bei Dir funktioniert das doch so toll, was soll denn noch schief gehen...? :)
    Würd´s gerne direkt im richtigen Shop haben *ungeduldig sei* ;D
    Allerdings werde ich Dich dann mit Sicherheit wieder nerven müssen, ich hoffe es zwar, aber die Chance ist gering, dass ich´s selbst hinkrieg ;)
     
  14. Bianca

    Bianca Erfahrener Benutzer

    Registriert seit:
    13. Oktober 2011
    Beiträge:
    406
    Danke erhalten:
    20
    Danke vergeben:
    35
    Tzzz, falsches Zitat, aber egal ;D
     
  15. HolgerNils (xycons.de)

    HolgerNils (xycons.de) G-WARD 2013/2014

    Registriert seit:
    29. Oktober 2011
    Beiträge:
    1.972
    Danke erhalten:
    456
    Danke vergeben:
    369
    Also in keinem produktiven Shop - zumindest mir dann keine Vorwürfe machen wenn-denn-dann ;-)
     
  16. Bianca

    Bianca Erfahrener Benutzer

    Registriert seit:
    13. Oktober 2011
    Beiträge:
    406
    Danke erhalten:
    20
    Danke vergeben:
    35
    Aber was soll passieren können...? Nur so kann man´s in Echtzeit testen, oder...? :)
    Würde ich mich zu bereit erklären ;D
    Im schlimmsten Fall kann man´s doch wieder rausnehmen, oder?

    Ein bisschen Angst machst Du mir schon, aber das ignorier ich mal, das Haben-will-Teufelchen ruft lauter ;D
     
  17. Danny (tbcs-shop.de)

    Danny (tbcs-shop.de) Erfahrener Benutzer

    Registriert seit:
    12. Dezember 2011
    Beiträge:
    483
    Danke erhalten:
    37
    Danke vergeben:
    10
    Hi,

    super Modul aber komme nicht auf die tracking_carrier.php (leere Seite) was mach ich falsch?
     
  18. Danny (tbcs-shop.de)

    Danny (tbcs-shop.de) Erfahrener Benutzer

    Registriert seit:
    12. Dezember 2011
    Beiträge:
    483
    Danke erhalten:
    37
    Danke vergeben:
    10
    Ah die tracking_carrier.php war leer ;)

    gibt es eine Möglichkeit dies im Kundenlogin zu hinterlegen?
     
  19. HolgerNils (xycons.de)

    HolgerNils (xycons.de) G-WARD 2013/2014

    Registriert seit:
    29. Oktober 2011
    Beiträge:
    1.972
    Danke erhalten:
    456
    Danke vergeben:
    369
    Leer? Fehlt der Inhalt im ZIP oder wie versteh ich das?
    Was genau möchtest Du im Kundenlogin hinterlegen?
     
  20. HolgerNils (xycons.de)

    HolgerNils (xycons.de) G-WARD 2013/2014

    Registriert seit:
    29. Oktober 2011
    Beiträge:
    1.972
    Danke erhalten:
    456
    Danke vergeben:
    369
    #20 HolgerNils (xycons.de), 19. September 2012
    Zuletzt bearbeitet: 19. September 2012
    Ich zieh Frage eins zurück! Die ist tatsächlich leer!
    Aktualisiertes ZIP-File:
     

    Anhänge: