Leerzeichen in Artikelseite

Dieses Forum enthält Diskussionen zu Bugs in ConPresso 4 und deren Lösungen.
Benutzeravatar
baluo
ConPresso-Experte
Beiträge: 607
Registriert: 14.11.2005 13:17
Hat sich bedankt: 216 Mal
Danksagung erhalten: 11 Mal

Leerzeichen in Artikelseite

Beitrag von baluo »

Hallo allerseits,

mit grösseren Abständen sitze ich noch immer an der Website vom September und wundere mich geradezu über ein "nerviges Leerzeichen":

Wenn ich ein HTML-Fenster für einen "Einführungstext" (Rubrikseite) speichere, dann scheint Conpresso 4.1.2 im HTML-Feld für den "Artikeltext" (Artikelseite) ein Leerzeichen einzufügen, obwohl ich dieses selbst nicht geöffnet habe. Das führt dazu, dass beim "Einführungstext" auf der Rubrikseite ein "Weiter"-Link erscheint, der dort eigentlich nicht sein soll.

Wenn ich das HTML-Fenster für den "Artikeltext" öffne, ist im Bearbeitungsmodus für eine Sekunde auch ein Leerzeichen zu sehen, dass dann aber verschwindet. Trotzdem muss ich vor dem Abspeichern ein "neues, leeres Dokument erstellen". Ich kann das Ganze nur vermeiden, wenn ich vor dem Abspeichern der Artikel-Bearbeitung beim leeren HTML-Feld für den Artikeltext den Inhalt "löschen" betätige.

Es gibt auch noch ein paar andere Merkwürdigkeiten, die ich in einemgesonderten Beitrag beschreibe.

Hat jemand von euch eine Idee?

Gruss, Gerhard

Edit (28.10.2010):
So, wie es momentan aussieht, scheint es ein Problem im Firefox zu sein, nicht aber im IE.
Benutzeravatar
balu
ConPresso-Entwickler
Beiträge: 1748
Registriert: 01.01.1970 02:00
Hat sich bedankt: 81 Mal
Danksagung erhalten: 133 Mal

Beitrag von balu »

Hi,

passiert das nur, wenn Du das Feld einmal zum bearbeiten öffnest? Oder tritt das auch auf, wenn Du nur das Intro-Feld bearbeitest, das andere aber unangetastet lässt?

Balu
Bartels.Schöne
ConPresso Support & Development
Benutzeravatar
baluo
ConPresso-Experte
Beiträge: 607
Registriert: 14.11.2005 13:17
Hat sich bedankt: 216 Mal
Danksagung erhalten: 11 Mal

Beitrag von baluo »

balu hat geschrieben:Oder tritt das auch auf, wenn Du nur das Intro-Feld bearbeitest, das andere aber unangetastet lässt?
Genau so -- nur das Intro-Feld bearbeiten & speichern erzeugt offenbar ein Leerzeichen im Artikel-HTML-Feld ... im FF 3.5.7, nicht im IE.
Benutzeravatar
MarkusR
Handbuchversteher
Beiträge: 7199
Registriert: 01.01.1970 02:00
Hat sich bedankt: 104 Mal
Danksagung erhalten: 920 Mal

Beitrag von MarkusR »

Das kann ich nun bestätigen.

Es passiert, wenn bei Verwendung von Firefox in den Systemeeinstellungen eine CSS-Datei angegeben ist.
Obwohl der Quelltext des iframe definitiv leer ist, wird er von Firefox mit was auch immer gefüllt, was dann als Artikelinhalt gewertet wird.

Mit IE oder nach Entfernung der CSS-Datei aus den Systemeinstellungen ist wieder alles in Ordnung (soweit dieser Zustand als "in Ordnung" bezeichnet werden kann).
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
Benutzeravatar
MarkusR
Handbuchversteher
Beiträge: 7199
Registriert: 01.01.1970 02:00
Hat sich bedankt: 104 Mal
Danksagung erhalten: 920 Mal

