Dokumentation zur Entwicklung von UMC Modulen?

Hallo,
gibt es irgendwo Dokumentation zur Entwicklung von UMC Modulen, insbesondere zur Strukturierung, der Platzierung von Elementen und Widgets, APIS, Bibliotheken etc?

Oder ist hier RE (Reverse Engeneering) angesagt? :wink:

Grüsse

Ralf Kühnbaum-Grashorn

Hallo,

leider ist die Entwicklung von UMC Modulen nicht sehr ausführlich dokumentiert und geht z.B. nicht auf Javascript-Widgets ein. Ein Startpunkt ist folgende Dokumentation:
http://docs.software-univention.de/developer-reference-4.2.html#chap:umc

Es gibt ein Tool, dass die Skelett-Struktur eines UMC-Moduls erstellt:

# apt-get install univention-management-console-dev
# umc-create-module -h
usage: umc-create-module [<options>...] <moduleID> [<destinationDir>]

destination dir:
  If not given, it defaults to the current working directory.

options:
  --name         displayed name of the module
  --description  verbose module description (shown as tooltip)
  --category     category id (default: system)
  --keywords     module keywords (default: 'dummy)
  --package      package name
  --icon         path to SVG icon file
  --list         list available templates
  --template     name of the template (default: grid_with_detailpage)
  --no-debian    do not copy debian packages files

Die Javscript-Frontend Entwicklung basiert auf dojo, daher können alle dojo widgets benutzt werden:
http://dojotoolkit.org/documentation/
Zusätzlich lohnt ein Blick in umc.tools, umc.dialog und umc.widgets.*.

http://forge.univention.org/websvn/filedetails.php?repname=dev&path=%2Fbranches%2Fucs-4.2%2Fucs-4.2-0%2Fmanagement%2Funivention-web%2Fjs%2Ftools.js

http://forge.univention.org/websvn/filedetails.php?repname=dev&path=%2Fbranches%2Fucs-4.2%2Fucs-4.2-0%2Fmanagement%2Funivention-web%2Fjs%2Fdialog.js

http://forge.univention.org/websvn/listing.php?repname=dev&path=%2Fbranches%2Fucs-4.2%2Fucs-4.2-0%2Fmanagement%2Funivention-web%2Fjs%2Fwidgets%2F&#ac04c8e6b1ee0361684addc982a012aaf

Zum Python-Backend Code:
Jedes UMC-Modul erbt von der Basis-Klasse univention.management.console.base.Base.
Als Beispiel würde ich empfehlen auch einige der builtin-UMC Module anzusehen (z.B. top, ucr, join, udm, printers) . Es gibt einige utilities in univention.management.console.modules.decorators sowie für die Validierung von Benutzereingaben gibt es univention.management.console.modules.sanitizers.

Der Rest ist wohl Reverse-Engineering. Ich beantworte ansonsten gerne auch spezifische Fragen, die hier im Forum gestellt werden oder mache Code-Review.

2 Likes
Mastodon