Monday, December 31, 2012

JavaScript for differentiation of two different dates & Exclude the Saturdays and sunsays in total days

JavaScript for getting Total days between of two dates Exclude the Saturdays and Sundays in total days.

 Code: 


function DateDifference() {
            var startDate = document.getElementById('<%= txtStartDate.ClientID%>').value;
            var endDate = document.getElementById('<%= txtEndDate.ClientID%>').value;
            var startDateSplit = startDate.split("/");
            var endDateSplit = endDate.split("/");
           //getting Start Date,End Date
            var stDate = new Date(startDateSplit[2], startDateSplit[0] - 1, startDateSplit[1]);
            var enDate = new Date(endDateSplit[2], endDateSplit[0] - 1, endDateSplit[1]);
            //getting difference B/W Start Date & End Date
            var difference = (enDate.getTime() - stDate.getTime()) / (1000 * 60 * 60 * 24);
            var LeaveCount = difference + 1;

            if (stDate.getDay() == 0) {
                LeaveCount = LeaveCount - 1;               
            }
            else if (stDate.getDay() == 6) {
                LeaveCount = LeaveCount - 1;
            }

            var loopDate = new Date();
            loopDate = stDate;
            // Excluding Sat ,Sun in Selcted Dates
            for (var i = 1; i < difference + 1; i++) {
                var NextDate = new Date(loopDate.getYear(), loopDate.getMonth(), loopDate.getDate() + 1);               
                var Ndate = NextDate.getMonth() + 1 + "/" + NextDate.getDate() + "/" + NextDate.getYear();
                var NdateSplit = Ndate.split("/");
                var NxtDate = new Date(NdateSplit[2], NdateSplit[0] - 1, NdateSplit[1]);
                loopDate = NxtDate;
              
                if (NxtDate.getDay() == 0) {
                    LeaveCount = LeaveCount - 1;                  
                }
                else if (NxtDate.getDay() == 6) {
                    LeaveCount = LeaveCount - 1;                  
                }
            }           
            document.getElementById('<%= txtTotalDays.ClientID%>').value = LeaveCount;
        }

Monday, December 17, 2012

How to Enable Document Information Panel in SharePoint 2010


How to Enable Document Information Panel in SharePoint 2010
The SharePoint 2010 Document Information Panel allows users to enter metadata for Microsoft-based documents that are stored in SharePoint. However, the SharePoint 2010 Document Information Panel is not visible by default.  To view the SharePoint 2010 Document Information Panel, click the "Show Document Panel" option under the Info menu.

During an implementation of Sharepoint 2010 for an Australian client, the client had a requirement for showing the Document Information Panel whenever a document is opened from a particular document library. IOTAP was able to meet this requirement by enabling the Document Information Panel in the Document Library settings.
How to Enable SharePoint 2010 Document Information Panel for a Document Library:
1.       Navigate to the Document Library for which the Document Information Panel needs to be enabled
2.       Click on Library Settings in the Library Tools Ribbon
3.       In the Library Settings page, click Document Content Type which is located under the Content Type Category
4.       Click on Documents Information Panel Settings under Settings

Documents Information Panel Settings

5.       Select the check box for “Always show Document Information Panel on document open and initial save for this conten type
6.       Click OK

Now, whenever a document is opened from the document library the Document Information Panel will be displayed as shown below.
Document Information Panel in SharePoint 2010

Wednesday, December 5, 2012

50 Limitations of SharePoint Sandboxed Solutions



1. Deployment at site collection level (No Web Application-scoped Features or Farm-scoped Features). So, If you have 100 site collections, then you have to deploy the same sandbox solution to 100 site collections. 

2. No SPSecurity - Therefore no Elevated Privileges

3. You can't use SPSite object to get other site collections. (But you can use it to get current site as : SPSite site = SPContext.Current.Site)

4. Visual webparts are not supported (But you can use the "Visual Studio 200 SharePoint Power Tools" to get this functionality)

5. cannot call to the network resources. E.g. You cannot read/write to a database on the server (But you can use Silverlight)

6. Only "No code" workflows allowed. No Visual studio workflows (But the workflows without classes which are imported and edited in Visual studio will work!)

7. No support for System.IO, Therefore you Cannot read/write to the file system. 

