Beiträge von Methusalix

    Hallo zusammen,

    ich hätte wieder einmal eine Frage ;)

    Ich habe in meinem Plone-Produkt einige Klassen erstellt.
    Dies wäre z.B. eine eigene File-Klasse, in der einige für mich notwendige Funktionen definiert sind, die ich im Template aufrufen möchte. Nun möchte ich diese Klasse in das Template integrieren.
    Mein Problem ist es auf diese Klasse zuzugreifen. Wenn ich über das Template darauf zugreifen möchte, gibt mir Plone die Meldung, dass ich keine Berechtigung hätte. Wie könnte ich dies verwirklichen, bzw. den Klassen Rechte verteilen?

    Grüße Methusalix

    Hallo,

    lass dir mal die phpinfo() ausgeben und suche nach
    "file_uploads" wenn dies auf "On" steht, sind File-Uploads verfügbar, sonst musst du dich mit deinem Webhoster kurzschließen.

    Eine zeitweilige Abänderung während der Laufzeit sind meist verboten.

    Grüße
    Methusalix

    Zitat

    Aber sieh es mal von der positiven Seite


    muss ich so machen, sonst würd ich mir nur noch auf den Kopf hauen, und das würde mit der Zeit schmerzhaft :)

    Zitat

    wieder was gelernt und du hast dich nun tiefergehend mit Formularen beschäftigt


    das stimmt :) und der Fehler hat mir noch eine Möglichkeit augezeigt, die GUI zu optimieren ;) das kann man ja bis n machen :) juhu was neues zum spielen^^

    grüße

    Hallo zusammen,

    ich habe das Problem gelöst, und ich muss sagen es war ein seeeehr grober Flüchtigkeitsfehler. Der mir auch lange nicht aufgefallen ist.
    Hier im Thread habe ich immer von "plonecvs_project_file_delete_action.cpy" gesprochen, allerdings bei mir auf dem Server folgenden Datei gehabt: "plonecvs_project_file_delete.cpt"

    Dadurch, dass er es als Template erkannt hat, ist es logisch wieso er nur den Quell-Code ausgeben hat. Alles andere funktioniert einwandfrei. Könnte man als HowTo aufnehmen :) Allerdings möchte ich niemanden zumuten, diesen "perfekten" Code zu übernehmen. ;) Ich kann selbst auch noch nicht den Code optimieren, da ich selbst in der Materie neu bin

    Danke für die Hilfe!

    Grüße Methusalix

    Hallo,

    <input type="hidden" name="domain" value="echo "<?php echo $this_domain ?>"">

    HTML und PHP-Code muss immer getrennt werden. Dies heißt, wenn du in einen HTML-Code eine Variable einbauen willst, musst du den Interpreter mit <?php any_content ?> mitteilen, dass dies kein HTML sondern ein PHP-Code ist

    <? echo $_GET['domain']; ?>
    oder
    <? echo $_POST['domain']; ?>
    je nach Übergabeart :)

    dies müßte dein Problem lösen

    Grüße Methusalix

    Hallo Torty,

    Ich habe meinen ersten Post abgeändert, und die richtigen Dateinamen in Klammern angefügt.

    Zitat

    1.) wo wird die my_ext_edit_form_action.cpy aufgerufen?


    my_ext_edit_form_action.cpy wird doch in der Metadatei aufgerufen, oder habe ich da ein grundlegendes Verständnisproblem?
    Mein Kenntnisstand ist der: Sobald das Dokument übermittelt wird, wird action auf success gesetzt und damit diese Action durchgeführt, bis man einen anderen State zurückliefert.

    Code
    action.success = traverse_to:string:plonecvs_project_file_delete_action


    Dies müßte dann der Aufruf für die ...._action.cpy sein, oder täusche ich mich da vollständig

    Zitat

    2.) verwendest du bewusst keinen Validator?


    Momentan ja, da ich zuerst den kompletten Use-Case initialisieren will und danach erst die Validatoren ergänzen will, um das Produkt konsistent zu machen.

    Zitat

    3.) was steht in plonecvs_project_file_delete_action?


    Nach Ergänzung der richtigen Namen bei den Codes, sollte dies nicht mehr vorkommen ;)
    my_ext_form_action.cpy == plonecvs_project_file_delete_action


    Zitat

    Logisch würde mir folgender META-Eintrag vorschweben:

    Code
    [actions] 
    action.success = traverse_to:string:my_ext_edit_form_action

    dies müßte nach Ergänzung der Namen so aussehen

    Code
    [actions] 
    action.success = traverse_to:string:plonecvs_project_file_delete_action


    Und dies ist exakt der Code, der bei mir drinsteht. Da bin ich ja froh, dass ich logisch gedacht habe, und wir theoretisch auf das Gleiche gekommen sind :)

    Hier ist noch der Aufruf zur plonecvs_project_file_delete.pt:
    Vielleicht mache ich auch hier Fehler

    Ich erklär nochmal schnell den Produktaufbau und Use-Case:
    Ich habe eine Klasse PloneCvsProject. Diese Klasse besitzt ein View-Template. Aus dieser wird der direkt oben angeführte Code ausgeführt.
    Nach Betätigen des Links wird das neue Template (plonecvs_project_file_delete.pt) aufgerufen. -Da stellt sich mir die Frage, generell besitzt dieses Template ja keine Rechte für die klasse. Könnte der Fehler daher ruhen? Wenn ja, wie könnte ich diesem Template dann Rechte zuordnen, da es ansich kein eigenes Recht für dieses Template gibt?- Nach Abschicken der Daten aus plonecvs_project_file_delete soll die Metadatei aufgerufen werden und durch action.success die Datei plonecvs_project_file_delete_action.cpy
    Dies alles scheint er 100%ig zu machen. Nur erhalte ich den Quell-Code der plonecvs_project_file_delete.cpy zurück.

    Grüße
    Methusalix

    Hallo,
    ich kann leider mometan mit BBC wenig anfangen, daher poste ich mal die kompletten Codes, außer die ...view:

    my_ext_edit_form.pt: (plonecvs_project_file_delete.pt)

    my_ext_edit_form.cpt.metadata: (plonecvs_project_file_delete.cpt.metadata)

    Code
    [default]
    title=Delete File
    
    
    [validators]
    
    
    [actions]
    action.success = traverse_to:string:plonecvs_project_file_delete_action

    my_ext_edit_form_action.cpy: (plonecvs_project_file_delete_action.cpy)

    Bitte nicht an den Dateinamen aufhängen. Ich hab hier nur zur Verdeutlichung Aliasse verwendet. Die Verlinkung sollte stimmen.

    Meine Ausgabe beim Durchführen der Aktion ist der Quellcode der my_ext_edit_form_action.cpy:

    Danke, dass du dir die Codes verinnerlichst.

    Grüße Methusalix


    @edit: Die Aliasse wurden mit den richtigen Dateinamen versehen

    Hallo zusammen,

    ich treffe hier auf was -für mich- sehr merkwürdiges :)

    Ich versuche mal mein Problem so verständlich wie möglich zu definieren:

    Situation:
    Im View-Modus gibt es die Möglichkeit über einen Link im Template auf ein eigenes Formular bzw. Template zuzugreifen. Dies funktioniert ohne Probleme. An dieses Formular werden GET-Variablen übergeben. Auf diese kann ich auch ohne Probleme zugreifen.

    Soll-Zustand:
    Nach abschicken des Formular soll eine eigen-definierte Methode aufgerufen werden.

    File-Struktur:
    view_template.pt
    my_ext_edit_form.pt
    my_ext_edit_form.cpt.metadata
    my_ext_edit_form_action.cpy


    Nun das Problem: :)
    Wenn ich das Formular abschicke, greift my_ext_edit_form.cpt.metadata auf my_ext_edit_form_action.cpy zu. Allerdings bekomme ich nur den Quellcode angezeigt. Also dieser Code wird nicht ausgeführt sondern 1:1 als HTML-Source ausgeben.


    Über jede Hilfe wäre ich sehr verbunden :)

    Noch eine Frage nebenbei, da ich es momentan nicht testen kann:
    Wäre meine Objekt-Instanz immernoch im Context, da ich auf einige dieser Variablen zugreifen müßte

    Grüße
    Methusalix

    P.S. Ich hoffe ich habe das Problem halbwegs verständlich erklärt. Wenn nicht, einfach nachhacken :)

    zu b)
    es gibt verschiedene Varianten dies zu verwirklichen:
    Hier ein paar Pseudocodes:

    Code
    File_a:
    if is_logged_in()
      show_seite(xy.php)
    else
      login_form
    Code
    File_a:
    if is_logged_in()
      redirect_to(xy.php)
    else
      login_form
    Code
    File_a:
      login_form action="check_login_form.php"
    
    
    File check_login_form.php:
      if is_logged_in()
        redirect_to(xy.php)
      else
        redirect_to(File_a)
    Code
    File_a:
     login_form action="main_page"
     
    File main_page:
      if is_logged_in()
         Seite anzeigen
      else
        redirect_to(File_a)

    Und es gibt da noch einige weitere ...

    zu d)
    Use-Case
    - Daten abschicken
    - Daten prüfen
    - dann mache was

    wie dies nun verwirklichst, liegt an dir,..., die Pseudocodes stellen dabei vllt eine Hilfe

    a) gratulation
    b) wohin willst du weitergeleitet werden, was ist "deine" Seite? deine Seite == Login-Seite?
    c) Eingabe: einen Redirect zu "deiner" Seite

    Code
    <meta http-equiv="refresh" content="0; URL=/deine_seite.html">


    d) Code ist zu deiner Fragestellung sinnlos, weil das was du willst erst nach dem submit kommt
    e) Warum?

    Code
    <input type="hidden" name="submit" value="1" />


    =>

    Code
    <input type="submit" name="submit" value="Login" />


    => value von "submit" ist dann "Login"

    Theoretisch ja,..., allerdings ist oben im Skript ein kleiner Beschreibungsfehler unterlaufen :)

    "w+" : read-write, Datei wird auf 0 Byte gesetzt, Zeiger auf Anfang und es wird versucht die Datei zu erstellen, wenn sie nicht existiert

    "a+" : read-write, Zeiger auf Ende, Datei wird versucht zu erstellen, wenn sie nicht existiert

    hallo,

    ich vermute mal du hast einen Apache unter einem Unix-System am laufen.
    Hat apache RW-Access? Lösch am besten mal die Datei und lass sie dann über w+ erstellen. Damit ist owner = apache. Und die Probleme sollten nicht mehr auftreten.

    grüße

    So ich habe das mit dem Apache ausprobiert, und ich muss sagen, das ist genau das was ich gesucht habe.

    Pro: RW-Access in Echtzeit
    Contra: Performanceverlust, nun bin ich mir da nicht sicher, ob das an meiner Krücke hier liegt, allerdings scheint die URL-Auflösung vom Apache sehr lange zu dauern. Dies ist mir beim Laden der einzelnen Bilder aufgefallen. :) Nächster Punkt, es ist möglich von außen auf die Daten zuzugreifen, wenn man die URL kennt. Daher muss ein zusätzliches Sicherheitssystem implementiert werden.

    So das war's von meiner Seite

    Grüße Methusalix

    hmmm probier es mal damit:

    PHP
    <?php 
       $text = $_POST["text"]; 
       $p = $_POST["path"]; 
    
    
       $datei = fopen($p,"w+"); 
       fwrite($datei,$text); 
       fclose($datei); 
    ?>

    Code ist jetzt nicht getestet, sollte aber laufen

    Grüße Methusalix