Friday, November 27, 2015

Monday, November 23, 2015

Update date friendly format for all lists in a site collection

Add-PSSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue
$site= Get-SPWeb "SITEURL"
$ColumnName ="Modified"
foreach ($web in $site.Site.AllWebs)
{
    Write-Host "Updating Site: " $web.Title
    for ($i=0; $i -lt $web.lists.count; $i++)
    {
        $list = $web.lists[$i]
        Write-Host $List.Title
        if($list.fields.ContainsField($ColumnName))
        {
            $column = $list.Fields[$ColumnName]
            $column.FriendlyDisplayFormat = [Microsoft.SharePoint.SPDateTimeFieldFriendlyFormatType]::Disabled
            $column.Update()
            Write-Host "Field type updated on: $($list.Title)"
        }
    }
    $web.Dispose();
}

Wednesday, November 18, 2015

Promise to overcome async

promise = new Promise(function(resolve, reject) {
     var ctxr = new SP.ClientContext(siteUrl);
     var oList = ctxr.get_web().get_lists().getByTitle('LISTNAME');
     var camlQuery = new SP.CamlQuery();
     .
     .
     .
     ctxr.executeQueryAsync(onQuerySucceeded, onQueryFailed);
});

Tuesday, November 17, 2015

Using client people picker

 initializePeoplePicker('<peoplePickerDivId>', "");

People picker values can be read by

        var peoplePicker = SPClientPeoplePicker.SPClientPeoplePickerDict.peoplePickerDiv1_TopSpan;
        var users = peoplePicker.GetAllUserInfo();
        var usersArr = new Array();
        var userInfo = '';
        for (var i = 0; i < users.length; i++) {
            usersArr.push(SP.FieldUserValue.fromUser(users[i].Key));
            alert(SP.FieldUserValue.fromUser(users[i].Key).get_lookupValue());
        }

function initializePeoplePicker(peoplePickerElementId, strUser) {
    var schema = {};
    schema['PrincipalAccountType'] = 'User,DL,SecGroup,SPGroup';
    schema['SearchPrincipalSource'] = 15;
    schema['ResolvePrincipalSource'] = 15;
    schema['AllowMultipleValues'] = true;
    schema['MaximumEntitySuggestions'] = 50;
    schema['Width'] = '280px';
    if (strUser != "") {
        this.SPClientPeoplePicker_InitStandaloneControlWrapper(peoplePickerElementId, null, schema);
        var peoplePicker = eval("this.SPClientPeoplePicker.SPClientPeoplePickerDict." + peoplePickerElementId + "_TopSpan");
        peoplePicker.AddUserKeys(strUser);
    } else {
        this.SPClientPeoplePicker_InitStandaloneControlWrapper(peoplePickerElementId, null, schema);
    }
}

Tuesday, September 1, 2015

Deleting List Items Using ProcessBatchData

private static void DeleteItems(){
using (SPSite oSite = new SPSite(<SiteUrl>))
                    {
                        using (SPWeb oWeb = oSite.OpenWeb())
                        {
                            SPList oList = oWeb.Lists[<ListName>];
                            SPQuery oQuery = new SPQuery();
                            oQuery.Query = "<Where><Eq><FieldRef Name='<ColumnName>' /><Value Type='Text'>"<ColumnValue>"</Value></Eq></Where>";
                          
                            SPListItemCollection listItem = oList.GetItems(oQuery);                          
                            StringBuilder sbDelete = new StringBuilder();
                            string xmlFormat = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>";
                            sbDelete.Append(xmlFormat);
                            sbDelete.Append("<Batch>");
                            string buildQuery = "<Method><SetList Scope=\"Request\">" + oList.ID + "</SetList>";
                            buildQuery = buildQuery +
                            "<SetVar Name=\"ID\">{0}</SetVar><SetVar Name=\"Cmd\">Delete</SetVar></Method>"; foreach (SPListItem item in listItem)
                            {
                                sbDelete.Append(string.Format(buildQuery, item.ID.ToString()));
                            }
                            sbDelete.Append("</Batch>");
                            oWeb.ProcessBatchData(sbDelete.ToString());
                        }
                    }
                });
}

Wednesday, August 26, 2015

Download version documents from SharePoint document library

private static void DownloadVersion()
        {
            using (ClientContext clientContext = new ClientContext("siteurl"))
            {

                NetworkCredential credentials = new NetworkCredential("username", "password", "domain");
                clientContext.Credentials = credentials;
                Web web = clientContext.Web;
                clientContext.Load(web);
                clientContext.ExecuteQuery();

                Microsoft.SharePoint.Client.File sourceFile = web.GetFileByServerRelativeUrl(web.ServerRelativeUrl + "/Documents/Test.docx");

                clientContext.Load(sourceFile, item => item.Name);
                clientContext.ExecuteQuery();

                var versions = sourceFile.Versions;
                clientContext.Load(versions);

                var oldVersions = clientContext.LoadQuery(versions.Where(v => v != null));
                clientContext.ExecuteQuery();

                string pathUser = Environment.GetFolderPath(Environment.SpecialFolder.UserProfile);
                string pathDownload = Path.Combine(pathUser, "Downloads");

                if (oldVersions != null)
                {
                    foreach (Microsoft.SharePoint.Client.FileVersion _version in oldVersions)
                    {
                        clientContext.Load(_version, item => item.VersionLabel);
                        clientContext.ExecuteQuery();

                        if (!Directory.Exists(pathDownload))
                        {
                            Directory.CreateDirectory(pathDownload);
                        }

                        using (var webClient = new System.Net.WebClient())
                        {
                            webClient.Credentials = credentials;
                            string filePath = Path.Combine(pathDownload + "\\", Path.GetFileNameWithoutExtension(sourceFile.Name) + _version.VersionLabel + ".docx");
                            webClient.DownloadFile("siteUrl" + _version.Url, filePath);
                        }
                    }
                }
            }
        }

Tuesday, July 21, 2015

Updating the view to have ID field as bold using Link to JS file

(function () {
var overrideCtx = {};
overrideCtx.Templates = {};
overrideCtx.Templates.Fields = {
'ID': { 'View' : EditorField}
};
SPClientTemplates.TemplateManager.RegisterTemplateOverrides(overrideCtx);
})();

function EditorField(ctx) {
var retVal='';
retVal="<b>" + ctx.CurrentItem.ID + "</b>";
return retVal;
}

How to launch a document by clicking a link to the file?

Word: <a href='ms-word:ofe|u|path/to/web/word/document.docx'>Link to document</a> Excel: <a href='ms-excel:o...