In der Navigation nur Ordner & Artikel zurückziehen

Django, Flask, Bottle, WSGI, CGI…
Antworten
Henning Carstens

Dienstag 25. Oktober 2005, 10:33

Hallo,

ich habe Plone 2.1.1 auf Zope 2.8.3 mal unter SuSE 10 installiert. Dabei habe ich zwei Probleme:

1. Es sollen in der Navigation links nur Ordner angezeigt werden. Ich habe nämlich ein Telfonbuch mit >150 Einträgen und nun wird jeder Eintrag einzeln als Objekt angezeigt. Dagegen habe ich in der navtree_properties "showFolderishSiblingsOnly" und "showFolderishChildrenOnly" auf true sowie "showNonFolderishObject" auf false gesetzt. Es werden aber immer noch alle Einträge in der Navigation angezeigt. Woran kann das liegen?

2. Alle Artikel sollen erst sichtbar werden, wenn sie von einem Reviewer abgesegnet wurden. Also habe ich im plone_workflow private als initial_state gewählt und die Aktion "Einreichen" aktiviert. Eingereichte Artikel können nun aber vom Besitzer nicht mehr zurückgezogen werden. In Plone verschwindet das ganze Menü mit "Status ändern" etc. Ich musste erst die Berechtigung "Modify portal content" für den Owner im state "pending" aktivieren. Was passiert denn aber, wenn ein eingereichter Artikel bearbeitet wird, während er von einem anderen Benutzer freigeschaltet wird. Es hat doch sicher seinen Sinn, dass man _eigentlich_ die Artikel zunächst zurückziehen soll, bevor sie bearbeitet werden können.
Henning Carstens
User
Beiträge: 8
Registriert: Dienstag 25. Oktober 2005, 10:35
Wohnort: Bremen

Dienstag 25. Oktober 2005, 10:38

Jetzt habe ich natürlich viel zu schnell auf Absenden geklickt und kann den Beitrag nicht mal ändern...

Also angemeldet und folgenden Anhang:

Gruß und Danke für Antworten
Henning
;)
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Dienstag 25. Oktober 2005, 10:41

Henning Carstens hat geschrieben: ich habe Plone 2.1.1 auf Zope 2.8.3 mal unter SuSE 10 installiert.
[...]
Es werden aber immer noch alle Einträge in der Navigation angezeigt. Woran kann das liegen?
Hi Henning!

Ab Plone 2.1 werden viele alte, gewohnte Einstellungen für das Navigation-Portlet übergangen. Die sind nur noch da, um zum alten Navigations-Portlet kompatibel zu bleiben. Das neue Portlet, das extrem an Geschwindigkeit zugelegt hat :-), kannst du über die, direkt über Plone erreichbare, Plone-Konfiguration einstellen. Suche dort mal nach dem Punkt "Navigation".

lg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Henning Carstens
User
Beiträge: 8
Registriert: Dienstag 25. Oktober 2005, 10:35
Wohnort: Bremen

Dienstag 25. Oktober 2005, 10:46

Das ist ja noch besser, bei allen anderen Content-Types finde ich es nämlich ganz gut, dass die in der Navigation erscheinen.

Danke :D
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Dienstag 25. Oktober 2005, 11:11

Henning Carstens hat geschrieben:Alle Artikel sollen erst sichtbar werden, wenn sie von einem Reviewer abgesegnet wurden. Also habe ich im plone_workflow private als initial_state gewählt
[...]
Es hat doch sicher seinen Sinn, dass man _eigentlich_ die Artikel zunächst zurückziehen soll, bevor sie bearbeitet werden können.
Hi Henning!

Wenn ein Artikel mit "private" markiert ist, dann können diesen Artikel nur mehr Manager oder Owner sehen. Ich würde aber an einer anderen Stelle ansetzen.

Ein noch nicht veröffentlichtes Dokument wird für anonyme Besucher leider in der Ordnerauflistung angezeigt. Ich würde hier eine Prüfung ansetzen und den Eintrag nur dann anzeigen lassen, wenn
"not:isAnon" und
"python:wtool.getInfoFor(item,'review_state',None) == 'published'"

Das kannst du in der Vorlage "/portal_skins/plone_content/folder_listing" ändern.

Wenn ein Schreiberling einen Artikel verändern kann, nachdem dieser von seinem Chef abgesegnet wurde, dann wäre das "Absegnen" umsonst. So muss ein geänderter Artikel wieder seinem Chef vorgelegt werden.

lg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Dienstag 25. Oktober 2005, 11:24

gerold hat geschrieben: Das kannst du in der Vorlage "/portal_skins/plone_content/folder_listing" ändern.
Diese könnte dann so aussehen:

Code: Alles auswählen

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
      lang="en"
      metal:use-macro="here/main_template/macros/master"
      i18n:domain="plone">