8. HideCustomAction, CustomActionGroup are not allowed. But you can use <CustomAction>

9. Remember, Resource Usage Quotas/Limits applied on Sandboxed solutions http://msdn.microsoft.com/en-us/library/gg615462.aspx

10. No Feature stapling supported.

11. Can't write to registry (But you can read)

12. Limited Server Object Model MSDN: http://msdn.microsoft.com/en-us/library/gg615454.aspx

13. Can't set cookies in the sandbox. Use JQuery plugin instead http://plugins.jquery.com/project/cookie

14. No call to external WCF/web services such as HTTP calls (But we can use AJAX)

15. Content Type Binding is not supported

16. No support for custom Timer jobs

17. Can't use SharePoint mapped folders such as _layouts

18. Can't export a Sandboxed Web Part

19. Microsoft.SharePoint.WebControls and Microsoft.SharePoint.WebPartPages Namespace are not available.

20. Managed Metadata - No programmatic access to taxonomy object model. 

21. No ADO.NET support!

22. No support for SPUtility.SendEmail, So you can't Send Mails using this class.

23. No caching support

24. No Custom HTTP Modules

25. No developer dashboard

26. No Site Definition

27. Can't use controls for delegation

28. No Business Connectivity Services support

29. No Localization support

30. No SPWebConfigModification usage

31. Most of the Microsoft.SharePoint.Administration are disabled

32. No Document converters

33. No User Control support.

34. NO Custom service applications 

35. SharePoint web controls (such as SPTreeView) are not supported

36. ClientScriptManager is not available - No access to ScriptManager.

37. Can't access the event viewer for logging 

38. No PropertyBags of SharePoint Object model are not accessible,( But you can use SPWeb.AllProperties or custom list to store settings)

39. No GAC Deployment - Your solutions will be stored in content database. Can't deploy assemblies to GAC and Cannot call assemblies deployed out of Global Assembly Cache 

40. CustomPropertyToolPart not supported

41. Can't create application pages or site pages with code behind

42. No Server side redirects, such as Response.Redirect, Server.Transfer,  SPUtility.Redirect.

43. Can't access some of the enterprise services like UserProfile, Search 

44. Can't access dlls from BIN and resources files(.resx) 

45. Can't access code that is not marked to allow partially trusted callers

46. Can't access Cache object.

47. HttpRequest.Files collection will not contain anything

48. Only SPLimitedWebPartManager is available.

49. SharePoint Web controls (namespace SharePoint.WebControls) are not available,

50. Last but not least: site Template Binding is not supported.

Monday, November 26, 2012

Filter SharePoint List by Workflow Status


Filter SharePoint List by Workflow Status

Often we need to filter a SharePoint list by  the status of a workflow.

This is rather simple and can be done in the same way as filtering any other field.

The only thing you need to know is that the status of the workflow is an integer, not a text.  So we can’t add a filter like ‘Workflow name’ IS EQUAL TO ‘In Progress’

The following list gives the integer values of each status.
This data can also be used within InfoPath to change the layout of the form depending on the status of the workflow.

