DocumentActions mit Icons

  • Hallo,

    ich möchte für die DocumentActions Icons anzeigen, statt dem Text.
    Ich weiß, dass ich das PT der DocumentActions ändern muss. Hab im Internet auch Beispiele dafür gefunden.

    Jetzt werden allerdings nur Icons angezeigt, wenn diese in den Actions unter "Icon (Expression)" eingetragen wurden.

    Allerdings werden bei Events Actions(vCalendar export, iCalendar export) angezeigt, die nicht bei den portal_actions dabei stehen. Also kann ich da auch keine Icons eintragen.
    Weiß jemand, wie ich dieses Problem lösen könnte?


    • Plone 3.2.1
    • CMF 2.1.2
    • Zope (Zope 2.10.7-final, python 2.4.5, linux2)
    • Python 2.4.5 (#1, Feb 25 2009, 17:56:23) [GCC 4.2.1 (SUSE Linux)]
    • PIL 1.1.6


    Gruß

    Sascha

  • Hallo,

    die Events Action sind ja ein eigenes PageTemplate wo die Icons leider hard gecodet drin stehen. diese Dateinamen kann man natürlich auslesen und in die DocumentActions Action eintragen dann funktioniert das auch.

    Gruss Pumukel

    Die beste Informationsquelle sind Leute, die versprochen haben, nichts weiterzuerzählen.

    Marcel Mart
    frz. Schriftsteller

  • Ich verstehe nicht so ganz was du meinst.

    Es geht um diese Actions
    - vCalendar export
    - iCalendar export

    Da müsste ich Icons zuweisen. Ich weiß allerdings nicht so ganz wo ich das machen soll, da diese Actions nicht bei den portal_actions vorkommen.

    Es gibt ja noch die portal_actionicons. Gibt es eine Möglichkeit die Icons den Actions zuzuweisen?
    Anders gefragt, ist es möglich das PageTemplate für die documentactions so abzuändern, dass die Icons, die bei portal_actionicons eingestellt sind, den actions zuzuordnen?

    Gruß

    Sascha

  • Alles was du in den portal_actions als registrierte Action (Properties) siehst, sind allgemein gesprochen Listenelemente, die von mehreren Stellen, bzw. anpassungsfähig für verschiedene Templates zur Verfügung gestellt werden sollen. Die Event_Actions wie du sie nennst, sind nur für den Objekttype Event sinnvoll und sind hardcoded im PageTemplate:

    diese Informationen kann man prinzipiel auch in ein Action Element in den portal_actions eintragen.

    Die Action_icons muss man auch im Page Template registrieren, schau dir mal am besten den personal_bar an, die macht sowas.

    Code
    icon python:icon is not None and icon or view.getIconFor(action['category'], action['id'], None);

    Aber warum musst du das machen? für die beiden Sachen sind in doch schon Icons standardmässig registriert, die du doch einfach überschreiben könntest.

    Gruss Pumukel

    Die beste Informationsquelle sind Leute, die versprochen haben, nichts weiterzuerzählen.

    Marcel Mart
    frz. Schriftsteller

  • Also ich habe das PT für die Document_Actions wie hier beschrieben angepasst.

    http://www.harald-hoyer.de/linux/plone-cu…nt-action-icons

    So werden dann Icons angezeigt, die man bei den portal_actions eingetragen hat. Allerdings wird eine Exception geworfen, wenn man kein Icon eingetragen hat.

    Da die oben genannten Actions von den Events bei den portal_actions nicht aufgelistet werden, kann ich da auch kein Icon eintragen, also wird ein TraversalError geworfen.

    Da ich mich mit Plone noch nicht so gut auskenne, weiß ich jetzt nicht was ich dagegen tun kann.

    Deshalb war mein Gedanke, da bei den portal_actionicons alle Icons eingetragen sind, dass man die actions mit diesen Icons irgendwie im PT für die Document_Actions in Verbindung bringen kann. So bräuchte ich die Icons nicht bei den portal_actions einzutragen.

    Gruß

    Sascha

  • Hallo Sascha,

    Die problematik ist das du natürlich verschiedene Dinge miteinander zu verbinden suchst. Leider ist auch das Beispiel das du referenzierst
    fehlerhaft. Man muss prüfen ob es das Objekt überhaupt gibt.

    Code
    <a href=""
       tal:attributes="href daction/url;
       title daction/description">
      <tal:iconaction tal:condition="daction/icon" >
        <img tal:condition="daction/icon" tal:attributes="src daction/icon; alt daction/title; title daction/title"/>
      </tal:iconaction>
      <tal:action tal:condition="not:daction/icon" tal:content="daction/title" i18n:translate="">
          Action name
      </tal:action>
    </a>

    Das nimmt jetzt natürlich nur die Icon_expression die in der Action angegeben ist.

    wenn man entweder diese oder die actionicons nutzen moechte muss man noch ein wenig mehr machen.

    in den umschließenden a Block schreibe man ein

    Code
    tal:define="icon daction/icon|None;
                icon python:icon is not None and icon or view.getIconFor(action['category'], action['id'], None);"

    ich hoffe ich habe keine weiteren defines vergessen.

    Gruss Pumukel.

    PS: Aber nochmal die berechtigte Frage, warum sollen die iCal und vCal als document_action genutzt werden?
    Die sind doch bloss bei Events sinnvoll, und dort gibt es die Action ja schon und auch mit Bildern davor.

    Die beste Informationsquelle sind Leute, die versprochen haben, nichts weiterzuerzählen.

    Marcel Mart
    frz. Schriftsteller

  • Zitat

    PS: Aber nochmal die berechtigte Frage, warum sollen die iCal und vCal als document_action genutzt werden?
    Die sind doch bloss bei Events sinnvoll, und dort gibt es die Action ja schon und auch mit Bildern davor.



    Frag mich nicht warum, aber wenn man sich Events anschaut, werden diese Actions auch bei den document_actions angezeigt, zumindest wenn man angemeldet ist. Deshalb wurde jedes mal ein TraversalError geworfen.
    Deine Lösung hat leider auch nicht richtig funktioniert.

    Code
    view.getIconFor(action['category'], action['id'], None);"


    Das hat leider auch kein Icon zurückgegeben, da die Category immer document_actions war und da ist leider nichts bei den portal_actionicons eingetragen. Ok, das hätte ich machen können. Aber ich hab den Aufruf etwas verändert und jetzt funktioniert es.
    Du kannst es dir ja mal anschauen.




    Gruß

    Sascha