Das drugCMS Forum

Moderator: Moderatoren
1 Beiträge
26.11.2015 11:01
Wir haben mit der Entwicklung der Version 2.1.0 angefangen und sind gerade beim Plugin Manager. Dieser wird, auch wenn ich das jetzt selbst sage, einfach genial und genial einfach.

Wir haben bereits die Software für das Repository und einen großen Teil des Backends:


Repository und Backend arbeiten durch Plugin-Beschreibungs-Dateien im XML-Format zusammen:
Code: Alles auswählen
Powered by GeSHi
  1. <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
  2. <plugin>
  3.    
  4.     <general>
  5.         <name><![CDATA[]]></name>
  6.         <descriptions>
  7.             <!-- multiple <action> entries allowed, an entry with lang="en_US" must be specified -->
  8.             <description lang="en_US"><![CDATA[]]></description>
  9.             <description lang="de_DE"><![CDATA[]]></description>
  10.         </descriptions>
  11.         <tags>
  12.             <!-- multiple <tag> entries allowed -->
  13.             <tag><![CDATA[]]></tag>
  14.         </tags>
  15.         <author><![CDATA[]]></author>
  16.         <version><![CDATA[]]></version>
  17.         <copyright><![CDATA[]]></copyright>
  18.         <mail><![CDATA[]]></mail>
  19.         <website><![CDATA[]]></website>
  20.     </general>
  21.    
  22.     <requirements>
  23.         <php><![CDATA[]]></php>
  24.         <drugcms><![CDATA[]]></drugcms>
  25.     </requirements>
  26.    
  27.     <dependencies>
  28.         <!-- multiple <plugin> entries allowed -->
  29.         <plugin>
  30.             <name><![CDATA[]]></name>
  31.             <version><![CDATA[]]></version>
  32.         </plugin>
  33.     </dependencies>
  34.    
  35.     <drugcms> <!-- this section contains the db table entries -->
  36.        
  37.         <areas>
  38.             <!-- multiple <area> entries allowed -->
  39.             <area>
  40.                 <parent><![CDATA[]]></parent>
  41.                 <name><![CDATA[]]></name>
  42.                 <relevant><![CDATA[]]></relevant>
  43.                 <online><![CDATA[]]></online>
  44.                 <menuless><![CDATA[]]></menuless>
  45.             </area>
  46.            
  47.         </areas>
  48.        
  49.         <actions>
  50.             <!-- multiple <action> entries allowed -->
  51.             <action>
  52.                 <area><![CDATA[]]></area>
  53.                 <alt_name><![CDATA[]]></alt_name>
  54.                 <name><![CDATA[]]></name>
  55.                 <code><![CDATA[]]></code>
  56.                 <location><![CDATA[]]></location>
  57.                 <relevant><![CDATA[]]></relevant>
  58.             </action>
  59.            
  60.         </actions>
  61.        
  62.         <files>
  63.             <!-- multiple <file> entries allowed -->
  64.             <file>
  65.                 <area><![CDATA[]]></area>
  66.                 <filename><![CDATA[]]></filename>
  67.                 <filetype><![CDATA[]]></filetype>
  68.             </file>
  69.            
  70.         </files>
  71.        
  72.         <frame_files>
  73.             <!-- multiple <frame_file> entries allowed -->
  74.             <frame_file>
  75.                 <area><![CDATA[]]></area>
  76.                 <frame_id><![CDATA[]]></frame_id>
  77.                 <file><![CDATA[]]></file>
  78.             </frame_file>
  79.            
  80.         </frame_files>
  81.        
  82.         <nav_main>
  83.             <location><![CDATA[]]></location>
  84.         </nav_main>
  85.        
  86.         <nav_subs>
  87.             <!-- multiple <nav_sub> entries allowed -->
  88.             <nav_sub>
  89.                 <nav_main><![CDATA[]]></nav_main>
  90.                 <area><![CDATA[]]></area>
  91.                 <level><![CDATA[]]></level>
  92.                 <location><![CDATA[]]></location>
  93.                 <online><![CDATA[]]></online>
  94.             </nav_sub>
  95.            
  96.         </nav_subs>
  97.        
  98.     </drugcms>
  99.    
  100.     <modules>
  101.         <!-- multiple <module> entries allowed -->
  102.         <module name=""><![CDATA[]]></module>
  103.     </modules>
  104.    
  105.     <!-- Delete the following database tables on deleting the plugin -->
  106.     <!-- !PREFIX! is the drugcms database prefix set at setup, use an asterisk (*) for multiple chars -->
  107.     <!-- Example: !PREFIX!_my_plugin_* deletes tables drugcms_my_plugin_test and drugcms_my_plugin_probe -->
  108.     <dbtables>
  109.         <!-- multiple <db-delete> entries allowed -->
  110.         <dbtable><![CDATA[]]></dbtable>
  111.     </dbtables>
  112.    
  113. </plugin>