<body>

    <div metal:fill-slot="main">
    <metal:main-macro define-macro="main">

        <div metal:use-macro="here/document_actions/macros/document_actions">
            Document actions (print, sendto etc)
        </div>

        <h1 tal:content="object_title" class="documentFirstHeading">
            Title or id
        </h1>

        <a href=""
           class="link-parent"
           tal:define="parent_url python:here.navigationParent(here, template_id)"
           tal:condition="parent_url"
           tal:attributes="href parent_url"
           i18n:translate="go_to_parent_url">
        Up one level
        </a>

        <div class="documentDescription" tal:content="here/Description">
            description
        </div>

        <metal:listingmacro define-macro="listing">
        <tal:foldercontents define="contentFilter contentFilter|request/contentFilter|nothing;
                            limit_display limit_display|request/limit_display|nothing;
                            more_url more_url|request/more_url|string:folder_contents;
                            contentsMethod python:test(here.portal_type=='Topic', here.queryCatalog, here.getFolderContents);
                            folderContents folderContents|python:contentsMethod(contentFilter);
                            use_view_action site_properties/typesUseViewActionInListings;
                            over_limit python: limit_display and len(folderContents) > limit_display;
                            folderContents python: (over_limit and folderContents[:limit_display]) or folderContents;
                            show_about python:not isAnon or site_properties.allowAnonymousViewAbout">
        <tal:listing condition="folderContents"
                     define="toLocalizedTime nocall:here/toLocalizedTime;">

            <dl>
                <tal:entry tal:repeat="item folderContents">
                <tal:block tal:define="item_url item/getURL|item/absolute_url;
                                       item_id item/getId|item/id;
                                       item_title_or_id item/pretty_title_or_id;
                                       item_description item/Description;
                                       item_type item/portal_type;
                                       item_type_title item/Type;
                                       item_modified item/ModificationDate;
                                       item_created item/CreationDate;
                                       item_type_class python: 'contenttype-' + normalizeString(item_type);
                                       item_wf_state item/review_state|python: wtool.getInfoFor(item, 'review_state', '');
                                       item_wf_state_class python:'state-' + normalizeString(item_wf_state);
                                       item_creator item/Creator;
                                       item_start item/start/ISO|item/StartDate|nothing;
                                       item_end item/end/ISO|item/EndDate|nothing;"
                           tal:condition="python: item_wf_state == 'published' or not isAnon"
                >
                
                    <dt metal:define-macro="listitem">

                        <span tal:attributes="class item_type_class"
                              tal:condition="python:item_type != 'Link'">
                        <a href="#" 
                           tal:attributes="href python:test(item_type in use_view_action, item_url+'/view', item_url+'/');
                                           class string:$item_wf_state_class visualIconPadding"
                           tal:content="item_title_or_id">
                            Item Title
                        </a>
                        </span>

                        <tal:to_external condition="python:item_type == 'Link'">
                            <span tal:attributes="class item_type_class">
                            <a href="#"
                               tal:content="item_title_or_id"
                               tal:attributes="href item/getRemoteUrl;
                                               class item_wf_state_class">
                                External Link
                            </a>
                            </span>
                        </tal:to_external>

                        <span class="documentByLine"
                              tal:condition="show_about">

                            <span tal:condition="python: item_type == 'Event'"
                                  i18n:translate="label_event_byline">
                                (<span tal:omit-tag="" tal:content="string:${item/location}" i18n:name="location">Oslo</span>, from
                                 <span tal:omit-tag="" tal:content="python:toLocalizedTime(item_start,long_format=1)" i18n:name="start">from date</span> to
                                 <span tal:omit-tag="" tal:content="python:toLocalizedTime(item_end,long_format=1)" i18n:name="end">to date</span>)
                            —
                            </span>

                            <tal:name tal:condition="item_creator"
                                tal:define="author python:mtool.getMemberInfo(item_creator)">
                              <span i18n:translate="label_by_author">
                                by
                              <a href="#"
                                 tal:attributes="href string:${portal_url}/author/${item_creator}"
                                 tal:content="python:author and author['fullname'] or item_creator"
                                 tal:omit-tag="not:author"
                                 i18n:name="author">
                                Bob Dobalina
                              </a>
                              </span>

                            </tal:name>

                            <tal:modified condition="python: item_type != 'Event'">
                                —
                                <tal:mod i18n:translate="box_last_modified">
                                  last modified
                                </tal:mod>
                                <span tal:replace="python:toLocalizedTime(item_modified,long_format=1)">
                                  August 16, 2001 at 23:35:59
                                </span>
                            </tal:modified>

                            <metal:description define-slot="description_slot">
                                <tal:comment replace="nothing"> 
                                    Place custom listing info for custom types here
                                </tal:comment>
                            </metal:description>
                        </span>

                    </dt>

                    <dd>
                        <span tal:omit-tag="" tal:condition="not:item_description"> 
                              
                        </span> 
                        <span tal:omit-tag="" tal:content="item_description"> 
                            description 
                        </span> 
                    </dd>
                </tal:block>
                </tal:entry>
            </dl>
        </tal:listing>
        <metal:empty metal:define-slot="no_items_in_listing">
            <p class="discreet"
               tal:condition="not: folderContents"
               i18n:translate="description_no_items_in_folder">
                There are currently no items in this folder.
            </p>
        </metal:empty>

        </tal:foldercontents>
        </metal:listingmacro>
    </metal:main-macro>
    </div>

</body>
</html>
Die ausschlaggebende Zeile ist:

Code: Alles auswählen

tal:condition="python: item_wf_state == 'published' or not isAnon"
lg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Henning Carstens
User
Beiträge: 8
Registriert: Dienstag 25. Oktober 2005, 10:35
Wohnort: Bremen

Dienstag 22. November 2005, 14:47

Habe das jetzt erst ausprobiert. Klappt gut. Vielen Dank nochmal!
Antworten