Quantcast
Channel: Communardo Techblog » target
Viewing all articles
Browse latest Browse all 2

Sharepoint, ARF – Menü& Open Link in new window

0
0

Wohl jeder Sharepoint Entwickler welcher sich je mit Barrierefreiheit befasst hat, wird schon einmal von dem Alternative Rendering Framework von SPWorks gehört haben. ARF ist ein Open Source Project, welches von Vincent Rothwell entwickelt wurde um Sharepoint etwas barrierefreier zu gestalten. Das Framework beinhaltet mehr als 30 Controls für die Entwicklung barrierefeier Publishing Seiten. Alle Controls erzeugen XML welches mit Hilfe von XSLT letztendlich zu HTML Seiten gerendert werden kann.

Eines dieser Controls, welches aktuell bei uns verwendet wird, ist das ARF Navigations Control. Beim Anlegen einer Überschrift mit Link, kann optional ausgewählt werden, ob die Seite in einem neuen oder in dem aktuellen Fenster geöffnet wird.  Dabei ist mir aufgefallen, dass das ARF Menü diese Checkbox schlechthin ignoriert.

Properties

Nach kurzer Forschungsarbeit, haben mein Kollege Vojta und ich den Ursprung des Fehlers gefunden. In der Menu-Klasse innerhalb des Namespaces “ARF.Web.Controls” befindet sich die Methode “WriteNavigationNodes”, in welcher alle XML Attribute, für die spätere Ausgabe beschrieben werden. Das Target Attribut der MenuItems war jedoch stets leer, egal  ob die Checkbox aktiviert war oder nicht.

w.WriteAttributeString("Target", oItem.Target);

Das Problem war schnell gefunden. Das ARF Menü erbt von der Klasse “System.Web.Ui.Webcontrols.Menu”, und nicht von “Microsoft.SharePoint.WebControls.Menu”. Aus diesem Grund wurde die Target Eigenschaft des MenuItems nie beschrieben. Da die Sharepoint Menu Klasse auch von “System.Web.Ui.Webcontrols.Menu” erbt, mussten die Sharepoint Entwickler dafür sorgen, dass die originalen Sharepoint MenuItems , dass Target Attribut konsumieren können. Der Zeitpunkt, in dem das Data Binding der Menu Items stattfindet, schien uns als perfekt geeignet dafür.

Innerhalb des OnMenItemDataBound Events kann über die EventArgs, auf die aktuelle SiteMapNode zugegriffen werden. Dabei handelt es sich diesmal jedoch um eine Sharepoint Node. Von dieser kann jetzt direkt auf das Target Attribut ausgelesen werden (dataItem[“Target”]).

protected override void OnMenuItemDataBound(MenuEventArgs e)
        {
            base.OnMenuItemDataBound(e);

            SiteMapNode dataItem = e.Item.DataItem as SiteMapNode;
            if (dataItem != null)
            {
                string str = dataItem["Target"];
                if (!string.IsNullOrEmpty(str))
                {
                    if(e.Item != null)
                    e.Item.Target = str;
                }
            }
        }

Jetzt ist es möglich per folgendem Programmcode, das Target Attribut abzurufen. Und diesmal mit Inhalt

w.WriteAttributeString("Target", oItem.Target);

The post Sharepoint, ARF – Menü & Open Link in new window appeared first on Communardo Techblog.


Viewing all articles
Browse latest Browse all 2

Latest Images

Doodle Jump 3.11.30 by Lima Sky LLC

Doodle Jump 3.11.30 by Lima Sky LLC

Vimeo 10.6.2 by Vimeo.com, Inc.

Vimeo 10.6.2 by Vimeo.com, Inc.

Vimeo 10.6.1 by Vimeo.com, Inc.

Vimeo 10.6.1 by Vimeo.com, Inc.

Vimeo 10.6.0 by Vimeo.com, Inc.

Vimeo 10.6.0 by Vimeo.com, Inc.

Re:

Re:

Re:

Re:

Re:

Re:

Re:

Re:

Re:

Re:





Latest Images

Vimeo 10.7.0 by Vimeo.com, Inc.

Vimeo 10.7.0 by Vimeo.com, Inc.

HANGAD

HANGAD

MAKAKAALAM

MAKAKAALAM

Doodle Jump 3.11.30 by Lima Sky LLC

Doodle Jump 3.11.30 by Lima Sky LLC

Doodle Jump 3.11.30 by Lima Sky LLC

Doodle Jump 3.11.30 by Lima Sky LLC

Vimeo 10.6.1 by Vimeo.com, Inc.

Vimeo 10.6.1 by Vimeo.com, Inc.

Vimeo 10.6.0 by Vimeo.com, Inc.

Vimeo 10.6.0 by Vimeo.com, Inc.

Re:

Re:

Re:

Re: