Skip to content
This repository has been archived by the owner on Nov 3, 2023. It is now read-only.

Zurück-Button und "speichern und schließen" in Backend verlinken immer auf Backend-Startseite #6127

Closed
Kreativsoehne opened this issue Aug 29, 2013 · 57 comments

Comments

@Kreativsoehne
Copy link

Contao 3.1.x wird im Unterordner "cms" des HTTP-Root betrieben. Dabei wurde nach dieser Anleitung vorgegangen: http://de.contaowiki.org/Installation_in_Unterverzeichnis

Im Frontend gibt es bisher keinerlei Probleme, aber im Backend führen alle "Zurück" und "Speichern und schließen"-Buttons immer auf die Startseite. Auch der Redirect auf die Gewünschte Seite nach dem Login funktioniert nicht. Dort landet man ebenfalls auf der Backend-Startseite.

Wir vermuten, dass die zuletzt verwendete Seite nicht korrekt in der User-Session gespeichert wird.

Auffällig ist auch, dass nach erfolgreichem Login immer auf [domain]/contao/main.php weitergeleitet wird, auch wenn man das Backend über [domain]/cms/contao/ aufgerufen hat. Die Verlinkungen innerhalb der linken Navigation laufen wieder über [domain]/cms/contao/, die Links im Seitenheader wiederum über [domain]/contao/. Wir vermuten deshalb einen Zusammenhang mit dem geschilderten Problem.

Über einen Hotfix, oder zumindest einen Ansatz wären wir sehr glücklich, denn dieses Verhalten raubt uns bei der Arbeit im Backend den letzten Nerv :(

@Babelfisch
Copy link

Kann ich bei Contao 3.1.2 bestätigen. Meine Installation liegt in keinem Unterordner, daran liegt es also vermutlich nicht.

@Samson1964
Copy link

3.1.1
Das die Zurück-Links nicht immer korrekt funktionieren, ist mir auch schon aufgefallen. Ich konnte das bisher verschmerzen.

@xchs
Copy link
Contributor

xchs commented Aug 29, 2013

@Kreativsoehne Um welche Contao-Version handelt es sich konkret? In Contao 3.1.2 wurde nämlich ein zumindest ähnliches Problem gefixt (siehe #5956).

@Babelfisch
Copy link

Also bei mir tritt das erst in der 3.1.2 auf. In der 3.1.1 war es mir nicht auf gefallen.

@xchs
Copy link
Contributor

xchs commented Aug 29, 2013

Contao 3.1.x wird im Unterordner "cms" des HTTP-Root betrieben. Dabei wurde nach dieser Anleitung vorgegangen: http://de.contaowiki.org/Installation_in_Unterverzeichnis

@Kreativsoehne Wieso machst Du das Domainmapping nicht direkt über das Admin-Panel? Das wäre eine Sache von einer Minute und IMHO weit weniger kompliziert und umständlich als beispielsweise im Wiki-Artikel beschrieben.

@Kreativsoehne
Copy link
Author

Danke für die Antworten in so kurzer Zeit ;)
@xchs Das Problem besteht bei Contao 3.1.1. sowie 3.1.2. - Wir hatten auch auf den Fix #5956 gehofft, leider brachte das Update von 3.1.1. auf 3.1.2. keine Änderung des Verhaltens.
Domainmapping über das Admin-Panel? Gibt es diese Funktion noch in Contao 3? Wenn ja wo? 0o
Auch ist es seltsam das ja die Linke Navigation im Backend funktioniert. Das Problem sind, wie bereits erwähnt, alle Funktions-Buttons (Speichern & Schließen / Verschieben / Löschen / Kopieren / zurück / etc...)

@xchs
Copy link
Contributor

xchs commented Aug 30, 2013

Domainmapping über das Admin-Panel? Gibt es diese Funktion noch in Contao 3? Wenn ja wo?

Das hat nichts mit Contao zu tun. Schau mal in die Webadministrationsoberfläche (Admin-Panel) Deines Hosters. Dort sollte es in der Domainkonfiguration irgendwo die Möglichkeit geben, die betreffende Domain direkt auf den gewünschten Ordner (bei Dir z.B. cms) zu mappen, d.h. alle Requests auf diesen Ordner zu routen.

Dann nämlich könntest Du Dir das Umschreiben auf diesen Ordner über die .htaccess (siehe Wiki-Artikel) komplett sparen.

@Kreativsoehne
Copy link
Author

Achso, entschuldige, das habe ich falsch verstanden.
Natürlich ist uns diese Variante bekannt und im Normalfall auch die Beste bzw. Einfachste.
Leider ist das aktuelle Projekt ein wenig komplexer und wir müssen mit mehreren Ordnern auf der Root-Ebene arbeiten. So dass uns nur diese Variante bleibt.
Und "eigentlich" "sollte" das ja auch funktionieren ;)

