TWebShop2

Aus OrgaMon Wiki
Zur Navigation springen Zur Suche springen

TWebShop2 ist die zentrale Webserver-Logik des OrgaMon. Clients können so mit Hilfe eines Browsers Dienste des OrgaMon nutzen. TWebShop2 ist in PHP 5 geschrieben und konnektiert direkt auf die Datenbank des jeweiligen OrgaMon-Mandanten. Des weiteren ist der Webshop über ein XMLRPC - Interface an einen ständig laufenden OrgaMon-Server-Prozess angebunden um eCommerce-Funktionen im OrgaMon anzustossen. Der Webshop hat Zugriff auf Artikel-Bilder über Verzeichnisse, die zentral im OrgaMon verwaltet werden. Logik-Redundanzen sind weitgehend ausgeschlossen, da der Webshop direkt an den XMLRPC Serverprozess gebunden ist: Somit bestehten keine Buchungsunterschiede ob Transaktionen direkt im OrgaMon oder über den Webshop durchgeführt werden.

Installation für Shop-Betreiber

es wird PHP5 und Apache2 vorausgesetzt. Die Datenbankverbindung muss möglich sein, ein XMLRPC Prozess muss auf einem Windows System dauerhaft laufen. cOrgaMon.exe kann auch unter http://www.winehq.com betrieben werden.

Apache Webserver

