Upgrade projektu SharePoint 2010 na 2013

Ve Visual Studiu asi zatím není žádná možnost jak převést existující projekt pro SharePoint 2010 na 2013, řešení je však jednoduché, vyžaduje však trošku práce v poznámkovém bloku.

[more]

  • otevřete soubor projektu csproj v poznámkovém bloku
  • změňte verzi .NET Frameworku na <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
    image
  • změňte element pro určení cílové verze SP na <TargetOfficeVersion>15.0</TargetOfficeVersion>
    image
  • přepište všechny reference na assembly SharePointu z verze 14.0.0.0 na 15.0.0.0
  • následně je nutné projít celý projekt, všechny ASCX a ASPX soubory a přepsat všechny výskyty 14.0.0.0 na 15.0.0.0 a to samé pro CONTROLTEMPLATES, kde je potřeba provést změnu z ~/_controltemplates/.. na ~/_controltemplates/15/
  • otevřete soubor Package\Template.xml a přidejte atribut SharePointProductVersion=“15.0″:
    image
  • otevřete Package\Package.package a přidejte atribut sharePointProductVersion=“15.0″
    image

SharePoint 2013 – ve znamení zásadních koncepčních změn

Stále ještě není SharePoint 2013 v RTM verzi, některé změny jsou však již definitivní a velká část z nich také ovlivní dosavadní chápání vývoje na této platformě, nejen vždy pozitivně. Architektura zůstává v podstatě bez změn, stále je SP strukturovaný jako farma, webová aplikace, kolekce webů, weby, servisní aplikace, joby atd. Dokonce i UI je z pohledu vývojáře nezměněné, pořád se staví všechno na ribbonu a CustomActions – velký důraz je nyní ale kladen na asynchronní zpracování na klientské straně, tedy přímo v browseru – nový typ aplikací pro SharePoint 2013 nemá přístup k serverovému API, veškeré akce probíhají na klientské straně – a to včetně renderingu webpart – to samozřejmě zásadním způsobem boří dosud zažité způsoby vývoje v .NET/C#, nynější verze nutí vývojáře k javascriptu, REST, JSON, potažmo WCF – což pro jednoduché aplikace může znamenat nepodstatné zvýšení pracnosti.

