Plone - stolprig unterwegs in Sachen right_slots/left_slots

Django, Flask, Bottle, WSGI, CGI…
Antworten
Sascha
User
Beiträge: 3
Registriert: Sonntag 20. Februar 2005, 18:44

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
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

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
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Sascha
User
Beiträge: 3
Registriert: Sonntag 20. Februar 2005, 18:44

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
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

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
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Gast

SUPER! Vielen Dank, ich bau es nachmittags gleich mal ein...

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

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

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
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Gast

was soll ich sagen gerold.... Mille Grazie!!!! es funzt und funzt und funzt... 8)
Antworten