@Mike008
Copy link

Mike008 commented Sep 3, 2013

Bei mir tritt der Fehler auch bei der Vers. 3.1.2 auf. Bei längerem Arbeiten im BackEnd, bespielsweise in der Seitenstruktur und den Nachrichten, führen ca. 25% aller Zurück-Klicks auf die Startseite des BackEnds, statt auf die entsprechende Übersichts-Seite. Das System ist einfach auf /root installiert. Tritt auch in der Onlinedemo auf, man muss allerdings ein gewisse Zeit darin arbeiten.

@Kreativsoehne
Copy link
Author

bei uns tritt es zu 100% auf ... und es ist in einem unterordner installiert... (wie oben beschrieben).
es wäre eigentlich recht hilfreich wenn sich @leofeyer zu dieser Fehlfunktion äußern könnte ;)
In diesem Zustand könne wir das System so nicht an den Kunden übergeben bzw. Ihn schulen.
Auch hier wird auf ein ähnliches Problem verwiesen: #5956

@leofeyer
Copy link
Member

leofeyer commented Sep 4, 2013

Ohne Anleitung zur Reproduktion des Problems wird es schwierig.

@Kreativsoehne
Copy link
Author

Der einzige Unterschied zu den sonst betriebenen Systemen ist, dass es eben in einem Unterordner des HTTP-Root betrieben und per Rewrites entsprechend umgeleitet wird. Deshalb ist das eigentlich der einzige Reproduktionsfaktor, den wir momentan benennen können.
Wir können dir auch gern noch ein System unter den gleichen Bedingungen aufsetzen und dir Zugang geben, wenn dir das etwas nützt.

@Mike008
Copy link

Mike008 commented Sep 4, 2013

Wiegesagt bei mir tritt der Fehler auch im /root Verzeichnis auf.

@Kreativsoehne
Copy link
Author

Hallo @leofeyer konntest du das Problem mittlerweile reproduzieren? Bzw. welche Informationen fehlen dir dazu noch? Wie können wir weiterhelfen?

@xchs
Copy link
Contributor

xchs commented Sep 12, 2013

@Mike008

Tritt auch in der Onlinedemo auf, man muss allerdings ein gewisse Zeit darin arbeiten.

Könntest Du das bitte näher ausführen und die Schritte aufzeigen, wie sich das Problem in der Contao Online-Demo (nachvollziehbar) reproduzieren lässt?

Die Online-Demo liegt ja praktisch auf der ersten Ebene im DocumentRoot des vHosts.

@Kreativsoehne: Dass bei Dir die Verlinkungen einmal so, einmal anders lauten, könnte möglicherweise mit Deinem URL-Rewrite auf den cms-Unterordner zu tun haben und in weiterer Folge vermutlich zu den geschilderten Problemen führen. Deshalb wäre mein Vorschlag gewesen, die betreffende Installation zum Testen mal in eine Subdomain zu duplizieren und den DocumentRoot auf das Contao Hauptverzeichnis zeigen zu lassen.

@Zeromax
Copy link

Zeromax commented Sep 16, 2013

Habe Contao 3.1.2 und ich kann es für den Core nicht beschreiben und somit auch nicht in der online Demo reproduzieren.

Somit ist die folgende Erklärung evtl. nur ein Hinweis, aber es muss trotzdem gefixed werden ;)
Es basiert auf einem eigenen Modul welches ich für eine entsprechende Anwendung umgesetzt habe.

  1. Normales Modul tl_mod erstellt mit mehreren cTable tl_mod_1 und tl_mod_2
  2. Bei den cTable DCAs die entsprechende pTable angegeben.
  3. in dem edit button call back wird die URL Manipuliert und bei Entsprechender Einstellung in der pTable auf eine andere cTable zu springen. Somit ergeben sich filgende URLs:
    contao/main.php?do=mod&table=tl_mod_1&id=3&rt=... und contao/main.php?do=mod&table=tl_mod_2&id=3&rt=...
  4. Wenn ich die nun editiere dann leitet mich der Zurück link immer auf die Startseite

