microsite einbinden

Dieses Thema im Forum "Entwicklerforum" wurde erstellt von Rupertt, 10. Aug. 2011.

  1. Rupertt

    Rupertt New Member

    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ß
     
  2. Till

    Till Administrator

    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. Rupertt

    Rupertt New Member

    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ß
     
  4. Till

    Till Administrator

    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.

    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. Rupertt

    Rupertt New Member

    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...
     
  6. Till

    Till Administrator

    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.

    Die tform Dateien sind die Definitionsdateien für editiertbare Formulare in ISPConfig, daher schreibt ispconfig dann auch alles zurück in die DB.
     
  7. Rupertt

    Rupertt New Member

    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: 10. Aug. 2011
  8. Till

    Till Administrator

    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.

    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.
     
  9. Till

    Till Administrator

    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. Rupertt

    Rupertt New Member

    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
     
  11. Till

    Till Administrator

    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. Rupertt

    Rupertt New Member

    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
     
  13. Till

    Till Administrator

    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.

    Die Formularfunktionen basieren auf der tform Klasse,. Es ist also nur ein formular wenn Du tform verwendest.
     
  14. Rupertt

    Rupertt New Member

    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.
     
  15. Till

    Till Administrator

    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.
     

Diese Seite empfehlen