Beitrag von MarkusR »

Hier ein Lösungsvorschlag, der bei ersten Versuchen ganz gut funktioniert:

in _include/insertdb_fields.inc.php

Code: Alles auswählen

if ($value['html']!='') {
ersetzen durch

Code: Alles auswählen

if (trim($value['html'])!='') {
Das würde den Textfeldern übrigens auch gut tun. Kaum ein Redakteur sieht die Leerzeichen oder Leerzeilen, die er dort einträgt...
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
Benutzeravatar
Mr. Magpie
ConPresso-Profi
Beiträge: 1004
Registriert: 01.01.1970 02:00
Wohnort: Wuppertal
Hat sich bedankt: 274 Mal
Danksagung erhalten: 59 Mal

In HTML-Feldern bleibt br- bzw. P-Tag stehen

Beitrag von Mr. Magpie »

Ich bin gerade über diesen Thread gestolpert und habe mit CPO 4.0.x schon (gefühlt) immer ein ganz ähnliches Problem.

Wenn man im ConPresso-Editor mit dem Firefox
a) irgendeine Eingabe macht und diese wieder löscht, oder
b) auch nur auf die HTML-Ansicht und wieder zurückschaltet ohne irgendetwas einzugeben, oder
c) ohne etwas einzugeben einfach nur die Backspace-Taste betätigt,
wird ein br-Tag erzeugt, der von den Redakteuren allermeistens nicht gesehen wird, aber natürlich bei der ifset-Auswertung berücksichtigt wird.

Im IE sieht's nicht ganz so schlimm aus, denn erst wenn man wirklich etwas eingegeben hat und das anschließend wieder löscht, bleibt ein <P>&nbsp;</P> als Inhalt stehen.

Wo muss ich ansetzen, dass bei HTML-Feldern der br-Tag bzw. der P-Tag automatisch beim Artikelspeichern gelöscht wird, falls dies der einzige Inhalt der HTML-Felder ist?
Günther Ludwig
Benutzeravatar
balu
ConPresso-Entwickler
Beiträge: 1748
Registriert: 01.01.1970 02:00
Hat sich bedankt: 81 Mal
Danksagung erhalten: 133 Mal

Re: In HTML-Feldern bleibt br- bzw. P-Tag stehen

Beitrag von balu »

Hallo,
Mr. Magpie hat geschrieben:Wo muss ich ansetzen, dass bei HTML-Feldern der br-Tag bzw. der P-Tag automatisch beim Artikelspeichern gelöscht wird, falls dies der einzige Inhalt der HTML-Felder ist?
und woher weisst Du, dass der Redakteur nicht mit Absicht nur einen Zeilenumbruch eingefügt hat, damit das Feld nicht leer ist, sondern nur leer aussieht?

Ich weiß, dass sich das an den Haaren herbeigezogen anhört, aber viele Redakteure machen z.B. auch &nbsp; in ein Tabellenfeld, damit es etwas aufgeschoben wird.

Damit die Redakteure das Feld restlos löschen können, haben wir ja den "löschen"-Button unter dem HTML-Feld hinzugefügt.

Balu
Bartels.Schöne
ConPresso Support & Development
Benutzeravatar
Mr. Magpie
ConPresso-Profi
Beiträge: 1004
Registriert: 01.01.1970 02:00
Wohnort: Wuppertal
Hat sich bedankt: 274 Mal
Danksagung erhalten: 59 Mal

Beitrag von Mr. Magpie »

Ich rede hier nicht von Schilderungen von irgendwelchen Redakteuren, sondern von meinen Beobachtungen.
Günther Ludwig
Benutzeravatar
MarkusR
Handbuchversteher
Beiträge: 7199
Registriert: 01.01.1970 02:00
Hat sich bedankt: 104 Mal
Danksagung erhalten: 920 Mal

Beitrag von MarkusR »

