mod_pages - Fehlverhalten bei globalem css

Diskussion zu nicht so umfangreichen Modulen und Start-Up für neue Module. Ansonsten bitte die speziellen Kategorien benutzen!
BFNF
ConPresso-Newbie
Beiträge: 4
Registriert: 15.07.2015 15:47

mod_pages - Fehlverhalten bei globalem css

Beitrag von BFNF »

Hallo zusammen,
ich verwende folgende Versionen
Conpresso 4.1.6
Modul Pages 4.1
Apache/2.2.22
PHP 5.4
MySQL 5.1.73
Hoster 1und1
Alles funktioniert gut bis auf folgende Einschränkung:
Die Speicherung des globalen CSS im Modul Pages verhält sich falsch. Wenn ich im Formularfeld „Seiten-CSS:“ ein etwas größeres CSS anlege und auf Template speichern klicke, verschwindet der Eintrag aus dem Formularfeld. Aber das CSS wird in der Datenbank eingetragen und im Frontend angewandt.
Problematisch wird dies, wenn ich an Seiten-Kopf oder –Fuß oder Rubrik-Templates Änderungen mache und auf Speichern klicke, da dann das leere Formularfeld in die Datenbank geschrieben und somit das CSS gelöscht wird.
Wenn ich dasselbe CSS in Rubrik-CSS anwende funktioniert das mit dem Modul einwandfrei. Es liegt also nicht am CSS.
Wenn ich bei ausgefülltem Formularfeld die Voreinstellung mit dem CSS speichere und später lade, wird das CSS wieder in die Datenbank geschrieben. Für mich sieht es so aus, als ob das Füllen des Formularfelds mit dem CSS aus der Datenbank fehlschlägt. Aber warum nur beim globalen CSS? Bei allen anderen Felder gibt es kein Problem.
Ich habe schon versucht, das Problem zu lösen, aber komme allein nicht weiter.
Bitte gebt mir einen Tipp wie ich die Funktion des Moduls vollständig herstellen kann.
Benutzeravatar
MarkusR
Handbuchversteher
Beiträge: 7164
Registriert: 01.01.1970 02:00
Hat sich bedankt: 104 Mal
Danksagung erhalten: 919 Mal

Beitrag von MarkusR »

Ich habe mir in der offiziellen(!) 4.1 sowohl das Abspeichern als auch das Aufrufen der Daten in und aus der Datenbank angesehen.
Die Felder sind gleich definiert.
Der Abruf erfolgt auf die gleiche Weise und auch die Anzeige erfolgt in identischen Feldern.

Das einzige was mir dazu einfällt wäre, dass es eine Rubrik mit der ID=0 gibt, wobei die Zählung eigentlich ab 1 aufwärts als Autowert erfolgt, also niemals 0 sein kann.

Diese Rubrik müsste dann aber auch angezeigt werden.

Ansonsten müsste man mit Kontrollausgaben den Punkt ermitteln, an dem das CSS verloren geht.

Ist das ganz sicher eine offizielle 4.1 und keine vermischte Version?

Was steht in den Zeilen 90-120 von edit.php?
Ciao Markus
ConPresso-Module

Kein Support per PN!!! Für Fragen und Diskussionen ist das Forum da!

Succi recentis officinalis
Hochwertige Kräutersäfte und -Öle
BFNF
ConPresso-Newbie
Beiträge: 4
Registriert: 15.07.2015 15:47

Beitrag von BFNF »

Danke für die schnelle Antwort.
Da ich die Dateien von der offiziellen Seite herunter geladen habe, gehe ich davon aus, dass es die offizielle Version 4.1 ist. Vermischen könnte natürlich passiert sein, also prüfe ich das mal - moment ...

Also in edit.php steht oben Version 4.1 March 2013
Die gewünschten Zeilen enthalten - siehe ganz unten. (besser leesbar)

