microsite einbinden

#1
Hallo,

kann ich in der Detailansicht eine php datei includen,
so das diese mit dem php script generierte Seite innerhalb des isppconfig angezeigt wird?

Ich hab eine Liste mit Kunden erstellt und möchte nun DEtails für jeden Kunden anzeigen.
Die passenden queries und einen grossteil der Seite habe ich schon für eine anderes Plugin erstellt und würde dies gern nutzen.
Im Grunde müsste ich diese Site doch in dem template includen, oder?

Gruß
 

Till

Administrator
#2
Für sowas gibt es in ISPConfig Interface plugins. In ISPConfig ist z.B. die Liste der DNS subrecords (A,CNAME, etc..) innerhalb des DNS Formulares als Plugin realisiert.

Scahu Dir dazu mal die Dateien interface/dns/dns_soa.tform, interface/dns/templates/dns_records_edit.htm sowie die Datei interface/lib/classes/plugin_listview.inc.php an.
 
#3
mmh, das ist nicht so einfach zu verstehen.

ich habe in der *.tform.php folgendes eingefügt:

PHP:
        'template_name' => array (
            'datatype'    => 'VARCHAR',
            'formtype'    => 'TEXT',
            'default'    => '',
                        'datasource' => array(
                    'type' => 'SQL',
                    'querystring' => 'SELECT client.company_name, client_template.template_name FROM client, client_template WHERE client.template_master LIKE client_template.template_id AND client.company_name;',
                    'keyfield'    => 'client_id',
                    'valuefield'  => 'company_name'
                                  )
        )

und in der template.htm möchte ich nun dieses Feld ausgeben:

PHP:
<table width="100%" border="1">
    <tr>
        <td>
            {tmpl_var name='template_name'}
        </td>
    </tr>
</table>
Kann das so funktionieren oder fehlen dir noch Angaben?

Das Listing der Clients funkioniert, dort habe ich ein weiters Feld in die Tabelle einfügen können.
Kann man die gleiche tform für mehrere Seiten nehmen oder sollte ich eine neue bauen?


Gruß
 

Till

Administrator
#4
Der Code in der tform datei ist aber für Ein select Element und nicht für ein Plugin. Der Code zum laden eines Plugins ist:

Code:
'plugins' => array (
     	'dns_records' => array (
         	'class'   => 'plugin_listview',
     		'options' => array(
				'listdef' => 'list/dns_a.list.php',
				'sqlextwhere' => "zone = ".@intval(@$_REQUEST['id']),
				'sql_order_by' => "ORDER BY type, name"
			)
        )
	)
Schau bitte nochmal in die Dateien, die ich oben benannt habe. Dort findest Du in der Defintion der 2. Reiterkarte, wie man Plugins läd.

Kann man die gleiche tform für mehrere Seiten nehmen oder sollte ich eine neue bauen?
Eine tform datei ist immer nur für eine Seite gültig und muss in der tform Definition einen eindeutigen und einmaligen namen haben, da sie ja Informationen wie die Session Daten setzt die den Status dieses Formulares speichern.
 
#5
Wenn ich nur Daten anzeigen lassen möchte,
sollte ich dann eine *.list.php umbauen?

Ich habe jetzt eine tform umgebaut um mir die
Limits einen Hostpackets anzuschauen,
dfür habe ich aus dem bestehen modul die tform daten kopiert
und das template ein wenig angepasst, soblad ich dieses Aufrufe
versucht ispconfig etwas in die DB zu schreiben.

ICh werde mich nochmal an dein beispiel setzen...
 

Till

Administrator
#6
Wenn ich nur Daten anzeigen lassen möchte,
sollte ich dann eine *.list.php umbauen?
Wenn es eine Liste mit Suche etc sein soll, dann macht es Sinn dies als Grundlage zu verwenden. Beachte aber dass es sich dav´bei um eine Listenansicht und nicht Detailansicht handelt, sie sit also nicht geeignet um sich einen einzelnen datensatz anziegn zu lassen.

Ich habe jetzt eine tform umgebaut um mir die
Limits einen Hostpackets anzuschauen,
dfür habe ich aus dem bestehen modul die tform daten kopiert
und das template ein wenig angepasst, soblad ich dieses Aufrufe
versucht ispconfig etwas in die DB zu schreiben.
Die tform Dateien sind die Definitionsdateien für editiertbare Formulare in ISPConfig, daher schreibt ispconfig dann auch alles zurück in die DB.
 
