Beiträge von Lamarn

    Moinsen zusammen,
    ich möchte den Login speichern, damit ich ihn nicht erneut ausführen muss, wenn ich ein neues Skript starte. Theoretisch wird jedes Objekt am Ende eines Skriptes zerstört. Ich möchte das Objekt oAccount erhalten, damit ich es im nächsten Skript, welches ich aufrufe, nur noch neu einlesen muss, um eingeloggt zu werden. Der nähste Weg liegt im Serialisieren des Objektes. Das wollte ich
    auf diese Art und Weise realisieren. Leider kann ich [EDIT: das Objekt] nicht auf die Weise includen, wie angegeben. Hat jemand Ideen, das ähnlich umzusetzen bzw. ist das überhaupt möglich?



    Mfg, Lamarn

    Moin Jens,
    nein, natürlich mache ich keinen Frame draus. Ich meinte einfach, dass ich einen Knopf/Button einbaue, mit dem der Nutzer die Ordnerstruktur neuladen kann, wenn er von einem Kollegen hört, dass ein neuer Ordner erstellt wurde.


    Übrigens sage ich dir doch die ganze Zeit schon, dass ich das mit Ajax bzw. jQuery realisiere? ?( Natürlich werde ich das somit auch beibehalten.


    Mfg, Lev

    Moin Jens,

    Zitat

    Deine "neue" Idee steht in meinem letzten Beitrag im zweiten Absatz. ;)

    Ich habe die Idee nicht so vermarktet :D . Ich wollte nur mitteilen, wie weit ich gerade bin. Und deinen zweiten Absatz hatte nicht wirklich verstanden, weshalb ich selber auf die Idee kommen musste :D.


    Zitat

    Ein Reload der Seite musst Du aber sowieso machen, da Du sonst nicht
    mitbekommst, dass dort ein neuer Ordner ist. Das geht gar nicht anders.

    Das ist mir durchaus bewusst ^^. Dafür gibt es keine Probleme, wenn denn solch ein Fall eintritt. Ich baue aber wahrscheinlich nen Knopf ein, damit der Nutzer nur diesen DIV neuladen muss und nicht die ganze Seite.

    Zitat

    Was die Zeitspanne angeht: Warum lädst Du den gesamten Baum auf einmal?
    Lade doch einfach bei Bedarf oder vielleicht jeweils eine Ebene im
    voraus.

    Ich wollte die Ordnerstruktur vorher mit einer rekursiven Funktion lösen. Das war aber einige Zeit bevor ich hier im Forum nachgefragt hatte. Leider hat es zu lange gedauert. Lange Geschichte... Später habe ich mich entschieden hier nachzufragen, wie ich es per Nachladen hinbekomme. Und zur Zeit bin auch nur daran am Arbeiten. Ich habe es in meinem Beitrag nur erwähnt.


    Mfg, Lev

    Moin Jens,
    ja, das mit der Nummerierung ist wirklich ein eine gute Lösung. Ehrlich gesagt, weiß ich gar nicht mehr, warum ich da nicht weitergekommen bin. Ich hatte da wohl eine etwas größere Denkblockade.


    Jetzt war ich gerade dabei die Idee in die Tat umzusetzen und merke: Logischer Denkfehler (zumindest bei mir, keine Ahnung, ob du das bedacht hast). Wenn ich mich in der ersten Ebene befinde, ist noch alles gut. Per Klick habe ich die ID: level_001&folder_[...]. Nun bin ich also im Unterordner und habe alles geladen. Ab dort geht es aber schwer weiter, denn um das entsprechende David-Archiv auszulesen, muss ich alle vorherigen IDs behalten. Aus denen müsste ich den folder_ Wert auslesen und kann mir dann daraus den rekonstruieren in welchem Ordner ich mich eigentlich befinde. Hm.. kann man natürlich realisieren, aber ich finde es etwas umständlich. Diese Idee hat übrigens auch einen Bug*.


    Deshalb habe ich mir gedacht die Ebenen auszulassen (da sie mir im Prinzip gar nicht helfen.) Die Idee war also die Namen der Archive bzw. Nummerierung zu verwenden und eine Schlange daraus zu bauen. Nach einhundert Unterebenen ( //ich muss ja auch auf die Extremfälle vorbereitet sein) bildet sich aber eine riesige Schlange und macht den Quellcode unansehnlich. Es ist vorallem eine extra Funktion nötig, um die Archive auszulesen und es würde wahrscheinlich extrem lange dauern, da die API nun nicht gerade schnell ist (Musste ich leider daran feststellen, dass die rekursive Funktion, die die Ordnerstruktur auslesen sollte, fast anderthalb Minuten brauchte). Auch diese Idee enthält den Bug*.


    Die nächste Idee war also direkt die ID zu nehmen, die David mir sagt. Das werde ich jetzt auch tun, da es simpel ist und der Bug nicht auftritt.


    :* Wenn jemand die Webseite benutzt und während dieser Zeitspanne eine andere Person einen Ordner im Root erstellt, ist die Nummerierung nach dem erstellten Ordner nicht richtig und ich will nicht wissen, was dann alles falsch angezeigt werden kann. Dann hilft nur noch ein Reload der Seite und solch eine schl*mpige Programmierung (Das soll niemand persönlich nehmen!) möchte ich mir nicht angewöhnen.


    Mfg, Lev


    ps. Ich melde mich, wenn alles gut gelaufen ist. Natürlich auch, wenn ich Hilfe brauche :D.

    Moin Jens,
    ja, so hatte ich das am Anfang auch :D. Das Problem dabei ist, dass ich ja auch bei den Unterebenen die Ordner durchnummerieren muss. Dann kann ich leider keine IDs verwenden, da sie somit doppelt und dreifach vorhanden wären. Auf diese Weise geht es ja leider nicht. Deshalb habe ich Klassen gewählt. Hast du eine Idee wie ich es trotzdem hinbekommen könnte mit IDs? Das wäre natürlich die Lösung, aber ich wüsste nicht wie das zu Erreichen wäre.


    Viele Grüße, Lev

    Moin Jens,
    ich habe bisher die Ordnerstruktur damit realisiert, dass ich eine Liste erstellt habe. In jedem <li> ist zusätzlich zum Namen des Ordners eine leere <ul> mit einer Klasse names "output_".[Nummer, durchnummeriert nach Ordner dieser einen Ebene] .
    Per jQuery habe ich festgelegt, dass ich bei Klick auf ein bestimmtes <li> in dieser Ebene auch in das darunterliegende <ul> mit entsprechender Klasse geladen wird. Das funktioniert soweit. Ich habe mir bereits dabei gedacht, dass es nicht unbedingt funktionieren wird, da ja alle <ul> mit der entsprechenden Klasse angesprochen werden und somit Inhalt mehrfach an Stellen auftaucht, an denen er nicht sein sollte, aber ich habe mir auch als Gegenargument gedacht, dass jQuery einem die Möglichkeit anbietet nur auf einer Ebene zu bleiben.


    Die Frage lautet nun: Wie kann ich meinen Fehler ausmerzen, oder wie kann man das besser lösen? Ich bin in dem Fall sehr offen. Vielleicht kann jemand die dahinter liegende Logik darstellen? Ich habe Probleme damit, weil es kein statisches Menü ist, und ich somit auch nicht viel handfestes habe, mit dem ich die Übersicht aufbauen kann. Zum Beispiel ist es nicht möglich zu sagen, dass eine Ebene nur 100 Ordner darstellen kann, oder es nur 50 Ebenen tief hinunter geht.


    ps. Ich hoffe hier kann dabei geholfen werden, aber wenn ich diese Frage eher in einem jQuery-Forum stellen soll, dann werde ich es wohl tuen müssen.


    Mfg, Lev

    Moin Jens,
    also es läuft alles rund jetzt. VoiceItem etc. werde ich später noch hinzufügen, aber Dokumente, SMS, etc. laufen alle. Nun möchte ich mich dem anderen Problem widmen (Ordnerstruktur auslesen und ausgeben).


    ps. Ich starte dort einen neuen Beitrag, in dem ich das Problem etwas genauer beschreibe.
    Viele Grüße, Lev
    ________________________________________________


    Für alle, die nachvollziehen wollen, was das Problem war bzw. wie es gelöst werden kann:


    Das Problem war im Prinzip, dass ich versucht habe "Content" aus allen Archiv-Typen auszulesen, was jedoch nicht so einfach geht. Einige Archiv-Typen zB. brauchen eine andere Funktion, um den richtigen Inhalt anzuzeigen. Das AddressItem kennt kein "Content", sondern zeigt seinen Inhalt mit "Notes" an.


    Das Problem haben wir jetzt gelöst, indem wir den Archiv-Typ erfragen und dann entsprechend reagieren.
    Um die E-Mails richtig anzuzeigen, habe ich jetzt zuerst nach "Content" gefragt und anschließend, im Falle eines leeren Strings, nach "HTML".

    Moin Jens,


    Oh, dass es switch bei PHP gibt, wusste ich nicht bzw. ich habe es nicht überprüft :D Aber ja, die Methode finde ich auch übersichtlicher... Danke, für den Tipp.


    Ich meinte mit dem "herausfinden" die entsprechenden Befehle aus der API (edit: Dokumentation der API) auslesen, da ja nicht alles benutzt werden muss.


    Mfg, Lev


    EDIT: Also bei AdressItem stimmt "Notes", also war deine Vermutung richtig.

    Moinsen Jens,
    ja es geht mit dem get_Type "Befehl". Er heißt nur "Type" bzw. schätze ich, dass es eine Eigenschaft des Entries ist, die ausgegeben werden kann. Das macht die Sache natürlich sehr viel einfacher :D. Es gibt ja zum Glück nur 12 verschiedene Item-"Sorten". Ich frage dann jetzt einfach den Typ ab bevor ich etwas ausgebe. Nun muss ich halt nur herausbekommen, welche Befehle am besten mit einem bestimmten Typ interagieren.


    ps. Es sollte also auch so klappen :D Yeyh! Ich melde mich, wenn etwas wieder nicht klappt, haha.
    Viele Grüße, Lev


    edit: Bisher vielen, vielen Dank! Du hast mir sehr weitergeholfen!

    Moinsen,
    bist du so nett und zeigst mir deinen Code, mit dem du das realisiert hast bzw. änderst meinen Code so ab?


    Eine Frage ist mir noch gekommen, als du die weiteren ItemTypes erwähnt hast: Kann man irgendwie über die API überprüfen, welcher Typ gerade verwendet wird? Somit könnte man ja auch einfach Typ-spezifischen Code schreiben.


    Liebe Grüße, Lev (nohomo :D)

    Hallo erneut,
    Ich habe jetzt mittlerweile diesen Code:

    PHP
    $id			= $_GET['id'];
    $oArchive 	= $oAcc->GetArchive[$aArchives[$_SESSION['id_navigation1']]['path']];
    $oEntry		= $oArchive->GetArchiveEntries("default");
    if(strlen($oEntry->Item(intval($id))->Content) == 0){
    	echo utf8_encode(nl2br($oEntry->Item(intval($id))->Content));
    }
    else{
    	echo utf8_encode($oEntry->Item(intval($id))->HTML);
    }

    Moin Jens,
    1. Habe ich mir auch so gadacht aber nicht mit str_replace hinbekommen. Aber vielen Dank für den Hinweis auf nl2br. Die Funktion kannte ich noch nicht und sie funktioniert perfekt.
    2. Mit den Attachment bin ich noch nicht weitergekommen. Melde mich aber wieder, wenn ich das hinbekommen habe.
    3. Vllt. zum Verständnis: Das ist nicht mein David-Server, den ich benutze und ich arbeite mit David erst seitdem ich den Auftrag bekommen habe, den Client zu programmieren. Deswegen bitte ich ein bisschen um Verständnis, dass ich nicht alle Archivtypen kenne etc. Ich habe hier in dem Ordner "Adressen" im Root des David-Servers Adressen. Wenn ich im David auf eine Adresse klicke, bekomme ich einige Daten zu der Person etc. Es ist aber auch Text hinzugefügt worden. Kann es eine Art Beschreibung sein? Ich wüsste jetzt nicht, wo ich den Text einordnen sollte, also ob bei HMTL oder Content etc. Bei Content wird auf jeden Fall nichts angezeigt. Der Inhalt sieht auf jeden Fall aus, wie Plaintext. Ich hoffe Du verstehst jetzt, was für Elemente ich meine.
    4. Hier hat UTF8_Encode geholfen. Ich lade die Dateien nach, wodurch wahrscheinlich die Angabe für die Kodierung nicht beachtet wird. Ist aber auch egal, wenn es mit der PHP-Funktion arbeitet. Vielen Dank!
    5. Ich hatte gehofft, dass aus den HTML-Mails der Content extrahiert wird, da der Field_Type HTML nicht immer greift. Es sieht vor Allem total schrecklich aus, wenn diese unterschiedlichen "Mail-Typen" ganz anders dargestellt werden. Meinst Du, ich solle überprüfen, ob bei Content etwas zurückgegeben wird. Und wenn nichts zurückgegeben wird, ich HTML benutzen soll?


    Viele Grüße Lev

    Moinsen,
    ich verlaute mal einen kleinen Statusbericht:
    - Zeilenumbrüche werden nicht angezeigt. Sie werden anscheinend auch nicht von der API geladen. Vllt. muss ich \n zu <br> umwandeln.
    - Bilder erscheinen gar nicht, aber hier muss ich wohl nach Attachments suchen?
    - Der mit Adressen verknüpfte Inhalt wird anscheinend nicht angezeigt.
    - Umlaute werden als Fragezeichen angezeigt.


    Habe ich vllt. einen Fehler in dem Code, den ich gepostet habe? Eigentlich dürfte der richtig sein, da die richtigen Archive geladen werden.


    Viele Grüße Lev


    Edit: Anscheindend extrahiert die API auch keinen Inhalt aus HTML-Tags. Somit werden Mails in diesem Format komplett ignoriert.

    Moin,
    ich schreibe das Programm gerade in einem Praktikum. Das heißt mein Chef hat von Kunden den Auftrag erhalten, einen PHP-Client für David zu schreiben, welcher dann in deren Intranet laufen soll. Ich weiß nicht, was sie sich dabei gedacht haben, da ich den Webaccess erst um einiges später zu Sehen bekommen habe. Deshalb dachte ich mir, dass es soetwas noch nicht gibt. Naja, die K. haben sich wohl etwas dabei gedacht.


    Mfg, Lev

    Moin,
    du meinst also, dass ich:

    PHP
    echo $oEntry->Item(intval($id))->HTML;


    ändern muss, damit etwas angezeigt wird?
    Den Versuch würde ich gerne wagen, nur welche Field-ID gibt alles aus; also Mails mit HMTL-Teilen und Plaintext-Mails?


    Gruß, Lev


    Edit: Mir schien es, dass "HTML" dafür steht, dass der Inhalt in Form von HTML ausgegeben wird. Aber wenn es eine andere Möglichkeit gibt, dann immer her damit :D

    Moinsen zusammen,
    ich habe bisher selber versucht die Ordnerstruktur des Servers (die im Navigator sichtbare) in meinem PHP-Client aufzubauen. Es ist aber höchst unpraktisch und ich habe es bisher auch nicht vollständig lösen können.
    Meine Frage ist, ob es eine Funktion von der David-API gibt, die einem diese Aufgabe abnimmt? Es würde vor allem Zeit sparen, denn meine Lösung ist leider sehr umständlich (meiner Meinung nach).
    Oder hat jemand andere Ansätze, womit er es hinbekommen hat? Bin für alle Ratschläge offen.


    Viele Grüße, Lamarn

    Moinsen zusammen,
    die David-API gibt bei einigen Entries nichts
    zurück, obwohl sie bei einigen Entries alles perfekt so darstellt, wie
    es im David-Client angezeigt wird. Das heißt, bei einigen Elementen habe
    ich also einen komplett leeren <div> und bei einigen "hunderte"
    verschachtelte Tabellen, in der alles perfekt dargestellt wird.


    Ich schreibe einen PHP-Client und dieser Source-Code funktioniert nicht, wie er soll:
    [PHP]
    $id = $_GET['id'];
    $oArchive = $oAcc->GetArchive[$aArchives[$_SESSION['id_navigation1']]['path']];
    $oEntry = $oArchive->GetArchiveEntries("default");
    echo $oEntry->Item(intval($id))->HTML;
    [/PHP]


    $id wird über einen Mausklick erzeugt mithilfe von jQuery.


    Ich freue mich schon auf Antworten :D
    Mfg, Lamarn