Friday, December 19, 2014

Wednesday, September 17, 2014

Deploy app to sharepoint online

-App Catalog
-Site Contents
-Click on the new app icon ... to get to Deployment menu
-Enter site to deploy


---
restart IE if older version of the app still persisted after new version has been updated from App Store

Tuesday, August 19, 2014

Thursday, July 17, 2014

What is the difference between Chrome and IE in SharePoint environment?

For almost every environment, I have seen deployments always have a challenge or two.

The current challenge I am running into is that the form worked on IE before now doesn't anymore but it works on Chrome.
This got figured out. It was InputFormTextBox in RichTextMode with required attribute. For IE, it couldn't validate the field because CauseValidation wasn't set.

When testing browsers compatibility, one should set both Browser and Document Mode in the same browser version.

Thursday, June 5, 2014

Field Definitions

http://msdn.microsoft.com/en-us/library/office/ms196289(v=office.15).aspx

<?xml version="1.0" encoding="utf-8"?>
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">

  <Field ID="{1511BF28-A787-4061-B2E1-71F64CC93FD5}"
         Name="DateOpened"
         DisplayName="Date Opened"
         Type="DateTime"
         Format="DateOnly"
         Required="FALSE"
         Group="Financial Columns">
    <Default>[today]</Default>
  </Field>

  <Field ID="{060E50AC-E9C1-4D3C-B1F9-DE0BCAC300F6}"
         Name="Amount"
         DisplayName="Amount"
         Type="Currency"
         Decimals="2"
         Min="0"
         Required="FALSE"
         Group="Financial Columns" />

  <Field ID="{86811853-7E52-4515-A88D-A8FA9D450905}"
         Name="Client"
         DisplayName="Client Name"
         Type="Text"
         Required="FALSE"
         Group="Financial Columns"/>

  <Field ID="{943E7530-5E2B-4C02-8259-CCD93A9ECB18}"
         Name="CostCenter"
         DisplayName="Cost Center"
         Type="Choice"
         Required="FALSE"
         Group="Financial Columns">
    <CHOICES>
      <CHOICE>Administration</CHOICE>
      <CHOICE>Information</CHOICE>
      <CHOICE>Facilities</CHOICE>
      <CHOICE>Operations</CHOICE>
      <CHOICE>Sales</CHOICE>
      <CHOICE>Marketing</CHOICE>
    </CHOICES>
  </Field>
</Elements>