[more]

  • Sandboxed solutions – už je mrtvé a přitom přišlo teprve s verzí 2010, ve verzi 2013 je již označeno jako Deprecated!!! Na MSDN je k verzi 2010 doporučení, že by to měla být hlavní a jediná správná cesta vývoje, ve verzi 2013 je všechno jinak a všichni kdo pracně upravovali řešení pro podporu sandbox módu mohou jenom zaplakat.
  • Klasický mód autentifikace již není dostupný při vytváření nové webové aplikace, defaultně jsou všechny nové aplikace v claims módu (je možné ještě obejít vytvořením webové aplikace pomocí PowerShellu – nebudou ale fungovat některé nové služby, které claims vyžadují pro server-to-server authentifikaci – S2S)
  • Workflow – těsná integrace s Azure – procesy nyní budou hostované buď přímo v cloudu Azure nebo on premise instanci Azure kontejneru.
  • Workflow – deklarativní workflow – s přechodem na nový .NET Framework 4.0 se kompletně mění i způsob implementace, kdy nyní nebude možné vytvářet programové/kódované workflow, ale pouze deklarativní – pokud budete potřebovat vykonat vlastní programový kód z WF, dle Microsoftu je správná cesta vytvoření vlastní WCF služby a zavolání její funkce z WF pomocí připravených aktivit. Změna koncepce má ale i svoje výhody – nyní bude možné v SharePoint Designeru jednoduše vytvářet v pracovních procesech smyčky a složitější flowchart procesy, kdy je také možné se vrátit do předchozího kroku – tedy mnohem flexibilnější procesy než bylo možné vytvářet pomocí stavového stroje (state machine)
  • Workflow bude možné spouštět i nad záznamy z externího zdroje obsahu – External Content Types
  • Event Receivers – je možné registrovat i pro External Content Types, nově bude také možné zachytávat další a tolik chybějící zprávy: ItemVersionDeleting, GroupAdding, GroupUpdating, GroupDeleting, GroupUserAdding, GroupUserDeleting, RoleDefinitionAdding, RoleDefinitionUpdating, RoleDefinitionDeleting, RoleAssignmentAdding, RoleAssignmentDeleting, InheritanceBreaking, InheritanceRestoring, ItemVersionDeleted, GroupAdded, GroupUpdated, GroupDeleted, GroupUserAdded, GroupUserDeleted, RoleDefinitionAdded, RoleDefinitionUpdated, RoleDefinitionDeleted, RoleAssignmentAdded, RoleAssignmentDeleted, InheritanceBroken, and InheritanceRestored
  • Remote Event Receivers – při definici se neuvádí třída v assembly, ale WCF služba, kterou SharePoint vykonává
    http://msdn.microsoft.com/en-us/library/jj220048(v=office.15).aspx
  • WCM – Web Content Management konečně umožňuje snadný vývoj designu a vůbec všech úprav pomocí jakýchkoliv aplikací třetích stran, tedy nikoliv jen v SharePoint Designeru (nyní je pomocí webdav knihovna layoutů a masterpages viditelná). Další podstatnou novinkou je možnost vytváření katalogových řešení, automatické mapy webu, URL kustomizace a další “SEO” nice-to-have vlastnosti.
  • Javascriptové API (CSOM)– rozšířeno o další sadu funkcí pro MarketPlace, sociální funkce, klientské webparty, správu workflow, aplikační služby atd.
    JavaScript API reference for SharePoint 2013 – http://msdn.microsoft.com/en-us/library/jj193034(v=office.15)

 

Ze všech změn je cítit silná snaha Microsoftu odříznout vývojáře doplňků od serverového API a doslova je vypudit ze svého prostoru – logiku to samozřejmě má, Microsoft si snaží usnadnit život s bojem proti některým nešetrným vývojářským praktikám, které různé blokují servery, zvyšují latenci a nejsou z jejich pohledu bezpečné pro distribuci skrz MarketPlace. První náznak přišel už s verzí 2010, kdy byl zaveden tzv. List View Threshold – ze zkušenosti ale vím, že to ničemu zásadnímu nepomohlo, vývojáři stále používají staré dobré foreach(SPList.Items) a další libůstky, ideálně úplně vypnou SPList.EnableThrottling. Tak se zjevně MS dopálil a zkouší jinou cestu…

HTML5 MasterPage (V5) pro SharePoint 2010

Kyle Schaeffer vytvořil a dal k dispozici jednoduchou SharePoint MasterPage  postavenou na HTML5 a CSS3, nazval jí v konvenci SharePointu jako “v5.master”, určitě stojí za shlédnutí pro inspiraci. Šablona používá responsivní design, tedy vzhled, který se automaticky přizpůsobuje velikosti displaye zařízení uživatele.

http://kyleschaeffer.com/sharepoint/v5-responsive-html5-master-page/

Zobrazení pro desktopy/notebooky:

v5-large

Zobrazení pro tablety:

[more]

v5-medium

Mobilní zobrazení:

v5-small

Nezbývá než dodat, Great Job Kyle!

SharePoint 2013 (v15) bude obsahovat mimo jiné i Marketplace

windowsmarketplaceformobile30.1.2012 vydal Microsoft první veřejnou ukázku API dokumentace k připravované nové verzi SharePointu 15 (SharePoint 15 Technical Preview Interoperability API Documentation), obsahující hned několik velice zajímavých tříd, ze který se dá usoudit, že Marketplace (App Store) konečně zavítá i do prostředí SharePointu a snad i usnadní instalaci dalších addonů.

Ukázková dokumentace totiž obsahuje nové objekty a funkce tomu napovídající:

