CSOM SharePoint app 2013 External Services by Using WebProxy

Monday, July 29, 2013


To Create Call External Web Service in SharePoint 2013 App.  we need to WebProxy class to execute web Service Request in CSOM.  Let Create external Web service in SharePoint 2013  Sample App. remember SharePoint App Developer environment should configured.

  • How to: Set up an on-premises development environment for apps for SharePoint
  • How to: Set up an environment for developing apps for SharePoint on Office 365

    You can also  use Office 365 SharePoint Online.

  • Open Visual Studio and Create SharePoint 2013 Project.


    Add your Test or developer  Site URL


    Open App.Js File from solution Explorer. Cope the Following from Sample code and Paste into App.js


    To Call External URL from App you need to set Permission for that URL in you App Manifest

    Add your External Web Service  URL in Side tag in my case i am using free online sample of northwind Database which avaliable on services.odata.org domain name.

    Open your default.aspx file in App and SP.runtime.js  and Also Executed SharePOint Ready method  

    Define html Container with ID in my case i used message in js code so i defined tab with id
     and Hit F5


    Download code Link :http://code.msdn.microsoft.com/SharePoint-Call-External-83b49a85

    Related Content

     By usama wahab khan

    Received Microsoft Certified Trainer WelCome kit

    Friday, July 26, 2013

    Thanks to Microsoft Certified Trainer Team for Welcome MCT Welcome kit.






    Start workflow SharePoint 2013 programmatically

    Friday, July 5, 2013

    
    
    Javascript :)  
       // ---------- Start workflow ---------- 
        function StartWorkflow() { 
          var errorMessage = "An error occured when starting the workflow."; 
          var subscriptionId = "", itemId = "", redirectUrl = ""; 
     
          var urlParams = GetUrlParams(); 
          if (urlParams) { 
            //itemGuid = urlParams["ItemGuid"]; 
            itemId = urlParams["ID"]; 
            redirectUrl = urlParams["Source"]; 
            subscriptionId = urlParams["TemplateID"]; 
          } 
     
          if (subscriptionId == null || subscriptionId == ""{ 
            // Cannot load the workflow subscription without a subscriptionId, so workflow cannot be started. 
            alert(errorMessage + "  Could not find the workflow subscription id."); 
            RedirFromInitForm(redirectUrl); 
          } 
          else { 
            // Set workflow in-arguments/initiation parameters 
            var wfParams = new Object(); 
     
            // get reviewer loginname 
            var html = $("#ctl00_PlaceHolderMain_docReviewerUser_upLevelDiv"); 
            wfParams['DocReviewerLoginName'] = $("#divEntityData", html).attr("key"); 
            // get editor loginname 
            var html = $("#ctl00_PlaceHolderMain_docEditorUser_upLevelDiv"); 
            wfParams['DocEditorLoginName'] = $("#divEntityData", html).attr("key"); 
     
            // Get workflow subscription and then start the workflow 
            var context = SP.ClientContext.get_current(); 
            var wfManager = SP.WorkflowServices.WorkflowServicesManager.newObject(context, context.get_web()); 
            var wfDeployService = wfManager.getWorkflowDeploymentService(); 
            var subscriptionService = wfManager.getWorkflowSubscriptionService(); 
     
            context.load(subscriptionService); 
            context.executeQueryAsync( 
     
                function (sender, args) { // Success 
                  var subscription = null; 
                  // Load the workflow subscription 
                  if (subscriptionId) 
                    subscription = subscriptionService.getSubscription(subscriptionId); 
                  if (subscription) { 
                    if (itemId != null && itemId != ""{ 
                      // Start list workflow 
                      wfManager.getWorkflowInstanceService().startWorkflowOnListItem(subscription, itemId, wfParams); 
                    } 
                    else { 
                      // Start site workflow 
                      wfManager.getWorkflowInstanceService().startWorkflow(subscription, wfParams); 
                    } 
                    context.executeQueryAsync( 
                        function (sender, args) { 
                          // Success 
                          RedirFromInitForm(redirectUrl); 
                        }, 
                        function (sender, args) { 
                          // Error 
                          alert(errorMessage + "  " + args.get_message()); 
                          RedirFromInitForm(redirectUrl); 
                        } 
                    ) 
                  } 
                  else { 
                    // Failed to load the workflow subscription, so workflow cannot be started. 
                    alert(errorMessage + "  Could not load the workflow subscription."); 
                    RedirFromInitForm(redirectUrl); 
                  } 
                }, 
                function (sender, args) { // Error 
                  alert(errorMessage + "  " + args.get_message()); 
                  RedirFromInitForm(redirectUrl); 
                } 
            ) 
          } 
        } 
     
        // ---------- Redirect from page ---------- 
        function RedirFromInitForm(redirectUrl) { 
          window.location = redirectUrl; 
        } 
     
        // ---------- Returns an associative array (object) of URL params ---------- 
        function GetUrlParams() { 
          var urlParams = null; 
          if (urlParams == null) { 
            urlParams = {}; 
            var parts = window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gifunction (m, key, value) { 
              urlParams[key] = decodeURIComponent(value); 
            }); 
          } 
          return urlParams; 
        } 
    
    
    
    C#
    
    
    var WSM = new WorkflowServicesManager(web);
    var wfSubscriptionService = WSM .GetWorkflowSubscriptionService();
    //get all workflows associated with the list
    var subscriptions =  wfSubscriptionService .EnumerateSubscriptionsByList(listId);
    //run all workflows associated with the list
    foreach (var workflowSubscription in subscriptions)
    {    
       //initiation parameters    
       var inputParameters = new Dictionary();    
       inputParameters.Add("WFProperty", "Value"); 
       WSM .GetWorkflowInstanceService().StartWorkflowOnListItem(workflowSubscription, itemId, inputParameters);
    }
    
    Reference :
    http://code.msdn.microsoft.com/office/SharePoint-2013-Approval-f5ac5eb2
     

    SharePoint 2013 How to add Promoted link list view web part in page programmatically C#

    Wednesday, June 12, 2013

    SPLimitedWebPartManager limitedWebPartManager = null;
                        SPList targetList = targetWeb.Lists["PromotedLink"];

                        XsltListViewWebPart listPomotedView = new XsltListViewWebPart();
                        listPomotedView.ListId = targetList.ID;
                        listPomotedView.ViewGuid = targetList.Views["Tiles"].ID.ToString("B").ToUpper();

                        limitedWebPartManager = targetWeb.GetLimitedWebPartManager(targetWeb.Url + "/" + "default.aspx", PersonalizationScope.Shared);
                        limitedWebPartManager.AddWebPart(listPomotedView, "Top", 3);
                        limitedWebPartManager.SaveChanges(listPomotedView);
                        targetWeb.Update();

    client-side People Picker control in apps for SharePoint 2013

    Tuesday, June 11, 2013


     the client-side People Picker control is Qucik Search and Selection for Valid  Accounts for Groups,People and Claims in their Org.  adding Picker to your App , web part, Pages is very easy because it based on html and javascript so it supports cross-browser. in you html or ASP.net MARKUP ADD A CONTAINER ELEMENT FOR THE CONTROL  and references for the control and its dependencies. Then in your script, call the SPClientPeoplePicker_InitStandaloneControlWrapper global function to render and initialize the picker.


    The picker is represented by the SPClientPeoplePicker object, which provides methods that other client-side controls can use to get information from the picker or to perform other operations. You can use SPClientPeoplePicker properties to configure the picker with control-specific settings, such as allowing multiple users or specifying caching options. The picker also uses web application configuration settings such as Active Directory Domain Services parameters or targeted forests. Web application configuration settings are picked up automatically (from the SPWebApplication.PeoplePickerSettings property).
    The picker has the following components:
    An input text box to enter names for users, groups, and claims.
    A span control that shows the names of resolved users, groups, and claims.
    A hidden div element that autofills a drop-down box with matching query results.
    An autofill control.

    The picker and its functionality are defined in the clientforms.js, clientpeoplepicker.js, and autofill.js script files, which are located in the %ProgramFiles%\Common Files\Microsoft Shared\web server extensions\15\TEMPLATE\LAYOUTS folder on the server.



    The Client-side People Picker  for SharePoint 2013 apps.
    1. Create a JSON dictionary to use as a schema that stores picker-specific properties, such as AllowMultipleValues and MaximumEntitySuggestions.
    2. Call the SPClientPeoplePicker_InitStandaloneControlWrapper global function.
    3. Get the picker object from the page.
    4. Query the picker. The app in this example calls the GetAllUserInfo method to get all user information for the resolved users and theGetAllUserKeys method to just get the keys for the resolved users.

      <asp:Content ContentPlaceHolderId="PlaceHolderMain" runat="server">
          <SharePoint:ScriptLink name="clienttemplates.js" runat="server" LoadAfterUI="true" Localizable="false" />
          <SharePoint:ScriptLink name="clientforms.js" runat="server" LoadAfterUI="true" Localizable="false" />
          <SharePoint:ScriptLink name="clientpeoplepicker.js" runat="server" LoadAfterUI="true" Localizable="false" />
          <SharePoint:ScriptLink name="autofill.js" runat="server" LoadAfterUI="true" Localizable="false" />
          <SharePoint:ScriptLink name="sp.js" runat="server" LoadAfterUI="true" Localizable="false" />
          <SharePoint:ScriptLink name="sp.runtime.js" runat="server" LoadAfterUI="true" Localizable="false" />
          <SharePoint:ScriptLink name="sp.core.js" runat="server" LoadAfterUI="true" Localizable="false" />
          <div id="peoplePickerDiv"></div>
          <div>
              <br/>
              <input type="button" value="Get User Info" onclick="getUserInfo()"></input>
              <br/>
              <h1>User info:</h1>
              <p id="resolvedUsers"></p>
              <h1>User keys:</h1>
              <p id="userKeys"></p>
          </div>
      </asp:Content>

      // Run your custom code when the DOM is ready.
      $(document).ready(function () {

          // Specify the unique ID of the DOM element where the
          // picker will render.
          initializePeoplePicker('peoplePickerDiv');
      });

      // Render and initialize the client-side People Picker.
      function initializePeoplePicker(peoplePickerElementId) {

          // Create a schema to store picker properties, and set the properties.
          var schema = {};
          schema['PrincipalAccountType'] = 'User,DL,SecGroup,SPGroup';
          schema['SearchPrincipalSource'] = 15;
          schema['ResolvePrincipalSource'] = 15;
          schema['AllowMultipleValues'] = true;
          schema['MaximumEntitySuggestions'] = 50;
          schema['Width'] = '280px';

          // Render and initialize the picker.
          // Pass the ID of the DOM element that contains the picker, an array of initial
          // PickerEntity objects to set the picker value, and a schema that defines
          // picker properties.
          this.SPClientPeoplePicker_InitStandaloneControlWrapper(peoplePickerElementId, null, schema);
      }

      // Query the picker for user information.
      function getUserInfo() {

          // Get the people picker object from the page.
          var peoplePicker = this.SPClientPeoplePicker.SPClientPeoplePickerDict.peoplePickerDiv_TopSpan;

          // Get information about all users.
          var users = peoplePicker.GetAllUserInfo();
          var userInfo = '';
          for (var i = 0; i < users.length; i++) {
              var user = users[i];
              for (var userProperty in user) {
                  userInfo += userProperty + ':  ' + user[userProperty] + '
      '
      ;
              }
          }
          $('#resolvedUsers').html(userInfo);

          // Get user keys.
          var keys = peoplePicker.GetAllUserKeys();
          $('#userKeys').html(keys);
      }


      Asp.net markup for SharePoint Page or Webpart use this
              runat="server" VisibleSuggestions="3" Rows="1" AllowMultipleEntities="true" CssClass="ms-long ms-spellcheck-true" Height="85px"/>
      // bind or adding 
      SPUser  userToassign = GetYourSPUser();
      if (assignToUser != null)
      {
        PeopleEditor pe = new PeopleEditor();
        PickerEntity entity = new PickerEntity();
        entity.Key = userToassign.LoginName;
        entity = pe.ValidateEntity(entity);
        entity.IsResolved = true;
        llboPP.AddEntities(new List { entity });
      }


       ///Select Users
      SPUser PPuser = null;
      ArrayList resolvedEntities = llboPP.ResolvedEntities;
      foreach (PickerEntity entity in resolvedEntities)
      {
         string loginUsernameName = entity.Key;
      //check valid user
         PPuser = site.RootWeb.EnsureUser(loginUsernameName);
         break;
      }



      Ref :