Skip to main content

Event Date Function

 Date.toISOFormat = function (date, ignoreTime) {

    /// <summary>Date object static method to format a date to date ISO string - YYYY-MM-DDThh:mm:ssZ</summary>

    /// <param name="date" type="Date" mayBeNull="false" optional="false"></param>

    /// <param name="ignoreTime" type="Boolean" mayBeNull="false" optional="true"></param>

    /// <returns type="String">A string representing ISO format for specied date</returns>

 

    // If not specified, time is ignored

    var ignoreTime = ignoreTime || {};

 

    function pad(number) {

        // Add leading 0 if number is less then 10 (enclosed method)

        var r = String(number);

        if (r.length === 1) r = '0' + r;

        return r;

    }

 

    var Y = date.getFullYear();

    var M = pad(date.getMonth() + 1);

    var D = pad(date.getDate());

    if (ignoreTime === false) return Y + '-' + M + '-' + D + 'T00:00:00Z';

 

 

    var h = pad(date.getHours());

    var m = pad(date.getMinutes());

    var s = pad(date.getSeconds());

    return Y + '-' + M + '-' + D + 'T' + h + ':' + m + ':' + s + 'Z';

}

 

 

 

 

 

// Create Shp namespace

var Shp = Shp || {};

 

Shp.ListItem = function (xmlNode) {

    /// <summary>Object representing list item, built from xml node obtained for lists.asmx web service</summary>

    /// <param name="xmlNode" type="XML" mayBeNull="false" optional="false">XML node for list item</param>

    this.listItem = new Object();

    this._parseResponse(xmlNode);

}

 

Shp.ListItem.prototype._parseResponse = function (xmlNode) {

    /// <summary>Internal method of ListItem to parse xml node and enclose data into listItem property</summary>

    /// <param name="xmlNode" type="XML" mayBeNull="false" optional="false">XML node for list item</param>

    for (var j = 0; j < xmlNode.attributes.length; j++) {

        var nodeName = xmlNode.attributes[j].nodeName.replace('ows_', '');

        var nodeValue = xmlNode.attributes[j].nodeValue;

        this.listItem[nodeName] = (nodeValue === undefined || nodeValue === null) ? '' : nodeValue;

    }

}

 

Shp.ListItem.prototype.get_item = function (field) {

    /// <summary>Internal method of ListItem to parse xml node and enclose data into listItem property</summary>

    /// <param name="field" type="String" mayBeNull="false" optional="false">XML node for list item</param>

    var fieldValue = (this.listItem.hasOwnProperty(field) === true) ? this.listItem[field] : '';

    return fieldValue;

}

 

 

 

 

 

// Shp.Lists object

Shp.Lists = {};

 

 

Shp.Lists._serializeResponse = function (xml) {

    /// <summary>Parse XML server response and convert it into an array of Shp.ListItem objects</summary>

    /// <param name="xml" type="XML" mayBeNull="false" optional="false">A date object. Month data where specified date is included will be returned.</param>

    /// <returns type="Array" elementsType="Shp.ListItem"></returns>

 

    var items = new Array();

    var rows = xml.getElementsByTagName("z:row");

    for (var i = 0; i < rows.length; i++) {

        items.push(new Shp.ListItem(rows[i]));

    }

    return items;

}

 

Shp.Lists.getMonthEvents = function (list, date, callback) {

    /// <summary>Get events from a specified calendar list based on a specified date.</summary>

    /// <param name="listName" type="String" mayBeNull="false" optional="false">Calendar list name</param>

    /// <param name="date" type="Date" mayBeNull="false" optional="false">A date object. Month data where specified date is included will be returned.</param>

    /// <param name="callback" type="Function" mayBeNull="false" optional="false"></param>

 

    // We set calendar date in the middle of the month. Seems SharePoint Online did not return correct results if I set to first day of month

    var calendarDate = new Date(date.getFullYear(), date.getMonth(), 15);

    var month = date.getMonth();

    var year = date.getFullYear();

 

    function isInRange(dateString) {

        /// enclosed function to check if date is in range

        var dt = dateString.split(' ')[0];

        var y = parseFloat(dt.split('-')[0]);

        var m = parseFloat(dt.split('-')[1]) - 1;

        return (y === year && m === month);

    }

 

 

    var caml = "<Query>" +

                   "<Where>" +

                       "<DateRangesOverlap>" +

                           "<FieldRef Name='EventDate' />" +

                           "<FieldRef Name='EndDate' />" +

                           "<FieldRef Name='RecurrenceID' />" +

                           "<Value Type='DateTime' IncludeTimeValue='FALSE'>" +

                               "<Month />" +

                            "</Value>" +

                        "</DateRangesOverlap>" +

                   "</Where>" +

                   "<OrderBy>" +

                       "<FieldRef Name='EventDate' />" +

                    "</OrderBy>" +

               "</Query>";

 

 

 

    jQuery().SPServices({

        operation: 'GetListItems',

        async: true,

        listName: list,

        CAMLQuery: caml,

        CAMLRowLimit: 100,

        CAMLQueryOptions: '<QueryOptions><DateInUtc>FALSE</DateInUtc><ViewAttributes Scope="RecursiveAll" /><CalendarDate>' + Date.toISOFormat(calendarDate) + '</CalendarDate><IncludeMandatoryColumns>TRUE</IncludeMandatoryColumns><RecurrencePatternXMLVersion>v3</RecurrencePatternXMLVersion><ExpandRecurrence>TRUE</ExpandRecurrence></QueryOptions>',

        completefunc: function (data, status) {

            if (status === 'success') {

                var events = Shp.Lists._serializeResponse(data.responseXML);

                var items = [];

                for (var i = 0; i < events.length; i++) {

                    var start = events[i].get_item('EventDate');

                    var end = events[i].get_item('EndDate');

 

                    if (isInRange(start) === true || isInRange(end) === true) {

                        items.push(events[i]);

                    }

                }

                callback(items);

            }

            else {

                alert('Cannot complete the request');

            }

        }

 

    });

 

}





