Showing posts with label Sharepoint Online. Show all posts
Showing posts with label Sharepoint Online. Show all posts

2/16/17

Responsive SharePoint Online Hosted Add-In using Bootstrap, Bootstrap Dialog, JQuery Datatables and Toastr


In this blog post I'll demonstrate how to create a SharePoint Online Hosted Add-In that uses the SharePoint REST API to interact with a custom SharePoint list to Create, Read, Update and Delete records from this list in a responsive fashion. 

The project contains a custom SharePoint List called Files that will be populated using sample data, this list will provide the data to the JQuery datatables grid.


Prerequisites

  1. Office 365 Tenant
  2. Visual Studio 2015 or Visual Studio Code
  3. SPFastDeploy (optional) - if you haven't used this tool before please take a look at my blog post on this Here

Javascript Libraries

Install the following Javascript libraries via NuGet
  1. Bootstrap v3.3.7 (Don't install v4+ for this demo)
  2. Bootstrap.dialog
  3. JQuery (installed by default)
  4. Jquery Datatables
  5. Jquery Datatables.select (Installed with JQuery Datatables NuGet package)
  6. Toastr
Download Visual Studio Solution - Here

Terminology

The words Apps and Add-Ins can be a little confusing, Microsoft has officially renamed SharePoint Apps to SharePoint Add-Ins. In Visual Studio and SharePoint Online the dialogs still use the old term Apps.

Original name
New name
apps for SharePoint
SharePoint Add-ins
app part
add-in part
app web
add-in web

Instructions 

This demonstration will be done using Visual Studio 2015 Update 3.

Open Visual Studio 2015 and Select File | New Project

Under the New Project | Installed | Templates |Office/SharePoint | Select App for SharePoint



Enter a SharePoint site where this application will be published

Select SharePoint Hosted and Select Next



Select SharePoint Online for the target version and Select Finish

Installing NuGet packages

Right click on the project name and Select Manage NuGet Packages. Select the Browse link and search for Bootstrap. Select Bootstrap from the list and choose version 3.7 in the dropdown. Select the Install Button.
Repeat this process for the remaining Javascript libraries listed above.


Create the SharePoint Files List to host the data for the datatables grid

Right Click on the project name and select Add | New Item



Under the Office/SharePoint Items | Select List and type 'Files' as the name




Enter 'Files' for the name to display and Select Create a customizable list template and a list instance of it Radio Button. Select Finish




The Files | Schema.xml file should automatically open (if not simply double click on the Files List from the solution explorer. On the Columns tab, create columns for FileName, FileType and Team, each column will have a Type of Single Line of Text. Save and Close the Schema.xml File



Note: At any point you may be prompted to sign in to Office 365, enter your credentials and select Sign In



Populate Sample Data into Files List

Open the Elements.xml file beneath Files | FilesInstance. Delete everything in this file, copy and paste the following code into this file:

<?xml version="1.0" encoding="utf-8"?>
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
  <ListInstance Title="Files" OnQuickLaunch="TRUE" TemplateType="100" Url="Lists/Files" Description="Files List Instance">
    <Data>
      <Rows>
        <Row>
          <Field Name="Title">Autoexec</Field>
          <Field Name="FileName">Autoexec</Field>
          <Field Name="FileType">bat</Field>
          <Field Name="Team">Dell</Field>
        </Row>
        <Row>
          <Field Name="Title">Config</Field>
          <Field Name="FileName">Config</Field>
          <Field Name="FileType">sys</Field>
          <Field Name="Team">EMC</Field>
        </Row>
        <Row>
          <Field Name="Title">Hosts</Field>
          <Field Name="FileName">Hosts</Field>
          <Field Name="FileType">exe</Field>
          <Field Name="Team">Dell</Field>
        </Row>
        <Row>
          <Field Name="Title">Bootstrap</Field>
          <Field Name="FileName">Bootstrap</Field>
          <Field Name="FileType">js</Field>
          <Field Name="Team">EMC</Field>
        </Row>
        <Row>
          <Field Name="Title">Startup</Field>
          <Field Name="FileName">Startup</Field>
          <Field Name="FileType">css</Field>
          <Field Name="Team">Dell</Field>
        </Row>
      </Rows>
    </Data>
  </ListInstance>
</Elements>

Note: After saving the list and deploying to SharePoint I noticed that the filetype
column was displaying 'undefined'. I looked at the schema.xml file for the Files list 
and noticed the filetype had been changed to filetype1 in the <fields><field></field></fields>
node. A simple search in this file for filetype helped identify 2 places where I needed to 
change the name back to filetype. Not sure why this occurred.

Add Javascript to App.js file

The following javascript contains functions to populate the datatables grid, provide
All of the Create, Read, Update and Delete (CRUD) methods, creating the Bootstrap
model dialog for creating and editing files and delete file confirmation dialog.


'use strict';
var RestUrl = "../_api/lists/getbytitle('Files')/items";
$(document).ready(function () {
    PopulateGrid();
    $('#fileFormSubmit').click(function (e) {
        //Check for edit or new and call update or add function
        if ($('#myModalLabel').html() == 'Add New File') {
            addFile($('#fileTitle').val(), $('#fileName').val(), $('#fileType').val(), $('#team').val());
        } else {
            UpdateFiles($('#fileId').val());
        }
    });
});
function PopulateGrid() {
    //Clear datatables
    $('#FilesGrid').empty();
    //Get File list items
    $.ajax({
        url: RestUrl,
        method: "GET",
        headers: {
            "accept": "application/json;odata=verbose"
        },
        success: function (data) {
            if (data.d.results.length > 0) {
                //construct HTML Table from the JSON Data
                $('#FilesGrid').append(GenerateTableFromJson(data.d.results));
                //Bind the HTML data with Jquery DataTable
                var oTable = $('#FilesTable').dataTable({
                    //control which datatable options available
                    dom: 'Bfrltip',
                    //add select functionality to datatable
                    select: true,
                    //adjust column widths
                    "columns": [
                    null,
                    null,
                    null,
                    null,
                    null,
                    { "width": "8%" }
                    ],
                    //remove sort icon from actions column
                    "aoColumnDefs": [
                    { "bSortable": false, "aTargets": [5] }
                    ]
                });
            } else {
                $('#FilesGrid').append("<span>No Files Found.</span>");
            }
        },
        error: function (data) {
            $('#FilesGrid').append("<span>Error Retreiving Files. Error : " + JSON.stringify(data) + "</span>");
        }
    });
};
//Generate html table values
function GenerateTableFromJson(objArray) {
    var tableContent =
        '<table id="FilesTable" class="table table-striped table-bordered" cellspacing="0" width="100%">' +
            '<thead><tr>' + '<th>ID</th>' + '<th>Title</th>' + '<th>FileName</th>' + '<th>FileType</th>' +
            '<th>Team</th>' + '<th>Actions</th>' + '</tr></thead>';
    for (var i = 0; i < objArray.length; i++) {
        tableContent += '<tr>';
        tableContent += '<td>' + objArray[i].Id + '</td>';
        tableContent += '<td>' + objArray[i].Title + '</td>';
        tableContent += '<td>' + objArray[i].FileName + '</td>';
        tableContent += '<td>' + objArray[i].FileType + '</td>';
        tableContent += '<td>' + objArray[i].Team + '</td>';
        tableContent += "<td><a id='" + objArray[i].Id + "' href='#' style='color: orange' class='confirmEditFileLink'>" +
            "<i class='glyphicon glyphicon-pencil' title='Edit File'></i></a>&nbsp&nbsp";
        tableContent += "<a id='" + objArray[i].Id + "' href='#' style='color: red' class='confirmDeleteFileLink'>" +
            "<i class='glyphicon glyphicon-remove' title='Delete File'></i></a>&nbsp&nbsp";
        tableContent += "<a id='" + objArray[i].Id + "' href='#' class='confirmListItemDetailsLink'>" +
            "<i class='glyphicon glyphicon-cog' title='Link to List Item'></i></a></td>";
        tableContent += '</tr>';
    }
    return tableContent;
};
// Edit button click event
$(document).on('click', '.confirmEditFileLink', function (e) {
    e.preventDefault();
    var id = this.id;
    var requestUri = "../_api/web/lists/getByTitle('Files')/items(" + id + ")";
    $.ajax({
        url: requestUri,
        method: "GET",
        contentType: "application/json;odata=verbose",
        headers: { "accept": "application/json;odata=verbose" },
        success: function (data) {
            $('#fileTitle').val(data.d.Title);
            $('#fileName').val(data.d.FileName);
            $('#fileType').val(data.d.FileType);
            $('#team').val(data.d.Team);
            $('#fileId').val(data.d.Id);
            $('#myModalLabel').html('Edit File');
            $('#myModalNorm').modal('show');
            $("#etag").val(data.d.__metadata.etag);
        }
    });
});
//Link to files list item
$(document).on('click', '.confirmListItemDetailsLink', function (e) {
    e.preventDefault();
    var id = this.id;
    var requestUri = "../Lists/Files/DispForm.aspx?ID=" + id;
    window.location.href = requestUri;
});
// Delete button click event
$(document).on('click', '.confirmDeleteFileLink', function (e) {
    e.preventDefault();
    var id = this.id;
    BootstrapDialog.show({
        size: BootstrapDialog.SIZE_SMALL,
        type: BootstrapDialog.TYPE_DANGER,
        title: "Delete Files Confirmation",
        message: "Are you sure you wish to Delete this File?",
        buttons: [
            {
                label: "Confirm",
                cssClass: 'btn-primary',
                action: function (dialog) {
                    dialog.close();
                    var restUrl = "../_api/web/lists/GetByTitle('Files')/items(" + id + ")";
                    jQuery.ajax({
                        url: restUrl,
                        type: "DELETE",
                        headers: {
                            Accept: "application/json;odata=verbose",
                            "X-RequestDigest": $("#__REQUESTDIGEST").val(),
                            "IF-MATCH": "*"
                        }
                    });
                    toastr.success("File Successfully Deleted.", "Success");
                    PopulateGrid();
                }
            },
            {
                label: "Cancel",
                action: function (dialog) {
                    dialog.close();
                }
            }
        ]
    });
});
//Update Model Label
function updateFormLabel() {
    $('#myModalLabel').html('Add New File');
};
//Populate then display model dialog for add file button clicked
function addNewFile() {
    $('#myModalLabel').html('Add New File');
    $('#fileTitle').val('');
    $('#fileName').val('');
    $('#fileType').val('');
    $('#team').val('');
    $('#fileId').val('');
    $('#myModalNorm').modal('show');
};
//Edit file function
function UpdateFiles(id) {
    var fileTitle = $("#fileTitle").val();
    var fileName = $("#fileName").val();
    var fileType = $("#fileType").val();
    var team = $("#team").val();
    var eTag = $("#etag").val();
    var requestUri = "../_api/web/lists/getByTitle('Files')/items(" + id + ")";
    var requestHeaders = {
        "accept": "application/json;odata=verbose",
        "X-HTTP-Method": "MERGE",
        "X-RequestDigest": $('#__REQUESTDIGEST').val(),
        "If-Match": eTag
    }
    var fileData = {
        __metadata: { "type": "SP.Data.FilesListItem" },
        Title: fileTitle,
        FileName: fileName,
        FileType: fileType,
        Team: team
    };
    var requestBody = JSON.stringify(fileData);

    return $.ajax({
        url: requestUri,
        type: "POST",
        contentType: "application/json;odata=verbose",
        headers: requestHeaders,
        data: requestBody
    });
}
//Add File function
var addFile = function (fileTitle, fileName, fileType, team) {
    var requestUri = "../_api/web/lists/getByTitle('Files')/items";
    var requestHeaders = {
        "accept": "application/json;odata=verbose",
        "content-type": "application/json;odata=verbose",
        "X-RequestDigest": $('#__REQUESTDIGEST').val()
    }
    var fileData = {
        __metadata: { "type": "SP.Data.FilesListItem" },
        Title: fileTitle,
        FileName: fileName,
        FileType: fileType,
        Team: team
    };
    var requestBody = JSON.stringify(fileData);
    return $.ajax({
        url: requestUri,
        type: "POST",
        headers: requestHeaders,
        data: requestBody
    });

};

Modify the Default.aspx page with the following code

In the <asp:content> section all of the css and script references are added, ensure these match the
file locations from the downloaded NuGet packages, if they don't they will be underlined indicating
there is an issue.

<%-- The following 4 lines are ASP.NET directives needed when using SharePoint components --%>

<%@ Page Inherits="Microsoft.SharePoint.WebPartPages.WebPartPage, Microsoft.SharePoint, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" MasterPageFile="~masterurl/default.master" Language="C#" %>

<%@ Register TagPrefix="Utilities" Namespace="Microsoft.SharePoint.Utilities" Assembly="Microsoft.SharePoint, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<%@ Register TagPrefix="WebPartPages" Namespace="Microsoft.SharePoint.WebPartPages" Assembly="Microsoft.SharePoint, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<%@ Register TagPrefix="SharePoint" Namespace="Microsoft.SharePoint.WebControls" Assembly="Microsoft.SharePoint, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>

<%-- The markup and script in the following Content element will be placed in the <head> of the page --%>
<asp:Content ContentPlaceHolderID="PlaceHolderAdditionalPageHead" runat="server">
        <!-- CSS styles added to the following file -->
    <link type="text/css" href="../Content/App.css" rel="Stylesheet"/>
    <link type="text/css" href="../Content/toastr.css" rel="stylesheet" />
    <link type="text/css" href="../Content/bootstrap.css" rel="stylesheet" />
    <link type="text/css" href="../Content/bootstrap-dialog.css" rel="stylesheet" />
    <link type="text/css" href="../Content/DataTables/css/select.bootstrap.min.css" rel="stylesheet" />
    <link type="text/css" rel="stylesheet" href="https://cdn.datatables.net/1.10.8/css/jquery.dataTables.css">
     <!-- javascript references added to the following file -->
    <script type="text/javascript" src="../Scripts/jquery-1.9.1.min.js"></script>
    <script type="text/javascript" src="../Scripts/bootstrap.js"></script>
    <script type="text/javascript" src="../Scripts/bootstrap-dialog.js"></script>
    <script type="text/javascript" src="../Scripts/toastr.min.js"></script>
    <script type="text/javascript" src="../Scripts/App.js"></script>
    <script type="text/javascript" src="https://cdn.datatables.net/1.10.8/js/jquery.dataTables.min.js"></script>
    <script type="text/javascript" src="../Scripts/DataTables/dataTables.select.min.js"></script>
</asp:Content>

<%-- The markup and script in the following Content element will be placed in the <body> of the page --%>
<asp:Content ContentPlaceHolderID="PlaceHolderMain" runat="server">
    <div class="container">
        <h1><span class="label label-primary">Grid Data Consumed via  SharePoint Rest API</span></h1>
        <div id="toolbar">
            <button type="button" value="Files" class="btn btn-info" onclick="Javascript: location.href = '../Lists/Files'"><span class='glyphicon glyphicon-upload'></span> File List</button>
            <button type="button" class="btn btn-success" onclick='addNewFile();'><span class='glyphicon glyphicon-plus'></span> Add New File</button>
        </div>
   <p></p>
 <div id="FilesPanel">
 <table style="width: 100%;">
 <tr>
     <td>
        <div id="FilesGrid" style="width: 100%"></div>
     </td>
 </tr>
 </table>
 </div>
 <!-- Bootstrap Modal Dialog-->
<div class="modal fade" id="myModalNorm" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
    <div class="modal-dialog">
        <div class="modal-content">
            <!-- Modal Header -->
            <div class="modal-header">
                <button type="button" class="close" data-dismiss="modal">
                       <span aria-hidden="true">&times;</span>
                       <span class="sr-only">Close</span>
                </button>
                <h4 class="modal-title" id="myModalLabel">
                    Add New File
                </h4>
            </div>
            <!-- Modal Body -->
            <div class="modal-body" id="modalBody">
                <form role="form" id="fileForm">
                  <div class="form-group">
                    <label>File Title</label>
                      <input class="form-control" id="fileTitle"/>
                  </div>
                  <div class="form-group">
                    <label>File Name</label>
                      <input class="form-control" id="fileName"/>
                  </div>
                  <div class="form-group">
                    <label>File Type</label>
                      <input class="form-control" id="fileType"/>
                  </div>
                     <div class="form-group">
                    <label>Team</label>
                      <input class="form-control" id="team"/>
                  </div>
                      <!-- hidden controls -->
                  <div style="display: none">
                      <input id="etag" />
                      <input id="fileId" />
                  </div>
                  </form>
                  <div class="modal-footer">
                      <button type="button" class="btn btn-danger" data-dismiss="modal" onclick='updateFormLabel();'>
                        Cancel
                      </button>
                      <button type="submit" class="btn btn-primary" id="fileFormSubmit">
                        Submit
                      </button>
                  </div>
            </div>
        </div>
    </div>
</div>
</div>
</asp:Content>
Verify Solution - a list of items in the Visual Studio Solution

Deploy SharePoint Add-In to SharePoint Online

Right click on the project name and Select Deploy

In the Output Tab ensure that the SharePoint Add-in deploys successfully. During deployment there will be a message: Installation is in progress (00:00:00) with a timer to show the amount of time it takes for deployment.


Note: If you have installed and configured SPFastDeploy you will no longer have to wait for this lengthy deployment process after the initial deployment. If you make a simple change to a single file you can just right click on the file and select SPFastDeploy.

View the SharePoint Add-In in SharePoint Online

Navigate to the SharePoint site configured in your SharePoint Add-In properties

Select the ResponsiveSharePointHostedAddin link from the left navigation


Note: In the action column if you hover over the icons you will see a description for each icon, from left to right there is edit, delete and link to list item icons. Bootstrap is used here to render these icons using a regular <a href> tag with a class='glyphicon glyphicon-pencil' for the edit icon for example.


Testing SharePoint Add-In Functionality

Select the Add New File Button, this will present the Bootstrap Model Dialog prompting the user to create a new file. Select Cancel.



Select the Pencil icon from one of the items in the grid. Notice the row selected changes colors (JQuery.Datatables.Select library) indicating this row is selected and then Bootstrap dialog opens allowing the user to edit the selected file. Select Cancel.



Select the Delete icon from one of the items in the grid. A Bootstap dialog will be displayed asking for confirmation of the file deletion. Select Cancel.


Select the order by column headers for some of the columns in the grid, notice how there are no post-backs for any of this functionality and its very fast. Type something in the search box that appears in the grid, notice how it quickly filters items to the text you type again with no post-backs.

Select Delete on an item in the grid, confirm the deletion. A Toast will fire indicating the file was successfully deleted.



This completes this demonstration.

Download Visual Studio Solution - Here











2/13/17

SharePoint SPFastDeploy

SharePoint SPFastDeploy is a must have tool for developing solutions in SharePoint Online. This tool can be downloaded from Here and installed into Visual Studio. Without this tool it can take several minutes to deploy a SharePoint Add-In to SharePoint Online. 

Note: You will still have to initially deploy the solution to SharePoint Online using the traditional methods however once this tool is installed and the SharePoint Add-In has been deployed, you can simply right click a file after making changes and select Fast deploy to SP App. Using this method takes only seconds to save the new file.

Once this tool is installed it will add a new shortcut to the tools menu


There are a couple of way to configure this tool for simpler use
  • Enable SPFastDeploy on Save - Select Tools | Options | SPFastDeploy, under Misc Select True for Deploy when saving. This will use SPFastDeploy each time a file is changed and saved.

  • Add SPFastDeploy to Right Click Context Menu - Select Tools | Customize | Commands Tab | Select the Context Menu radio button and choose Project and Solution Context Menus | Item from the dropdown control.

  •  Next select the Add Command Button and choose Tools under Categories and select SPFastDeploy from the list of commands.
  • Ensure the right click functionality is now available by selecting a file in your SharePoint Add-In project and right clicking to view the context menu





9/28/16

OneDrive for Business

What is OneDrive for Business?

Let’s start with what OneDrive for Business (ODFB) is not, ODFB is not Microsoft’s service for hosting files in the cloud (OneDrive – previously SkyDrive which is intended for personal storage) that allows users to sync files and later access them from a web browser or mobile device. OneDrive is a completely separate product and has nothing to do with ODFB.
 

Microsoft OneDrive for Business variations

On Premises SharePoint – OneDrive for Business on premises


  • OneDrive for Business is a brand, not a product and it consists of three specific things
  1. SharePoint My Site – a site collection that is created by default for every user
  2. My Documents Library in SharePoint My Site - A document library that every user has and OWNS (key point), in addition it allows users to sync any other document library the user has access to
  3. Synchronization Tool for synchronizing between desktop and Document Library. The OneDrive for Business Windows Sync client installs either with Office 2013 Standard or with Office 2013 Professional Plus. Or you can download the stand-alone OneDrive for Business Windows Sync client
  • ODFB replaces previous Microsoft products Groove (SharePoint 2007) and SharePoint Workspace (Sharepoint 2010)

Prerequisites - To support OneDrive for Business document libraries in SharePoint Server 2013, you must have:

  • Configured the User Profile Service application
  • Configured My Sites
  • For Office 2013 to display the user's My Site as a default save or open location, you must configure SharePoint Server 2013 to use Exchange Autodiscover
  • To support system generated email notifications from SharePoint Server 2013 when a user shares a document with another user, make sure outgoing email is configured for your SharePoint Server 2013 farm

Library quotas

By default, the quota for each user's My Site in SharePoint Server 2013 is 100 MB. If you plan to use the OneDrive for Business document library for users to store their files, you should increase this default quota limit. If your organization uses SharePoint Online, a user's My Site quota is set to 25 GB and is configurable to 50 GB or 100 GB per user.

Library customization

Although the OneDrive for Business document library supports many of the features of a standard document library, a user shouldn't customize the OneDrive for Business document library because it might affect synchronization.
For example, if a user modifies the document library to require that metadata be filled in, the files are synchronized with SharePoint Server 2013, however, the document remains checked out. To check-in the document, the user has to fill in the required metadata either through SharePoint Server 2013 using the browser, or by opening the file with the Office 2013 client.
In addition, keep permission levels at the default settings of Can edit and Can view.
 

Office 365 – SharePoint and OneDrive for Business in the Cloud

  • ODFB provides 1 Terabyte of storage for every user
  • External sharing works out of the box – share with users outside of the SharePoint environment, they’ll get an email and get access to that single document
  • Advantage – users can edit Microsoft Office documents directly from the browser without having Microsoft Office installed on the client
  • Multiple plans available with different storage, encryption and data loss features

Stand alone OneDrive – give users the My Site, the My Site My Documents and the ability to sync

  • Multiple plans available with different storage, encryption and data loss features

Limitations

  • ODFB My Documents library in users My Site has an item limit of 20,000 items that can be synced and downloaded locally for offline usage
  • Additional document libraries within SharePoint can be synced as well but have a limitation of 5,000 items
  • Sync is by document library and not by files or folders
  • 2GB file size limit
  • Character limitations in files and folder names
  • Not available on a Mac – this may have changed
  • Files don’t have a URL directly to them
  • Number of items that can be sync’d

Features

  • The old concept of My Site in SharePoint is going away and being replaced with OneDrive for Business
  • When a user clicks the OneDrive link in the SharePoint 2013 navigation, the user is redirected to what used to be called My Site, now ODFB
  • When a user installs Microsoft Office 2013 it installs a client tool called OneDrive for Business which handles the synchronizations of files between SharePoint and the client desktop
  • There is a Powershell script available to create the ODFB sites for all users programmatically because they are not created by default. By default, when a user first logs in to SharePoint the My Site is created
  • Mapping a drive to OneDrive for Business from the client, make sure the desktop experience feature is installed on the SharePoint server to allow this
 

Hybrid OneDrive for Business - Starting with SharePoint 2013 SP1 you can connect on-premises SharePoint 2013 servers to the cloud and turn on OneDrive for Business

clip_image001
Figure 1


  • In SharePoint Server, you can redirect users to OneDrive for Business stand alone or Office 365 (see figure 2) when they choose OneDrive in the navigation bar (SharePoint Server 2010 and SharePoint Server 2013) or in the app launcher (SharePoint Server 2016). This is known as hybrid OneDrive for Business.
  • If you want to redirect your users to OneDrive for Business in Office 365, you need an Office 365 tenant where your users are licensed and at least Service Pack 1 installed on your farm.
  • To avoid user confusion, keep the following in mind when you turn on hybrid OneDrive for Business:
  1. When you turn on this feature, your users will be directed to OneDrive for Business in Office 365 when they click OneDrive in SharePoint Server. Be sure to plan to migrate your users' content from their old SharePoint Server OneDrive for Business to the new one in Office 365.
  2. Because there's no direct link between OneDrive for Business in SharePoint Server and OneDrive for Business in Office 365, users' Shared with me lists in Office 365 won't display documents that have been shared with them from on-premises SharePoint Server.For example, if a user modifies the document library to require that metadata be filled in, the files are synchronized with SharePoint Server 2013, however, the document remains checked out. To check-in the document, the user has to fill in the required metadata either through SharePoint Server 2013 using the browser, or by opening the file with the Office 2013 client.
  3. Keep permission levels at the default settings of Can edit and Can view
 

image
Figure 2

Windows Explorer view on client desktop


Figure 3

Coming Soon

New sync capabilities include:

  • Ability to sync SharePoint Online document libraries and OneDrive folders shared with you (preview available today)
  • An “activity center” has been added to the OneDrive sync client to allow you to view synchronization and file activity at a glance (preview available today)

New browser capabilities include:

  • Rich thumbnails and previews for over 20 new file types (rolling out before the end of 2016)
  • Ability to access and edit all your files in OneDrive and SharePoint Online from the OneDrive browser client (rolling out before the end of 2016)
  • Capability to download multiple files as a .zip file (rolling out before the end of 2016)

New mobile capabilities include:

  • Notifications to your iOS or Android device when someone shares a OneDrive file with you (available today)
  • Access to SharePoint Online files in the OneDrive app on Android (available today)
  • Multi-page scan enhancements in the OneDrive app on Android (available today)
  • Ability to see over time how many people have discovered and viewed your files in OneDrive for iOS (available today)

New IT capabilities include:

  • Enhancements to integration with Office 2016 (available in First Release)
  • Simple, flexible OneDrive user management in Office 365 (available in First Release)
  • Dedicated OneDrive administration console in Office 365 (rolling out before the end of 2016)




2/23/12

SharePoint 2010 101 Code Samples



Microsoft has released 101 code samples for Sharepoint 2010. The samples include HTML 5, AJAX, JQuery, WCF, REST and a lot more.

Check them out Here

Some of the projects include...




Each code sample is part of the SharePoint 2010 101 code samples project. These samples are provided so that you can incorporate them directly in your code. Each code sample consists of a standalone project created in Microsoft Visual Studio 2010