http://msdn.microsoft.com/en-us/library/office/aa979575(v=office.15).aspx
<Field
  Aggregation="sum" | "count" | "average" | "min" | "max" | "merge" | "plaintext" | "first" | "last"
  AllowDeletion="TRUE" | "FALSE"
  AllowDuplicateValues="TRUE" | "FALSE"
  AllowHyperlink="TRUE" | "FALSE"
  AllowMultiVote="TRUE" | "FALSE"
  AppendOnly="TRUE" | "FALSE"
  AuthoringInfo="Text"
  BaseType="Integer" | "Text"
  CalType="Integer"
  CanToggleHidden="TRUE" | "FALSE"
  ClassInfo="Text"
  ColName="Text"
  Commas="TRUE" | "FALSE"
  Customization=Text
  Decimals="Integer"
  DefaultListField="TRUE" | "FALSE"
  Description="Text"
  Dir="Text"
  DisplaceOnUpgrade="TRUE" | "FALSE"
  DisplayImage="Text"
  DisplayName="Text"
  DisplayNameSrcField="Text"
  DisplaySize=Integer
  Div="Number"
  EnableLookup="TRUE" | "FALSE"
  ExceptionImage="Text"
  FieldRef="Text"
  FillInChoice="TRUE" | "FALSE"
  Filterable="TRUE" | "FALSE"
  FilterableNoRecurrence="TRUE" | "FALSE"
  ForcedDisplay="Text"
  Format="DateOnly | DateTime | TimeOnly | EventList | ISO8601 | MonthDayOnly | MonthYearOnly | ISO8601Basic | ISO8601Gregorian | ISO8601BasicDateOnly | DropDown | RadioButtons | HyperLink | Image | TRUE | FALSE"
  FromBaseType="TRUE" | "FALSE"
  Group="Text"
  HeaderImage="Text"
  Height="Integer"
  Hidden="TRUE" | "FALSE"
  HTMLEncode="TRUE" | "FALSE"
  ID="Text"
  IMEMode="active | inactive"
  Indexed="TRUE" | "FALSE"
  IsolateStyles="TRUE" | "FALSE"
  IsRelationship="TRUE" | "FALSE"
  JoinColName="Text"
  JoinRowOrdinal="Integer"
  JoinType="INNER" | "LEFT OUTER" | "RIGHT OUTER"
  LCID="Integer"
  LinkToItem="TRUE" | "FALSE"
  List="Text"
  Max="Number"
  MaxLength="Integer"
  Min="Number" 
  Mult="TRUE" | "FALSE"
  Name="Text"
  NegativeFormat="MinusSign" | "Parens"
  Node="Text"
  NoEditFormBreak="TRUE" | "FALSE"
  NumLines="Integer"
  Overwrite="TRUE" | "FALSE"
  OverwriteInChildScopes="TRUE" | "FALSE"
  Percentage="TRUE" | "FALSE"
  PIAttribute="Text"
  PITarget="Text"
  PrependId="TRUE" | "FALSE"
  Presence="TRUE" | "FALSE"
  PrimaryKey="TRUE" | "FALSE"
  PrimaryPIAttribute="Text"
  PrimaryPITarget="Text"
  ReadOnly="TRUE" | "FALSE"
  ReadOnlyEnforced="TRUE" | "FALSE"
  RelationshipDeleteBehavior="Restrict | Cascade | None"
  RenderXMLUsingPattern="TRUE" | "FALSE"
  Required="TRUE" | "FALSE"
  RestrictedMode="TRUE" | "FALSE"
  ResultType="Text"
  RichText="TRUE" | "FALSE"
  RichTextMode="Text"
  RowOrdinal="Integer"
  Sealed="TRUE" | "FALSE"
  SeperateLine="TRUE" | "FALSE"
  SetAs="Text"
  ShowAddressBookButton="TRUE" | "FALSE"
  ShowField="Text" | "Choice" | "Counter"
  ShowInDisplayForm="TRUE" | "FALSE"
  ShowInEditForm="TRUE" | "FALSE"
  ShowInFileDlg="TRUE" | "FALSE"
  ShowInListSettings="TRUE" | "FALSE"
  ShowInNewForm="TRUE" | "FALSE"
  ShowInVersionHistory="TRUE" | "FALSE"
  ShowInViewForms="TRUE" | "FALSE"
  Sortable="TRUE" | "FALSE"
  SourceID="Text"
  StaticName="Text"
  StorageTZ="UTC" | "Abstract"
  StripWS="TRUE" | "FALSE"
  SuppressNameDisplay="TRUE" | "FALSE"
  TextOnly="TRUE" | "FALSE"
  Title="Text" 
  Type="Data_Type"
  UniqueId="Text"
  UnlimitedLengthInDocumentLibrary="TRUE" | "FALSE"
  URLEncode="TRUE" | "FALSE"
  URLEncodeAsUrl="TRUE" | "FALSE"
  UserSelectionMode="Text"
  UserSelectionScope="Integer"
  Viewable="TRUE" | "FALSE"
  Width="Integer"
  WikiLinking="TRUE" | "FALSE"
  XName="Text">
</Field>

Tuesday, May 13, 2014

Add a page to Pages (Publishing Site) SharePoint 2013

http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.publishing.publishingpage.contact(v=office.14).aspx

using (SPSite site = new SPSite("http://siteUrl"))
{
                using (SPWeb web = site.OpenWeb())
                {
                    PublishingWeb publishingWeb = PublishingWeb.GetPublishingWeb(web);
                    PageLayout[] pageLayouts = publishingWeb.GetAvailablePageLayouts();
                    string pageName = "pageName.aspx";
                    string checkInComment = "check in comments";
                    var targetPageLayout = from pagelayout in pageLayouts
                                                where pagelayout.Name == "CustomPageLayout.aspx"
                                                select pagelayout;
                    if (targetPageLayout != null)
                    {
                        PublishingPageCollection pages = publishingWeb.GetPublishingPages();
                        PublishingPage newPage = pages.Add(pageName, (PageLayout)targetPageLayout.FirstOrDefault());
                        newPage.ListItem[FieldId.PublishingPageContent] = "content goes here";
                        newPage.ListItem[FieldId.Title] = "page title goes here";
                        newPage.ListItem["CustomField"] = "custom field value goes here";
                        newPage.ListItem.Update();                      
                        newPage.Update();
                        newPage.CheckIn("checkin comment");
                       SPFile pageFile = newPage.ListItem.File;
            pageFile.Publish(checkInComment);
            pageFile.Approve(checkInComment);
                    }
                }
 }

Thursday, May 8, 2014

SharePoint 2013 help links

SharePoint 2013 Development Overview
http://msdn.microsoft.com/en-us/library/office/jj164084(v=office.15).aspx

Overview of the SharePoint 2013 page model
http://msdn.microsoft.com/en-us/library/office/jj191506(v=office.15).aspx

