cTypeGenerator für CMS_IMGEDITOR?

Fragen zur Installation von CONTENIDO 4.9? Probleme bei der Konfiguration? Hinweise oder Fragen zur Entwicklung des Systemes oder zur Sicherheit?
Antworten
CinKon
Beiträge: 129
Registriert: Do 9. Okt 2008, 09:13
Wohnort: Leipzig
Kontaktdaten:

cTypeGenerator für CMS_IMGEDITOR?

Beitrag von CinKon » Do 26. Sep 2013, 15:52

Hallöchen,

ich bin gerade dabei ein Modul zu bauen, bei dem ich mit einer for-Schleife Eingabemöglichkeiten generieren will:

Code: Alles auswählen

<?php

    if( $edit ) {
    
	$ocType = new cTypeGenerator();
        
        $nr = 1;
        for($x = $mod_cfg['anz_begin']; $x < ($mod_cfg['anz_begin']+$mod_cfg['anz_partner']); $x++) {
        
            $outputList[]   = array(
                'num'           	=> $nr,
                'text'          	=> stripslashes($ocType->getGeneratedCmsTag("CMS_HTML", $x)),
                'image'		=> stripslashes($ocType->getGeneratedCmsTag("CMS_IMG", $x)),
                'image_edit'  	=> stripslashes($ocType->getGeneratedCmsTag('CMS_IMGEDITOR', $x)),
                'link'          	=> stripslashes($ocType->getGeneratedCmsTag('CMS_LINKEDITOR', $x)),
            );
        
            $nr++;
        }
    } 