Das ist wie gesagt ein Spezielles modul, da ich hier für die Einträge mehrere cTables habe. Sollte aber trotzdem Korrekt weiterleiten.
Habe es folgendermaßen gelöst:

// Fix problem if ther is a diffrent pTable
if ($return == '' && \Input::get('do') != "" && TL_MODE == 'BE')
{
    $return = 'contao/main.php?do=' .  \Input::get('do');
}

Das habe ich in der Methode getReferer eingefügt.
https://github.com/contao/core/blob/master/system/modules/core/library/Contao/System.php#L214

Das ist keine Dauerlösung und führt evtl auch zu Problemen, aber ich lande zumindest nicht mehr auf der Startseite. Es wird in der Ganzen Methode immer davon ausgegangen, dass sich die Tanelle nie ändert, was aber nicht immer haltbar ist.

Trotzdem würde ich mich freuen wenn einer von den vorrednern einen konkreten Weg hat wie man das Problem mit dem Core reproduzieren kann.
Verwendet ihr Erweiterungen? Oder bezieht sich das nur auf Core module?
im Core Selber konnte ich das seit dem letzten Fix nicht mehr reproduzieren.

@Kreativsoehne
Copy link
Author

Hallo @xchs natürlich liegt das Problem, wie bereits geschildert an dem Unterordner "cms".
Sobald wir die Umschreibung bzw. den document_root verändern tritt das Problem nicht mehr auf. Das haben wir aber bereits beschrieben, dass wir es dahingehend bereits eingrenzen konnten.
Und genau diese Funktionalität benötigen wir auch! (Sollte ja auch eigentlich kein Problem sein!?)
BTW: wir drehen uns im Kreis ;)

@Kreativsoehne
Copy link
Author

Wir haben das Problem "gelöst".

Contao merkt sich im Destruktor der Klasse BackendUser ab Zeile 85 den Referer. Das tut es aber nur, wenn die Bedigung in diesem Code-Teil zutrifft:

$key = null;

if (\Environment::get('script') == 'contao/main.php')
{
    $key = \Input::get('popup') ? 'popupReferer' : 'referer';
}

In unserem Fall liefert \Environment::get('script') aber cms/contao/main.php, da es ja in dem Unterordner cms liegt.

Ehrlich gesagt ist uns nicht ganz klar, warum Contao an dieser Stelle diese Überprüfung vornimmt. Auf jeden Fall lässt sich die Sache recht einfach damit fixen, indem man die Sache etwas einkürzt:

/*
$key = null;

if (\Environment::get('script') == 'contao/main.php')
{
    $key = \Input::get('popup') ? 'popupReferer' : 'referer';
}
*/

$key = \Input::get('popup') ? 'popupReferer' : 'referer';

@leofeyer
Das ist erstmal ein echt fieser Hack. Gibt es einen speziellen Grund, warum an dieser Stelle so scharf auf genau dieses Script geprüft wird? Ist es beabsichtigt, dass es damit Fälle gibt, in denen kein Referer gespeichert werden soll?

@aschempp
Copy link
Member

Ich glaube der Fehler liegt eher dabei, dass Environment::get('script') den Ordner mitliefert? Ich dachte dass wir immer alles relativ zu TL_ROOT geben?

@leofeyer
Copy link
Member

Das wird es eigentlich auch. Vermutlich stimmt der websitePath nicht.

@Kreativsoehne
Copy link
Author

Der websitePath sollte bei uns stimmen, es funktionierte ja nur an einigen Stellen im Backend nicht.
Darum nochmal die Frage:
@leofeyer
Gibt es einen speziellen Grund, warum an dieser Stelle so scharf auf genau dieses Script geprüft wird? Ist es beabsichtigt, dass es damit Fälle gibt, in denen kein Referer gespeichert werden soll?

Falls kein Interesse an einer Fehlerlösung besteht, können wir da Ticket auch gerne schließen.

@codepiX-dev
Copy link

@Kreativsoehne

Durch Deine Änderung erreichst Du aber doch nur, dass er immer wieder auf die Startseite verweisen soll. Das ist auch nicht Sinn, bzw. sicherlich auch nicht so gewollt.

Ich habe das selbe Problem, komme aber einfach nicht dahinter was bei der Speicherung der Session schief laufen könnte, denn es tritt willkürlich auf und lässt sich einfach nicht so einfach nachstellen.

Ich habe mir in der Klasse BackendUser mal die $session[$key][TL_REFERER_ID]['current'] ausgeben lassen. Da sieht man z.B. das er ab und zu zwar die Session richtig schreibt, die Referenzierung aber nach Speichern und Zurück trotzdem auf eine zuvor gespeicherter Current Session verweist. Warum auch immer ...