Verwendete diesen Link vom apache 2.0 , da von 2.2 anscheinend noch keine Version für Windows vorliegt: http://apache.easy-webs.de/httpd/binaries/win32/apache_2.0.55-win32-x86-no_ssl.msi

  • Download auf dem Desktop speichern und ausführen.
  • bei Installation Standardeinstellungen verwenden
  • Hintergrund: der Apache-Webserver stellt die Anfrage an den Computer, dass andere Rechner auf diesen zugreifen können. Dies wird von der Windows-Firewall möglicherweise verhindert, worüber man auch informiert wird. Diese Nachricht beantworte man mit "nicht blocken", damit der Apache-Webserver voll funktionsfähig ist.
  • der Apache-Webserver sollte jetzt funktionsfähig sein (testen im Web-Browser mit eingabe von http://localhost)
  • zum Test ob der Apache-Webserver funktioniert, einfach im Internetexplorer "localhost" ein geben. Wenn der Server funktioniert, erscheint der Schriftzug:"Es klappt! (It Works!) Der Apache-Webserver ist auf dieser Website installiert.


  • Nach der Installation der Apache Software ist das Startmenü um einen Eintrag reicher.
 ->Dort kann man unter anderem die Apache-Konfigurations Datei "httpd.conf" editieren.
 ->die "httpd.conf"-Datei ist unter "Startmenü\Alle Programme\Apache HTTP Server(z.B.)2.0.55   \Configure Apache Server" zu finden.
  • den Eintrag "DocumentRoot=" sollte man auf das Verzeichnis setzen in dem die "index.html"

oder eine andere Index-Datei der Homepage liegt, die geservt werden soll.

 ->den Eintrag <Directory= > sollte man auf das gleiche Verzeichnis setzen.
  • Wir nehmen an, dass PHP auf dem Rechner im Verzeichnis "C:\Programme\PHP" installiert ist (siehe vorheriges Kapitel).
  • Jetzt wird die Apache-Konfigurations-Datei "httpd.conf" im Editor (Notepad) geöffet und

ans Ende werden(für PHP5) diese drei Zeilen eingefügt:

LoadModule php5_module "c:/programme/PHP/php5apache2.dll"
AddType application/x-httpd-php .php
PHPIniDir "C:/Programme/PHP"

Nach diesen Änderungen sollte PHP unter Apache laufen. Ob PHP funktioniert, sieht man, wenn man das im Anhang vorhandene Skript "phpinfo.php" aus dem Browser (nicht per Doppelklick) aufruft, während der Apache Server läuft. Dann wird eine Seite mit allen PHP-Informationen angezeigt. Auch der Pfad in dem PHP die "php.ini" erwartet.

  • Weitere Informationen zur Installation von PHP stehen in der Datei "C:\Programme\PHP\install.txt".


PHP

PHP-Systemvoraussetzungen:

  • >=PHP 5.3.0

Zusatzmodule, die nicht in der Standard-Installation aktiv sind

  • Modul: php5 mcrypt (Linux: kann man über yast hinzuinstallieren)
  • Modul: php5 interbase (Linux: mehr infos dazu in PHP)
  • Modul: php5 memcache (Linux: mehr Infos dazu in Linux.memcached

OrgaMon XML-RPC Server (Konsolenanwendung)

Teil jeder OrgaMon (Client) installation ist das Programm cOrgaMon, dies ist ein XMLRPC Server als Konsolenanwendung. Aus dem selben Code-Respository lassen sich also neben dem OrgaMon.exe auch der cOrgaMon.exe erstellen.

erster Login

Systemanforderungen beim Benutzer/Client

Der benutzte Browser muss Cookies annehmen und speichern. Das heisst es wird dem Browser im Moment des Login eine eindeutige Zeichenfolge übermittelt die Sie während einer Anmeldung immer als den gleichen Benutzer ausweist. Diese Cookies sind keine schädlichen Viren oder ähnliches und können problemlos aktiviert werden.

  • Internet Explorer

Extras->Internetoptionen->Datenschutz: Hier sollte die Stufe "Mittel" eingestellt sein.

  • Mozilla Firefox

Starten Sie den Firefox
Wählen Sie das Menü - Extras - Einstellungen
Dann den Reiter "Datenschutz" - Cookies
Dort setzten Sie den haken "Cookies akzeptieren"

Kontrolle, ob der Mozilla die Cookies akzeptiert: Extras->Einstellungen->Reiter "Datenschutz"->Cookies anzeigen->Als Suchbegriff "hebu" eintragen->Es müssen 2 Cookies angezeigt werden->"c_user" und "PHPSESID" mit der Gültigkeit "c_user"=24 h und "PHPSESSID"=Bis zum Ende der Sitzung.


i_config.inc.php5

<?php

define("TWEBSHOP_ID","01");
define("TWEBSHOP_TITLE","Neu WebShop");
define("XMLRPC_HOST","OrgaMonPC");
define("XMLRPC_PORT","3049");
define("XMLRPC_NAMESPACE","abu");

define("EMAIL_ADMIN","ich@schopbetreiber.de");

include_once("i_default_config.inc.php5");

?>

  • Es reicht also die folgenden 5 Einstellungen vorzunehmen. Alle weiteren Einstellungen werden vom OrgaMon über die Funktion "BasePlug" übermittelt.

connections.php.inc

 # 
 # 
 define ("eMailDevelopment","phpfreak@domain.tld");
 define ("eMailWebmaster","phpfreak@domain.tld");
 define ("eMailShop","phpfreak@domain.tld");
 define ("eMailMiniScore","phpfreak@domain.tld");

der Webshop sucht die Person, die im Feld EMAIL die angegebene eMailAdresse eingetragen hat.

in der Regel benutzt der WebShop das Mail-Out System des OrgaMon. Falls es irgendwann wieder Probleme mit dem Maildienst geben sollte, der WebShop kann per Konstante (true/false) auf SMTP Mail aus eigener Kraft umgestellt werden, sofern die Zugangsdaten in der connections.inc.php korrekt sind.

Installation für Shop-Entwickler

OrgaMon Installation

installieren Sie auch das neueste Update.

Firebird 32bit DB-Super-Server

http://www.firebirdsql.org/

die Standard-Installation verwendet den firebird-embedded-Server. Für die Web-Entwicklung ist jedoch ein "ordentlicher" Server notwendig, da mehrere Programme auf den Server zugreifen (Multiuser-Betrieb). Also cOrgaMon und Apache->php_interbase->fbclient. Die OrgaMon ini muss auch so umgebaut werden dass auch der "Hostname" mit im DataBaseName vorkommt, dadurch schaltet die Client-Bibliothek von embedded auf remote-BEtrieb.

Datenbank-Restore, Mandantverzeichnis

Netbeans 7.3.1 PHP Bundle

http://netbeans.org/

  • Voraussetzung: Java: jre-7u25-Installation UND jdk-7u25-Installation oder besser

svn - Checkout

Installieren Sie zunächst Tortoise SVN.

http://tortoisesvn.net/

Erstellen Sie auf Ihrem üblichen Dokumentverzeichnis ein Verzeichnis "OrgaMon-Dev" (Beliebig anderer Name) möglich. Rechter Mausklick auf dieses Verzeichnis und SVN-Checkout. Die Adresse ist

svn://orgamon.net/orgamon/

Das PHP-Projekt liegt im Unterverzeichnis TWebShop.

wamp 32 Bit mit PHP 5.3 http://www.wampserver.com/

Namensauflösung

Der lokale Shop soll unter http://twebshop.localhost/ ansprechbar sein. Die WAMP Startseite soll weiterhin über http://localhost/ ansprechbar sein. Dazu muss man die Windows "hosts" Datei anpassen, damit beide Domains auf die lokale IP-Adresse aufgelöst werden: (rechter Mausklick auf "Notepad", dann "Als Adiminstator ausführen", dann die Datei hosts im Verzeichnis C:\Windows\System32\Drivers\etc\ öffnen).

127.0.0.1    localhost
127.0.0.1    twebshop.localhost

Virtuelle Hosts aktivieren

In "C:\wamp\bin\apache\apache2.2.22\conf\httpd.conf": Kommentar entfernen


# Virtual Hosts
Include conf/extra/httpd-vhosts.conf

1. Virtuellen Host "twebshop" definieren

In "C:\wamp\bin\apache\apache2.2.22\conf\extra\httpd-vhosts.conf": 2 V-Hosts definieren


NameVirtualHost *:80

< VirtualHost *:80 >
   ServerName twebshop.localhost
   DocumentRoot "C:\Users\Andreas\Documents\RAD Studio\Projekte\OrgaMon\TWebShop"

 < Directory "C:\Users\Andreas\Documents\RAD Studio\Projekte\OrgaMon\TWebShop" >
   Options Indexes FollowSymLinks
   AllowOverride all

   Allow from all

 < /Directory >

< /VirtualHost >

2. Virtuellen Host "WAMP Startseite" definieren

< VirtualHost *:80 >
   ServerName localhost
   ServerAlias 127.0.0.1
   DocumentRoot "C:\wamp\www"

 < Directory "C:\wamp\www" >
   Options Indexes FollowSymLinks
   AllowOverride all
   Allow from all

 < /Directory >


< /VirtualHost >

PHP-Modul memcache aktivieren

php_memcache-2.2.6-5.3-vc9-x86.zip downloaden und nach "C:\wamp\bin\php\php5.3.13\ext" entpacken


in "C:\wamp\bin\apache\apache2.2.22\bin\php.ini": Bei den anderen Extensions, eine Zeile dazu
extension=php_memcache.dll


PHP-Modul interbase aktivieren

1) in "C:\wamp\bin\apache\apache2.2.22\bin\php.ini": Kommentar entfernen

extension=php_interbase.dll

2) in "C:\wamp\bin\apache\apache2.2.22\bin\php.ini": Einstellungen prüfen