http://sharpointpractice.blogspot.com/2011/08/sharepoint-field-types-elementsxml.html

http://featureadmin.codeplex.com/downloads/get/630033

http://msdn.microsoft.com/library/office/jj162979(v=office.15)

http://msdn.microsoft.com/en-us/office/dn448478

http://msdn.microsoft.com/en-US/office/dn448488

http://www.vrdmn.com/2013/03/sharepoint-2013-declaratively-add-app.html

http://social.technet.microsoft.com/wiki/contents/articles/24050.perform-basic-admin-operations-using-csom-in-sharepoint-online.aspx

http://social.technet.microsoft.com/wiki/contents/articles/24627.sharepoint-online-export-user-profile-properties-using-csom.aspx

Upgrading shaepoint apps
http://blogs.msdn.com/b/officeapps/archive/2013/06/13/upgrading-your-app-for-sharepoint.aspx

Forum for developing apps for SP
http://social.msdn.microsoft.com/Forums/office/en-US/home?forum=appsforsharepoint

Camldesigner download link
http://www.camldesigner.com/?p=594#more-594


http://blogs.msdn.com/b/how24/archive/2013/06/14/prepare-your-sharepoint-2013-farm-for-app-development-and-debugging.aspx


Training links:
http://msdn.microsoft.com/en-US/office/dn448488

Wednesday, May 7, 2014

Search scope resource links

http://blogs.technet.com/b/mspfe/archive/2013/02/01/how-query-rules-and-result-sources-can-be-used-to-customize-search-results.aspx

http://techmikael.blogspot.com/2013/04/limiting-search-results-in-sharepoint.html

http://blogs.msdn.com/b/nadeemis/archive/2012/08/24/sharepoint-2013-search-rest-api.aspx



Elements.xml

Every time you update your Elements.xml , build and debug your solution, CLEAR THE BROWSER CACHE. 
Otherwise you will see old Elements.xml configuration.

If you use IE, use InPrivate browsing so the content is not cache.


Tuesday, May 6, 2014

Search feature


  • Use KEYWORDQUERY class for full trust solutions; must execute directly on SharePoint farm; uses same KQL syntax.
  • Set query with KeywordText property; use new SearchExecutor class to query Filter result tables with Filter(); Great for: managed code on SharePoint farm.
using (SPSite siteCollection = new SPSite("http://myserver/mysitecollection"))
{
   KeywordQuery keywordQuery = new KeywordQuery(siteCollection);
   keywordQuery.QueryText = "SharePoint";
   
  SearchExecutor searchExecutor = new SearchExecutor();
  ResultTableCollection resultTableCollection = searchExecutor.ExecuteQuery(keywordQuery);
  var resultTables = resultTableCollection.Filter("TableType", KnownTableTypes.ReleventResults);
  var resultTable = resultTables.FirstOrDefault();
  DataTable dataTable = resultTable.Table;
}

Querying from the Client Managed CSOM 
great for: provider hosted apps; remote .NET Application
Uses similar KeywordQuery and SearchExecutor classes; required a client context.
References:
    Microsoft.SharePoint.Client.dll
    Microsoft.SharePoint.Client.Runtime.dll
    Microsoft.SharePoint.Client.Search.dll

using (ClientContext clientContext = new ClientContext("http://mysharepointsite"))
{
   KeywordQuery keywordQuery = new KeywordQuery(clientContext);
   keywordQuery.QueryText = "SharePoint";

  SearchExecutor searchExecutor = new SearchExecutor(clientContext);
  
  ClientResult<ResultTableCollection> results = searchExecutor.ExecuteQuery(keywordQuery);
  clientContext.ExecuteQuery();

   foreach(var resultRow in results.Value[0].ResultRows)
  {
      Console.WriteLine("{0}: {1} ({2})", resultRow["Title"], resultRow["Path"], resultRow["Write"]); 
  }
  Console.ReadLine();
}

Searching with JavaScript CSOM

Uses similar KeywordQuery and SearchExecutor objects; results easier to parse than REST; REST is still preferred method.


var keywordQuery = new Microsoft.ShaePoint.Client.Search.Query.KeywordQuery(context);
keywordQuery.set_queryText("SharePoint");

var searchExecutor = new Microsoft.SharePoint.Client.Search.Query.SearchExecutor(context);
results = searchExecutor.executeQuery(keywordQuery);
context.executeQueryAsync(onQuerySuccess, onQueryFail);

Querying from the client REST

/_api/search/query
use querytext parameter to query; enclose query in single quotes

http://server/_api/search/query?querytext='SharePoint'

Issues: hard to retrieve extended fields; use the correct field name still couldn't get their values back.

REST + Javascript