Erstmal vielen Dank an HLMC für das Ausrichten der SharePoint Days. Das Konferenz Center hat super zu der Veranstaltung gepasst!
Auch vielen Dank an die Audience die in meinem Vortrag zum Thema SharePoint meets JavaScript – Schnelle und leichtgewichtige Lösungen per Script war. Ich hatte sehr viel Spaß!

Die Slides habe ich auf Speakerdeck hochgeladen.
https://speakerdeck.com/daniellindemann/sharepoint-meets-javascript-v2

Der Quellcode von den Demos liegt auf GitHub im meinem Code Samples Repository.
https://github.com/daniellindemann/CodeSamples

Der Code kann auch direkt Online angeschaut werden unter https://github.com/daniellindemann/CodeSamples/tree/master/Conferences/2015_SharePointDays/SharePoint%20meets%20JavaScript

Dieses Jahr durfte ich wieder als Speaker auf der Basta sein. Es ist mir immer wieder eine Freude an dem Event teil zu nehmen!
Vielen Dank an die Audience in meinem Vortrag SharePoint meets JavaScript – Schnelle und leichtgewichtige Lösungen per Script. Es hat mir sehr viel Spaß gemacht!

Die Folien dazu gibt es auf Speakerdeck unter https://speakerdeck.com/daniellindemann/sharepoint-meets-javascript .

Die Demos habe ich in mein Code Samples GitHub Repository gepusht.
https://github.com/daniellindemann/CodeSamples

Online einsehbar unter https://github.com/daniellindemann/CodeSamples/tree/master/Conferences/2015_Basta/SharePoint%20meets%20JavaScript

Vielleicht darf ich nächstes Jahr wieder nach Mainz kommen. 🙂

Arbeitet man mit aufwendigen Display Templates, so muss man diese auch manchmal debuggen. Ein einfacher Weg das zu tun ist das Einbauen des JavaScript Befehls debugger in den Display Template Code. Der Befehl macht genau dasselbe wie sein .NET Pendant Debugger.Launch(), nur eben für JavaScript.

Der Befehl funktioniert in Chrome, in Firefox (mit installiertem Firebug) und im Internet Explorer 11.
Die Developer Tools müssen dabei in allen Browsern geöffnet sein

Im Beispiel mit dem Suchergebnis Item:

<html xmlns:mso="urn:schemas-microsoft-com:office:office" xmlns:msdt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882">
<head>
<title>Testelement</title>

<!--[if gte mso 9]><xml>
<mso:CustomDocumentProperties>
<mso:TemplateHidden msdt:dt="string">0</mso:TemplateHidden>
<mso:MasterPageDescription msdt:dt="string">Zeigt die Standardergebniselement-Vorlage an.</mso:MasterPageDescription>
<mso:ContentTypeId msdt:dt="string">0x0101002039C03B61C64EC4A04F5361F385106603</mso:ContentTypeId>
<mso:TargetControlType msdt:dt="string">;#SearchResults;#</mso:TargetControlType>
<mso:HtmlDesignAssociated msdt:dt="string">1</mso:HtmlDesignAssociated>
<mso:ManagedPropertyMapping msdt:dt="string">'Title':'Title','Path':'Path','Description':'Description','EditorOWSUSER':'EditorOWSUSER','LastModifiedTime':'LastModifiedTime','CollapsingStatus':'CollapsingStatus','DocId':'DocId','HitHighlightedSummary':'HitHighlightedSummary','HitHighlightedProperties':'HitHighlightedProperties','FileExtension':'FileExtension','ViewsLifeTime':'ViewsLifeTime','ParentLink':'ParentLink','FileType':'FileType','IsContainer':'IsContainer','SecondaryFileExtension':'SecondaryFileExtension','DisplayAuthor':'DisplayAuthor'</mso:ManagedPropertyMapping>
<mso:HtmlDesignConversionSucceeded msdt:dt="string">True</mso:HtmlDesignConversionSucceeded>
<mso:HtmlDesignStatusAndPreview msdt:dt="string">http://dl-sp15l:40510/sites/s01/_catalogs/masterpage/Display Templates/Custom/Item_Test.html, Konvertierung erfolgreich.</mso:HtmlDesignStatusAndPreview>
</mso:CustomDocumentProperties>
</xml><![endif]-->
</head>
<body>
    <div id="Item_Test">
