Page tree
Skip to end of metadata
Go to start of metadata


1. Vorstellung Addon-Framework

1.1. Zielstellung - Wozu das Ganze?

  • Was können und sollen die Addon-Entwickler damit tun?

  • Wie kommt das Addon zum Kunden / in die TecArt-Cloud?


  • Zukünftige Perspektiven ( Addon-Marktplatz, Monetarisierung )

  • Firmenstrategie: Einstellung SOAP ( Ende 2020 ), Updatefähigkeit, Abwärtskompatibilität, Fokusierung auf Standard-CRM + Erweiterungen für Projekte

1.2. Grundlagen - Was steht wo?

  • Anlaufstellen im CRM: Administration Webhooks, Buttons
  • Vorstellung Wiki & Libraries, API   (Download nach Installation zeigen)
  • Vorstellung neue API ( REST V2 + API V2 ) (durch Stephan)

1.3. Wie wird entwickelt?

2. Installation Entwicklungsumgebung

2.1. Installation unter Windows

2.1.1. Download von Docker

Download: https://docs.docker.com/docker-for-windows/install/

2.1.2. Installation Docker

    



Hyper-V wird benötigt um Linux-Container zu starten.


Bei folgender Fehlermeldung, System trotzdem neu starten.


Firewall für Docker konfigurieren


TCP-Port 2375.






In den Docker-Einstellungen ist Expose daemon on tcp://localhost:2375 without TLS zu aktivieren.

2.1.3. Download von PHP-Storm

Download: https://www.jetbrains.com/phpstorm/download/#section=windows

2.1.4. Installation PHP-Storm







Oben Evaluate for free wählen.


Neues Projekt erstellen und Speicherort angeben.


In die PHP-Storm Einstellungen wechseln, nach "Docker" suchen und TCP-Socket angeben.


Mit Docker verbinden. Unten auf "connect" klicken im Docker-Tab.


Docker-Image herunterladen.


Docker-Container aus Docker-Image erstellen.


Name kann frei gewählt werden.

Image-ID: tecart/crm_v410:addon_dev

Bind Ports: 127.0.0.1:443:443, 127.0.0.1:3306:3306

Bind Mounts: Lokales Addon-Verzeichnis in den Container einbinden unter /data/crm/addons.


Lokales Addon-Verzeichnis in den Container einbinden.


Eine Shell im Container ausführen. Rechtsklick auf Container Exec: bash


Datenbank verbinden.



2.2. Installation unter Mac

2.2.1. Download von Docker

Download: https://download.tecart.de/docker/Docker.dmg

2.2.2. Installation von Docker


2.2.3. Download von PHP-Storm

Download: https://www.jetbrains.com/phpstorm/download/#section=mac

2.2.4. Installation von PHP-Storm


Light oder Dark-Theme auswählen .


Oben Evaluate for free wählen.


Neues Projekt erstellen.


Speicherort angeben.


In die PHP-Storm Einstellungen wechseln.

2.3. Installation unter Ubuntu / Linux Mint 

2.3.1. Installation unter Ubuntu 16.04 (Xenial Xerus) / Linux Mint 18

sudo apt-get install apt-transport-https ca-certificates curl gnupg2 \
 software-properties-common
sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 \
 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
sudo apt-add-repository 'deb https://apt.dockerproject.org/repo ubuntu-xenial main'
sudo apt update
sudo apt install docker-engine docker-compose

2.3.2. Installation unter Ubuntu 18.04 (Bionic Beaver) / Mint 19

sudo apt-get install apt-transport-https ca-certificates curl gnupg2 \
 software-properties-common
sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 \
 --recv-keys 7EA0A9C3F273FCD8
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable"
sudo apt update
sudo apt install docker-ce docker-compose

2.3.3. Docker testen

sudo docker run hello-world

2.3.4. Benutzer in Gruppe 'docker' hinzufügen

sudo usermod -a -G docker username

