Seite 1 von 1

Backend Template Editor baut Fehler in das Template!

Verfasst: Mi 4. Mai 2005, 08:33
von acquire
Hallo,

der Template Editor überarbeitet dummer weise mein Template stehts. Seine Änderungen werden nicht sofort angezeigt (erst nachdem ich irgendwann das Template nochmal gespeichert habe).

Dadurch gibt es immer ein JavaScript Fehler, da eine Klammer entfernt wird.

Und zwar wird aus diesem, korrektem Code:

Code: Alles auswählen

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}
dieser:

Code: Alles auswählen

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}
}
In der vorletzten Zeile fehlt am Ende immer die Klammer.

Meine Fragen dazu:
Wie kann man das unterbinden und warum macht der Editor das überhaupt?

Danke im Voraus, Hauke

Verfasst: Mi 4. Mai 2005, 09:10
von timo
Ähm welcher Template-Editor? Bzw welche Version?

Verfasst: Mi 4. Mai 2005, 11:01
von emergence
ähm vermutlich bei 'ner 4.4.5 oder CVS_HEAD

class.template.php
-> function generate
->

Code: Alles auswählen

		$tmp_template['complete'] = str_replace("{", "{{", $tmp_template['complete']);
		$tmp_template['complete'] = str_replace("}", "}}", $tmp_template['complete']);
und

Code: Alles auswählen

		$tmp_template['return'] = str_replace("{{", "{", $tmp_template['return']);
		$tmp_template['return'] = str_replace("}}", "}", $tmp_template['return']);
wird das problem verursachen...

Verfasst: Mi 4. Mai 2005, 11:04
von acquire
Contenido 4.4.5.
Der ganz normale Template Editor. Es gibt ja nur einen.

@ emergence:
Muss die die Zeilen dann auskommentieren, oder was muss ich machen um das zu verhindern?

Danke für die Mühe.

Verfasst: Mi 4. Mai 2005, 11:08
von emergence
acquire hat geschrieben:@ emergence:
Muss die die Zeilen dann auskommentieren, oder was muss ich machen um das zu verhindern?
diese zeilen wurden aufgrund eines anderen bugs eingefügt...
entweder kommentierst du diese zeilen einfach aus oder in deinem javascript anstelle von }} -> } } verwenden...

wohlgemerkt ich habs jetzt nicht getestet, sag bescheid ob es überhaupt an dem liegt... falls ja -> wäre das ein bug

Verfasst: Mi 4. Mai 2005, 11:14
von acquire
Mit dem Leerzeichen dazwischen klappt es, vielen Dank.

Verfasst: Mi 4. Mai 2005, 11:15
von timo
acquire hat geschrieben:Contenido 4.4.5.
Der ganz normale Template Editor. Es gibt ja nur einen.
Ähm eben nicht...es gibt weder in der 4.4.5 noch in der 4.5 einen Template-Editor. Wenn du der Meinung bist, daß es doch einen gibt, so sag mir bitte, wie du diesen aufrufst...

Verfasst: Mi 4. Mai 2005, 11:16
von emergence
ich hab noch was vergessen

Code: Alles auswählen

var $tags = array('static'  =>  '{{%s}}',
müsste wenn man das auskommentiert
ebenso auf

Code: Alles auswählen

var $tags = array('static'  =>  '{%s}',
geändert werden...

wie auch immer -> bug -> verschoben

Verfasst: Mi 4. Mai 2005, 11:21
von acquire
timo hat geschrieben:OK: Style->Layots->Layout auswählen und rechts ist dann der Editor.
Das ist kein Template, das ist ein Layout. Bitte die Terminologien einhalten, und alles wird gut ;)

Verfasst: Mi 4. Mai 2005, 11:22
von emergence
@timo
fehler ist leicht zu reproduzieren

style - styleeditor

Code: Alles auswählen

function MM_preloadImages() { //v3.0 
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array(); 
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++) 
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}} 
}
einfügen - speichern -> }} wird zu }

der hit an der sache -> das betrifft jedes template das irgendwo eingesetzt wird...

Verfasst: Mi 4. Mai 2005, 11:35
von emergence
ich hab jetzt ein wenig überlegt

Code: Alles auswählen

      $tmp_template['complete'] = str_replace("{", "{{", $tmp_template['complete']); 
      $tmp_template['complete'] = str_replace("}", "}}", $tmp_template['complete']);

ersetzen durch

Code: Alles auswählen

$tmp_template['complete'] = preg_replace("/{([A-Z0-9]+)}/i", '{{\1}}', $tmp_template['complete']);
und

Code: Alles auswählen

      $tmp_template['return'] = str_replace("{{", "{", $tmp_template['return']); 
      $tmp_template['return'] = str_replace("}}", "}", $tmp_template['return']);

ersetzen durch

Code: Alles auswählen

      $tmp_template['return'] = preg_replace("/{{([A-Z0-9]+)}}/i", '{\1}', $tmp_template['return']);
sollte auch funktionieren...

Verfasst: Mi 4. Mai 2005, 11:57
von HerrB
Cool, das Problem hatten wir doch auch schon anderen Stellen... wieder etwas ausgemerzt...

Gruß
HerrB

Verfasst: Mi 4. Mai 2005, 11:59
von emergence
im cvs_head wurde das bereits etwas anders gelöst...

Verfasst: Mi 4. Mai 2005, 13:03
von acquire
Wow, danke!