HttpHandler pro SharePoint 2013

Zde je postup, jak vytvořit HttpHandler pro SharePoint 2010/2013.

Založit soubor AjaxHandler.cs

using System;
using System.Web;
using Microsoft.SharePoint;

namespace MyNamespace
{
    public class AjaxHandler : IHttpHandler
    {
        public bool IsReusable
        {
            get { return false; }
        }
         
        public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = "text/plain";
            context.Response.CacheControl = "no-cache";
            context.Response.AddHeader("Pragma", "no-cache");
            context.Response.Expires = -1;
            context.Response.Write("Vysledek");
        }
    }
}

Založit soubor AjaxHandler.ashx do adresáře Assembly/Layouts/MojeReseni/

<%@ Assembly Name="Microsoft.SharePoint, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<%@ Assembly Name="MyDLL, Version=1.0.0.0, Culture=neutral, PublicKeyToken=a8b85743f45aceb0" %>
<%@ WebHandler Language="C#"  Class="MyNamespace.AjaxHandler" %>

Odkazy
Deploying an ASP.NET HttpHandler to SharePoint 2010

CCS3 - fonty do HTML stránek

  • Vybrat typ písma ze seznamu http://www.google.com/fonts a kliknout na ikonu "Quick-use"
  • Do <HEAD> vložit vygenerovaný kod pro import fontu
    <link href='http://fonts.googleapis.com/css?family=Krona+One' rel='stylesheet' type='text/css'>
    
  • Do <HEAD> vložit javacript pro načtení fontu do stránky
    <script type="text/javascript">
      WebFontConfig = {
        google: { families: [ 'Krona+One::latin' ] }
      };
      (function() {
        var wf = document.createElement('script');
        wf.src = ('https:' == document.location.protocol ? 'https' : 'http') +
          '://ajax.googleapis.com/ajax/libs/webfont/1/webfont.js';
        wf.type = 'text/javascript';
        wf.async = 'true';
        var s = document.getElementsByTagName('script')[0];
        s.parentNode.insertBefore(wf, s);
      })(); 
    </script>
  • Do CSS souboru vložit definici fontu, např.
    H1 {
        font-family: 'Krona One', sans-serif;
    }

Odkazy
http://www.w3schools.com/css/css3_fonts.asp
http://www.google.com/fonts

JavaScript (jQuery) - jak převzít existující funkci

Problém
Mám hotovu stránku, např. v SharePointu. Při ukládání (kliknutí na tlačítko "Uložit") potřebuji před odeslání provést ještě nějakou svoji akci.

Řešení
Musím převzít stávající funkci a vložit ji do nové funkce, která bude obsahovat moji část kódu.

Kód
HTML

<button .... OnSelectDate="function(resultfield, date);" />

JavaScript

$(document).ready(function() {
    window['oldDatePickerClose'] = OnSelectDate;
    OnSelectDate = function(resultfield, date){
        alert("Moje akce");
        window['oldDatePickerClose'](resultfield, date);
    };
});

Html text v error stránce

Potřeboval jsem zvýraznit v standardní SharePoint chybové stránce určitý text, tzn. poslat na chybovou stránku HTML formátovaný text.

Defaultně to nelze, ale našel jsem řešení.

  1. Najít adresář
    C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\LAYOUTS\
  2. Najít soubor
    error.aspx
  3. Upravit obsah souboru
    > Najít control SharePoint:FormattedString s ID = LabelMessage
    > Zaměnit v EncodeMethod hodnotu HtmlEncodeAllowSimpleTextFormatting za NoEncode
    >
    Uložit

A už to funguje.

Odkazy
Více informací o vlastnostech formátování EncodeMethod

EventReceiver - kontrola duplicity položky

Problém
Mám custom list, kde se vkládají kontakty na firmy. Uživatele vkládají název (povinný údaj), IČ (není povinný údaj) a adresa apod.
Potřebuji kontrolovat, jestli už vložené IČ není někde použito.

Řešení
Použít EventReceiver a třídu ItemAdding.

Kód

public override void ItemAdding(SPItemEventProperties properties)
{
    base.ItemAdding(properties);

    //nacte obsah pole
    var tmp = properties.AfterProperties["FieldIC"];

    //pokud není pole prázdne, pokračuje v kontrole
    if (tmp != null && !string.IsNullOrEmpty(tmp.ToString()))
    {
        SPSecurity.RunWithElevatedPrivileges(delegate()
        {
            using (SPSite site = new SPSite(properties.OpenSite().ID))
            {
                using (SPWeb web = site.OpenWeb())
                {
                    bool isExists = false; 
                    //provést kontrolu, jestli IČ již neexistuje    

                    //pokud záznam existuje, vyhodí vyjimku
                    if (isExists)
                    {
                        properties.Status = SPEventReceiverStatus.CancelWithError;
                        properties.Cancel = true;
                        properties.ErrorMessage = "IČ je již v kontaktech použito.";
                    }
                }
            }
        });
    }
}

Práce s Base64 v C#

Zde je třída pro práci s Base64 hodnotami.

public class Base64
{
    /// <summary>
    /// Provede Encoding
    /// </summary>
    /// <param name="toEncode">vstupni hodnota</param>
    /// <returns>Base64 vystup</returns>
    public static string EncodeTo64(string toEncode)
    {
        byte[] toEncodeAsBytes = System.Text.Encoding.Unicode.GetBytes(toEncode);
        return System.Convert.ToBase64String(toEncodeAsBytes);
    }