[more]

  • SPApp – reprezentuje aplikaci (addon), která je připravená pro deploy na některou z dostupných webových aplikací SharePointu.
  • SPAppCatalog –  v podstatě kolekce objektu SPAppInstance, tedy objekt pro enumeraci všech aktuálně nainstalovaných aplikací.
  • SPAppInstance – objekt pro práci s již nainstalovanými aplikacemi (addony), respektive s jejich instancemi.

Dle definice výčtového typu Microsoft.SharePoint.Administration.DatabaseProvider.PackageSource lze přepokládat, že bude možné balíčky agregovat a instalovat z více možných zdrojů, tedy nikoliv pouze z jednoho úložiště provozovaného Microsoftem, definice obsahuje volby:

  • Store Front
  • Corporate Catalog
  • Developer Site
  • Object Model
  • Remote Object Model
    sharepoint-2013-packagesource-enumeration

U SharePointu v reálu není vše růžové jak vypadá na prezentačních slidech, na to jsme si už asi všichni zvykli, App Store bude dle mého názoru podporovat jen řešení typu Sandbox, které je stále díky svým velkým omezením v praxi pro jakoukoliv jen trošku složitější aplikaci nepoužitelné, ale nechme se překvapit, třeba budou změny i v tomto směru.

Aby byl App Store funkční a použitelný, musí logicky obsahovat zabudované licenční framework, a tak tomu v SDK také je, například objekt SPWebApplication byl rozšířen o novou funkci IsUserLicensedForEntity(), která slouží pro kontrolu uživatelské licence k dané aplikaci.

V SDK je i zmínka o typech licencí:

  • PerpetualMultiUser
  • PerpetualAllUsers
  • TrialMultiUser
  • TrialAllUsers

Zatím se tedy předpokládá jak zkušení trial verze, tak i podpora licencování na uživatele, tedy obdoba CAL pro licencování custom addonů, případně i pokrytí celé farmy bez omezení uživatelů.

Podpora OAuth

V API dokumentaci je také zmíněna podpora autentifikačního protokolu OAuth. Tento otevřený autentizační protokol, pokud ho již neznáte, umožňuje sdílet uživatelská data (informace o uživateli, fotografie, dokumenty) napříč webovými aplikacemi bez nutnosti znovu se přihlašovat ke každé aplikaci zvlášť. Tento moderní autentizační protokol využívá celá řada známých portálů, jako například LinkedIn, Twitter, Facebook. Využití je tedy nasnadě, můžeme se v SharePoint dočkat například v MySites provázanosti na LinkedIn, kde ostatní uživatelé uvidí Vaše zpřístupněná data a vazby a spojení na této sociální síti, data z Twitteru se budou zobrazovat ve vašem statusu a opačně. Otevírá se tím celá řada možností, uvidíme jak si tuto vizi Microsoft představuje, zatím moc veřejných informací není.

Moje největší přání ale Microsoft zjevně nevyslyší, chtěl bych pokud možno zamrazit implementaci veškeré nové funkcionality a místo toho aby se udělal kompletní bugfixing všech těch tolik otravných a nesmyslných chyb, programátorských hacků, které se s SharePointem táhnou snad už od verze 1.0. Chápu, že bugfixing neprodává tolik jako Market Place, ale někdy je to při vývoji a implementaci hodně o nervy a už i tak stačí, že komunita SharePointu se nerada dělí o jakékoliv své zkušenosti (o ČR ani nemluvě).

Nezbývá než se těšit na nějaké nové informace o SharePoint vNext. Jak moc se nové uživatelské rozhraní Metro podepíše na nové verzi? Zůstanou ribbony?

SharePoint Designer 2010 – The list of workflow actions on the server references an assembly that does not exist

Při vytvoření nového workflow vznikne chyba:

„The list of workflow actions on the server references an assembly that does not exist. Some actions will no be available. The assembly strong name is Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c. Contact your administrator for more information.“

Po dlouhém pátrání a provaření spousty hodin jsem přišel na to, že v nějaké kumulativní aktualizaci Microsoft do Foundation přidal custom actions pro SP Server ;-/ A tedy reference na neexistující DLL assembly.