?>
Funktioniert soweit auch ganz gut, nur beim Speichern des Bildes erhalte ich eine Fehlermeldung:
Warning: Cannot modify header information - headers already sent by (output started at [###]contenido/includes/include.con_editcontent.php(135) : eval()'d code:10) in [###]contenido/classes/content_types/class.content.type.imgeditor.php on line 151
Speichern tut Contenido trotzdem, aber die Fehlermeldung stört natürlich ;)
Gibt es vielleicht eine andere Klasse oder Möglichkeit, um das umzusetzen?

Schöne Grüße

Lars
"Marty, du musst VIERDIMENSIONAL denken!" - Doc Brown

xmurrix
Beiträge: 3143
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Kontaktdaten:

Re: cTypeGenerator für CMS_IMGEDITOR?

Beitrag von xmurrix » Mi 2. Okt 2013, 09:37

Hallo CinKon,

die Klasse cContentTypeImgeditor macht einen header-Redirect und das lässt sich nicht abschalten...

Du kannst aber mit der Ausgabepufferung arbeiten, also

Code: Alles auswählen

<?php

ob_start();

// ... dein code ...

ob_flush();

?>
Das sollte auch die Ausgabe der header in der Schleife unterbinden und am Ende kann man dann die Ausgabe leeren.

Gruß
xmurrix
CONTENIDO Downloads: CONTENIDO 4.10.1
CONTENIDO Links: Dokumentationsportal, FAQ, API-Dokumentation
CONTENIDO @ Github: CONTENIDO 4.10 - Mit einem Entwicklungszweig (develop-branch), das viele Verbesserungen/Optimierungen erhalten hat und auf Stabilität und Kompatibilität mit PHP 8.0 bis 8.2 getrimmt wurde.

Spider IT
Beiträge: 1416
Registriert: Fr 3. Dez 2004, 10:15

Re: cTypeGenerator für CMS_IMGEDITOR?

Beitrag von Spider IT » Mi 2. Okt 2013, 11:39

Hallo Murat,

laut de.php.net zur Funktion ob_start() werden die Header nicht "unterdrückt":
de.php.net hat geschrieben:Diese Funktion aktiviert die Ausgabepufferung. Während die Ausgabepufferung aktiv ist werden Scriptausgaben (mit Ausnahme von Headerinformationen) nicht direkt an den Client weitergegeben sondern in einem internen Puffer gesammelt.
Gruß
René

xmurrix
Beiträge: 3143
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Kontaktdaten:

Re: cTypeGenerator für CMS_IMGEDITOR?

Beitrag von xmurrix » Mi 2. Okt 2013, 11:59

Hmm, dann kann man vielleicht in der Schleife den versendeten Header wieder entfernen.

Code: Alles auswählen

header_remove('location');
Aber nicht den Letzten, den braucht man um wider in den Edit-Modus weiterzuleiten.

Oder man setzt immer in der Schleife den Header zurück um nach der Schleife seine eigene Weiterleitung auszuführen.

Code: Alles auswählen

$idart = cRegistry::getArticleId();
$idcat = cRegistry::getCategoryId();
$cfg = cRegistry::getConfig();
$client = cRegistry::getClientId();
$session = cRegistry::getSession();

$path = $cfg['path']['contenido_fullhtml'] . "external/backendedit/front_content.php?area=con_editcontent&idart={$idart}&idcat={$idcat}&changeview=edit&client={$client}";
header('location:' . $session->url($path));
Es wäre nicht schlecht, wenn die Weiterleitung in den cContentType-Klassen konfigurierbar oder manuell aufrufbar wäre...

Gruß
xmurrix
CONTENIDO Downloads: CONTENIDO 4.10.1
CONTENIDO Links: Dokumentationsportal, FAQ, API-Dokumentation
CONTENIDO @ Github: CONTENIDO 4.10 - Mit einem Entwicklungszweig (develop-branch), das viele Verbesserungen/Optimierungen erhalten hat und auf Stabilität und Kompatibilität mit PHP 8.0 bis 8.2 getrimmt wurde.

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

Re: cTypeGenerator für CMS_IMGEDITOR?

Beitrag von frederic.schneider_4fb » Fr 11. Okt 2013, 11:33

Mein Kollege Dominik Ziegler und ich haben uns eben länger mit diesem Problem beschäftigt. Wir haben auch erste Ansätze, die jedoch etwas aufwändiger sind. Folglich: Wir werden das Thema intern noch einmal diskutieren und Euch informieren, wenn wir eine Lösung umgesetzt haben. Allerdings bitte ich dafür um etwas Geduld, es kann etwas dauern.
Frederic Schneider
Entwickler bei der four for business AG

Bernbacher
Beiträge: 63
Registriert: Fr 21. Jan 2011, 13:29
Kontaktdaten:

Re: cTypeGenerator für CMS_IMGEDITOR?

Beitrag von Bernbacher » Mi 22. Jan 2014, 17:47

Hm, gibts da schon eine Lösung mittlerweile?
Ich will auch in einer Schleife Eingabemöglichkeiten für Images erzeugen. Funktioniert, aber eben mit dem Fehler:

Code: Alles auswählen

Warning: Cannot modify header information - headers already sent by (output started at /kunden/207810_80333/rp-hosting/1008/1008/html-data/contenido/includes/include.con_editcontent.php(137) : eval()'d code:6) in /kunden/207810_80333/rp-hosting/1008/1008/html-data/contenido/includes/include.con_editcontent.php(137) : eval()'d code on line 893
Aber weder mit

Code: Alles auswählen

ob_start();
// ... dein code ...
ob_flush();
noch mit

Code: Alles auswählen

$path = $cfg['path']['contenido_fullhtml'] . "external/backendedit/front_content.php?area=con_editcontent&idart={$idart}&idcat={$idcat}&changeview=edit&client={$client}";
header('location:' . $session->url($path));
kann ich die Fehlermeldung unterdrücken.
Mir ist auch nicht ganz klar an welcher Stelle die zweite Möglichkeit eingebaut werden muss...

xmurrix
Beiträge: 3143
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Kontaktdaten:

Re: cTypeGenerator für CMS_IMGEDITOR?

Beitrag von xmurrix » Do 23. Jan 2014, 21:48

Hallo Bernbacher,

hier ein Beispiel, was funktioniert:

Code: Alles auswählen

for ($i = 0; $i < 10; $i++) {
    ob_start();
    header('X-My-Header: ' . $i);
    header('Location: http://www.contenido.org');
    header_remove();
    ob_flush();
}

header('X-My-Header: le fin');

echo 'foo';
Du musst dafür sorgen, dass in der Schleife jeweils ob_start(), header_remove() und ob_flush() an richtigen Stellen positioniert werden.

Schau dir auch mal die Klasse cTypeGenerator an, eventuell geht das auch damit. Das Modul mpDynamicContent generiert auch dynamisch Content-Typen und da ist so ein Problem mit Redirects nicht bekannt...

Gruß
xmurrix
CONTENIDO Downloads: CONTENIDO 4.10.1
CONTENIDO Links: Dokumentationsportal, FAQ, API-Dokumentation
CONTENIDO @ Github: CONTENIDO 4.10 - Mit einem Entwicklungszweig (develop-branch), das viele Verbesserungen/Optimierungen erhalten hat und auf Stabilität und Kompatibilität mit PHP 8.0 bis 8.2 getrimmt wurde.

Oldperl
Beiträge: 4251
Registriert: Do 30. Jun 2005, 22:56
Wohnort: Eltmann, Unterfranken, Bayern
Kontaktdaten:

Re: cTypeGenerator für CMS_IMGEDITOR?

Beitrag von Oldperl » Do 24. Apr 2014, 09:41

Hi,

also ich häng hier gerade am selben Problem. Stellt sich mir die Frage warum der CMS_IMGEDITOR einen Header-Location nutzt und der CMS_LINKEDITOR nicht.

Gruß aus Franken

Ortwin
ConLite 2.1, alternatives und stabiles Update von Contenido 4.8.x unter PHP 7.x - Download und Repo auf Gitport.de
phpBO Search Advanced - das Suchwort-Plugin für CONTENIDO 4.9
Mein Entwickler-Blog

Leo
Beiträge: 308
Registriert: Mi 19. Apr 2006, 19:26
Kontaktdaten:

Re: cTypeGenerator für CMS_IMGEDITOR?

Beitrag von Leo » So 1. Feb 2015, 17:26

Hallo Contenido-Gemeinde,

gibt es für diesen Fehler mittlerweile eine Lösung?

VG Leonhard

Antworten