[Interbase]
; Allow or prevent persistent links.
ibase.allow_persistent = 1 

; Maximum number of persistent links.  -1 means no limit.
ibase.max_persistent = -1

; Maximum number of links (persistent + non-persistent).  -1 means no limit.
ibase.max_links = -1

; Default database name for ibase_connect().
;ibase.default_db =

; Default username for ibase_connect().
;ibase.default_user =

; Default password for ibase_connect().
;ibase.default_password =

; Default charset for ibase_connect().
;ibase.default_charset =

; Default timestamp format.
ibase.timestampformat = "%Y-%m-%d %H:%M:%S"

; Default date format.
ibase.dateformat = "%Y-%m-%d"

; Default time format.
ibase.timeformat = "%H:%M:%S"

3) Firebird-Client ins PHP-Verzeichnis kopieren (Firebird-2.5.2.26540-0_Win32_embed.zip)

Entpacke einen firebird-embed-zip. Benenne fbembed.dll nach fbclient.dll um. Kopiere diese
DLL nach C:\Windows\system32

xdebug aktivieren

In  "C:\wamp\bin\apache\apache2.2.22\bin\php.ini": Unten hinzufügen



; XDEBUG Extension
 
zend_extension = "c:/wamp/bin/php/php5.3.13/zend_ext/php_xdebug-2.2.0-5.3-vc9.dll"

[xdebug]
xdebug.remote_enable = on


memcache Server starten

XMLRPC Server starten (cOrgaMon.exe im OrgaMon-Programmverzeichnis)

config.php edtieren

Services

