Hier ist eine Funktion mit der man im Gui-Scripting relativ einfach einen InfoBar-Eintrag erstellen kann, an dem beim Anklicken ein kleines Fenster aufklappt. Den Code habe ich mir zum großen Teil aus der Notes-Extension von Arakis "geklaut".
Code:
Function CreateInfoBarControl(e As CGuiEventOnInfoBarAfterCreate, right As Boolean, label As String, elementID As String, content As CHtmlControl)
{
Var url As CJsAction = CUrlBuilder.JsToggleElement(elementID);
Var urlCon As CHtmlControl = CControlBuilder.BracketLink(url, label);
Var urlSmall As New CHtmlSmall();
urlSmall.Add(urlCon);
e.CreateItem(right).Add(urlSmall.GuiControl);
Var outerdiv As New CHtmlDiv();
e.Page.Body.Controls.Insert(0, outerdiv.GuiControl);
outerdiv.Style.Add('position', 'absolute');
outerdiv.Width = '100%';
outerdiv.Style.Add('z-index', '254');
Var div As New CHtmlDiv();
outerdiv.Add(div);
If(right)
{
div.Style.Add('float', 'right');
}
Else
{
div.Style.Add('float', 'left');
}
div.Style.Add('padding-right', '18px');
div.Style.Add('z-index', '255');
div.Style.Add('display', 'none');
div.ID = elementID;
Var formUrl As CUrl;
Var form As New CHtmlForm(formUrl);
div.Add(form);
Var tab As New CTable(1);
form.Add(tab);
Var row As CTableRow = tab.AddRow();
row.item(0).CssClass = 'l';
row.item(0).Add(content);
}
Beim ersten Wert muss man sein CGuiEventOnInfoBarAfterCreate, dass in der Callback-Funktion mitgegeben wurde einfügen.
Der zweite Wert bestimmt, ob der InfoBar-Eintrag links (false) oder rechts (true) ist.
Im dritten Wert fügt man den Text, der im Link angezeigt wird.
Der vierte Wert legt den JavaScript-internen Element-String fest. Er sollte sich von denen andrer InfoBar-Extensions unbedingt unterscheiden (ansonsten öffnet sich bei beiden das gleiche Fenster).
Und im fünften Wert wird der Inhalt, der beim Anklicken angezeigt wird angegeben.
Ich hoffe diese Funktion kann einigen bei ihren InfoBar-Extensions helfen.
lg
Elchi