Es ist dennoch ziemlich nervig, denn wenn ich in einer Erweiterung arbeite, dann möchte ich nach Speicherung auch wieder auf die entsprechende Übersicht und nicht auf eine völlig andere oder die Startseite. Ich konnte das Problem bisher auch nur bei eigenen bzw. fremden Contao Erweiterungen nachstellen, aber niemals bei Erweiterungen die direkt aus dem System kommen. Vielleicht ist das ein Ansatz bei dem man suchen sollte ... ich wäre auch dankbar für eine Problemlösung.

Ich arbeite derzeit in der Dropbox mit einer xampp Umgebung und einem 3.1.5 Basissystem.

Mein Pfad ist http://localhost/dropbox/serentwicklung/webfiles/contao/main.php

In der pathconfig.php habe ich return '/dropbox/serentwicklung/webfiles'; stehen.

VG

@leofeyer
Copy link
Member

leofeyer commented Dec 5, 2013

Lässt sich dieses Problem nun irgendwie mit einer neuen Contao-Installation und der Music Academy reproduzieren oder kann ich das Ticket schließen?

@Mike008
Copy link

Mike008 commented Dec 5, 2013

Das Problem tritt bei mir nur noch selten auf, daher habe ich es bei den letzten Systemen vernachlässigt.

@codepiX-dev
Copy link

Ich bekomme das Problem ständig bei fremden Erweiterungen, die also nicht im Core verankert sind, reproduziert. Ich würde daher mal eine Installation aufsetzten und irgendeine Erweiterung testen. Ich weiß, Du hast damit evtl. nicht viel zu tun, weil es eben nicht aus dem Core kommt, aber aus irgendeinem Grund kann er die Session da nicht richtig schreiben.

@leofeyer
Copy link
Member

leofeyer commented Dec 6, 2013

Welche Erweiterung?

@tristanlins
Copy link
Contributor