Personen individuell aktivierbar sind einzelne Services. Diese erscheinen dann beim Kunden in "myShop". Ein Service wird bei ->Person im Reiter "Internet Dienste" im Feld "Dienste und Parameter" durch folgende Texteintragungen aktiviert.

TPicUpload=JA

ermöglicht das Uploaden von Artikel-Bildern. siehe TPicUpload

Newsletter=JA

ermöglicht das Erstellen von .eml Dateien für Newsletter.

Shop Programmierung

Datei Nameskonventionen

  • index.php5: Zentrales und einziges PHP-Skript das Apache direkt anspricht
  • viewer.php5: Zeigt HTML Dokumente
  • s_*.inc.php5 : s für SITE, enthält den auszuführenden Code für die Seite *, dabei wird * nur bis zum ersten "_" ausgewertet. Die weitere Bezeichnung enthält die *
  Beispiel: http://host/index.php5?site=myshop&subsite=order_state würde das PHP-Skriptp 

s_myshop_order_state.inc.php5 includen.
  • a_*.inc.php5 : a für ACTION, die vom User angestoßen wird (z.B. Artikel in den Einkaufswagen legen, Bestellung abschicken,...)
  • i_*.inc.php5 : i für INCLUDE: eine Datei, die keinen Code ausführt, sondern nur (Funktions- oder Konstanten-) Definitionen enthält
  • p_*.inc.php5 : p für PHP: eine Datei, die einen Code für einen bestimmten Zweck (*) ausführt
  • l_*.inc.php5 : l für LANGUAGE: eine Datei, die Sprachbausteine für die Sprache * enthält

subsite:

  • t_*.inc.php5 : t für THORSTEN (in Anlehnung an TVISION von Borland Pascal 7.0): eine Datei, die eine oder mehrere Klassendefinition(en) enthält

In einem Unterverzeichnis von Template:

  • i_template.inc.php5 : enthält den Namen des Templates
  • i_template_*.inc.php5 : eine i_*.inc.php5, die Templates für die jeweilige Klasse * enthält
  • s_*.html : Template für s_*.inc.php5, also das Template der Seite *
  • h_*.html : ein Header-Template
  • f_*.html : ein Footer-Template

Am Beispiel der Bestellschritte

1) Das HTML-Template für alle Bestellschritte:

  ./templates/hebu2008*/s_order.html
 
  Dieses enthält wiederum Platzhalter für ganze Objekte (~OBJ_*~), wie z.B. die Warenkorbtabelle in der Bestellübersicht
  im letzten Bestellschritt.
  Diese Platzhalter werden aus den jeweiligen Klassen-Templates
  ./templates/hebu2008*/i_template_*.inc.php5
  befüllt.

2) Skript zur Anzeige (Befüllen der Templates und darin enthaltenen, bereits bekannten Platzhalter) aller Bestellschritte:

  ./s_order.inc.php5
  Diese Datei untersucht 1) und bindet dann die jeweiligen - im folgenden aufgelisteten - Einzelschritt-Skripte ein.

3) Skripte zur Anzeige der Einzelschritte:

  ./s_order_*.inc.php5
  Befüllen des jeweiligen Einzelschritt-Templates, das aus 1) gewonnen/extrahiert wird.
  Füllt die Platzhalter, die von 2) noch nicht befüllt werden konnten / in 2) noch nicht lebendig waren.

4) Aktionen, die von einem zum nächsten Schritt ausgeführt werden:

  ./a_order_*.inc.php5
  Hier geschieht wirklich etwas. Hier spielt sich die ganze Verarbeitung der User-Eingaben und die eigentliche Logik ab.

Generell: PHP-Skripte, die mit s_* (steht für "site") beginnen, enthalten nur soviel Logik, wie zur Darstellung der Seite notwendig ist.

         Skripte, die mit a_* ("action") beginnen, enthalten die ganze Verarbeitung und Logik.

Das Ergebnis und die daraus resultierende Darstellung des letzten Bestellschritts (wie auch aller Bestellschritte) ist also ein Zusammenspiel der Dateien 1) bis 4).

Template-System

Überblick

der WebShop kann durch benutzerspeziefische Templates in seiner Erscheinung angepasst werden. In der Standard-Konfiguration läuft der shop mit dem Template "twebshop". Templates heissen so wie das Verzeichnis, in das sie installiert sind. Die Templates befinden sich im Unterverzeichnis "templates" der WebShop-Installation.

