Seite 1 von 1

Editor funktioniert wegen fehlendem Startartikel nicht

Verfasst: Di 16. Jul 2013, 11:36
von malsdgtac
Hallo,

Version: 4.9.0-rc1

wir hatten soeben das Problem, dass der Editor nicht funktionierte - daneben gab es auch die Fehlermeldung "Fatal error: Uncaught exception 'cBadMethodCallException' with message 'Can not load start article due to multiple loaded start articles.' in .../contenido/classes/class.article.collector.php:236 Stack trace: #0 .../contenido/includes/include.con_editcontent.php(138) : eval()'d code(2094): cArticleCollector->startArticle() #1 .../contenido/includes/include.con_editcontent.php(138): eval() #2 .../contenido/includes/frontend/include.front_content.php(448): include('/www/htdocs/w01...') #3 /.../contenido/external/backendedit/front_content.php(39): include('/www/htdocs/w01...') #4 {main} thrown in .../contenido/classes/class.article.collector.php on line 236"

Und siehe da, die zwei Dinge hängen auch wirklich zusammen. Wenn in einem Artikel in der darüber liegenden Kategorie kein Startartikel definiert ist - kommt die Fehlermeldung und funktioniert der Editor nicht mehr :-(

Re: Editor funktioniert wegen fehlendem Startartikel nicht

Verfasst: Fr 19. Jul 2013, 12:47
von timo.trautmann_4fb
- Wir haben eine Kategorie Test mit 1 Artikel
- Es gibt eine Unterkategorie Test 2 mit einem Artikel
. Keiner der Artikel ist Startartikel

- Bearbeitung geht fehlerfrei.

Hast du vielleicht weitere Informationen die uns zur Nachstellung des Bugs unterstützen?

Die aktuelle DEV Version gibt es hier: http://svn.dev.contenido.org/trunk/

Re: Editor funktioniert wegen fehlendem Startartikel nicht

Verfasst: Fr 19. Jul 2013, 15:10
von malsdgtac
hm, ich habe es soeben nochmals überprüft - ich kann leider sonst keinen Zusammenhang sehen - fehlt in der übergeordneten Kateogrie der Startartikel, kommt es zu der Fehlermeldung und dann geht der Editor nicht. Soll ich was konkretes überprüfen?

Kann ich die aktuelle DEV-Version ohne Sorgen "drüberinstallieren"?

Re: Editor funktioniert wegen fehlendem Startartikel nicht

Verfasst: Fr 9. Aug 2013, 09:34
von frederic.schneider_4fb
Für Testzwecke kein Problem, eine DEV-Version drüber zu installieren. Sofern Du CONTENIDO 4.9 DEV produktiv einsetzt, können wir freilich nicht garantieren, dass die Version einwandfrei funktioniert - auch wenn sicherlich Probleme allenfalls im Detail / bei bestimmten Situation auftreten KÖNNTEN. DEV-Versionen sind nicht durchgetestet und wir unterstützen offiziell auch nicht die Upgrades zwischen den Releases.

Re: Editor funktioniert wegen fehlendem Startartikel nicht

Verfasst: Fr 9. Aug 2013, 20:22
von malsdgtac
Hallo,

ich habe ja soeben eine weitere Installation gemacht - im Unterschied zur der mit dem vorhin beschriebenen Fehler (dort läuft PHP 5.3.26 als CGI) habe ich diesmal ein PHP 5.4.16. Und bei dieser Installation tritt der Fehler nicht auf.

Re: Editor funktioniert wegen fehlendem Startartikel nicht

Verfasst: Mi 22. Jul 2015, 17:29
von malsdgtac
Hallo,

ich bin schon weider über diesen Fehler gestolpert:

Code: Alles auswählen

[22-Jul-2015 18:14:57 Europe/Berlin] PHP Fatal error:  Uncaught exception 'cBadMethodCallException' with message 'Can not load start article due to multiple loaded start articles.' in /www/htdocs/.../contenido/classes/class.article.collector.php:253
Stack trace:
#0 /www/htdocs/.../contenido/includes/include.con_editcontent.php(212) : eval()'d code(424): cArticleCollector->startArticle()
#1 /www/htdocs/.../contenido/includes/include.con_editcontent.php(212): eval()
#2 /www/htdocs/.../contenido/includes/frontend/include.front_content.php(494): include('/www/htdocs/...')
#3 /www/htdocs/.../contenido/external/backendedit/front_content.php(41): include('/www/htdocs/...')
#4 {main}
  thrown in /www/htdocs/.../contenido/classes/class.article.collector.php on line 253
Ich glaube der Fehler tritt durch folgenden Code auf, wenn es in der entsprechenden Kategorie keinen Startartikel gibt:

Code: Alles auswählen

		$artCollection = new cArticleCollector(array('idcat' =>$idcat)); 
		$startarticle = $artCollection->startArticle();
Wäre schön, wenn statt dem patzen Fehler einfach NULL, 0 oder false zurück gegeben werden würde.

Re: Editor funktioniert wegen fehlendem Startartikel nicht

Verfasst: Do 23. Jul 2015, 09:55
von frederic.schneider_4fb
Ich habe die Darstellung eben auf unserem Testserver mit der 4.9.8-Entwicklerversion versucht nachzustellen:
Zwei Kategorien, eine Mutter- und eine Tochterkategorie. In beiden Kategorien befindet sich jeweils ein Artikel, keiner davon ist ein Startartikel. Ich kann beide Artikel problemlos bearbeiten.

Hast Du ggf. weitere Informationen für uns, damit wir das Problem reproduzieren können? Zum Beispiel Serverkonfiguration, eingesetzte Version, sonstige Besonderheiten?

Re: Editor funktioniert wegen fehlendem Startartikel nicht

Verfasst: Do 23. Jul 2015, 10:06
von malsdgtac
Hallo Frederic,
vielen Dank für deine Antwort. Ich konnte gestern schon das Problem etwas eingrenzen - und es hat nichts mit dem Editor selbst zu tun. Sondern mit dem Aufruf des cArticleCollector und dann dem Aufruf nach dem Startartikel wie hier:

Code: Alles auswählen

$artCollection = new cArticleCollector(array('idcat' =>$idcat));
$startarticle = $artCollection->startArticle();
was ich in einem meiner Module mache. Danach wird mit der Fehlermeldung von gestern abgebrochen - und der Editor erscheint gar nicht mehr. Das Problem ist also der Zugriff auf den Startartikel, den es eben nicht gibt. Leider wird hier einfach ein Fehler erzeugt und abgebrochen, statt dass z.B. NULL zurück gegeben wird.

Contenido-Version: 4.9.7
PHP-Version: 5.6.10

Re: Editor funktioniert wegen fehlendem Startartikel nicht

Verfasst: Do 23. Jul 2015, 10:24
von thomas.stauer_4fb
Wenn eine Exception geworfen wird, wenn kein Startartikel gefunden wird (weil kein Startartikel vorhanden ist), ist das meines Wissens nach ok. Man muss den aufrufenden Code mittels Exception-Handling absichern.

Zum Beispiel

Code: Alles auswählen

try {
$artCollection = new cArticleCollector(array('idcat' =>$idcat));
$startarticle = $artCollection->startArticle();
} catch (Exception $e) {
// etwas ist schiefgelaufen.
}
Hier ein paar Informationen zur Ausnahmebehandlung: http://php.net/manual/de/language.exceptions.php

Re: Editor funktioniert wegen fehlendem Startartikel nicht

Verfasst: Do 23. Jul 2015, 10:27
von malsdgtac
Okay, ich werde das ausprobieren, danke.

Re: Editor funktioniert wegen fehlendem Startartikel nicht

Verfasst: Do 23. Jul 2015, 11:51
von malsdgtac
Hallo, hat super funktioniert - danke für den Hinweis.

Re: Editor funktioniert wegen fehlendem Startartikel nicht

Verfasst: Do 23. Jul 2015, 11:55
von thomas.stauer_4fb
Gern geschehen. :wink:

Re: Editor funktioniert wegen fehlendem Startartikel nicht

Verfasst: Fr 31. Jul 2015, 19:34
von Spl4sh3r
Hey smac,
thomas.stauer_4fb hat geschrieben: Zum Beispiel

Code: Alles auswählen

try {
$artCollection = new cArticleCollector(array('idcat' =>$idcat));
$startarticle = $artCollection->startArticle();
} catch (Exception $e) {
// etwas ist schiefgelaufen.
}
Lösung ist sicherlich praktikabel, Exception ist immer anzudenken, jedoch solltes du nochmal hinterfragen was du genau bezwecken möchtest! :?:
Der Setter für die collector option Startarticle

Code: Alles auswählen

$options['start'] = false;
ist standardmäßig auf FALSE gesetzt, sprich der ArticleCollector wird dir zu genau keinem Zeitpunkt jemals einen Startartikel liefern.
Der Fehler tritt also immer auf! :!: Dafür ist ein Catch-Exception einfach unsinnig.

Du müsstest den Code zumindest um folgendes Erweitern

Code: Alles auswählen

$artCollection = new cArticleCollector(array('idcat' =>$idcat, 'start' => true));
Für den Fall das du nur den Startartikel haben möchtest hilft dir sicher

Code: Alles auswählen

$artCollection = new cArticleCollector(array('idcat' =>$idcat, 'startonly' => true));
Hier kannst du dann z.B. die Länge prüfen und dir deine eigene Alternative basteln, was wahrscheinlich übersichtlicher ist. :wink:

Beste Grüße,
Benjaimn

Re: Editor funktioniert wegen fehlendem Startartikel nicht

Verfasst: Mo 3. Aug 2015, 09:15
von malsdgtac
Hallo Benjamin,

danke für den Hinweis. In dem konkreten Fall reicht mir die Überprüfung, aber für andere Anwendungen ist dein Vorschlag sicherlich besser - vielen Dank dafür.