Anschließend muss man sich neu anmelden am Window-Manager.

2.3.5. Download von PHP-Storm

Download: https://www.jetbrains.com/phpstorm/download/#section=linux

2.3.6. Installation von PHP-Storm

cd Downloads
tar -xvzf PhpStorm-2019.1.tar.gz
cd PhpStorm-191.6183.95/bin
./phpstorm.sh

Weiter wie mit Installation für Mac



3. Einrichtung XDebug unter Windows 10

Auf dem Host:

docker exec -it crm_v410_addon_dev bash

Im Docker-Container:

nano /etx/php/7.1/apache2/conf.d/90-xdebug.ini

Folgende Einstellungen müssen gemacht werden:

xdebug.remote_enable=1
xdebug.remote_port=9000
xdebug.remote_host=10.0.75.1
xdebug.remote_connect_back=0
xdebug.idekey=PHPSTORM

Anschließend den Docker-Container neu starten

Im Browser muss das Add-On XDebug Helper installiert werden. 

Einrichtung in PHPStorm


4. Vorstellung Beispiel - Addon ( Asset-Management )

4.1. Anforderung an das Addon ( Use - Cases )

  • Erfassung von Objekten unterschiedlichen Typs zu einem Kontakt
  • Definition von Asset-Typen, zu den Typen müssen Eigenschaften definiert werden können
  • Jeder Typ hat eigene Eigenschaften
  • Jeder Typ kann als eigenes Register in die Kontakte hinzugefügt werden
  • Darstellung als Grid mit Aktionen, Hinzufügen, Löschen, Doppelklick → Fenster: Bearbeiten → Speichern
  • Optional: Eventuell Gemeinsames Register mit gemeinsamen Eigenschaften, wie Name, Typ, Kurzbeschreibung, Standort, Doppelklick öffnet Detailfenster mit entsprechendem ObjektTyp
  • Optional: Webhook: Beim Löschen eines Kontaktes
  • Optionale Erweiterung: Dateien zum Asset

4.2. Datenmodell

  • Objekte, Objekttypen, Key-Value-Storage für Properties
  • Tabelle types: name
  • Tabelle types_properties: type_id, name, data_type
  • Tabelle assets: name, contact_id, contract_id, types_id
  • Tabelle assets_properties: asset_id, property_id, value

4.3. Mockups


5. Implementierung Asset-Management-Addon

5.1. Anlage des Addons

  • Verzeichnis erstellen, Addon.xml, Basisdaten, Testinstallation
  • lib-Verzeichnis anlegen mit addon_lib.php, api_lib.php, template.xsd
  • Tabellen definieren, Testinstallation, Zeigen der Tabellen in der Datenbank

5.2. Administration

  • Admin-Oberfläche: Button im Hauptmenü ( eventuell Button in Administration )
  • Sprachdatei anlegen
  • View aufbauen, Template aufbauen, Actions definieren, um Typen anlegen und bearbeiten zu können
  • Für die Properties ein Grid einbauen
  • Definition von Properties, Zuweisung von Typen zu Properties ( Widgets: Textbox, Datum, Textarea, Einfachauswahl, Mehrfachauswahl )
  • Listen für Einfachauswahl / Mehrfachauswahl: Textarea mit Werten: Option: Value einer pro Zeile
  • Properties können verschiedenen Typen zugewiesen werden

5.3. Integration in Kontakte

  • View für einen Typen
  • Grid integrieren
  • Objektfenster definieren: für einen Typ, nur Name
  • Aktionen definieren: Neu, Speichern, Löschen
  • Fertige View als Register in den Kontakten integrieren (Detailansicht unten) (Label)
  • Erweiterung des Objektfensters für dynamische Properties
  • Erweiterung der View für unterschiedliche Typen
  • Log-Aufruf im Grid
  • Integration in unterschiedliche Register über addon.xml
  • WebHook erstellen


6. Downloads

Das erarbeitete Addon

Das vorbereitete Addon