    /// <summary>
    /// Provede decoding
    /// </summary>
    /// <param name="encodedData">vstupni hodnota v Base64</param>
    /// <returns>dekodovany vystup</returns>
    public static string DecodeFrom64(string encodedData)
    {
        byte[] encodedDataAsBytes = System.Convert.FromBase64String(encodedData);
        return System.Text.Encoding.Unicode.GetString(encodedDataAsBytes);
    }
}

SharePoint 2013 - Certifikace

Microsoft Certified Solutions Developer (MCSD)

Potřebné zkoušky:

  • Programming in HTML5 with JavaScript and CSS3
    Exam 70-480, Testy
    Zdroje infromací: W3C CSS3 , W3C HTML5

  • Developing ASP.NET MVC 4 Web Applications
    Exam 70-486, Testy

  • Developing Microsoft SharePoint Server 2013 Core Solutions
    Exam 70-488, Testy

  • Developing Microsoft SharePoint Server 2013 Advanced Solutions
    Exam 70-489, Testy

Více informací na microsoft.com/learning

Microsoft Certified Solutions Expert (MCSE)

Potřebné zkoušky:

  • Installing and Configuring Windows Server 2012
    Exam 70-410, Testy

  • Administering Windows Server 2012
    Exam 70-411, Testy

  • Configuring Advanced Windows Server 2012 Services
    Exam 70-412, Testy

  • Core Solutions of Microsoft SharePoint Server 2013
    Exam 70-331, Testy

  • Advanced Solutions of Microsoft SharePoint Server 2013
    Exam 70-332, Testy

Po splnění zkoušek 70-410, 70-411 a 70-412 obdrží zkoušený certifikát Microsoft Certified Solutions Associate (MCSA): Windows Server 2012.

Více informací na microsoft.com/learning

SharePoint 2013 - CU / SP

Zde je seznam Cumulative Update a Service Pack pro SharePoint 2013. Tento seznam se bude postupně rozšiřovat.

October 2013 update

August 2013 update

June 2013 update

April 2013 update

March 2013 update

SharePoint 2010 - nástroje II.

SharePoint 2010 FBA Pack

Projekt, který obsahuje následující webparty a stránky:

  • Membership Request Web Part
  • Change Password Web Part
  • Password Recovery Web Part
  • Change Password Page
  • User Management
  • Role Management
  • Membership Review
  • FBA Pack Configuration

http://sharepoint2010fba.codeplex.com/

Free SharePoint 2010 Theme

GreenShade
http://www.topsharepoint.com/greenshade-free-sharepoint-2010-theme

Tendance
http://www.topsharepoint.com/tendance-free-sharepoint-2010-theme

Synesthesia
http://www.topsharepoint.com/synesthesia-%e2%80%93-free-sharepoint-2010-theme

Starter Master Pages for SharePoint

http://startermasterpages.codeplex.com/

Microsoft SharePoint 2010 Administration Toolkit v2.0

http://www.microsoft.com/en-us/download/details.aspx?id=20022

Squadron for SharePoint 2010

http://www.sharepointcto.com/Squadron/

WebParts I.

.NET AND SHAREPOINT METEO COMPONENTS

Předpověd počasí
[FREE, SharePoint 2003, 2007]
http://meteo.codeplex.com/

Advanced WebParts

http://webparts.codeplex.com/

AJAX SharePoint List Rotator WebPart

http://www.sharepointsecurity.com/sharepoint/sharepoint-development/ajax-sharepoint-list-rotator-webpart/

Basic SharePoint List search / filter WebPart

http://splistfilter.codeplex.com/

Free Server Name WebPart Which WFE Is Servicing a SharePoint Request

http://www.sharepointsecurity.com/sharepoint/sharepoint-development/free-server-name-webpart-which-wfe-is-servicing-a-sharepoint-request/

RSS Reader Web Part

http://rssreaderwebpart.codeplex.com/

SharePoint 2010 EUPC beta

http://sourceforge.net/projects/sharepoint2010e/

SharePoint 2010 Google Maps V3 WebPart

http://spgooglemappart.codeplex.com/

Sharepoint Upload Document Web part

http://spupload.codeplex.com/

SharePoint Weather Web Part

http://weatherwebpart.codeplex.com/

SimpleSecurity SharePoint WebPart for Easing SharePoint Security

http://www.sharepointsecurity.com/sharepoint/sharepoint-security/simplesecurity-sharepoint-webpart-for-easing-sharepoint-security/

SPTU - SharePoint Tools and Utilities

http://sptu.codeplex.com/

Timer Web Part

http://timerwebpart.codeplex.com/

Secure SharePoint Silverlight Web Part - Silverlight Security & Auditing

http://securesilverlight.codeplex.com/

World Time

http://www.pentalogic.net/sharepoint-products/world-time

O blogu

Tento blog je místem, kde sdílím své zkušenosti, části zdrojových kódů, odkazy apod. Zdroje jsou zaměřeny převážně na problematiku portálového řešení SharePoint a vývoj webů v prostředí Microsoft. Mým cílem není úplně obsahnout konkrétní řešení, ale pouze tu část, kterou potřebuji. Pokud se problematika obsáhlejší, jsou pod článkem odkazy na související informace.

O autorovi

Oldřich Zátopek
Zabývám se vývojem webových aplikací internet/intranet na Microsoft technologiích. Hlavní specializace je SharePoint. LinkedIn