(sample_plugin.xml, diese Datei wird später in /docs/techref/plugins/ enthalten sein)

Für die Plugin-Entwickler unter euch: eure Plugins brauchen keine eigene install.php und (un)install.sql mehr, diese werden vollständig von den XML-Dateien abgelöst. Die Plugins werden als Ordner und Dateien im Repository so abgelegt, wie auch in /drugcms/plugins/. Einziger Unterschied ist, dass es einen zusätzlichen Unterordner "modules" geben kann, mit darin je Modul die Paket-Export-Datei aus drugCMS. Die plugin.xml Datei muss direkt im Plugin-Ordner liegen.

Die mit den Plugins ausgelieferten Modul-Pakete können auf Knopfdruck für den aktuellen Mandanten installiert werden (siehe Screenshot oben) und werden bei der Deinstallation des Plugins automatisch für alle Mandanten entfernt.

Durch die direkte Anbindung am Repository kann der Plugin Manager Plugins eigenständig herunterladen, also müssen diese nicht zuvor vom Anwender auf seinen Server hochgeladen werden. Dieses Herunterladen erfolgt wenn möglich als ZIP-Datei, diese wird im Repository automatisch generiert und im Plugin Manager automatisch entpackt. Sollte eine der beiden Server keine ZIP-Funktionalität haben, wird vom Plugin Manager eine Liste der Ordner und Dateien angefordert und diese Dateien dann einzeln heruntergeladen.

Es wird ein allgemeines Repository auf http://plugins.drugcms.org geben, welches wir betreiben und in dem Plugin-Entwickler ihre Plugins kostenlos anbieten können (per Mail an plugins@drugcms.org einreichen). Zusätzlich gibt es im Plugin Manager die Möglichkeit, weitere Repositories einzutragen (auch mit https und/oder Login/Kennwort). Damit Entwickler und Agenturen ihr eigenes, privates Repository betreiben können, werden wir die Software hierfür zeitgleich zu drugCMS 2.1.0 als Open Source kostenlos veröffentlichen (vorher auf Github, Adresse folgt).

Wir, das Team von drugCMS, wünschen viel Spaß und Erfolg bei der Entwicklung von Plugins für drugCMS ab Version 2.1.0!

Gruß
René

Tradition ist die Bremse des Fortschritts.
Solange besser möglich ist, ist gut nicht gut genug.

Webseiten-und-so.de | Spider IT Deutschland | XING | Kaffee spendieren (PayPal)
Spider IT

Beiträge: 79
Registriert: 17.02.2014 18:19
Wohnort: Stadtoldendorf

02.12.2015 19:36
Der Plugin Manager ist fertig! Geändert hat sich noch, dass bei den <frame_files> der Eintrag <filename> jetzt <file> heisst und dass am Ende noch ein Bereich hinzu gekommen ist, um vom Plugin erstellten DB-Tabellen bei der Deinstallation automatisch löschen zu lassen. Das Beispiel oben wurde korrigiert und ergänzt.

