Editor funktioniert wegen fehlendem Startartikel nicht

Fragen zur Installation von CONTENIDO 4.9? Probleme bei der Konfiguration? Hinweise oder Fragen zur Entwicklung des Systemes oder zur Sicherheit?
Antworten
malsdgtac
Beiträge: 717
Registriert: Fr 12. Mär 2004, 15:50
Kontaktdaten:

Editor funktioniert wegen fehlendem Startartikel nicht

Beitrag von malsdgtac » Di 16. Jul 2013, 11:36

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 :-(

timo.trautmann_4fb
Beiträge: 472
Registriert: Di 15. Apr 2008, 15:57
Wohnort: Michelstadt
Kontaktdaten:

Re: Editor funktioniert wegen fehlendem Startartikel nicht

Beitrag von timo.trautmann_4fb » Fr 19. Jul 2013, 12:47

- 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/

malsdgtac
Beiträge: 717
Registriert: Fr 12. Mär 2004, 15:50
Kontaktdaten:

Re: Editor funktioniert wegen fehlendem Startartikel nicht

Beitrag von malsdgtac » Fr 19. Jul 2013, 15:10

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"?

frederic.schneider_4fb
Beiträge: 967
Registriert: Do 15. Apr 2004, 17:12
Wohnort: Eschborn-Niederhöchstadt
Kontaktdaten:

Re: Editor funktioniert wegen fehlendem Startartikel nicht

Beitrag von frederic.schneider_4fb » Fr 9. Aug 2013, 09:34

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.
Frederic Schneider
Entwickler bei der four for business AG

malsdgtac
Beiträge: 717
Registriert: Fr 12. Mär 2004, 15:50
Kontaktdaten:

Re: Editor funktioniert wegen fehlendem Startartikel nicht

Beitrag von malsdgtac » Fr 9. Aug 2013, 20:22

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.

malsdgtac
Beiträge: 717
Registriert: Fr 12. Mär 2004, 15:50
Kontaktdaten:

Re: Editor funktioniert wegen fehlendem Startartikel nicht

Beitrag von malsdgtac » Mi 22. Jul 2015, 17:29

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.

frederic.schneider_4fb
Beiträge: 967
Registriert: Do 15. Apr 2004, 17:12
Wohnort: Eschborn-Niederhöchstadt
Kontaktdaten:

Re: Editor funktioniert wegen fehlendem Startartikel nicht

Beitrag von frederic.schneider_4fb » Do 23. Jul 2015, 09:55

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?
Frederic Schneider
Entwickler bei der four for business AG

malsdgtac
Beiträge: 717
Registriert: Fr 12. Mär 2004, 15:50
Kontaktdaten:

Re: Editor funktioniert wegen fehlendem Startartikel nicht

Beitrag von malsdgtac » Do 23. Jul 2015, 10:06

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

thomas.stauer_4fb
Beiträge: 27
Registriert: Di 23. Dez 2014, 14:08
Kontaktdaten:

Re: Editor funktioniert wegen fehlendem Startartikel nicht

Beitrag von thomas.stauer_4fb » Do 23. Jul 2015, 10:24

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

malsdgtac
Beiträge: 717
Registriert: Fr 12. Mär 2004, 15:50
Kontaktdaten:

Re: Editor funktioniert wegen fehlendem Startartikel nicht

Beitrag von malsdgtac » Do 23. Jul 2015, 10:27

Okay, ich werde das ausprobieren, danke.

malsdgtac
Beiträge: 717
Registriert: Fr 12. Mär 2004, 15:50
Kontaktdaten:

Re: Editor funktioniert wegen fehlendem Startartikel nicht

Beitrag von malsdgtac » Do 23. Jul 2015, 11:51

Hallo, hat super funktioniert - danke für den Hinweis.


Spl4sh3r
Beiträge: 20
Registriert: So 1. Dez 2013, 16:28
Kontaktdaten:

Re: Editor funktioniert wegen fehlendem Startartikel nicht

Beitrag von Spl4sh3r » Fr 31. Jul 2015, 19:34

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

malsdgtac
Beiträge: 717
Registriert: Fr 12. Mär 2004, 15:50
Kontaktdaten:

Re: Editor funktioniert wegen fehlendem Startartikel nicht

Beitrag von malsdgtac » Mo 3. Aug 2015, 09:15

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.

Antworten