pdadmin-forum

pdadmin-forum » Information » Add-Ons » [In Entwicklung (V4)] Vorlage für Addons » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen Vorlage für Addons
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
tstenner
Mitglied


Dabei seit: 06.08.2010
Beiträge: 1

Vorlage für Addons Antworten | Zitieren | Editieren | Melden       Zum Anfang der Seite springen

Da die einzige Vorlage für Addons noch für pdadmin V3 ist und selbst mit gutem Willen nicht mehr von pdadmin V4 akzeptiert wird, habe ich mal eine Vorlage für Addons erstellt.
Vor der Installation braucht man das Addon pdadmin-session.
Zur Installation muss man einfach eine Datei im Verzeichnis /opt/pdadmin/www/administrator/ (ich hab sie einfach addon_beispiel.cgi genannt), root als Besitzer setzen (chown root:root addon_beispiel.cgi) und das suid-bit setzen, damit der Webserver das Skript mit root-Rechten ausführt, da sonst z.B. die pdadmin.conf nicht geöffnet werden kann (chmod u+s addon_beispiel.cgi).
Jetzt d+rfte es auch schon laufen, damit das Skript sich über das Menü aufrufen lässt, kann man es unter Einstellungen->Reseller-Menü im Menü verlinken.

Hier gibt es 2 wichtige Zahlen: Sort. 1 und Sort. 2.
Sort. 1 ist das Obermenü, also z.B. "SSL".
Sort. 2 ist der Menüpunkt im Untermenü.
"SSL" - "Neues Zertifikat" hat die Nummern 500 200.
Wenn wir nun ein Addon zwischen "Übersicht" und "Neues Zertifikat" einfügen wollen, müssen wir Sort. 1 auf 500 setzen (damit es im SSL-Menü erscheint) und Sort. 2 auf z.B. 150 setzen.
Dabei dürfen 2 Addons nicht die gleiche Kombination aus Sort. 1 und Sort. 2 haben, da sonst nur eine angezeigt wird.

Mit der Schaltfläche "Neuer Eintrag" in der Menüübersicht können wir nun das Addon im Menü hinzufügen:
URL ist der Pfad zum Addon relativ zum Verzeichnis "administrator".
Wenn das Skript also in /opt/pdadmin/www/administrator/meineaddons/addon_beispiel.cgi" liegt, wäre ist URL "meineaddons/addon_beispiel.cgi"
"Öffnen in" sollte man auf "pd-admin Haupt-Frame" setzen, damit kein neues Fenster geöffnet wird.
Sort. 1 und Sort. 2 sollten wie eben erklärt gesetzt werden.
Beschreibung DE und Beschreibung EN sind die Linktitel im englischen bzw. deutschen Menü.

Und hier nun der Quellcode:
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
#!/usr/local/bin/perl

# Den Pfad für Addonbibliotheken (z.B. pdadmin_session) setzen
use lib '/opt/pdadmin/addons/libs';

# Bei schlampiger Programmierung drauf hinweisen
use warnings;
use strict;

# Die Module CGI zum Auslesen von übergebenen Parametern und das Datenbankmodul einbinden.
use CGI::Carp qw(fatalsToBrowser warningsToBrowser);
use CGI ':standard';
use DBI;

use pdadmin_session;

my $form = CGI->new;

# Den CGI-Header ausgeben
# Dabei werden wir Proxies und Browser anweisen, diese Seite nicht zu cachen, damit
# die angezeigten Daten immer direkt vom Skript stammen
print CGI::header(-Expires=>'now', -Cache_control => 'no-cache', -pragma => 'no-cache');
# Hier geben wir das anzuzeigende HTML aus.
# q| interpretiert alles bis zum nächsten |, dadurch kann man auch Zeichen wie ' oder " bedenkenlos verwenden.
print q|<!DOCTYPE html>
<html>
<head>
	<title>pd-admin Addon</title>
	<meta http-equiv="Content-Type" content="text/html; charset="utf-8">
	<link rel="stylesheet" href="/css/styles.css" type="text/css">
</head>
<body><h1>Addontitel</h1><div class="mainheader">Tabellentitel</div><div style="width: 550px; border: 1px solid">|;

# pdadmin-Konfiguration einlesen
use vars qw($dsn $user $password);
do '/opt/pdadmin/etc/pdadmin.conf' || die "Can't read configuration (pdadmin.conf): $!";

# Zur Datenbank verbinden, wenn das nicht klappt mit einer Fehlermeldung abbrechen
my $dbh = DBI->connect($dsn, $user, $password) || die "can't connect, errmsg = $DBI::errstr";
# Wenn im Skript die() aufgerufen wird, wird die hier definierte Methode aufgerufen, dort schließen wir dann eventuelle Datenbankverbindungen
$SIG{__DIE__} = sub { $dbh->disconnect if $dbh; die @_; };

#Schauen, ob der User eingeloggt ist.
my $session = pdadmin_session->new($dbh);
if($session->session()){
	print 'Hallo Welt.<br />Noch ein Formular: <form action="" method="post"><input name="testfeld" value="',($form->param('testfeld') or 'Testfeld'), '" />';
	print '<input type="submit" value="Abschicken" /></form>';
	#Wenn der Benutzer das Feld ausgefüllt hat, geben wir den übergebenen Wert an ihn zurück.
	print 'Sie schrieben: ',$form->param('testfeld') if(defined $form->param('testfeld'));
}
else {
print 'Die Session ist abgelaufen. Bitte loggen sie sich auf der <a href="/administrator/">Loginseite</a> neu ein.';
}

print q{</div></body></html>};
# Datenbankverbindung schließen
$dbh->disconnect();

exit(0);
31.08.2010 16:12 tstenner ist offline E-Mail an tstenner senden Beiträge von tstenner suchen Nehme tstenner in Deine Freundesliste auf
Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
pdadmin-forum » Information » Add-Ons » [In Entwicklung (V4)] Vorlage für Addons

Impressum | Team | Hilfe

Forensoftware: Burning Board, entwickelt von WoltLab GmbH    |    Design entwickelt von You-Online.de