#7
OK, die Info hilft weiter.
Gibt es auch eine klasse die zum anzeigen von Datensätzen gut ist?
Ich möchte im ersten Schritt einen Haufen Infos über den Kunden auf eine Setie bringen

EDIT:

kann ich bei einer Liste auch tabs machen? Hab noch kein Beispiel gefunde :(
 
Zuletzt bearbeitet:

Till

Administrator
#8
Gibt es auch eine klasse die zum anzeigen von Datensätzen gut ist?
Wenn es eine Liste ist, dann nimm am besten das Listen System.

Für eine Detailansicht eines einzelnen datensatzes die nicht editiertbar ist gibt es keine Klasse, da ISPConfig eine solche Funktionalität nicht benötigt. Du kannst ja aber problemlos die Daten mit setVar ins template laden und Dir dann beliebig mittels der template Vraibalen anzeigen lassen. ISPConfig ist da sehr flexibel, Du kannst da alles machen von vollautomatischen Formularen bis hin zu manuellen HTML Templates mit Variablenersetzung.

kann ich bei einer Liste auch tabs machen? Hab noch kein Beispiel gefunde
Nein.

Wenn Du tabs haben möchtest, dann müsstest Du ein tform Formular erstellen und dann darin das inline listen Plugin verwenden, so wie es im DNS Formular verwendet wird.
 

Till

Administrator
#9
Wenn Du Beispiele für die manuelle Programmierung mit Templates suchstm, dann schau Dir mal den language Editor im admin modul an oder den DNS wizard im DNS Modul. Die arbeiten beide direkt mit dem Templating System ohne tform und list Klassen.
 
#10
viel viel besser, an den beispiel kann ich mich orientieren.
Ich würd gern die ganzen FElder eines clients in die passenden Variablen packen, aus dem code habe ich folgendes erstellt:

PHP:
$client_data = $app->db->queryOneRecord("SELECT *  FROM client WHERE client_id = $client_id");
//$app->tpl->setVar("client_no",$client_data["customer_no"]);
//$app->tpl->setVar("company_name",$client_data["company_name"]);

$fields = explode(',',$client_data['fields']);
if(is_array($fields)) {
    foreach($fields as $field) {
        $app->tpl->setVar($field."_VISIBLE",1);
        $app->tpl->setVar($field,$client_data[$field]);
    }
}
Wenn ich die variablen manuell setzte geht es, wie genau muss die schleife dafür aussehen?
Ich glaube die $field namen sind hier falsch.


thnx
 

Till

Administrator
#11
Das setzen der Felder geht viel einfacher:

Code:
$client_data = $app->db->queryOneRecord("SELECT *  FROM client WHERE client_id = $client_id");
$app->tpl->setVar($client_data);
 
#12
super danke.

wäre es möglich die tabs einzubinden?
Die Überschriften habe ich wie folgt eingebunden,
gehe ich in Gefahr wieder diese Formularfunktionen zu aktivieren wenn ich
das so mache?

PHP:
<div class="pnl_formsarea">
<fieldset class="inlineLabels"><legend>Kundendaten</legend>

cheers
 

Till

Administrator
#13
Klar, dann musst Du aber das machen, was ich Dir zu Anfang geschrieben habe, nämlich ein tform Formular, denn tabs sind immer Teil eines solchen Formulares und dafür dann ein Plugin schreiben.

gehe ich in Gefahr wieder diese Formularfunktionen zu aktivieren wenn ich
das so mache?
Die Formularfunktionen basieren auf der tform Klasse,. Es ist also nur ein formular wenn Du tform verwendest.
 
#14
Klar, dann musst Du aber das machen, was ich Dir zu Anfang geschrieben habe, nämlich ein tform Formular, denn tabs sind immer Teil eines solchen Formulares und dafür dann ein Plugin schreiben.
.
schade, ich will ja nur Daten anzeigen lassen, das wäre mit den Tabs deutlich hübscher. Ich guck mir mal die classen an, evtl. lässt sich da ja was basteln.
 

Till

Administrator
#15
Du kannst die Funktionalität der tform actions Klasse ja flexibel anpassen und z.B. den handler für update und insert überschreiben, so dass er keine Opertaionen in der datenbank ausführt.
 

Werbung