Setup

  1. Für die jeweiligen Templates sind Setup-Programme vorbereitet: Der Installations-Pfad für Templates ist direkt das Webshop-Haupt-Verzeichnis. Läuft Ihr Shop also auf W:\MeinWebshop\ so installieren Sie bitte auch direkt in dieses Verzeichnis. Somit ist dieses Template verfügbar.
  2. Änderung in der
    i_config.inc.php5
    =================

    define("TWEBSHOP_TEMPLATE","NameDesTemplate");

Internas

die s_myshop.html gehört ja zum Template.

Es gibt dieses (Standard-)TWebShop-Template, es gibt ja aber auch das Orgamon-Template, das die Tickets beherrscht und oben links halt das OrgaMon-Logo anzeigt. Du hast jetzt als Basis für die s_myshop.html das TWebShop-Template benutzt. Habe die alte und neue Version dieser Datei mal mit DiffMerge verglichen, da sind ja nur ein paar Zeilen dazugekommen. Soll ich diese Zeilen in die s_myshop.html des OrgaMon-Templates einbauen ?

Namespace - System

man kann mehrere WebShops an einem OrgaMon-Mandanten betreiben. Der Artikelumfang der Shops wird über verschiedene System-OLAPs gesteuert.

System.WebShop.~Namespace~.OLAP.txt
  • ~Namespace~ ist ein Parameter in den WebShop Systemeinstellungen
  • ohne OLAPs wird nur noch der "interne" Suchindex erzeugt, er ist für die globale Beleg-Suche.
  • alle anderen Suchindex sind auf die WebShop-Artikel beschränkt egal wie das OLAP ausfällt.
  • bei "2" im Namespace wird der eingeschränkte Wortraum (nur mit LAUFNUMMER) bei der Erzeugung benutzt.

Damit das alte System wieder läuft gibt es also 2 OLAPs

  1. "abu"
  2. "abu2"

die alle RIDs enthalten (- die WebShop-Drückeberger)

Allen Webshop-Suchindizes-OLAPs für die ist ein "Rote Liste"-OLAP vorgeschaltet:

   select 
    ARTIKEL.RID 
   from 
    ARTIKEL 
   where 
    (ARTIKEL.WEBSHOP='N') or 
    (ARTIKEL.SORTIMENT_R in (select RID from SORTIMENT where WEBSHOP='N'))

Logik Bedingtes HTML

Beispiel in die Datei s_arcticle.inc.php5.

Da werden dem Objekt die Optionen mit ->addOption hinzugefügt.
Bei logikabhängigen Optionen weise ich hier das entsprechende Template (bei Dir z.B. mit oder ohne "<a href></a>" zu).
z.B.:

$article->addOption("OPTIONSNAME",(file_exists()) ? _TEMPLATE_KLASSENNAME_SEITENNAME_OPTION_OPTIONSNAME_AHREF :    
_TEMPLATE_KLASSENNAME_SEITENNAME_OPTION_OPTIONSNAME_NOAHREF);

OPTIONSNAME ist freiwählbar und bei mir in englisch.
Im Klassen-Template _TEMPLATE_KLASSENNAME_SEITENNAME steht an der Stelle, an der die Option erscheinen (oder eben nicht erscheinen) soll der Platzhalter    
~OPTION_OPTIONSNAME~, also der Name aus der Zuweisung ->addOption("OPTIONSNAME",....)
mit vorangestelltem ~OPTION_ und abschließendem ~.
Die Option wird dann bei Aufruf von ->getFromHTMLTemplate() automatisch belichtet.
Das geht mit jeder Klasse die ein Nachkomme der Klasse TVISUAL ist.

Statischer Funktionsaufruf

  • ZIEL
    • Der Link "site=myshop&subsite=account" soll die Arbeitszeit neu berechnen!
  • WEG zum Ziel
    • Zeile
  $orgamon->execAccounting(0,  $user->getID());

in s_myshop_account hinzugefügt!

