Archiwum dla kategorii JTemplates

Dan Eloff przesłał do mnie plik, który umożliwia kolorowanie składni (syntax) jTemplates dla edytora Vim. Dziękuje.
Po kilku drobnych poprawkach zamieszczam jego wersje “beta” poniżej. Przy okazji dołączam również plik z kolorowaniem do Geshi.

jTemplates syntax - Vim

jTemplates syntax - Geshi

Nowości w jTemplates 0.6.6:
- nowy sposób integrowania szablonów w dokumencie XHTML (wygodny w użyciu i zgodny z XHTML 1.1),
- poprawiony błąd z {#cycle} w przypadku użyciu wieloszablonu (Multitemplates),
- “czyszczenie kodu”

Szablony w kodzie XHTML można umieszcza w tagu <textarea/>. Przykład:

<textarea id="template" style="display:none">
  <table>
    {#foreach $T.table as record}
    <tr>
      <td>{$T.record.name}</td>
    </tr>
    {#/for}
  </table>
</textarea>
 

W celu zapewnienia zgodności z XHTML należy użyć:

<p style="display:none"><textarea id="template" rows="0" cols="0"><![CDATA[
  <table>
    {#foreach $T.table as record}
    <tr>
      <td>{$T.record.name}</td>
    </tr>
    {#/for}
  </table>
]]></textarea></p>
 

Przykład można znaleźć na stronie:
http://jtemplates.tpython.com/example4.html

Z nadmiaru wolnego czasu w okolicy Świąt wyłania się nowa wersja jTemplates - 0.6.
Podstawową zmianą w stosunku do poprzedniej edycji jest umożliwienie iteracji obiektów (a nie tylko tablic) przy pomocy tagu #foreach:

$(’#result’).setTemplate(’{#foreach $T as i}{$T.i$key} - {$T.i}{#/for}‘);
$(’#result’).processTemplate({‘a’:1, ‘b’:2, ‘c’:3});

Inną nowością jest funkcjonalność “Runnable Function” pozwalająca uruchomić funkcje jak zmienną, czyli bez jawnej specyfikacji w postaci nawiasów.

Pełna lista zmian i najnowsza wersja programu jak zawsze na stronie: http://jtemplates.tpython.com/.

Śpieszę donieść, iż światło dzienne ujrzała następna wersja jTemplates, tym razem oznaczona numerem 0.5.1. W porównaniu do poprzedniej poprawia błąd związany z działaniem tagu #cycle. Aktualizacja nie jest wymagana w przypadku nie korzystania z tego znacznika.

Kolejna pełna wersja jTemplates nie przynosi rewolucyjnych zmian. Przede wszystkim uzupełniona została cała dokumentacja, włącznie z nowym opisem API.

Z nowości pojawiła się metoda removeTemplate służąca do usuwania szablonu z elementów.
Zwiększona została także możliwość wykorzystania kodu JavaScript wewnątrz szablonu. Obecnie blok kodu w nawiasach klamrowych {} nie musi zwracać wartości.

Plugin jest kompatybilny z jQuery 1.2.1 (ale nie z 1.2) ale prawdopodobnie będzie działał poprawnie z wersjami 1.0.x i 1.1.x.

Z dwudniowym opóźnieniem wynikającym z braku dostępu do Internetu ogłaszam najnowsze wersje:

  • jTemplates 0.4.1 - systemu szablonów w JavaScript
  • Allegro Widget 0.2.1 - plugin do Wordpress pokazujący w na pasu bocznym aktualne aukcje użytkownika

jTemplates 0.4.1

Wersja 0.4 przede wszystkim nacisk kładzie na bezpieczeństwo. Dane wejściowe (oznaczone zmienną $T) są sprawdzane pod kątem występowania znaków specjalnych stosowanych w XHTML: <, >, ‘, ” oraz &. Znaki te są zmieniane na bezpieczne odpowiedniki. Dodatkowo został zaimplementowany detektor funkcji dla danych $T, co ma uniemożliwić dokonywanie ataków wstrzykiwania kodu.

Zabezpieczenia te są domyślnie włączone. Istnieje możliwość ich wyłączenia, co gwarantuje zgodność z wcześniejszymi wersjami jTemplates.

Allegro Widget 0.1.2

Najnowsza wersja wprowadza niewielkie korekty w wyświetlaniu widgetu. Dzięki temu nie wyróżnia się od zbyt mocno od reszty elementów na pasku.

Poprzednia wersja jTemplates (0.2) wprowadziła spore zmiany (zwłaszcza obsługę wielu szablonów w jednym pliku), ale też miała kilka problemów. Jednym z nich był błąd w przypadku wielokrotnego wykorzystania tego samego szablonu w różnych kontekstach. Błąd ten został poprawiony w wersji 0.2.1.

Dodatkowo w wersji 0.2.2 pojawiło się wsparcie dla tagu {#elseif}.

Więcej informacji na stronie projektu: http://jtemplates.tpython.com 

Nowości w jTemplates 0.2:

- MultiTemplates

Pozwalają na umieszczeniu wielu szablonów w jednym pliku, przykład:

{#template MAIN}
 <div id="header">{$T.name}</div>
 <table>
 {#foreach $T.table as r}
  {#include row root=$T.r}
 {#/for}
 </table>
{#/template MAIN}

{#template row}
 <tr bgcolor="{#cycle values=[‘#AAAAEE’,'#CCCCFF’]}">
  <td>{$T.name.bold()}</td>
  <td>{$T.age}</td>
  <td>{$T.mail.link(‘mailto:’+$T.mail)}</td>
 </tr>
{#/template row}

- korekta kilku błędów (na przykład obsługa #literal) i zmniejszenie obciążenia pamięciowego

Więcej na stronie: http://jtemplates.tpython.com