Firefox ist aus typographischer Sicht eine Katastrophe und ich wundere mich immer wie meine Kunden ganz merkwürdige Konstruktionen erstellen, die sich dann meist noch nicht mal mehr ohne Quelltexteingriff korrigieren lassen. Ok, Webkit-Browser sind da noch viel schlimmer...

Auch wenn der IE ja soooo schlecht ist, er beherrscht zumindest korrekte Typographie und ist damit die erste Wahl für strukturierte Texte, weil er sich wie ein Textverarbeitungsprogramm verhält und nicht wie ein Editor.

Du könntest mit _include/insertdb_fields.inc.php experimentieren...

da finden ja schon einige Korrekturen statt

Code: Alles auswählen

            $value['html'] = preg_replace(
                array(
                    '@<br>@',
                    '@<img((\s+[a-zA-Z]+\s*=\s*(("[^"]*")|(\'[^\']*\')))*)\s*>@' // based on http://concepts.waetech.com/unclosed_tags/
                ),
                array(
                    '<br />',
                    '<img\1 />'
                ),
                $value['html']
            ); 
Nach dem Entsorgen überflüssiger Codes sollte ein

Code: Alles auswählen

        if ($value['html']=='') break;
kommen, damit nicht ein geputzter leerer Eintrag gespeichert wird.
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
Benutzeravatar
Mr. Magpie
ConPresso-Profi
Beiträge: 1004
Registriert: 01.01.1970 02:00
Wohnort: Wuppertal
Hat sich bedankt: 274 Mal
Danksagung erhalten: 59 Mal

Beitrag von Mr. Magpie »

Danke dir, Markus!
Günther Ludwig
Benutzeravatar
Mr. Magpie
ConPresso-Profi
Beiträge: 1004
Registriert: 01.01.1970 02:00
Wohnort: Wuppertal
Hat sich bedankt: 274 Mal
Danksagung erhalten: 59 Mal

Beitrag von Mr. Magpie »

Ich habe jetzt in insertdb_fields.inc.php folgende Zeilen drin (erstmal für den Firefox-Fall):

Code: Alles auswählen

    case 'html': 
        // Update if something was entered
        if ($value['html']!='') {
            $value['html'] = preg_replace(
                array(
                    '@<br>@',
                    '@<img((\s+[a-zA-Z]+\s*=\s*(("[^"]*")|(\'[^\']*\')))*)\s*>@' // based on http://concepts.waetech.com/unclosed_tags/
                ),
                array(
                    '<br />',
                    '<img\1 />'
                ),
                $value['html']
            );
// br-Tag-Behandlung ansonsten leerer HTML-Felder - Anfang
if ($value['html'] = '\n<br />') $value['html'] = '';
if ($value['html'] = '') break;
// br-Tag-Behandlung ansonsten leerer HTML-Felder - Ende
Zwei Probleme:
1.) Verursacht durch if ($value['html'] = '') break; werden nur leere HTML-Felder in die DB geschrieben, also auch die anderen HTML-Felder sind dann geleert. Lasse ich diese Zeile weg, wird zwar das gewünschte HTML-Feld geleert, aber...
2.) ... zum Zeitpunkt der Ausführung der insertdb_fields.inc.php ist das Parsing schon erfolgt, sodass die entspr. ifset-Abfrage des Templates zu dem selben Ergebnis führt als wäre das Feld nicht leer.
Günther Ludwig
Benutzeravatar
MarkusR
Handbuchversteher
Beiträge: 7199
Registriert: 01.01.1970 02:00
Hat sich bedankt: 104 Mal
Danksagung erhalten: 920 Mal

Beitrag von MarkusR »

Hä?

Wie kann ein Parsing (=Ausgabe) bereits erfolgt sein, wenn der Datensatz überhaupt erst in die DB geschrieben wird?

Ansonsten:
Prüfungen werden mit "==" und nicht mit "=" geschrieben... :wink:
also

Code: Alles auswählen