Ich habe das Problem in der Seitenstruktur, Artikel und CE-Verwaltung teilweise auch, sogar auf einer Core-Only Installation ohne Erweiterungen, bin extrem genervt davon, hab auch schon versucht es zu debuggen, komme aber nicht so ganz dahinter. Der Witz ist, sobald ich mich mit xdebug einklinke, tritt der Fehler scheinbar nicht mehr auf :-(

Ich werde das weiter beobachten, vielleicht finde ich es ja doch noch irgendwo ...

@Mike008
Copy link

Mike008 commented Dec 6, 2013

Seltsamerweise tritt das Problem nicht in der 2er Version (die ich für Kundenprojekte nutze) auf, nur in der 3er. Vlt. ist der Fehler dann besser zufinden.

@Mike008
Copy link

Mike008 commented Jan 11, 2014

Mir ist nun in der 3.2.3 er aufgefallen, das es oftmals so ist:
Sobald ich den ZURÜCK Button betätige passiert nichts. Dann beim direkt folgenden Klick, ich auf der Startseite des BackEnds lande.

@HStrandel
Copy link

Ich konnte den Fehler 1x reproduzieren mit Contao 3.2.3 (http://demo.contao.org/contao/), danach ist er nicht mehr aufgetreten. Browser: Firefox 26.0 / Mac OSX 10.8.5

  1. Klick News
  2. Klick Schreiber bei "Elements of Jazz Piano"
  3. Klick + (duplizieren)
  4. Klick "Clear clipboard"
    -> dies einige Male wiederholen (manchmal nur 3x, manchmal 8x oder mehr)
    -> CMS geht zur Seite http://demo.contao.org/contao/main.php?do=article&ref=6ffa41ab

@leofeyer
Copy link
Member

Ich konnte dank @andre5tz's Anleitung einen reproduzierbaren Fehler finden, den ich in 9f1cc8b behoben habe. Das Problem war, dass die Funktion addToUrl() immer die neue Referer-ID für die HTML-Ausgabe setzt, aber beim Klick auf den "Speichern und Bearbeiten"-Button nur eine Weiterleitung und keine Ausgabe erfolgt. Es musste daher in diesem Fall die bestehende Referer-ID beibehalten werden.

@Mike008
Copy link

Mike008 commented Apr 7, 2014

Der Fehler ist bei mir leider wieder aufgetaucht (V. 3.2.8). Aber nicht mehr in der Häufigkeit. Versuche es reproduzieren und dann zu protokollieren.

@fritzmg
Copy link
Contributor

fritzmg commented Aug 6, 2017

This error still occurs in Contao 4 as well. I have a reproduction now, but only with the changelanguage extension. I don't think it has anything to do with the extension though.

Reproduction

  • Contao 4.4.2
  • Changelanguage 3.1.6
  1. Create a page tree for one language.
  2. Create a new website root for another language.
  3. Create a new page in the new language.
  4. Set the title of the page.
  5. Save the page.
  6. Set the Main language page.
  7. Then Save & close.

You will land on the start page of the back end.

leofeyer added a commit to contao/core-bundle that referenced this issue Aug 9, 2017
@leofeyer
Copy link
Member

leofeyer commented Aug 9, 2017

I have made some changes in contao/core-bundle@c7aafb3 which I believe fix the issue. Can you please test it? I will back port the changes then.

@fritzmg
Copy link
Contributor

fritzmg commented Aug 9, 2017

That fix does not work apparently. With the reproduction above, I see the following:

error

The same happens, if I do the reproduction above, put instead of klicking Save & Close at step 7, I click the Back button at the top right.

@fritzmg
Copy link
Contributor

fritzmg commented Aug 13, 2017

I have another reproduction (if that helps):

Pre-requisites:

  • Having a site structure with multiple pages and levels.
  1. Go to Site structure.
  2. Click on a regular page, to filter the tree view.
  3. Now edit any page within the filtered tree view.
  4. Click on Save & Close.

You will be redirected to the start page.

@fritzmg
Copy link
Contributor

fritzmg commented Aug 13, 2017

Same reproduction works within the article tree view.

@leofeyer
Copy link
Member

I cannot reproduce the last two cases. Both work fine on my system. Are you sure that you are using the hotfix/4.4.3 branch?

@fritzmg
Copy link
Contributor

fritzmg commented Aug 14, 2017

No, with the last one I meant in Contao 4.4.2.

I'll test the hotfix/4.4.3 branch again today with both (4.4.2) test cases.

@xchs
Copy link
Contributor

xchs commented Aug 14, 2017

I was able to reproduce this behaviour, too. Just tested in Contao 4.4.2.

@leofeyer
Copy link
Member

It has already been fixed in the hotfix/4.4.3 branch! Please test accordingly.

@fritzmg
Copy link
Contributor

fritzmg commented Aug 14, 2017

@leofeyer I tested again with a fresh Contao Installation, but there too this bug happens.

Installation procedure

Installing via

composer create-project contao/managed-edition

Adding

"contao/core-bundle": "dev-hotfix/4.4.3 as 4.4.3"",
"terminal42/contao-changelanguage": "^3.1"

to the "require" part of the composer.json.

Running

composer update --optimize-autoloader

Opening the Install Tool to update the database.

Running

vendor/bin/contao-console cache:clear --no-warmup
vendor/bin/contao-console cache:warmup

Reproduction test case

I used the same steps as listed #6127 (comment)

Result

The same as described in #6127 (comment) happens when clicking Save & Close or the Back button.

@fritzmg
Copy link
Contributor

fritzmg commented Aug 14, 2017

May be this is something that needs to be fixed in terminal42/contao-changelanguage though. The test case of #6127 (comment) is fixed in hotfix/4.4.3.

@leofeyer
Copy link
Member

leofeyer commented Aug 15, 2017

@fritzmg Please try again with the hotfix/4.4.3 branch and commit contao/core-bundle@f6588a7. It seems that contao/core-bundle@351578b was the actual cause of the broken referer management.

@fritzmg
Copy link
Contributor

fritzmg commented Aug 15, 2017

Yes this seems to work 👍

@xchs
Copy link
Contributor

xchs commented Aug 16, 2017

Works for me, too. Tested with hotfix/4.4.3@8d90da9.

NB: I am now always getting an additional ?ref=… URL parameter when logging out from the back end. Is that intentional?

@fritzmg
Copy link
Contributor

fritzmg commented Sep 8, 2017

Unfortunately this still occasionally happens. However, I have no clear reproduction yet. I'll report again once I have one.

@fritzmg
Copy link
Contributor

fritzmg commented Sep 11, 2017

The reproduction of #6127 (comment) still produces this error.

@robinfast
Copy link

Problem with back-button - Contao 4.4.8
I work with some News Archives. During the working with the first archive there is no problem with the back-buttom. But when I open the next archive and I want to go back to the overview of the second archive, it open the first archive.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests