<center>
<form method="post" action="do_invt_kick">
<input type="hidden" name="nonce" value="<?NONCE>" />
- <input type="hidden" name="tab" value="access" />
+ <input type="hidden" name="last_tabsel" value="<?TAB:N>" />
<select name="username" size="10" style="width:100%">
<?ITERATE("ITERATE:THISROOM:WHO_KNOWS", ="room_edit_username_list", 0, 0, -1)>
</select>
<br /><br />
<center>
<form method="post" action="do_invt_kick">
- <input type="hidden" name="tab" value="access" />
+ <input type="hidden" name="last_tabsel" value="<?TAB:N>" />
<input type="hidden" name="nonce" value="<?NONCE>">
<?_("Invite:")>
<input type="text" name="username" id="username_id" style="width:100R"><br />
<br />
<form method="post" action="netedit">
<p>
- <input type="hidden" name="tab" value="listserv" />
+ <input type="hidden" name="last_tabsel" value="<?TAB:N>" />
<input type="hidden" name="prefix" value="listrecp|" />
<input type="hidden" name="nonce" value="<?NONCE>" />
<input type="text" id="add_as_listrecp" name="line" />
<br />
<form method="post" action="netedit">
<p>
- <input type="hidden" name="tab" value="listserv" />
+ <input type="hidden" name="last_tabsel" value="<?TAB:N>" />
<input type="hidden" name="prefix" value="digestrecp|" />
<input type="hidden" name="nonce" value="<?NONCE>">
<input type="text" id="add_as_digestrecp" name="line">
</tr>
<tr>
<td colspan="2" align="center">
+ <input type="hidden" name="last_tabsel" value="<?TAB:N>" />
+ <input type="hidden" name="nonce" value="<?NONCE>" />
<input type="submit" name="add_button" value="<?_("Save changes")>" />
</td>
</tr>
"Context ITERATE",
"Context ICAL",
"Context DavNamespace",
+ "Context TAB",
"Context UNKNOWN"
};
/*-----------------------------------------------------------------------------
* Tabbed-API
*/
+
+typedef struct _tab_struct {
+ long CurrentTab;
+ StrBuf *TabTitle;
+} tab_struct;
+
int preeval_do_tabbed(WCTemplateToken *Token)
{
WCTemplputParams TPP;
{
StrBuf **TabNames;
int i, ntabs, nTabs;
+ tab_struct TS;
+ WCTemplputParams SubTP;
+
+ memset(&TS, 0, sizeof(tab_struct));
+ memcpy (&SubTP, &TP, sizeof(WCTemplputParams));
nTabs = ntabs = TP->Tokens->nParameters / 2;
TabNames = (StrBuf **) malloc(ntabs * sizeof(StrBuf*));
nTabs --;
}
}
+ memcpy (&SubTP, TP, sizeof(WCTemplputParams));
+ SubTP.Filter.ControlContextType = CTX_TAB;
+ SubTP.ControlContext = &TS;
StrTabbedDialog(Target, nTabs, TabNames);
for (i = 0; i < ntabs; i++) {
+ memset(&TS, 0, sizeof(tab_struct));
+ TS.CurrentTab = i;
+ TS.TabTitle = TabNames[i];
StrBeginTab(Target, i, nTabs, TabNames);
- DoTemplate(TKEY(i * 2 + 1), Target, TP);
+ DoTemplate(TKEY(i * 2 + 1), Target, &SubTP);
StrEndTab(Target, i, nTabs);
}
for (i = 0; i < ntabs; i++)
FreeStrBuf(&TabNames[i]);
}
+void tmplput_TAB_N(StrBuf *Target, WCTemplputParams *TP)
+{
+ tab_struct *Ctx = CCTX;
+
+ StrBufAppendPrintf(Target, "%d", Ctx->CurrentTab);
+}
+
+void tmplput_TAB_TITLE(StrBuf *Target, WCTemplputParams *TP)
+{
+ tab_struct *Ctx = CCTX;
+ StrBufAppendTemplate(Target, TP, Ctx->TabTitle, 0);
+}
/*-----------------------------------------------------------------------------
* Sorting-API
RegisterNamespace("ITERATE", 2, 100, tmpl_iterate_subtmpl, preeval_iterate, CTX_NONE);
RegisterNamespace("DOBOXED", 1, 2, tmpl_do_boxed, NULL, CTX_NONE);
RegisterNamespace("DOTABBED", 2, 100, tmpl_do_tabbed, preeval_do_tabbed, CTX_NONE);
+ RegisterControlNS(HKEY("TAB:N"), 0, 0, tmplput_TAB_N, CTX_TAB);
+ RegisterControlNS(HKEY("TAB:SUBJECT"), 0, 1, tmplput_TAB_TITLE, CTX_TAB);
+
+
RegisterNamespace("LONGVECTOR", 1, 1, tmplput_long_vector, NULL, CTX_LONGVECTOR);