Seite 1 von 1

Plone - stolprig unterwegs in Sachen right_slots/left_slots

Verfasst: Sonntag 20. Februar 2005, 18:57
von Sascha
Hi zusammen,

ich bin gerade frisch in Plone unterwegs und bis jetzt schwer begeistert...

Ich finde allerdings ein Feature nicht: wie kann ich festlegen, wo ein User direkt nach Login landet? Mich nervt die login_success Seite...

Ausserdem schaffe ich es nicht auf der Welcome-Seite die slots leer zu halten (login bleibt , klar :) und nach Login kommt dann naviagtion und calender, usw. Auf der login_success sind die Slots leer, klicke ich auf meinen Ordner oder mein Hompage erscheinen die slots wie gewünscht.

Ich vermute die Regeln, die ich unter members/properties/slots... gemacht habe, funzen nur da und drunter. Die login_success liegt aber eine ebene höher auf root. Irgendwie schaffe ich es nicht sie direkt anzusprechen.

Wäre aber egal, wenn ich die Verweise nach den Logins editieren könnte, dann würde ich direkt in den members-ordner gehen, wäre mir viel lieber!

Vielleicht kann mir einer da helfen. Ich habe schon zwei Online-Bücher durch, nix gefunden. Wenn einer ein ausführliches Buch auf deutsch kennt, bitte sagen!

Danke schon mal vorab
Sascha :D

Re: Plone - stolprig unterwegs in Sachen right_slots/left_sl

Verfasst: Sonntag 20. Februar 2005, 21:44
von gerold
Hi Sascha!
Sascha hat geschrieben:ich bin gerade frisch in Plone unterwegs und bis jetzt schwer begeistert...

Ich finde allerdings ein Feature nicht: wie kann ich festlegen, wo ein User direkt nach Login landet? Mich nervt die login_success Seite...
Das Login-Verhalten wird in der Datei
<plone-root>/portal_skins/plone_scripts/logged_in
gemanaged. Achte da drinnen mal auf die Variable login_success
Sascha hat geschrieben:Wäre aber egal, wenn ich die Verweise nach den Logins editieren könnte, dann würde ich direkt in den members-ordner gehen, wäre mir viel lieber!
Genau das kannst du im Python-Skript "logged_in" machen.

mfg
Gerold
:-)

Verfasst: Sonntag 20. Februar 2005, 22:18
von Sascha
Danke, echt schnelle Antwort. Hab mal in die Datei reingeschaut.
Leider kann ich nicht programmieren, daher eigentlich auch plone :D
Ich hab aber zwei Stellen in der logged_in gefunden wo die login_success vorkommt:

template_id.endswith('login_form'):
login_success = '%s/%s' % (context.portal_url(), 'login_success')

REFERER=REQUEST.get('HTTP_REFERER')
if login_success:
URL=login_success

Da müssen wohl die Änderungen hin. Fragt sich nur wie. Wenn ich mir das hier so anschaue, leitet jeder erfolgreiche Login auf die gleiche login_success, die man dann im content-Bereich sieht. Während parallel der Benutzer "seinen Bereich betritt".

Gibt es eine Möglichkeit jeweils direkt die Homepage eines jeden Benutzers anzusteuern?

Vielleicht kann das context.portal_url()? Bezieht sich context auf die jeweiligen User?

Sry, bin echt neugierig. Nochmal vielen Dank für die schnelle Antwort!

Sascha

Verfasst: Montag 21. Februar 2005, 09:01
von gerold
Hallo Sascha!

Wenn du möchtest, dass der Benutzer statt zur "login_success" zum Member-Ordner weitergeleitet wird, dann könnte es so aussehen:

Code: Alles auswählen

...
# if we weren't called from something that set 'came_from' or if HTTP_REFERER
# is the 'logged_out' page, return the default 'login_success' form
if came_from is not None:
    template_id = came_from.split('?')[0].split('/')[-1]