if ($value['html'] == '\n<br />') $value['html'] = ''; 
if ($value['html'] == '') break; 
Zuletzt geändert von MarkusR am 01.12.2012 12:12, insgesamt 4-mal geändert.
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
Benutzeravatar
Mr. Magpie
ConPresso-Profi
Beiträge: 1004
Registriert: 01.01.1970 02:00
Wohnort: Wuppertal
Hat sich bedankt: 274 Mal
Danksagung erhalten: 59 Mal

Re: In HTML-Feldern bleibt br- bzw. P-Tag stehen

Beitrag von Mr. Magpie »

balu hat geschrieben:Damit die Redakteure das Feld restlos löschen können, haben wir ja den "löschen"-Button unter dem HTML-Feld hinzugefügt.
Da sprichst du von CPO 4.1.x, oder?
Mir geht es aber um die Problematik bei CPO 4.0.x (weil ich die 4.1er noch nirgendwo einsetzen möchte). Dort gibt es im ConPresso-Editor zwar einen Knopf "neu", der ein leeres Dokument erzeugen soll, aber den br-Tag drin stehen lässt. Dieser muss dann separat über "Tag löschen" noch entfernt werden.
Günther Ludwig
Benutzeravatar
MarkusR
Handbuchversteher
Beiträge: 7199
Registriert: 01.01.1970 02:00
Hat sich bedankt: 104 Mal
Danksagung erhalten: 920 Mal

Re: In HTML-Feldern bleibt br- bzw. P-Tag stehen

Beitrag von MarkusR »

Mr. Magpie hat geschrieben:Dort gibt es im ConPresso-Editor zwar einen Knopf "neu", der ein leeres Dokument erzeugen soll, aber den br-Tag drin stehen lässt. Dieser muss dann separat über "Tag löschen" noch entfernt werden.
Habe das gerade mal mit FF getestet... und tatsächlich, das ist ja wohl der Hammer!
Dabei ist die Anweisung an FF ja unmissverständlich:

Code: Alles auswählen

        case '_new':
            bse_conWin.document.body.innerHTML = '';
            break;
Von einem <br> weit und breit nichts zu sehen...
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
Benutzeravatar
Mr. Magpie
ConPresso-Profi
Beiträge: 1004
Registriert: 01.01.1970 02:00
Wohnort: Wuppertal
Hat sich bedankt: 274 Mal
Danksagung erhalten: 59 Mal

Beitrag von Mr. Magpie »

So, jetzt nach Einkauf und Mittagspause nochmal im Ganzen unter Berücksichtigung sowohl der IEs als auch des Firefox. Google Chrome macht's übrigens korrekt.
Ich habe noch rtrim()'s eingebaut, da sich gelegentlich auch noch Leerzeichen und Umbrüche reinmogeln konnten:

Code: Alles auswählen

            $value['html'] = preg_replace(
                array(
                    '@<br>@',
                    '@<img((\s+[a-zA-Z]+\s*=\s*(("[^"]*")|(\'[^\']*\')))*)\s*>@' // based on http://concepts.waetech.com/unclosed_tags/
                ),
                array(
                    '<br />',
                    '<img\1 />'
                ),
                $value['html']
            );
// ********** Behandlung von br-Tag (FF) bzw. <P>&nbsp;</P> (IEs) nach Leeren von HTML-Feldern ********** Teil 1/1 ***** Anfang *****
// folgende zwei Zeilen eingefügt:
            if (rtrim($value['html'])=='<br />' || rtrim($value['html'])=='<P>&nbsp;</P>') $value['html'] = '';
            if ($value['html'] == '') break; 
// ********** Behandlung von br-Tag (FF) bzw. <P>&nbsp;</P> (IEs) nach Leeren von HTML-Feldern ********** Teil 1/1 *****  Ende  *****
EDIT: von trim()'s zu rtrim()'s geändert, um gewieften Redakteuren die Chance zu geben, absichtlich das HTML-Feld mit einem Leerzeichen zu belegen, sodass es vom Parser als ausgefüllt betrachtet wird.
Günther Ludwig