<!--#_
        if(!$isNull(ctx.CurrentItem) && !$isNull(ctx.ClientControl)){
            debugger;
            var id = ctx.ClientControl.get_nextUniqueId();
            var itemId = id + Srch.U.Ids.item;
			var hoverId = id + Srch.U.Ids.hover;
			var hoverUrl = "~sitecollection/_catalogs/masterpage/Display Templates/Search/Item_Default_HoverPanel.js";
            $setResultItem(itemId, ctx.CurrentItem);
			if(ctx.CurrentItem.IsContainer){
				ctx.CurrentItem.csr_Icon = Srch.U.getFolderIconUrl();
			}
			ctx.currentItem_ShowHoverPanelCallback = Srch.U.getShowHoverPanelCallback(itemId, hoverId, hoverUrl);
            ctx.currentItem_HideHoverPanelCallback = Srch.U.getHideHoverPanelCallback();
_#-->
            <div id="_#= $htmlEncode(itemId) =#_" name="Item" data-displaytemplate="DefaultItem" class="ms-srch-item" onmouseover="_#= ctx.currentItem_ShowHoverPanelCallback =#_" onmouseout="_#= ctx.currentItem_HideHoverPanelCallback =#_">
				_#=ctx.RenderBody(ctx)=#_
                <div id="_#= $htmlEncode(hoverId) =#_" class="ms-srch-hover-outerContainer"></div>
            </div>
<!--#_
        }
_#-->
    </div>
</body>
</html>
Debugger startet im JavaScript

Debugger startet im JavaScript

Möchte man SharePoint Ribbon Commands wiederverwenden, um z.B. einen Button in einem PageLayout mit einer Funktion des Ribbons auszustatten, kann man das sehr einfach über eine Zeile Javascript-Code bereitstellen:

SP.Ribbon.PageManager.get_instance().get_commandDispatcher().executeCommand(<CommandName>, <OptionalParameters>);

 

Die Commands kann man sehr gut aus der CMDUI.XML lesen.

Hier ein Beispiel für den Ordner erstellen Dialog:

SP.Ribbon.PageManager.get_instance().get_commandDispatcher().executeCommand("NewFolder",null);


Notice: Undefined index: access_token in D:\home\site\wwwroot\wp-content\plugins\pwebonedrive\liveconnect.php on line 641

Fatal error: Uncaught Error: Call to undefined method PWebOneDrive::get_error_message() in D:\home\site\wwwroot\wp-content\plugins\pwebonedrive\site.php:690 Stack trace: #0 D:\home\site\wwwroot\wp-content\plugins\pwebonedrive\site.php(461): PWebOneDrive->get_file() #1 D:\home\site\wwwroot\wp-includes\shortcodes.php(356): PWebOneDrive->file_shortcode() #2 [internal function]: do_shortcode_tag() #3 D:\home\site\wwwroot\wp-includes\shortcodes.php(228): preg_replace_callback() #4 D:\home\site\wwwroot\wp-includes\class-wp-hook.php(303): do_shortcode() #5 D:\home\site\wwwroot\wp-includes\plugin.php(189): WP_Hook->apply_filters() #6 D:\home\site\wwwroot\wp-includes\post-template.php(253): apply_filters() #7 D:\home\site\wwwroot\wp-content\themes\flat\content.php(20): the_content() #8 D:\home\site\wwwroot\wp-includes\template.php(772): require('D:\\home\\site\\ww...') #9 D:\home\site\wwwroot\wp-includes\template.php(716): load_template() #10 D:\home\site\wwwroot\wp-includes\general-template.php(204): locate_template() #11 D:\home in D:\home\site\wwwroot\wp-content\plugins\pwebonedrive\site.php on line 690