Änderungen / Erwiterungen programmieren

  • schaue oben in der Internet-Adresse was bei "Site=" und "SubSite=" angegeben ist, dann suche ...
  • ... die Datei s_~Site~_~SubSite~.php5
  • ... suche den Abschnitt, um den es geht, bei mir war das $user->getBills();
  • hm, getBills mach einen grep
  • ... ich fand es in ./classes/t_webshoP-user.inc.php
  • ... ich fand twebshop_bill, machte einen grep
  • ... ich fand es in t_webshop_bill.inc.php5 ...
  • ich merkte, dass im Kontruktor die Teillieferung fehlt
  • ich wollte RECHNUNGSNUMMER zu den Properties hinzufügen, doch dies ist keine 1:1 Beziehung zwischen Feldname im select und die Art wie ich da dran kommen. Also das Feld heisst RECHNUNGSNUMMER ich komme aber mit Hilfe eines (select ...) as RECHUNGSNUMMER dran. Deshalb ...
  • ... muss es ein properties1 hinzugeben
  • obwohl es die Infrastruktur für die properties gibt werden diese nicht automatisch in die templates gepustet -> kann man da was tun
  • Das .\Template für die "bill" musste ich nun ändern (Ergänzen um "RECHNUNGSNUMMER")

Betrieb und Wartung

Kontext-Links des Shops

Kontext-Links von aussen : der OrgaMon/ein Mailung ruft den WebShop, dafür gab es bisher folgende Standards, die gehen alle nicht mehr:

BEDEUTUNG             BISHER                                             NEU
Such-Anfrage          web_search.php?expression=~SuchStr~                ?site=search&action=search_user_expression&f_search_expression=henn
Login                 login.php?email=~eMail~&key=~Password~&login=      ?site=login&action=login&f_user=thorsten.schroff@orgamon.org&f_pass=nase
Pwd-Anforderung       new_user_password.php?email=&reg=+++Ok+++          ?action=send_password&f_user=thorsten.schroff@orgamon.org
Artikel-Anzeige       <war nicht möglich>                                ?site=article&id=192713
Verfügbarkeits-Check  <war nicht möglich>                                ?site=test&info=

Artikel-Bilder des Shops

Bilder werden über die Funktion TPicUpload direkt in den Shop hochgeladen.

  • Vor dem Upload müssen die Bilder folgender Namenes-Konvention entsprechen:
~ARTIKEL.NUMERO~.jpg
  • Im Shop entsprechen Sie dann der Namenskonvention:
~ShopPfad~ + "upload/" + DOKUMENT_R + ( "th.jpg" | ".jpg" )

ist der Dateiname des Bildes, fall DOKUMENT.ARTIKEL_R passt.

Fragen & Antworten:

  • Q wer erzeugt bei Bildneuanlage eigentlich einen neuen Eintrag in der Tabelle "DOKUMENT" ?
  • A tpicupload.php5 des Shops
  • Q wer schiebt das Bild in den Shop?
  • A die Taste TpicUpload des OrgaMon
  • Q wie prüft der Shop ob ein img-Tag erzeugt werden kann oder nicht?
  • A keine Prüfung, es wird darauf vertraut dass es klappt
  • Q erfolgt ein Abgleich / Problembericht für "verwaiste" oder "fehlende" Bilder?
  • A JA, mit FileZilla: ich habe mit dem Open-Source FileZillaClient (installiert auf Gates) das ganze W:\twebshop\images hoch geladen nach "http://hebu-music.de/twebshop/images/" FileZilla ermöglicht es bereits vorhandene Dateien zu überspringen, es lässt sich also eine primitive Variante eines Verzeichnisabgleichs programmieren. So ab und an sollte man die Aktion nun ausführen.
  • Q können wir schon auf einen externen image-url verweisen?
  • A JA, der Pfad entspricht schon jetzt dem Baseplug-Parameter 12. Aus der Sicht des OrgaMon ist das der Parameter ShopArtikelBilderURL=http://hebu-music.de/twebshop/images/upload/, der wie man an diesem Beispiel sieht bis hin zu den Bildern an sich formuliert werden muss.
  • Q können wir Shop-Eigene Bilder auf eine externe URL umlenken?
  • A NEIN, Der PNG-Pfad wird in der Datei i_global_const.inc.php5 als Konstante definiert.

Hierzu sollte ich erwähnen, dass bei TWebShop-eigenen Grafiken immer die Existenz der Datei überprüft wird. Mein (möglicherweise nicht hochaktuelles) Halbwissen sagt mir, dass dies bei externen URLs durch einen php.ini-Eintrag ermöglicht werden muss. Da hab ich jetz mal nicht weiter nachgehakt, denn ich habe 2 weitere Gründe für das Belassen der TWebShop-eigenen Grafiken beim Shop:

bei mehreren Namespaces MÜSSEN wir meiner Meinung nach eine externe Artikel-Image url anbieten (die ggf. lokal liegen kann), da sonst alle ./images/upload-Verzeichnisse gedoppelt werden müssten. Oder mit einem Symbolischen Link unter linux versehen werden müssen. Im Moment wäre mir so ein H:\delphi\Bilder\ irgendwie sympatisch ...

Systemparameter

Apache konfigurieren

Icon des Shops

Ausführliche Infos gibts dazu in "http://www.favicons.de/"


Virtual Hosts unter Confixx Webserver

joe /etc/httpd/confixx_vhosts.conf

die entsprechende php direktive open_basedir muss auskommentiert werden.

#php_admin_value open_basedir ...

NeueSubDomain.host.tld

wir gehen so vor, dass der Webshop auf einer Subdomain erreichbar ist. In diesem Fall "neu". Bei Subdomain treffer.de, ist der Shop-Einstieg also über http://neu.treffer.de erreichbar.

Auf dem Linux-Apache2-Server

  • Einen smb-Share auf \srv\www\ legen
  • Einen subdomain auf das Shopverzeichnis lenken:


Datei /etc/apache2/vhosts.d/neu.hebu-music.com.conf anlegen
<VirtualHost *:80>

ServerName neu.hebu-music.com
ServerAlias neu.hebu-music.com
ServerAlias neu.raib181
DocumentRoot /srv/www/htdocs/neu
HostnameLookups Off
UseCanonicalName Off

</VirtualHost>

"neu" kann natürlich durch jeden anderen subdomain ersetzt werden.

Auf einem Windows-Arbeitsplatz

  • Über Windows das Setup-TWebShop_Dev-1.027.exe (aktueller Entwicklungsstand [hier]) ausführen, z.B. in das Verzeichnis "neu"
  • Nun die Konfigurationsdatei editieren.

hebu2008

für alle 3 Templates gilt:

  • linker Rand nicht so breit

Stage1

  • neuen Namen suchen (->Alexander)

Stage2

  • neuen Namen suchen (->Alexander)

Stage3

  • neuen Namen suchen (->Alexander)

to do

  • TS: statische ArtikelMembers-Klasse mit eigenen Templates
  • TS: Verbesserung Katalog-Seite
  • Klick man auf einen Katalog muss wieder eine Suchtrefferliste ausgegeben werden mit den bisherigen Detail-Infos, Problem: "Statische Teilnehmer"
  • Statische Teilnehmer die leer sind bewirken ein FETT Attribut für die kommenden Titel
  • Bug: zwischen "Tonträger" under dem CD Symbol ist kein Nbsp

Andreas

  • LETZER_VERKAUF, z.B. 13748321 wird das gepflegt, wenn ja wie?

Design Überblick

der folgende Abschnitt soll helfen in die Entwicklung möglichst schnell einsteigen zu können. Im Moment ist es einfach eine lose Faktenauflistung. Jeder der Entwickelt und bei einigen Punkten Schwierigkeiten hatte ist hier aufgerufen, einige klärende Worte einzufügen.


  • "core" Skripte sind über diesen Webshop hinausreichende Grundklasse, die sich anbieten auch über die aktuelle GEschäfts-Logik Webshop-Logik gültig und hilfreich zu sein.
  • "site" Skripte stehen für einzelne Seitengruppen des Shops. z.B. der Bestellvorgang "order" ist die site. Aus Benutzersicht gibt es für die 4 Bestellschritte 4 verschiedene seiten, es ist aber immer site mit dem Namen "order", aber mit den "steps" 1 bis 4.
  • "templates" sind design und Ablauf Grundlagen für den Shop

to do

todo: die "single instance" Klasse: Muss das so sein? Kann man mehrfache Instanzen nicht
     einfach zulassen? Wäre das nicht übersichtlicher? Jetzt ist es so, dass die Kapselung der

Properties nicht gegeben ist. Jemand instanziert sich eine Klasse und bekommt die Properties geändert -> unschön ...

todo: Komplette Session überwachung und Debugging: Es muss durch ein Verfahren klar werden wie
     die Session "vor" und "nach" dem Code aussieht. Gibt es nicht einen Session Debugger?	  
todo: Klärung der Begriffe "action", "site", "subsite", "step"