Wie funktioniert die plugin.xml?
Bereich <general>:
  • Das Plugin braucht einen Namen (oft, aber nicht zwingend, identisch mit dem Ordnernamen).
  • Eine kurze Beschreibung muss in en_US und kann in zusätzlichen Sprachen angegeben werden (<descriptions>).
  • Nach Möglichkeit vergibt man noch Suchbegriffe (<tags>) für die Suche bzw. den Filter im Manager.
  • <author> und <version> sind natürlich erforderlich, <copyright> empfehlenswert, <mail> und <website> werden zurzeit nicht gezeigt, sind aber für uns als Betreiber des Haupt-Repositories wichtig zur Kontaktaufnahme.
Bereich <requirements> (Anforderungen):
  • <php> - die erforderliche PHP-Version
  • <drugcms> - die erforderliche drugCMS-Version
Bereich <drugcms>:
Hier finden sämtliche relevante Datenbanktabellen platz:
  • <areas> - üblicherweise hat der erste Eintrag als <parent> 0, jeder Weitere als <parent> die Positionsnummer des Ersten (siehe unten)
  • <actions> - Einträge für die Rechteverwaltung
  • <files> - Dateien für das Backend
  • <frame_files> - Dateizuordnung von <area> und <frame_id> (1 bis 4) zu <file>
  • <nav_main> - neuer Hauptmenüeintrag (maximal 1 Eintrag)
  • <nav_subs> - neue Untermenüeinträge
Bereich <modules>:
Für jedes Modul einen Eintrag mit als Parameter der Modulname wie er im Backend angezeigt wird und als Wert der Dateiname der Paketdatei.

Bereich <dbtables>:
Je durch das Plugin während der Nutzung angelegte Tabelle oder per Tabellennamen-Muster bei der Plugin-Deinstallation zu löschenden Tabellen.

