Temat: Lista załączników

mam szablon dodający listę załączników postaci:

Lista załączników:
%ReplaceRegExp(",[ ]?", %NewLine(n),%Attachments)

Powyższy kod zamienia mi listę załączników rozdzielonych przecinkiem na listę załączników, gdzie każdy załącznik jest w oddzielnej linii:

Lista załączników:
załącznikA
załącznikB
załącznikC
...


Moje pytanie czy się da i ewentualnie w którym kierunku powinienem pójść aby uzyskać następujący efekt:

Lista załączników:
1) załącznikA -
2) załącznikB -
3) załącznikC -

czyli numerowanie przyrostowe załączników na początku każdego załącznika a na końcu myślnik.

Po co mi to?
Przy większej ilości załączników przydaje się do opisywania załączników i/lub odwoływania się do nich w treści maila.

smile

2

Odp: Lista załączników

Aby uzyskać numerowaną listę elementów należy użyć tzw. rekurencji, czyli wywoływać szablon tyle razy, ile elementów jest na liście aż do opróżnienia listy. Przy każdym wywołaniu należy zwiększać numer pozycji, korzystając z makr dostępnych w programie. W tym celu będą potrzebne dwa szablony podręczne: pierwszy "rozruchowy" (niech nazywa się on atn) i drugi wywoływany rekurencyjnie (niech ma nazwę atn2).

Szablon atn wstawia listę załączników do zmiennej %_Att i następnie, jeśli ta lista nie jest pusta, dopisuje do niej numer początkowy (tutaj 1) i wywołuje szablon rekurencyjny atn2. Szablon atn ma następującą zawartość:

%_Att(%ATTACHMENTS)%-
%_Any_Att="%SETPATTREGEXP='^\s*<(brak|none)>\s*\Z'%-
%REGEXPMATCH(%_Att)"%-
%-
%IF:"%_Any_Att"==""%-
:%-
"%_Att_Items='1:%_Att'%-
Lista załączników:
%QINCLUDE(atn2)"%-

Szablon rekurencyjny atn2 wywołuje sam siebie tyle razy, ile załączników jest na liście, zwiększając przy każdym wywołaniu numer porządkowy i usuwając z listy użytą nazwę załącznika. Działanie kończy się, gdy na liście nie będzie żadnego załącznika. Szablon rekurencyjny atn2 jest następujący:

%IF:"%-
%SETPATTREGEXP='(?i)(,|;)'%REGEXPMATCH(%_Att_Items)"<>""%-
:"%-
%SETPATTREGEXP='(?i)^(\d+):\s*(.*?)\s*(,|;)'%-
%REGEXPBLINDMATCH(%_Att_Items)%-
%SUBPATT(1)) %SUBPATT(2) -
%-
%_Curr_No='%SETPATTREGEXP=""^(\d+):""%REGEXPMATCH(%_Att_Items)'%-
%_Next_No(%CALC='1+%_Curr_No')%-
%SETPATTREGEXP='(?i)^\d+:.*?(;|,)\s*(.*)\s*\Z'%-
%REGEXPBLINDMATCH(%_Att_Items)%-
%_Att_Items(%_Next_No:%SUBPATT(2))%-
%-
%QINCLUDE(atn2)"%-
:"%-
%SETPATTREGEXP='(?i)^(\d+):\s*(.*?)\s*\Z'%-
%REGEXPBLINDMATCH(%_Att_Items)%-
%SUBPATT(1)) %SUBPATT(2) -"%-

Wstawienie listy na żądane miejsce jest bardzo proste: wystarczy w tym miejscu wpisać wywołanie pierwszego szablonu, używając makra %QINCLUDE(atn). Można to także robić ad hoc, wpisując nazwę szablonu i naciskając kombinację klawiszy CTRL+SPACJA.