Oprava je prostá, stačí tyto custom actions smazat nebo přejmenovat koncovku souboru .ACTION na něco jiného, soubory jsou umístěny dle aktuální jazykové verze:

[more]

pro češtinu:

C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\1029\Workflow

pro angličtinu:

C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\1033\Workflow

v tomto umístění odstraňte (a zálohujte si tento soubor) soubor MOSS.ACTIONS:

image

Restartuje IIS a zavřete SP Designer, hotovo.

SharePoint: Odstranění konfigurační cache

SharePoint je plný magie, nainstalujete a nakonfigurujete farmu, všechno běží jak má, uplyne několik týdnů či měsíců a najednou se začne celá farma chovat nedeterministicky (možná po instalaci nějakých CU), v logu se zobrazují hlášky jako "Cannot connect to the configuration database”, SqlException, padá služba časovače Windows SharePoint Services Timer V4, nespouštějí se workflow nebo padají na chyby atd.

Příčina porušení konfiguračních XML cache mi není jasná, nečekaný výpadek elektrického proudu a nekonzistentní stav? Nevím. V každém případě sám SharePoint  není schopen tento stav opravit a je nutné znovu přegenerovat tyto soubory.

  • Otevřete Administrative Tools a Services
  • Zastavte službu Windows SharePoint Services Timer V4 (případně pomocí příkazu net stop sptimerv4)
  • Otevřete pomocí Exploreru cestu %ALLUSERSPROFILE% \Application Data\Microsoft\SharePoint\Config\
  • Tato cesta obsahuje několik adresářů ve tvaru GUID, odstraňte veškerý obsah těchto adresářů – samotný adresář s název ve tvaru GUID musí zůstat!!! Pouze jejich obsah smažte.
  • Znovu spusťte službu Windows SharePoint Services Timer V4 (případně pomocí příkazu net start sptimerv4)
  • Mělo by dojít k automatickému vygenerování nových konfiguračních XML souborů
  • Restartujte IIS server pomocí IISRESET.EXE
  • Hotovo

Error 348: Compilation failed. Unable to load one or more of the requested types. Retrieve the LoaderExceptions property for more information.

Tuto chybu jsem tak nějak nepochopil, zřejmě je to bug ve Visual Studiu 2010. Projekt nelze kompilovat a hlásí to chybu “error 348: Compilation failed. Unable to load one or more of the requested types. Retrieve the LoaderExceptions property for more information.”

Na jediné řešení na které jsem přišel je, že je potřeba otevřít .csproj v poznámkovém bloku a odstranit elementy <ProjectTypeGuids>, následně znovu otevřít projekt.

Zvláštní, ale funguje to.

Fix „Render Failed“ Error on Groupby View using Jquery

I recently encountered this error “&lt;!– #RENDER FAILED –&gt”.

clip_image001

I found the cause for it after searching and browsing various posts and comments about this error.

Cause:

Well it is a bug and hasnt been fixed anyway the below are the steps/combinations that cause it.

  1. Calculated Field from another list is being used as Lookup Column value in your list.
  1. Group By the Look Up field (linked to Calculated Field in other List)
  1. Group Setting: Collapsed.

Solution: [more]Apparently from the forums I visited turning Collapsed to Expanded in group setting fixes it and it does. Woo Hoo!.

But the problem is Collapsed setting is used to save real estate and this fix defeats that purpose.

clip_image002

Fixing with Group settings Collapsed

I had read about this Collapsing all Groups feature post at end user SharePoint  by Paul Grenier using Jquery and that seemed like a perfect candidate for this.  In This solution we shall turn Group setting to Expanded and use JavaScript to collapse on load.

Steps:

  1. Set the Group Setting to Expanded ( this will fix the error)
  2. Use the collapse all code Paul Grenier provides fire it during load.
    1. Add  Content Editor to the Page
    2. Click Edit Web Part and Add the Code below to Source Editor section of the Web Part and in Appearance Section select frame type as “None”.