A blog was written earlier how to do this:
List of Workflow statuses

  •      0 - Starting
  • 1 - Failed on Start
  • 2 - In Progress
  • 3 - Error Occurred
  • 4 - Canceled
  • 5 - Completed
  • 6 - Failed on Start (retrying)
  • 7 - Error Occurred (retrying
  • 15 - Canceled
  • 16 - Approved
  • 17 - Rejected

Saturday, October 27, 2012

Current User's Group Owner details Using Client object model

Current User's Group Owner details Using Client object model

Here i am trying to get the Group owners Email Id. Similar way we can get all details of the group owner.



                //COM For Current User
                ClientContext COMforCurrentUser = new ClientContext("http://htschdev01:8000/sites/hr");
                COMforCurrentUser.Load(COMforCurrentUser.Web.CurrentUser);
                COMforCurrentUser.ExecuteQuery();
                User CurrentUser=COMforCurrentUser.Web.CurrentUser;

                // Smtp Server Details
                MailMessage mail = new MailMessage();
                SmtpClient SmtpServer = new SmtpClient("smtp.gmail.com");
                //COM For Owner Details
                ClientContext clientContext = new ClientContext("http://htschdev01:8000/sites/hr");
                Web web = clientContext.Web;
                GroupCollection groupColl = web.SiteGroups;
                clientContext.Load(groupColl,
                groups=>groups.Include(
                group=>group.Title,
                group=>group.Id));
                clientContext.ExecuteQuery();
                int Ownerid = 0;
                string OwnerMailID = "";
                foreach (Group siteGroup in groupColl)
                  {
                clientContext.Load(siteGroup);
                clientContext.ExecuteQuery();
                clientContext.Load(siteGroup.Users);
                clientContext.ExecuteQuery();
                UserCollection Tolalusers = siteGroup.Users;
                int count = siteGroup.Users.Count;
                string Groupname = siteGroup.Title;            
                User SiteOWner;
                foreach (User singleuser in Tolalusers)
                {
                    if (singleuser.LoginName == CurrentUser.LoginName)
                    {
                        clientContext.Load(siteGroup);
                        clientContext.ExecuteQuery();
                        clientContext.Load(siteGroup.Owner);
                        clientContext.ExecuteQuery();
                        Ownerid = siteGroup.Owner.Id;
                        string Ownername = siteGroup.Owner.LoginName;
                        foreach (User Owner in Tolalusers)
                        {
                            if (Owner.Id == Ownerid)
                            {
                                OwnerMailID = Owner.Email;
                                break;
                            }
                        }                                            
                        break;
                    }                  
                }              
            }
                mail.From = new MailAddress(OwnerMailID);               
                mail.To.Add(CurrentUser.Email);              
                mail.Subject = "Test Mail";
                mail.Body = "This is for testing SMTP mail from GMAIL";
                SmtpServer.Port = 587;
                SmtpServer.Credentials = new System.Net.NetworkCredential("XYZ@gmail.com", "Password");
                SmtpServer.EnableSsl = true;
                SmtpServer.Send(mail);
                MessageBox.Show("mail Send");

Tuesday, October 9, 2012

SharePoint RegistrationID For Sharepoint Contents


SharePoint RegistrationID For Sharepoint Contents

InvalidType = -1
GenericList = 100
DocumentLibrary = 101
Survey = 102
Links = 103
Announcements = 104
Contacts = 105
Events = 106
Tasks = 107
DiscussionBoard = 108
PictureLibrary = 109
DataSources = 110
WebTemplateCatalog = 111
UserInformation = 112
WebPartCatalog = 113
ListTemplateCatalog = 114
XMLForm = 115
MasterPageCatalog = 116
NoCodeWorkflows = 117
WorkflowProcess = 118
WebPageLibrary = 119
CustomGrid = 120
DataConnectionLibrary = 130
WorkflowHistory = 140
GanttTasks = 150
Meetings = 200
Agenda = 201
MeetingUser = 202
Decision = 204
MeetingObjective = 207
TextBox = 210
ThingsToBring = 211
HomePageLibrary = 212
Posts = 301
Comments = 302
Categories = 303
Pages = 850 
IssueTracking = 1100
AdminTasks = 1200


Referance:http://techtrainingnotes.blogspot.in/2008/01/sharepoint-registrationid-list-template.html

Wednesday, August 29, 2012

Inserting/Updating/Deleting the items in share point list by C# coding

Inserting/Updating/Deleting the items in  share point list by C# coding:


using (SPSite site = new SPSite("http://website url/" ))
02// Or SPContext.Current.Site.Url
03{
04    using (SPWeb Web = site.OpenWeb())
05    {
06            Web.AllowUnsafeUpdates = true;
07 
08            // Open List
09             SPList list = Web.Lists["MyList"];
10 
11            // Add new item in List
12             SPListItem item = list.Items.Add();
13             item["Title"] = "Test Title";
14             item["Description"] = "Test Description";
15             item.Update();
16 
17            // Get Item ID
18             listItemId = item.ID;
19 
20            // Update the List item by ID
21             SPListItem item = list.GetItemById(listItemId);
22             item["Description"] = "Update Description";
23             item.Update();
24 
25            // Delete item
26             SPListItem item = list.GetItemById(listItemId);
27             item.Delete();
28 
29            Web.AllowUnsafeUpdates = false;
30       }
31 }