Beiträge von slarellek

    Hallo,
    ich habe ein paar eigene Inhaltstypen mit Archetypes erstellt. Diese befinden sich alle im selben Ordner und lassen sich einfach internationalisieren. Ich würde hier gerne die internationalisierung von Plone nutzen, möchte aber das die Inhalte im Rest der Site in der Defaultsprache Deutsch angezeigt werden.Die plone.app.i18n habe ich gefunden und auch das language Tool mit dem I18N_LANGUAGE cookie und den diversen anderen Methoden die Sprache festzulegen aber irgendwie komme ich dann nicht weiter wie dann der Übersetzungsprozess eingeleitet wird wenn die Sprache gesetzt ist. Weiß jemand welche Eggs ich mir dann noch anschauen muß oder hat jemand vielleicht sogar eine (einfache Lösung:-)): Mir fallen jetzt erst einmal nur quick und dirty Lösungen ein wie im LanguageTool die Sprachen für den übersetzbaren Ordner zu setzen, BrowserNegotiation abzuschalten und das I18N_Language cookie im übersetzbaren Ordner mit einem eigenen viewlwet/template zu setzen und dann im Rest der Seite über eine Zugriffregel das Cookie zu löschen.

    Danke und Gruß
    Daniel

    Aus einer Plone Instanz heraus funktioniert das nicht. Die Instanz hat selbstverständlich keinen Zugriff auf das Dateisystem. Keine Ahnung was du vorhast aber aus Plone heraus geht es z.B.so: Hinzufügen ->Datei. Datei hochladen. Hinzufügen ->Link->Webadresse=URL der Datei.

    Vorweg: Obwohl Enfold Systems mit dem Installer für Windows hervorragende Arbeit leisten, macht Plone auf Windows mehr Ärger als Spaß. Das merkst du unter anderem daran, dass Sachen wie die Indizierung von PDF-Dateien die auf Linux quasi "out of the box" laufen mit Windows einiges an Frickelei benötigen.
    1. Damit die Volltextsuche möglich ist muss die PDF-Datei tatsächlich durchsuchbar sein.
    2. Ich weiß nicht was xpdf3 ist und wo du es her hast. Ich habe mir von http://www.foolabs.com/xpdf/ eine Datei namens xpdfbin-win-3.03.zip heruntergeladen. Dann habe ich die Datei pdftotext.exe aus dem Ordner bin64 der Zip-Datei nach c:\Windows\SysWOW64 kopiert.(Meine Windowskiste ist ebenfalls Home 7 64bit. Auf 32bit muß man vermutlich die pdftotext.exe aus dem Ordner bin32 der Zip-Datei nach c:\Windows\System32 kopieren).
    3.Da auf Windows Plone als Dienst installiert wird habe ich die Instanz heruntergefahren indem ich den Dienst Plone 4.2 (nicht den Dienst 4.2 Zeo) gestoppt habe. Dann habe ich mir eine Eingabeaufforderung geöffnet bin in das Verzeichniss C:\Plone gewechselt und habe die Instanz mit bin\instance.exe fg im Vordergrund neu gestartet.
    4. Habe ich über http://localhost:8080/manage im ZopeManagementInterface (ZMI) eine neue Plone Seite angelegt. Im ZMI/neue Seite/portal_transforms war dann auch schon eine Transformation namens pdf_to_text angelegt.
    5. Habe ich Martin Aspelis hervorragendes Buch Profesionell Plone 4 Devellopement welches ich als Pdf-Datei besitze auf die neue Seite heraufgeladen.
    6.Habe ich im ZMI/neue Seite/portal_catalog im Reiter Catalog den Link auf die heraufgeladene Datei angeklickt und auf der sich öffnenden Seite unter Index Contents => SearchableText gesehen, dass die Datei korrekt indiziert wurde.
    7.Habe ich auf der neuen Seite im Suchfeld den Namen Aspel eingegeben und bekam sofort die Pdf_Datei als Suchergebniss angezeigt.
    8.Habe ich auf einer bereits früher angelegten Seite in portal_transforms eine neue Transformation mit der id pdf_to_text und dem Modul Products.PortalTransforms.transforms.pdf_to_text angelegt und dann die Schritte 5-7 erfolgreich durchgeführt.

    Ich habe vorher auch deinen Weg mit irgendwo installieren (meint den bin64 Ordner aus der Zip-Datei nach c:\Program Files(x86) kopieren, Ordner bin64 nach xpdf umbennen und Ordner in PATH eintragen) gegangen. Das war aber nicht erfolgreich: Unter der bereits früher angelegten Seite endete jeder Versuch eine neue Transformation anzulegen mit einer Fehlermeldung und einem irreführenden Traceback das es einen Fehler im Modul Products.Mimetypesrgistry gegeben hätte. In einer neu angelegten Seite war zwar die Transformation vorhanden aber nach dem heraufladen der schon erwähnten Datei war in SearchableText der Text "'c','program','nicht',......'falsch','geschrieben'" zu finden. Ein bißchen googlen hat erbracht, dass das ganze wohl eher ein Berechtigunsproblem ist.

    Versuch es also noch einmal mit meiner Vorgehensweise. Wenn es nicht funktioniert bin ich gerne bereit weiter zu helfen unter der Vorrausetzung dass du 1. ein bißchen ausfühlicher wirst(z.Bsp. was heisst installiert,was ist und woher hast du xpdf3, usw) und zweitens nicht wieder die beleidigte Leberwurst spielst weil der Hinweis nicht erfolgreich war und RUMSCHREIST.

    Gruß Daniel

    Hallo Pumukel,
    nein der Link macht lediglich darauf aufmerksam, daß wenn man im IObjectWasauchimmerevent Veränderungen am Objekt vornimmt die sich im Catalog wiederfinden sollen im Event neu katalogisieren muß da das automatische reindexen (CatalogAware) vor dem Event erfolgt. Genau deshalb steht auch am Ende meiner Funktion ein reindexObject() :)

    Den zope.lifecycleevent.IObjectModifiedEvent werde ich mir mal angucken aber
    1.
    finde ich einfach keine Erklärung warum der IObjectEditedEvent nicht feuert bzw. genauer beim ersten Edit nicht feuert. Er sollte definitiv ausgelöst werden. (Das dann möglicherweise im event nicht das passiert was ich möchte steht nochmal auf einem anderen Blatt. Ich bin schließlich gut im Fehler machen :?).
    2.
    sind mir die zope events ein bißchen zu generisch. So gibt es zum Beispiel beim AddedEvent leider keine Möglichkeit zu unterscheiden ob ein Objekt kopiert, verschoben oder neu erstellt wurde da der event beim erstellen zigmal feuert und sich dann oldParent und oldName entsprechend ändern. Das einzige was man sicher sagen kann, ist dass ein Objekt gelöscht wurde.

    Ich lass das ganze jetzt erst einmal auf sich beruhen (auch wenns ein bißchen wie ein kaputter Zahn ist) und behelfe mir mit InitializedEvent bis ich auf die sicher ganz einfache Erklärung komme.

    Zu deinem Nachtrag:
    Kannst du ein bißchen genauer werden wie es einfacher ginge? Mir ist schon klar dass man die Factory eigentlich nicht braucht (vorausgesetzt das Script läuft durch) da nicht zu erwarten ist, dass das Erstellen der Objekte abgebrochen wird, aber wie könnte es einfacher gehen? Wahrscheinlich übersehe ich was, aber mir fällt jetzt keine Funktion ein mit der ich Objekte direkt erstellen könnte.

    Gruß und Dank für deine Hilfe
    Daniel

    Hallo Pumukel,
    es handelt sich um bereits bestehenden Content das erscheint mir nicht einleuchtend,daß ich da den InitializedEvent brauche.
    Ich habe aber aus Spaß einen Handler für IObjectInitialized erstellt. Wenn ich jetzt bereits bestehenden Content bearbeite und abspeichere feuert der InitializedEvent. Wenn ich dann noch einmal bearbeite und abspeichere feuert der ObjectEditedEvent.
    Es hat sich also nichts geändert ich muß den Content zweimal editieren und abspeichern damit der EditedEvent feuert.
    Der Content kommt allerdings ursprünglich aus einer Datenbank und wurde per externer Methode mittels invokeFactory() ins System gebracht. (Ja,ja ich weiß ist böse. Warum eigentlich?) Dabei wurde jedesmal ObjectInitialized- und ObjectEditedEvent aufgerufen. Trotzdem scheint es so als wurde ein Event irgendwie vergessen oder übersprungen. Mein Versuch jetzt per externer Methode über alle Objecte dieses Contents zu iterieren und die events nachträglich noch einmal auszulösen funktioniert zwar - die events werden ausgelöst- das ändert aber nichts daran, daß ich erst beim zweiten bearbeiten und abspeichern den EditedEvent erhalte.
    Das betrifft merkwürdigerweise nur diesen einen Contenttypen. Andere Typen die auf die gleiche Weise ins System gebracht wurden funktionieren wie gewünscht.
    Verwirrt Daniel

    Hallo,
    ich habe ein kleines Problem mit Products.Archetypes.interfaces.IObjectEditedEvent in Plone 4.05.
    Ich habe in einem mit Archetypes erstellten Produkt/Content eine Funktion erstellt welche aufgerufen werden soll nachdem das Produkt bearbeitet und abgespeichert wurde. Eigentlich ganz simpel:

    PHP
    def postProduction(obj,event):
               tu dies und mach das
               print 'In Postproduktion'


    in der configure.zcml steht:

    PHP
    <subscriber for=".interfaces.MyContent
                     Products.Archetypes.interfaces.IObjectEditedEvent"
                handler=".MyContent.postProduction" />


    Wenn ich dann ein bestehendes Stück MyContent bearbeite und speichere passiert überhaupt nichts. Es werden zwar die Änderungen an MyContent übernommen aber weder werden die Anweisungen in der Funktionen ausgeführt noch erscheint die print Anweisung auf der Konsole (Plone läuft im Debug Modus bzw. bin/instance fg).
    Wenn MyContent dann direkt noch einmal editiert und abgespeichert wird dann wird die Funktion plötzlich ausgeführt.
    Ich muss gestehen ich bin völlig ratlos und hoffe auf einen Tip.
    Gruß und Dank
    Daniel

    Hallo,
    ich habe einen eigenen Inhaltstyp mit Archetypes erstellt.

    PHP
    mein_schem=ATFolderSchema.copy() + \
        schema.copy()

    in meinem Schema schema habe ich folgendes Feld:

    PHP
    LinesField(
            name='Postleitzahlen',
            storage=AnnotationStorage(),
            widget=LinesWidget(
                rows=10
                cols=10,
                label='Postleitzahlen',
                description=''           
            )              
        ),

    Mein Problem ist das das property cols einfach ignoriert wird und immer nur der Standard von 40 Zeichen aus Products.Archetypes.Widget für das LinesWidget genutzt wird. Dort heist es:

    PHP
    class LinesWidget(TypesWidget):
        _properties = TypesWidget._properties.copy()
        _properties.update({
            'macro' : "widgets/lines",
            'rows'  : 5,
            'cols'  : 40,
            })

    Merkwürdigerweise wird aber das rows property aus meinem Feld berücksichtigt.
    Gut habe ich mir gedacht die Doku auf plone.org hinkt vielleicht ein bißchen hinterher also habe ich mal ganz brutal in Products.Archetypes.Widget für das LinesWidgetin in _properties.update cols auf 10 gesetzt, Zope neu gestartet,eine neue Plone Seite angelegt und meinen Inhalt neu installiert.
    Pustekuchen es bleibt bei 40 Zeichen Länge.
    Ich habe auch schon das hier probiert

    PHP
    mein_schema['Postleitzahlen'].widget.cols=10

    hat aber auch nicht funktioniert.
    Das manche Sachen funktionieren und andere nicht ist mir auch title Feld aufgefallen.
    Man liest ja z.Bsp. bei Aspelli das man dem Titelfeld einfach ein anderes Label geben kann.

    PHP
    mein_schema['title'].widget.label=u"Ort"

    funktioniert nicht

    PHP
    mein_schema['title'].widget.descriptionl=u"Bitte den Name des Ortes eingeben"

    dagegen funktioniert.
    Bin für jeden Hinweis dankbar.
    Gruß Daniel

    Hallo Andreas,

    Weil mich das auch nervt.

    Zitat

    Hierfür gibt es keine einfache Lösung. Der Verhalten - so wie es is - ist beabsichtigt

    Das erscheint mir nicht logisch. Warum ist das so beabsichtigt ? Einen link auf ein Objekt anzuzeigen welches gerade angezeigt wird macht eigentlich nicht wirklich Sinn (deshalb wird ja in den Breadcrumbs das aktuelle Objekt nicht als link angezeigt). Außerdem: Durch die Breadcrumbs weiß wo man ist, also ist diese zusätzliche, redundante Information durch die Navigation überflüssig.
    Gruß Daniel

    Hallo,
    ich habe eine Frage zu SmartPrint NG.
    Ich möchte gerne das Bedienfeld für den Export in den oberen Teil der Seite verlegen. Dazu habe ich das viewlet abovecontenttitle.documentactions in den Browsermanager IContentViews verlegt und das ursprüngliche viewlet per viewlwts.xml versteckt. Die Document Actions erscheine jetzt auch brav im content aber wenn ich den Export Link anklicke öffnet sich das Bedienfeld nach wie vor unterhalb des Contens bzw. der Historie.
    Hat jemand eine Idee wie ich das einrichten kann, daß sich das Bedienfeld ebenfalls in IContentviews öffnet.
    Vielen Dank Daniel