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.