Verschachtelte ifsets/ifnotsets und neu: ifvalue
-
MarkusR
- Handbuchversteher
- Beiträge: 7557
- Registriert: 01.01.1970 02:00
- Hat sich bedankt: 118 Mal
- Danksagung erhalten: 943 Mal
Verschachtelte ifsets/ifnotsets und neu: ifvalue
Da der Original-Parser von ConPresso so seine Probleme mit verschachtelten ifsets und ifnotsets hat, habe ich mal eine Version geschrieben, die diese brav umgekehrt hierarchisch abarbeitet.
Bei ein paar kleinen Tests funktionierte es wie gewünscht. Falls das jemand mal testen will, um hier ein Feedback abzugeben, kann er den Parser hier downloaden:
http://conpresso4.de/_reg_downloads/ind ... =Downloads
Mein Ziel ist es diese Version noch mit den von mir gewünschten werteabhängigen Bedingungen zu versehen (also sowas wie: <!-- ifvalue: Preis>100; -->), aber das ist noch nicht mit drin...
edit: Titel geändert wegen neuem Feature
Bei ein paar kleinen Tests funktionierte es wie gewünscht. Falls das jemand mal testen will, um hier ein Feedback abzugeben, kann er den Parser hier downloaden:
http://conpresso4.de/_reg_downloads/ind ... =Downloads
Mein Ziel ist es diese Version noch mit den von mir gewünschten werteabhängigen Bedingungen zu versehen (also sowas wie: <!-- ifvalue: Preis>100; -->), aber das ist noch nicht mit drin...
edit: Titel geändert wegen neuem Feature
Zuletzt geändert von MarkusR am 24.05.2007 08:19, insgesamt 1-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
ConPresso-Module
Kein Support per PN!!! Für Fragen und Diskussionen ist das Forum da!
Succi recentis officinalis
Hochwertige Kräutersäfte und -Öle
-
balu
- ConPresso-Entwickler
- Beiträge: 1748
- Registriert: 01.01.1970 02:00
- Hat sich bedankt: 81 Mal
- Danksagung erhalten: 133 Mal
Hi Markus,
interessante Lösung. Ich hatte noch nicht genug Zeit, da reinzuschauen, aber auf Anhieb fallen mir folgende Fragen ein:
1. Was passiert, wenn jemand falsch schachtelt: <!-- ifSet ... --> <!-- /ifNotSet ... -->
2. Was passiert, wenn jemand ein ifSet nicht schliesst? Eventuell $taglevel auf > 0 prüfen und keine Aktion durchführen oder einen Hinweis ausgeben?
3. Hab ich vergessen, weil so viele Anrufe zwischendurch kamen :-/ - fällt mir später vielleicht wieder ein.
Balu
interessante Lösung. Ich hatte noch nicht genug Zeit, da reinzuschauen, aber auf Anhieb fallen mir folgende Fragen ein:
1. Was passiert, wenn jemand falsch schachtelt: <!-- ifSet ... --> <!-- /ifNotSet ... -->
2. Was passiert, wenn jemand ein ifSet nicht schliesst? Eventuell $taglevel auf > 0 prüfen und keine Aktion durchführen oder einen Hinweis ausgeben?
3. Hab ich vergessen, weil so viele Anrufe zwischendurch kamen :-/ - fällt mir später vielleicht wieder ein.
Balu
Bartels.Schöne
ConPresso Support & Development
ConPresso Support & Development
-
MarkusR
- Handbuchversteher
- Beiträge: 7557
- Registriert: 01.01.1970 02:00
- Hat sich bedankt: 118 Mal
- Danksagung erhalten: 943 Mal
zu 1.) der kriegt bei mir eine kostenpflichtige Schulung
zu 2.) das gleiche wie beim Original... nichts!
Ich habe auch schon über irgendeine Prüfung nachgedacht, aber angesichts der endlos vielen Fehler der User, auf die ich niemals kommen würde kann auch keine Prüfung alle Möglichkeiten erfassen.
Aber eine einfach Prüfung auf korrekte Reihenfolge kriege ich vielleicht noch hin...
zu 2.) das gleiche wie beim Original... nichts!
Ich habe auch schon über irgendeine Prüfung nachgedacht, aber angesichts der endlos vielen Fehler der User, auf die ich niemals kommen würde kann auch keine Prüfung alle Möglichkeiten erfassen.
Aber eine einfach Prüfung auf korrekte Reihenfolge kriege ich vielleicht noch hin...
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
ConPresso-Module
Kein Support per PN!!! Für Fragen und Diskussionen ist das Forum da!
Succi recentis officinalis
Hochwertige Kräutersäfte und -Öle
-
Mr. Magpie
- ConPresso-Profi
- Beiträge: 1004
- Registriert: 01.01.1970 02:00
- Wohnort: Wuppertal
- Hat sich bedankt: 274 Mal
- Danksagung erhalten: 59 Mal
Hallo Markus,
das klingt sehr vielversprechend!! Das bringt uns und Conpresso ein großes Stück weiter - wenn's die Leute vernünftig einsetzen! Aber das wird man sehen...
Einen Riesendank aus Aichtal (b. Stuttgart) von uns!
2010-01-17 UPDATE: Ich habe Markus überzeugen können, den "Enhanced Parser" weiter zu entwickeln und jedem Interessierten kostenlos zur Verfügung zu stellen. Das Ergebnis kann sich sehen lassen.
Den Download des RC2 findet ihr hier: http://community.conpresso.de/viewtopic ... 5411#25411
Eine Anleitung und Beschreibung hier: http://manual.conpresso4.de/_rubric/ind ... rser_index
das klingt sehr vielversprechend!! Das bringt uns und Conpresso ein großes Stück weiter - wenn's die Leute vernünftig einsetzen! Aber das wird man sehen...
Einen Riesendank aus Aichtal (b. Stuttgart) von uns!
2010-01-17 UPDATE: Ich habe Markus überzeugen können, den "Enhanced Parser" weiter zu entwickeln und jedem Interessierten kostenlos zur Verfügung zu stellen. Das Ergebnis kann sich sehen lassen.
Den Download des RC2 findet ihr hier: http://community.conpresso.de/viewtopic ... 5411#25411
Eine Anleitung und Beschreibung hier: http://manual.conpresso4.de/_rubric/ind ... rser_index
Zuletzt geändert von Mr. Magpie am 17.01.2010 17:55, insgesamt 1-mal geändert.
-
MarkusR
- Handbuchversteher
- Beiträge: 7557
- Registriert: 01.01.1970 02:00
- Hat sich bedankt: 118 Mal
- Danksagung erhalten: 943 Mal
Ich habe nochmal eine neue Version hochgeladen.
Diese prüft entsprechend der Hierarchie alle Verschachtelungen und gibt entsprechende Meldungen aus.
Außerdem ist das if-tag ifvalue jetzt mit dabei!
Anwendungsbeispiele:
Bei einem Preis über 100 Euro soll ein text ausgegeben werden.
<!-- ifvalue: Preis>100 -->Das ist aber teuer!<!-- /ifvalue -->
Das lässt sich auch verschachteln um z.B. Preisspannen auszuwerten.
Auf einer Downloadseite können vom Redakteur bis zu 3 Downloads angegeben werden. Da diese aber als Word, Excel, PDF, ZIP und DXF Format vorliegen können und immer das entsprechende Icon erhalten sollen, müßten 15(!) File-Platzhalter eingebaut werden.
Mit ifvalue gibt man einfach den Dateityp an und lässt das entsprechende Icon setzen, also z.B.<!-- ifvalue: Dateityp=PDF-Datei --><img src="pdf.gif"><!-- /ifvalue><!-- ifvalue: Dateityp=Word-Dokument --><img src="doc.gif"><!-- /ifvalue>...[etc.]...<!-- File: Datei; -->
Man braucht also immer nur 3 Dateifelder bei der Artikelerfassung. Den Dateityp kann man problemlos mit einem Dropdown aus mod_text auswählen.
Werte können mit =, >, <, !=, <= und >= geprüft werden. Die zu prüfenden Felder müssen Textfelder sein (alle anderen machen aus meiner Sicht keinen Sinn).
...und jetzt wo ich das schreibe denke ich man könnte auch gut auf Datumswerte mit einem ifdate Prüfungen machen und möglicherweise noch ein Berechnungs-Tag in der Form Brutto: <!-- expr: Netto*1,19; 2; --> Euro erfinden...
Diese prüft entsprechend der Hierarchie alle Verschachtelungen und gibt entsprechende Meldungen aus.
Außerdem ist das if-tag ifvalue jetzt mit dabei!
Anwendungsbeispiele:
Bei einem Preis über 100 Euro soll ein text ausgegeben werden.
<!-- ifvalue: Preis>100 -->Das ist aber teuer!<!-- /ifvalue -->
Das lässt sich auch verschachteln um z.B. Preisspannen auszuwerten.
Auf einer Downloadseite können vom Redakteur bis zu 3 Downloads angegeben werden. Da diese aber als Word, Excel, PDF, ZIP und DXF Format vorliegen können und immer das entsprechende Icon erhalten sollen, müßten 15(!) File-Platzhalter eingebaut werden.
Mit ifvalue gibt man einfach den Dateityp an und lässt das entsprechende Icon setzen, also z.B.<!-- ifvalue: Dateityp=PDF-Datei --><img src="pdf.gif"><!-- /ifvalue><!-- ifvalue: Dateityp=Word-Dokument --><img src="doc.gif"><!-- /ifvalue>...[etc.]...<!-- File: Datei; -->
Man braucht also immer nur 3 Dateifelder bei der Artikelerfassung. Den Dateityp kann man problemlos mit einem Dropdown aus mod_text auswählen.
Werte können mit =, >, <, !=, <= und >= geprüft werden. Die zu prüfenden Felder müssen Textfelder sein (alle anderen machen aus meiner Sicht keinen Sinn).
...und jetzt wo ich das schreibe denke ich man könnte auch gut auf Datumswerte mit einem ifdate Prüfungen machen und möglicherweise noch ein Berechnungs-Tag in der Form Brutto: <!-- expr: Netto*1,19; 2; --> Euro erfinden...
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
ConPresso-Module
Kein Support per PN!!! Für Fragen und Diskussionen ist das Forum da!
Succi recentis officinalis
Hochwertige Kräutersäfte und -Öle
-
MarkusR
- Handbuchversteher
- Beiträge: 7557
- Registriert: 01.01.1970 02:00
- Hat sich bedankt: 118 Mal
- Danksagung erhalten: 943 Mal
Ich bin doch selbst Benutzer... (aber manchmal verstehe ich mich selbst nicht
)
Jetzt wäre natürlich ein Feedback der Tester ganz hilfreich...
Jetzt wäre natürlich ein Feedback der Tester ganz hilfreich...
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
ConPresso-Module
Kein Support per PN!!! Für Fragen und Diskussionen ist das Forum da!
Succi recentis officinalis
Hochwertige Kräutersäfte und -Öle
-
Mr. Magpie
- ConPresso-Profi
- Beiträge: 1004
- Registriert: 01.01.1970 02:00
- Wohnort: Wuppertal
- Hat sich bedankt: 274 Mal
- Danksagung erhalten: 59 Mal
... von wegen heut' Abend
... hat jetzt doch 'ne geschlagene Woche gedauert bis ich's austesten durfte - erst war der Cheffe dagegen (keine Zeit! wie immer) dann der Kunde ("too risky und überhaupt, geht doch auch so..."), aber bei einer ersten Testinstallation konnte ich keine Probleme feststellen, im Gegenteil: funzt 1A!!
-
Marky
- ConPresso-Checker
- Beiträge: 382
- Registriert: 11.12.2005 16:29
- Hat sich bedankt: 29 Mal
- Danksagung erhalten: 18 Mal
ich hätte da aber noch was ...
Also erst ist mir diese Meldung aufgefallen
und dann meine alten Sünden, mit den zuviel geschachtelten if-set's, damit das überhaupt früher funktioniert hat 
Also erst ist mir diese Meldung aufgefallen
Code: Alles auswählen
Warning: max() [function.max]: Array must contain atleast one element in /www/htdocs/0815/conpresso/_include/parser.php on line 241Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Gruß
Marky
Marky
-
MarkusR
- Handbuchversteher
- Beiträge: 7557
- Registriert: 01.01.1970 02:00
- Hat sich bedankt: 118 Mal
- Danksagung erhalten: 943 Mal
Kann es sein, daß eines der Templates gar kein if-Tag hat???
Und daß ein altes Template durchaus alte Probleme hat ist ja nun nicht das Problem des Parsers, oder? (ich habe auch ein paar Webseiten, wo ich brutalst verschachtelt habe, um das gewünschte Ergebnis zu bekommen... da kommt der Parser erst mal nicht zum Einsatz...)
Für das erste Problem habe ich mal den Teil
durch
ergänzt.
Und daß ein altes Template durchaus alte Probleme hat ist ja nun nicht das Problem des Parsers, oder? (ich habe auch ein paar Webseiten, wo ich brutalst verschachtelt habe, um das gewünschte Ergebnis zu bekommen... da kommt der Parser erst mal nicht zum Einsatz...)
Für das erste Problem habe ich mal den Teil
Code: Alles auswählen
$maxlevel = max($iftaglevel);
for ($if=$maxlevel;$if>0;$if--) {
foreach ($iftags AS $key=>$value) {
if ($iftaglevel[$key]==$if) $thisiftags[$key] = $value;
}
if (count($thisiftags)>0)
$template_datei = preg_replace(array_keys($thisiftags), array_values($thisiftags), $template_datei);
}
Code: Alles auswählen
if (count($iftaglevel)>0) {
$maxlevel = max($iftaglevel);
for ($if=$maxlevel;$if>0;$if--) {
foreach ($iftags AS $key=>$value) {
if ($iftaglevel[$key]==$if) $thisiftags[$key] = $value;
}
if (count($thisiftags)>0)
$template_datei = preg_replace(array_keys($thisiftags), array_values($thisiftags), $template_datei);
}
}
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
ConPresso-Module
Kein Support per PN!!! Für Fragen und Diskussionen ist das Forum da!
Succi recentis officinalis
Hochwertige Kräutersäfte und -Öle