Bei den Datenbankeinträge wird wie folgt vorgegangen:
Verweist man auf einen zuvor angegebenen neuen Eintrag, gibt man die Nummer dessen in der plugin.xml an, angefangen mit 1.
Wenn man also eine neue <area> angegeben hat, dann gibt man bei den anderen Einträge, egal für welche Tabelle, die diese <area> nutzen sollen, eine 1 an.
Bezieht man sich hingegen auf einen bereits existierenden Eintrag, der nicht aus der plugin.xml stammt, dann gibt man dessen Namen an, z. B. <area><![CDATA[con]]></area>.
Bereiche, die man nicht nutzen möchte/muss, lässt man einfach weg.
Beispiel:
Code: Alles auswählen
Powered by GeSHi
  1. <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
  2. <plugin>
  3.    
  4.     <general>
  5.         <name><![CDATA[sitShop]]></name>
  6.         <descriptions>
  7.             <!-- multiple <action> entries allowed, an entry with lang="en_US" must be specified -->
  8.             <description lang="en_US"><![CDATA[Shop plugin with extended settings and possibilities]]></description>
  9.             <description lang="de_DE"><![CDATA[Shop-Plugin mit erweiterten Einstellungen und Möglichkeiten]]></description>
  10.         </descriptions>
  11.         <tags>
  12.             <!-- multiple <tag> entries allowed -->
  13.             <tag><![CDATA[shop]]></tag>
  14.             <tag><![CDATA[frontend]]></tag>
  15.         </tags>
  16.         <author><![CDATA[René Mansveld]]></author>
  17.         <version><![CDATA[1.0.0]]></version>
  18.         <copyright><![CDATA[Spider IT Deutschland]]></copyright>
  19.         <mail><![CDATA[Info@Spider-IT.de]]></mail>
  20.         <website><![CDATA[http://www.Spider-IT.de]]></website>
  21.     </general>
  22.    
  23.     <requirements>
  24.         <php><![CDATA[5.4.0]]></php>
  25.         <drugcms><![CDATA[2.1.0]]></drugcms>
  26.     </requirements>
  27.    
  28.     <drugcms> <!-- this section contains the db table entries -->
  29.        
  30.         <areas>
  31.             <!-- multiple <area> entries allowed -->
  32.             <area>
  33.                 <parent><![CDATA[0]]></parent>
  34.                 <name><![CDATA[sitShop]]></name>
  35.                 <relevant><![CDATA[1]]></relevant>
  36.                 <online><![CDATA[1]]></online>
  37.                 <menuless><![CDATA[0]]></menuless>
  38.             </area>
  39.         </areas>
  40.        
  41.         <files>
  42.             <!-- multiple <file> entries allowed -->
  43.             <file>
  44.                 <area><![CDATA[1]]></area>
  45.                 <filename><![CDATA[sitShop/includes/include.left_top.php]]></filename>
  46.                 <filetype><![CDATA[main]]></filetype>
  47.             </file>
  48.             <file>
  49.                 <area><![CDATA[1]]></area>
  50.                 <filename><![CDATA[sitShop/includes/include.left_bottom.php]]></filename>
  51.                 <filetype><![CDATA[main]]></filetype>
  52.             </file>
  53.             <file>
  54.                 <area><![CDATA[1]]></area>
  55.                 <filename><![CDATA[sitShop/includes/include.right_top.php]]></filename>
  56.                 <filetype><![CDATA[main]]></filetype>
  57.             </file>
  58.             <file>
  59.                 <area><![CDATA[1]]></area>
  60.                 <filename><![CDATA[sitShop/includes/include.right_bottom.php]]></filename>
  61.                 <filetype><![CDATA[main]]></filetype>
  62.             </file>
  63.         </files>
  64.        
  65.         <frame_files>
  66.             <!-- multiple <frame_file> entries allowed -->
  67.             <frame_file>
  68.                 <area><![CDATA[1]]></area>
  69.                 <frame_id><![CDATA[1]]></frame_id>
  70.                 <file><![CDATA[1]]></file>
  71.             </frame_file>
  72.             <frame_file>
  73.                 <area><![CDATA[1]]></area>
  74.                 <frame_id><![CDATA[2]]></frame_id>
  75.                 <file><![CDATA[2]]></file>
  76.             </frame_file>
  77.             <frame_file>
  78.                 <area><![CDATA[1]]></area>
  79.                 <frame_id><![CDATA[3]]></frame_id>
  80.                 <file><![CDATA[3]]></file>
  81.             </frame_file>
  82.             <frame_file>
  83.                 <area><![CDATA[1]]></area>
  84.                 <frame_id><![CDATA[4]]></frame_id>
  85.                 <file><![CDATA[4]]></file>
  86.             </frame_file>
  87.         </frame_files>
  88.        
  89.         <nav_subs>
  90.             <!-- multiple <nav_sub> entries allowed -->
  91.             <nav_sub>
  92.                 <nav_main><![CDATA[extra]]></nav_main>
  93.                 <area><![CDATA[1]]></area>
  94.                 <level><![CDATA[0]]></level>
  95.                 <location><![CDATA[sitShop/xml/;navigation/extras/sitShop/main]]></location>
  96.                 <online><![CDATA[1]]></online>
  97.             </nav_sub>
  98.            
  99.         </nav_subs>
  100.        
  101.     </drugcms>
  102.    
  103.     <modules>
  104.         <!-- multiple <module> entries allowed -->
  105.         <module name="Shop Artikel"><![CDATA[Shop_Artikel_package.xml]]></module>
  106.         <module name="Shop Artikelliste"><![CDATA[Shop_Artikelliste_package.xml]]></module>
  107.         <module name="Shop Kasse"><![CDATA[Shop_Kasse_package.xml]]></module>
  108.         <module name="Shop Warenkorb"><![CDATA[Shop_Warenkorb_package.xml]]></module>
  109.     </modules>
  110.    
  111.     <!-- Delete the following database tables on deleting the plugin -->
  112.     <!-- !PREFIX! is the drugcms database prefix set at setup, use an asterisk (*) for multiple chars -->
  113.     <!-- Example: !PREFIX!_my_plugin_* deletes tables drugcms_my_plugin_test and drugcms_my_plugin_probe -->
  114.     <dbtables>
  115.         <!-- multiple <db-delete> entries allowed -->
  116.         <dbtable><![CDATA[!PREFIX!_sit_shop_*]]></dbtable>
  117.     </dbtables>
  118.    
  119. </plugin>
(funktionierende plugin.xml eines Shop-Plugins)

Für die angegebenen Module muss je eine Paket-Datei in ein Ordner "modules" im Plugin-Ordner vorliegen, reine Modul-Export-Dateien funktionieren nicht. Die Paket-Datei braucht es auch, wenn zusätzlich zum Modul nichts weiter enthalten sein soll. Weitere Dateien, die nicht im Paket mit angegeben werden können (z. B. Bilder im Ordner images), müssen in Unterordner mit dem Plugin-Namen mit angefügt sein (Beispiel: <Plugin-Ordner>/modules/images/sitShop). Diese Ordner werden bei der Modulinstallation automatisch mit in den Mandantenordner kopiert und bei der Plugin-Deinstallation zusammen mit den Modulen auch wieder entfernt. Achtet deshalb bitte darauf, dass es hier von den Ordnernamen her keine Überschneidungen gibt (deshalb auch der Plugin-Name bzw. der Ordnername des Plugins)!

Für weitergehende Fragen und Plugin-Einreichungen nutzt bitte die eMail-Adresse plugins@drugcms.org.

Und nun viel Spaß und Erfolg bei der Plugin-Entwicklung für drugCMS ab Version 2.1!

Gruß
René

Tradition ist die Bremse des Fortschritts.
Solange besser möglich ist, ist gut nicht gut genug.

Webseiten-und-so.de | Spider IT Deutschland | XING | Kaffee spendieren (PayPal)
Spider IT

Beiträge: 79
Registriert: 17.02.2014 18:19
Wohnort: Stadtoldendorf

04.12.2015 19:20
Im Plugin-Ordner darf es jetzt auch einen Ordner namens "system" geben, in welchem zusätzliche Systemdateien bereitgestellt werden können. Der Inhalt dieses Ordners wird in den Backend-Installationsordner kopiert, also dorthin wo die Ordner "conlib", "drugcms", "pear" usw. liegen.

Um Systemdateien bereitzustellen muss man also im Plugin-Ordner einen Ordner "system" anlegen und darin die benötigte Ordnerstruktur des Backends nachbilden, z. B. sitShop/system/drugcms/classes/class.test.sitshop.php.

Gruß
René

Tradition ist die Bremse des Fortschritts.
Solange besser möglich ist, ist gut nicht gut genug.

Webseiten-und-so.de | Spider IT Deutschland | XING | Kaffee spendieren (PayPal)
Spider IT

Beiträge: 79
Registriert: 17.02.2014 18:19
Wohnort: Stadtoldendorf

18.03.2016 18:15
Da es bei einige Hoster aufgrund der Berechtigungsstruktur Probleme mit dem Ablegen und Löschen von Dateien durch den Plugin-Manager gegeben hat, haben wir die Möglichkeit eingebaut, dass der Plugin-Manager dies per FTP oder sogar SFTP erledigt. Dafür gibt es einen neuen Tab "Einstellungen" wo man die Zugangsdaten hinterlegen kann.

Gruß
René

Tradition ist die Bremse des Fortschritts.
Solange besser möglich ist, ist gut nicht gut genug.

Webseiten-und-so.de | Spider IT Deutschland | XING | Kaffee spendieren (PayPal)
Spider IT

Beiträge: 79
Registriert: 17.02.2014 18:19
Wohnort: Stadtoldendorf


‹ Zurück zu: Ankündigungen
Wer ist online?
Besucher in diesem Thema: 1 Gast