<script src=“http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js“ type= „text/javascript“>

</script>
<script type=“text/javascript“>
function collapseGroups() {
$(„img[src=’/_layouts/images/minus.gif‘]:visible“).parent().click();
}

_spBodyOnLoadFunctionNames.push(„collapseGroups“);
</script>

3. This will Collapse your Expanded Groups.

clip_image003

Done!

Issues with this method: I think in regular Group “Expand Collapse” SharePoint remembers your last collapse or group by setting. This script will ignores all that and collapses everything on Page Load

SharePoint 2010 Recuring Meeting Workspace error ‚g_InstanceID‘ is undefined

Pokud používáte vlastní masterpage definovanou a odvozenou V4.master, nebude vám fungovat levé kalendářové menu a další akce ve webech založených na šabloně “Centrum schůzek”. Vždy dojde k zobrazení javascriptové chyby v podobě:

 

Pro podporu webu “Centrum schůzek” běžícím na vlastní globální master page je potřeba přidat do vašeho souboru *.master následující registrace:

[more]

Do hlavičky souboru:

<%@ Register Tagprefix=“Meetings“ Namespace=“Microsoft.SharePoint.Meetings“ Assembly=“Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c“ %>

A do těla HTML (BODY tagu) přidat:

<Meetings:PropertyBag runat=“server“/>

Nový nástroj rozšiřující možnosti extranetů pro SharePoint 2010

Vydali jsme novou verzi FBA Suite 2010 pro SharePoint 2010 (Foundation i Server).

FBA Suite je nástrojem pro kompletní správu uživatelů mimo sensitivní Active Directory, uložených například v SQL Membership databázi. Tím je možné zcela oddělit interní uživatele společnosti od uživatelů extranetu, přináší to navíc výhody v možnosti delegace správy externích uživatelů na správce daného SharePoint webu, tedy uživatele nemající oprávnění pro jakoukoliv modifikaci podnikové Active Directory. Pomocí FBA Suite však mohou “obyčejní” správci SharePoint webu kompletně spravovat extranetové uživatele, editovat jejich vlastnosti a zařazení do skupin, resetovat hesla, schvalovat nové automatické registrace, odblokovat účty při překročení chybných pokusů zadání hesla atd.

users

FBA Suite tak umožnuje přetvořit SharePoint do dosud nemožných aplikací, typů self-registračních komunitních webů, helpdesků/bug tracking aplikací, blogů s možností vlastní registrace, korporátních publikovaných webů s možností registrace pro přístup k dalším zdrojům společnosti atd. Možných aplikací tohoto řešení je nespočet.

Řešení obsahuje také řadu dalších užitečných vlastností:[more]

  • Nastavení politiky automatické expirace hesel
    passexpiration
  • Notifikace před expirací hesla
    passexpirationnotification
  • Dávkový import uživatelů z CSV
    bulkuserimport2
  • Připravenou custom stránku pro přihlášení k portálu (obsahující zaslání zapomenutého hesla a registraci nového uživatele)
    loginpage2
  • Webpartu pro self-registraci nového uživatele
    registrationwp
    Registrační webpartu je možné nastavit do módu, kdy vyžaduje od uživatele potvrzení, že souhlasí s podmínkami, které lze rovněž v nastavení jakkoliv změnit:
    requireagree
  • Webparta zapomenuté heslo
    forgottenpassword
  • Nastavení šablon zasílaných emailů
    emailtemplates
  • uživatelské menu pro snadnou změnu hesla, případně QA pro aktuálně přihlášeného uživatele
    usermenu
  • a mnoho dalších vychytávek, které SharePoint sám o sobě neobsahuje.

Po dobu platnosti licence (mimo Trial verze jsou placené licence vždy časově NEomezené!) má zákazník nárok na neomezenou možnost stahovat nové verze FBA Suite pro SharePointu 2010 bez jakýchkoliv poplatků.

Více na: http://www.fbasuite.com