Kontrollausgaben:
Der Fehler scheint vom Inhalt abhängig zu sein.
Ich kan 20 mal den folgenden Block wiederholt hintereinander (also viele Zeilen) in das Formularfeld schreiben und es wird im Formularfeld auch nach dem Speichern angezeigt.
/* start of global css handled by mod_pages */
h1 { font-family:Optima,Georgia,TimesNewRoman,Times,serif; font-size:1.5em; color: #7C1417; font-weight: bold; font-style:italic;}
h2 { font-family:Optima,Georgia,TimesNewRoman,Times,serif; font-size:1.1em; color: #7C1417; font-weight: bold; font-style:italic;}
h3 { font-family:Optima,Georgia,TimesNewRoman,Times,serif; font-size:1em; color: #7C1417; font-weight: bold; font-style:italic;}

.drSpElKopf #h7 {font-family: Verdana, Arial, Helvetica, sans-serif; font-size:0.8em; color: #999999; font-weight: bold; }

Aber wenn ich nur den folgenden Block abspeichere, ist ein leeres Formularfeld nach dem Speichern die Folge. Aber nur bei CSS!

body {
font: 100% Verdana, Arial, Helvetica, sans-serif;
background: FloralWhite url(/_data/seg_matte_1600_25.png) fixed no-repeat center top;
margin: 0; /* Es empfiehlt sich, margin (Rand) und padding (Auffüllung) des Body-Elements auf 0 einzustellen, um unterschiedlichen Browser-Standardeinstellungen Rechnung zu tragen. */
padding: 0;
text-align: center; /* Hierdurch wird der Container in IE 5*-Browsern zentriert. Dem Text wird dann im #container-Selektor die Standardausrichtung left (links) zugewiesen. */
color: #000000;
}


So, hier kommen die Zeilen aus edit.php:

$rubric_header = array();

$query = "SELECT header, footer, css FROM ".$dbPrefix."_mod_pages WHERE id=0"; // the globals
DEBUG(1, $query, __FILE__, __LINE__);
$db = new DB;
$db->query($query);
$db->next_record();

$global_header = htmlentities($db->v('header'), ENT_COMPAT, 'ISO-8859-15');
$global_footer = htmlentities($db->v('footer'), ENT_COMPAT, 'ISO-8859-15');
$global_css = htmlentities($db->v('css', ENT_COMPAT, 'ISO-8859-15'));

$query = "SELECT * FROM ".$dbPrefix."_mod_pages"; // the globals
DEBUG(1, $query, __FILE__, __LINE__);
$db = new DB;
$db->query($query);
while ($db->next_record()):
$local_id[] = htmlentities($db->v('id'), ENT_COMPAT, 'ISO-8859-15');
$local_header[] = htmlentities($db->v('header'), ENT_COMPAT, 'ISO-8859-15');
$local_footer[] = htmlentities($db->v('footer'), ENT_COMPAT, 'ISO-8859-15');
$local_css[] = htmlentities($db->v('css'), ENT_COMPAT, 'ISO-8859-15');
$local_default[] = htmlentities($db->v('def_rubric'), ENT_COMPAT, 'ISO-8859-15');
$local_using[] = htmlentities($db->v('use_rubric'), ENT_COMPAT, 'ISO-8859-15');
endwhile;


$query = "SELECT id, name FROM ".$dbPrefix."_rubric"; // the globals
DEBUG(1, $query, __FILE__, __LINE__);
$db = new DB;
$db->query($query);
Benutzeravatar
MarkusR
Handbuchversteher
Beiträge: 7164
Registriert: 01.01.1970 02:00
Hat sich bedankt: 104 Mal
Danksagung erhalten: 919 Mal

Beitrag von MarkusR »

Das "ü" im CSS-Code ist vermutlich der Verursacher, aber eigentlich sollte es durch htmlentities in sein Pendant ü umgewandelt werden und dann ohne Probleme im Code-Feld angezeigt werden.

Die Frage bleibt aber, warum diese Zeile nicht funktioniert

Code: Alles auswählen

$global_css = htmlentities($db->v('css', ENT_COMPAT, 'ISO-8859-15'));
diese Zeile es aber tut

Code: Alles auswählen

$local_css[] = htmlentities($db->v('css'), ENT_COMPAT, 'ISO-8859-15'); 
Mist, ich habe kein System mit PHP 5.4 auf dem ich das testen könnte...
Ciao Markus
ConPresso-Module

Kein Support per PN!!! Für Fragen und Diskussionen ist das Forum da!

Succi recentis officinalis
Hochwertige Kräutersäfte und -Öle
BFNF
ConPresso-Newbie
Beiträge: 4
Registriert: 15.07.2015 15:47

Beitrag von BFNF »

Jaaa! Die Sonderzeichen *sind* das Problem :D
Wenn ich alle Sonderzeichen im globalen CSS austausche ä durch ae bis ß durch ss funktioniert das Modul wie erwartet.

Die Klärung warum die Zeile
$global_css = htmlentities($db->v('css', ENT_COMPAT, 'ISO-8859-15'));
nicht funktioniert und wie der Fix aussieht erwarte ich mit Spannung.
Benutzeravatar
MarkusR
Handbuchversteher
Beiträge: 7164
Registriert: 01.01.1970 02:00
Hat sich bedankt: 104 Mal
Danksagung erhalten: 919 Mal

Beitrag von MarkusR »

Peinlich, peinlich...

die Zeile muss lauten

Code: Alles auswählen

$global_css = htmlentities($db->v('css'), ENT_COMPAT, 'ISO-8859-15');
also
$db->v('css',
wird zu
$db->v('css'),

und
));
wird zu
);
also eine Klammer weniger!
Ciao Markus
ConPresso-Module

Kein Support per PN!!! Für Fragen und Diskussionen ist das Forum da!

Succi recentis officinalis
Hochwertige Kräutersäfte und -Öle
BFNF
ConPresso-Newbie
Beiträge: 4
Registriert: 15.07.2015 15:47

Beitrag von BFNF »

Ja, das war es. Jetzt funktioniert es prima!
Braucht Ihnen/Dir nicht peinlich sein. Ich habe vorhin den Unterschied in der Struktur dieser Zeile zu den vorangehenden Zeilen bemerkt und die Zeile auch so wie jetzt korrigiert. Bekam aber eine Fehlermeldung und dachte daher, auf dem Holzweg zu sein. Jetzt war ich verdutzt und habe festgestellt, dass ich das ; am Zeilenende vergaß - *das* ist auch peinlich :D

Danke für die schnelle Hilfe !!!

Bis zum nächsten Mal
Grüße
MP