if not came_from or \
   template_id.endswith('logged_out') or \
   template_id.endswith('mail_password') or \
   template_id.endswith('member_search_results') or \
   template_id.endswith('login_form'):
    #login_success = '%s/%s' % (context.portal_url(), 'login_success')
    username = membership_tool.getAuthenticatedMember()
    login_success = "%s/Members/%s" % (context.portal_url(), username)

...
Wenn du möchtest, dass, egal von wo aus man sich einloggt, der Benutzer immer im Members-Ordner landet, dann könntest du das damit erreichen:

Code: Alles auswählen

...
qs = context.create_query_string(
    REQUEST.get('QUERY_STRING', ''),
    portal_status_message=("Welcome! You are now logged in.")
    )

REFERER=REQUEST.get('HTTP_REFERER')

username = membership_tool.getAuthenticatedMember()
login_success = "%s/Members/%s" % (context.portal_url(), username)

if login_success:
    URL=login_success
else:
    URL=REQUEST.get('came_from', REFERER)

if URL.find('?')==-1:
    dest = '%s?%s' % (URL, qs)
else:
    dest = '%s&%s' % (URL, qs)

return REQUEST.RESPONSE.redirect(dest)
Ich habe dir jeweils einen kleinen Ausschnitt aus der "logged_in" herauskopiert. So dürftest du den Bereich, in dem diese zu ändern ist leicht finden.

mfg
Gerold
:-)

Verfasst: Montag 21. Februar 2005, 09:08
von Gast
SUPER! Vielen Dank, ich bau es nachmittags gleich mal ein...

:D :D Sascha

Verfasst: Montag 21. Februar 2005, 09:12
von gerold
Sascha hat geschrieben:Vielleicht kann das context.portal_url()? Bezieht sich context auf die jeweiligen User?
Hallo Sascha!

Nein, context bezieht sich auf das Object, von dem aus das Skript aufgerufen wurde. Nähere Informationen zu den einzelnen Basisvariablen wie context, here, template, script, usw. erfährst du im Zope-Buch.
http://www.dzug.org/Members/vbachs/zboo ... /file_view

Code: Alles auswählen

context.portal_url()
gibt dir immer die URL der Plone-Homepage zurück.

Den Aktuellen Benutzernamen bekommst du in einem Python-Skript so raus:

Code: Alles auswählen

context.portal_membership.getAuthenticatedMember()
mfg
Gerold
:-)

Verfasst: Montag 21. Februar 2005, 09:19
von Gast
Hi Gerold,

Jaaaaaaa, ich konnte es nicht abwarten und habs noch schnell eingebaut und es funzt! Vielen, vielen Dank! 8)

Tausend Grüße
Sascha

Verfasst: Montag 21. Februar 2005, 09:24
von Gast
Hi Gerold,

Und natürlich danke für den Link auf die PDF, endlich auch ausführlich genug! ich geh jetzt Hausaufgaben machen... :P

Grüße
Sascha

Verfasst: Dienstag 22. Februar 2005, 15:39
von Gast
Ich hätte da noch eine Frage: Wie muss ich die Logged-in verändern, damit jeder User, egal woher, immer auf einem bestimmten Ordner landet? In meinem Fall ein Ordner "Projects", der auf dem selben Level wie Members ist?

Ich habe versucht den Code zu ändern, aber seitdem hat er Fehlermeldungen :roll:

Grüße
Sascha

Verfasst: Dienstag 22. Februar 2005, 17:18
von gerold
Anonymous hat geschrieben:Ich hätte da noch eine Frage: Wie muss ich die Logged-in verändern, damit jeder User, egal woher, immer auf einem bestimmten Ordner landet? In meinem Fall ein Ordner "Projects", der auf dem selben Level wie Members ist?

Code: Alles auswählen

login_success = "%s/Projects/" % context.portal_url()
mfg
Gerold
:-)

Verfasst: Dienstag 22. Februar 2005, 17:54
von Gast
was soll ich sagen gerold.... Mille Grazie!!!! es funzt und funzt und funzt... 8)