jQuery(document).ready(function () {

 

 

    Shp.Lists.getMonthEvents('Company Events', new Date(), function (items) {

        for (var i = 0; i < items.length; i++) {

            alert(items[i].get_item('EventDate'));

        }

    });

 

 

});




Shp.Lists.getDayEvents = function (list, date, callback) {

    /// <summary>Get events from a specified calendar list based on a specified date.</summary>

    /// <param name="listName" type="String" mayBeNull="false" optional="false">Calendar list name</param>

    /// <param name="date" type="Date" mayBeNull="false" optional="false">A date object.</param>

    /// <param name="callback" type="Function" mayBeNull="false" optional="false"></param>

 

    var caml = "<Query>" +

                   "<Where>" +

                       "<DateRangesOverlap>" +

                           "<FieldRef Name='EventDate' />" +

                           "<FieldRef Name='EndDate' />" +

                           "<FieldRef Name='RecurrenceID' />" +

                           "<Value Type='DateTime' IncludeTimeValue='FALSE'>" +

                               "<Today />" +

                            "</Value>" +

                        "</DateRangesOverlap>" +

                   "</Where>" +

                   "<OrderBy>" +

                       "<FieldRef Name='EventDate' />" +

                    "</OrderBy>" +

               "</Query>";

 

 

 

    jQuery().SPServices({

        operation: 'GetListItems',

        async: true,

        listName: list,

        CAMLQuery: caml,

        CAMLRowLimit: 100,

        CAMLQueryOptions: '<QueryOptions><DateInUtc>FALSE</DateInUtc><ViewAttributes Scope="RecursiveAll" /><CalendarDate>' + Date.toISOFormat(date) + '</CalendarDate><IncludeMandatoryColumns>TRUE</IncludeMandatoryColumns><RecurrencePatternXMLVersion>v3</RecurrencePatternXMLVersion><ExpandRecurrence>TRUE</ExpandRecurrence></QueryOptions>',

        completefunc: function (data, status) {

            if (status === 'success') {

                var events = Shp.Lists._serializeResponse(data.responseXML);

                callback(events);

            }

            else {

                alert('Cannot complete the request');

            }

        }

 

    });

 

}

Comments

Popular posts from this blog

The _spPageContextInfo

I f you are creating a SharePoint app using JavaScript and the Client side object model you need this friendly object. In the development of an app, you would require some basic properties- SharePoint as a framework provides these with the  _spPageContextInfo  object. _  spPageContextInfo  will provide these below properties:  webServerRelativeUrl  webAbsoluteUrl siteAbsoluteUrl serverRequestPath layoutsUrl webTitle webTemplate tenantAppVersion isAppWeb webLogoUrl webLanguage currentLanguage currentUICultureName currentCultureName env nid fid clientServerTimeDelta updateFormDigestPageLoaded siteClientTag crossDomainPhotosEnabled webUIVersion webPermMasks pagePersonalizationScope userId userLoginName systemUserKey alertsEnabled siteServerRelativeUrl allowSilverlightPrompt themedCssFolderUrl themedImageFileNames

PublishingAssociatedContentType

The Content Type to be associated with a page layout is indicated by the 'PublishingAssociatedContentType'. In the actual sense it means a binding setting between the Page Layout and the content type. If you fail to provide one, the SharePoint framework will make use of the Page Content type. The format of the binding is: ';# e.g. ';#ContentPage;#0x010100C568DB52D9D0A14D9B2FDCC96666E9F2007948130EC3DB064584E219954237AF3900470b13dd348649d08f9e5151501df9a4000dbd46dad8d045f98c83ad983b66d3f2;#'. where Content Type name: ContentPage Content Type ID: 0x010100C568DB52D9D0A14D9B2FDCC96666E9F2007948130EC3DB064584E219954237AF3900470b13dd348649d08f9e5151501df9a4000dbd46dad8d045f98c83ad983b66d3f2 respectively. QED