Sunday, August 8, 2010
Monday, July 26, 2010
How to implement Paging and sorting with SPQuery and SPListItemCollectionPosition in SharePoint 2010
Step One :
Create a user control or a webpart that will have datagrid
for displaying the paged and sorted results , next and previous link
buttons , label to show the current page values and drop down list for
sort column / sort order.
I have used visual webpart and added these lines for the controls shown in this image
Sort By :
<asp:DropDownList ID="DropDownListSortColumns" runat="server"
onselectedindexchanged="DropDownListSortColumns_SelectedIndexChanged"
AutoPostBack=true>
<asp:ListItem>ID</asp:ListItem>
<asp:ListItem>Title</asp:ListItem>
<asp:ListItem>Created</asp:ListItem>
<asp:ListItem>Modified</asp:ListItem>
</asp:DropDownList>
<asp:DropDownList ID="DropDownListSortOrder" runat="server"
onselectedindexchanged="DropDownListSortOrder_SelectedIndexChanged"
AutoPostBack=true>
<asp:ListItem Value="True">Ascending</asp:ListItem>
<asp:ListItem Value="False">Descending</asp:ListItem>
</asp:DropDownList>
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns=true class="style1">
</asp:GridView>
<table style="float:right; width:100px">
<tr>
<td>
<asp:LinkButton ID="LinkButtonPrevious"
runat="server"
onclick="LinkButtonPrevious_Click"><<</asp:LinkButton>
</td>
<td>
<asp:Label ID="LabelPaging"
runat="server"
Text="Label"></asp:Label></td>
<td>
<asp:LinkButton ID="LinkButtonNext"
runat="server"
onclick="LinkButtonNext_Click">>></asp:LinkButton>
</td>
</tr>
</table>
Step Two:
Now we need to handle the data load events , sort column change events
and the paging buttons events . For that we need to write event handlers
protected void Page_Load(object sender, EventArgs
e)
{
if (!Page.IsPostBack)
{
LoadData(1);
}
}
private void
LoadData(int currentPage)
{
ViewState["CurrentPage"] =
currentPage;
FillData(ViewState["Next"] as string,
DropDownListSortColumns.SelectedValue,Convert.ToBoolean(
DropDownListSortOrder.SelectedItem.Value));
}
private void
FillData(string pagingInfo, string sortColumn, bool
sortAscending)
{
int currentPage = Convert.ToInt32(ViewState["CurrentPage"]);
uint rowCount = 5;
string columnValue;
string nextPageString = "Paged=TRUE&p_ID={0}&p_"
+ sortColumn + "={1}";
string
PreviousPageString = "Paged=TRUE&PagedPrev=TRUE&p_ID={0}&p_"
+ sortColumn + "={1}";
SPListItemCollection collection;
//first make a call to fetch the desired result set
//here is the actual call to the dal function
collection = DAL.GetTestItems(sortColumn,
sortAscending, pagingInfo, rowCount);
DataTable objDataTable =
collection.GetDataTable();
GridView1.DataSource = objDataTable;
GridView1.DataBind();
//now we need to identify if this is a call from next or
first
if (null !=
collection.ListItemCollectionPosition)
{
if (collection.Fields[sortColumn].Type
== SPFieldType.DateTime)
{
columnValue = SPEncode.UrlEncode( Convert.ToDateTime(collection[collection.Count
- 1][sortColumn]).ToUniversalTime().ToString("yyyyMMdd
HH:mm:ss"));
}
else
{
columnValue = SPEncode.UrlEncode( Convert.ToString(collection[collection.Count -
1][sortColumn]));
}
nextPageString = string.Format(nextPageString,
collection[collection.Count - 1].ID, columnValue);
}
else
{
nextPageString = string.Empty;
}
if (currentPage > 1)
{
if (collection.Fields[sortColumn].Type
== SPFieldType.DateTime)
{
columnValue = SPEncode.UrlEncode(Convert.ToDateTime(collection[0][sortColumn]).ToUniversalTime().ToString("yyyyMMdd HH:mm:ss"));
}
else
{
columnValue =SPEncode.UrlEncode( Convert.ToString(collection[0][sortColumn]));
}
PreviousPageString = string.Format(PreviousPageString,
collection[0].ID, columnValue);
}
else
{
PreviousPageString = string.Empty;
}
if (string.IsNullOrEmpty(nextPageString))
{
LinkButtonNext.Visible = false;
}
else
{
LinkButtonNext.Visible = true;
}
if (string.IsNullOrEmpty(PreviousPageString))
{
LinkButtonPrevious.Visible = false;
}
else
{
LinkButtonPrevious.Visible = true;
}
ViewState["Previous"] =
PreviousPageString;
ViewState["Next"] =
nextPageString;
LabelPaging.Text = ((currentPage - 1) * rowCount) + 1 + " - " + currentPage * rowCount;
}
protected void
LinkButtonPrevious_Click(object sender, EventArgs e)
{
LoadData(Convert.ToInt32(ViewState["CurrentPage"]) - 1);
}
protected void
LinkButtonNext_Click(object sender, EventArgs e)
{
LoadData(Convert.ToInt32(ViewState["CurrentPage"]) + 1);
}
protected
void
DropDownListSortColumns_SelectedIndexChanged(object
sender, EventArgs e)
{
ViewState.Remove("Previous");
ViewState.Remove("Next");
LoadData(1);
}
protected void
DropDownListSortOrder_SelectedIndexChanged(object
sender, EventArgs e)
{
ViewState.Remove("Previous");
ViewState.Remove("Next");
LoadData(1);
}
Step 3
Now the last step is to add the DAL class for this solution to complete
public class DAL
{
public static SPListItemCollection GetTestItems(string sortBy, bool
sortAssending, string pagingInfo, uint rowLimit)
{
SPWeb objWeb = SPContext.Current.Web;
SPListItemCollection collection;
SPQuery objQuery = new
SPQuery();
objQuery.RowLimit = rowLimit;
objQuery.Query = "<OrderBy><FieldRef Name='" +
sortBy + "' Ascending='" +
sortAssending + "' /></OrderBy>";
objQuery.ViewFields = "<FieldRef
Name='Title' />";
if (!string.IsNullOrEmpty(pagingInfo))
{
SPListItemCollectionPosition position
= new SPListItemCollectionPosition(pagingInfo);
objQuery.ListItemCollectionPosition = position;
}
collection = objWeb.Lists["CustomList"].GetItems(objQuery);
return collection;
}
}
The source code can be found here
Saturday, July 17, 2010
Getting SharePoint User's Profiles
SPSecurity.RunWithElevatedPrivileges(delegate()
{
try
{
using (SPSite oSite = new SPSite(SPContext.Current.Site.ID, SPContext.Current.Site.SystemAccount.UserToken))
{
SPServiceContext context = SPServiceContext.GetContext(oSite);
UserProfileManager myProfileManager = new UserProfileManager(context);
string CurrentUser = SPContext.Current.Web.CurrentUser.LoginName;
UserProfile myProfile = myProfileManager.GetUserProfile(CurrentUser);
dt.Rows.Add(Convert.ToString(myProfile["FirstName"].Value), Convert.ToString(myProfile["Department"].Value));
//dt.Rows.Add(Convert.ToString(myProfile["LastName"].Value), Convert.ToString(myProfile["FirstName"].Value), Convert.ToString(myProfile["Department"].Value), Convert.ToString(myProfile["WorkEmail"].Value), Convert.ToString(myProfile["WorkPhone"].Value), Convert.ToString(myProfile["CellPhone"].Value));
}
CurentUserGrd.DataSource = dt;
CurentUserGrd.DataBind();
}
catch (Exception ex)
{
lblError.Text = ex.Message;
}
});
Wednesday, July 14, 2010
To Lock or Unlock a site collection by using Central Administration
TO LOCK A SITE COLLLECTION
1. Verify that you have the following administrative credentials.
• You must be a member of the Site Collection Administrators group for the site collection.
2. In Central Administration, click Application Management.
3. On the Application Management page, in the Site Collections section, click Configure quotas and locks. The Site Collection Quotas and Locks page opens.
4. If you want to change the selected site collection, in the Site Collection section, on the Site Collection menu, click Change Site Collection. Use the Select Site Collection page to select a site collection.
5. On the Site Collection Quotas and Locks page, in the Site Lock Information section, select one of the following options:
•Not locked: To unlock the site collection and make it available to users.
•Adding content prevented: To prevent users from adding new content to the
sitecollection. Updates and deletions are still allowed.
•Read-only (blocks additions, updates, and deletions):
To prevent users from adding, updating, or deleting content.
•No access: To prevent access to content completely.
Users who attempt to access the site receive an access-denied message.
6. If you select Adding content prevented, Read-only (blocks additions, updates, and deletions), or No access, type a reason for the lock in the Additional lock information box.
7. Click OK.
TO UNLOCK A SITE COLLLECTION
1.Verify that you meet the following minimum requirements: See Add-SPShellAdmin.
2.On the Start menu, click All Programs.
3.Click Microsoft SharePoint 2010 Products.
4.Click SharePoint 2010 Management Shell.
5.At the Windows PowerShell 2.0 command prompt, type the following command:
Set-SPSite -Identity "<SiteCollection>" -LockState "<State>"
Where:
•<SiteCollection> is the URL of the site collection that you want to lock or unlock.
•<State> is one of the following values:
•Unlock: To unlock the site collection and make it available to users.
•NoAdditions: To prevent users from adding new content to the site collection. Updates and deletions are still allowed.
•ReadOnly: To prevent users from adding, updating, or deleting content.
•NoAccess: To prevent access to content completely. Users who attempt to access the site receive an access-denied message.
1. Verify that you have the following administrative credentials.
• You must be a member of the Site Collection Administrators group for the site collection.
2. In Central Administration, click Application Management.
3. On the Application Management page, in the Site Collections section, click Configure quotas and locks. The Site Collection Quotas and Locks page opens.
4. If you want to change the selected site collection, in the Site Collection section, on the Site Collection menu, click Change Site Collection. Use the Select Site Collection page to select a site collection.
5. On the Site Collection Quotas and Locks page, in the Site Lock Information section, select one of the following options:
•Not locked: To unlock the site collection and make it available to users.
•Adding content prevented: To prevent users from adding new content to the
sitecollection. Updates and deletions are still allowed.
•Read-only (blocks additions, updates, and deletions):
To prevent users from adding, updating, or deleting content.
•No access: To prevent access to content completely.
Users who attempt to access the site receive an access-denied message.
6. If you select Adding content prevented, Read-only (blocks additions, updates, and deletions), or No access, type a reason for the lock in the Additional lock information box.
7. Click OK.
TO UNLOCK A SITE COLLLECTION
1.Verify that you meet the following minimum requirements: See Add-SPShellAdmin.
2.On the Start menu, click All Programs.
3.Click Microsoft SharePoint 2010 Products.
4.Click SharePoint 2010 Management Shell.
5.At the Windows PowerShell 2.0 command prompt, type the following command:
Set-SPSite -Identity "<SiteCollection>" -LockState "<State>"
Where:
•<SiteCollection> is the URL of the site collection that you want to lock or unlock.
•<State> is one of the following values:
•Unlock: To unlock the site collection and make it available to users.
•NoAdditions: To prevent users from adding new content to the site collection. Updates and deletions are still allowed.
•ReadOnly: To prevent users from adding, updating, or deleting content.
•NoAccess: To prevent access to content completely. Users who attempt to access the site receive an access-denied message.
Friday, February 12, 2010
How to consume Sharepoint Web Service through Javascript
Sharepoint 2010 has introduced Client Object Modal by which you can send
a call to Sharepoint client API through code or through Javascript. But
if you are calling the client API through Javascript, you can only do
so by using asynchronous (executeQueryAsync) call to the native method.
Many a times you may need to get the data in the same method without leaving the control (means by a synchronous call without leaving the method). In that case, the best possible solution would be to use Web service calls.
Below is the code to accomplish this. For the sake of simplicity, I have called "Lists.asmx" web service to get an item by Id.
//Main Method
function GetItemByIdAndTitle(rootSiteUrl, ListTitle, itemId) {
var responseXML;
var ws;
try {
ws = InstanciateHttpRequest();
if (ws != null)
{
var soap = GetEnvelope(ListTitle, itemId); // create a web service envelope here
ws.open("POST", rootSiteUrl + "/_vti_bin/lists.asmx", false);
ws.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
ws.setRequestHeader("SOAPAction", "http://schemas.microsoft.com/sharepoint/soap/GetListItems");
ws.send(soap);
if (ws.readyState == '4' && ws.status == '200')
{
responseXML = ws.responseXML.xml;
//you can parse your XML here to get the data
}
}
}
catch (e)
{ }
return responseXML;
}
//This ensures the the object instanciation is supported by multiple browsers // (Mozilla, IE).
function InstanciateHttpRequest()
{
var Obj;
if (window.XMLHttpRequest)
{
Obj = new XMLHttpRequest();
}
else
{
Obj = new ActiveXObject("Microsoft.XMLHTTP");
}
return Obj;
}
//Soap Envelope
function GetEnvelope(listName,itemId)
<
var soap = "<?xml version='1.0' encoding='utf-8'?>" +
"<soap:Envelope xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/'>" +
"<soap:Body>" +
"<GetListItems xmlns='http://schemas.microsoft.com/sharepoint/soap/'>"+
"<listName>" + listName + "</listName>"+
"<query><Query><Where><Eq><FieldRef Name='ID' /><Value Type='Counter'>" + itemId + "</Value></Eq></Where></Query></query>" +
"<viewFields><ViewFields><FieldRef Name='ContentType' /></ViewFields></viewFields>" +
"<rowLimit>1</rowLimit>" +
"<queryOptions><QueryOptions><ViewAttributes Scope='Recursive'></ViewAttributes></QueryOptions></queryOptions>" +
"</GetListItems>"+
"</soap:Body>" +
"</soap:Envelope>";
return soap;
>
Wednesday, February 10, 2010
How to add JQuery, JS and CSS file reference to sharepoint master page without modifying the master page
In SharePoint master page, there is AdditionalPageHead
Content Place Holder which can be used for adding
JavaScript, Meta Tags, CSS Styles or other content to the page without modifying them.
One practical scenario would be programmatically adding JQuery, custom JS and CSS file reference to your master page without modifying the master page
it.
You need to create a Delegate Control and deploy it using a
feature. Below is the snapshot for Feature.XML file.
<?xml version="1.0" encoding="utf-8"?>
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
<Control Id="AdditionalPageHead"
ControlSrc="~/_controltemplates/CustomFolder/CustomPageHead.ascx"
Sequence="1499"/>
</Elements>
Change the sequence number and control path and name as per your requirement.
In the CustomPageHead.ascx add the
references of JS/CSS
<script type="text/javascript" src="/_layouts/../JS/jquery-1.7.1.min.js"></script>
….
….
<link rel="stylesheet" type="text/css" href="/_layouts/../../../jquery-ui-1.8.18.custom.css"
/>
<script type="text/javascript">
…
…
</script>
Just deploy your feature and activate it in the site where you want to add JS and CSS references.
Tuesday, January 19, 2010
Step by step Sharepoint 2010 Modal Dialog Pop up
<script type="text/javascript">
function OpenDialog(URL) {
var NewPopUp = SP.UI.$create_DialogOptions();
NewPopUp.url = URL;
NewPopUp.width = 700;
NewPopUp.height = 350;
SP.UI.ModalDialog.showModalDialog(NewPopUp);
}
</script>
Call the Javascript on Button click and the modal PopUp will pops up with the Page of Specified URL.
btnOpenPopUp.Attributes.Add("onClick", "javascript:OpenDialog(‘/_layouts/CustomPage/CustomPage.aspx’);");
Sunday, January 10, 2010
How to show default sharepoint context menu with items in SharePoint 2010 custom webparts

While developing custom webparts, we often come across a requirement where in we need to show items from multiple lists in a grid like interface.While SPGridView is a nice control to achieve that,it has its own limitations when it comes to out of box features of sharepoint like showing default sharepoint context menu with options like 'View Properties' ,'Edit Properties' etc.
Usually , to create a context menu using SPGridView, we need to create a 'SPMenuField' in the grid and write our own code for each of the menu items.This approach is difficult to be able to achieve out of the box menu options like 'View Properties','Edit properties' etc.
The other option is to embed the javascript that sharepoint generates for context menu in the page's html. This way, this javascript would take care of rendering the context menu for us.This is the method that I have used to render this context menu.
In order to achieve this, I created a SPGridView with 'BoundField' instead of 'SPMenufield' in the user control (.ascx) of the visual webpart:
<SharePoint:SPGridView ID="gvMyDocuments" AutoGenerateColumns="false"
runat="server" AllowSorting="true" onsorting="gvMyDocuments_Sorting"
OnRowDataBound="gvMyDocuments_RowDataBound">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:Image runat="server" ID="imgDocIcon" ImageUrl="/_layouts/images/icgen.gif"/>
<asp:Image runat="server" Visible="false" ID="imgOverlay" CssClass="ms-vb-icon-overlay" ImageUrl="/_layouts/images/icgen.gif"/>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField HeaderText ="Name" DataField="Title" HtmlEncode="false" HtmlEncodeFormatString="false" SortExpression="Title" HeaderStyle-HorizontalAlign="Left"/>
<asp:BoundField HeaderText ="Modified" DataField="Modified" SortExpression="Modified" HeaderStyle-HorizontalAlign="Left"/>
<asp:BoundField HeaderText ="ModifiedBy" DataField="ModifiedBy" SortExpression="ModifiedBy" HeaderStyle-HorizontalAlign="Left"/>
<asp:BoundField HeaderText ="ID" DataField="ID" itemstyle-cssclass="hiddencol" HeaderStyle-CssClass="hiddencol" HeaderStyle-HorizontalAlign="Left"/>
</Columns>
<RowStyle HorizontalAlign="Left" VerticalAlign="Middle" />
</SharePoint:SPGridView>
While creating the entity collection to be bound with the grid view,I created the html and assigned it to the Title field (to be bound with the 'Name' field of the GridView).
The code for creation of this html is as follows:
objRelationships.Title = GenerateTitleHtml(strNameWoExt, objSPListItem.Url, itemCount, objSPListItem.ID, objSPListItem.ParentList, objSPListItem);
where:
objSPListItem is the current SPListItem object being populated.
strNameWoExt is the document name (without extention)
objSPListItem.Url is the url for the current list item
itemCount is a unique number being incremented everytime to maintain a unique id.
objSPListItem.ID is the id of the list item.
objSPListItem.ParentList is the parent list of the list item.
The method 'GenerateTitleHtml' creates all the html necessary for creating
the context menu :
public virtual String
GenerateTitleHtml(String strTitle, String strFileUrl, Int32 itemCount,
Int32 ItemID, SPList itemParentList, SPListItem currentListItem)
{
StringBuilder sbHtml = new StringBuilder();
String ctxMenuJavascriptHtml = CreateContextMenu(itemParentList, itemCount);
if (!String.IsNullOrEmpty(ctxMenuJavascriptHtml))
{
sbHtml.Append(ctxMenuJavascriptHtml);
}
String strCtxId = itemCount.ToString() + Math.Abs(itemParentList.ID.GetHashCode()).ToString().Substring(0, 3);
sbHtml.Append("<div class='ms-vb itx' onmouseover='OnItem(this)' ctxname='ctx" + strCtxId + "' id='" + ItemID + "' Field='LinkFilename' Perm='0x7fffffffffffffff' EventType=''>");
sbHtml.Append("<a onclick=\"" + GetDispEx(currentListItem, itemCount) + "\" href='/" + strFileUrl + "' onfocus='OnLink(this)'>" + strTitle + "<img height='1' border='0' width='1' alt='Use SHIFT+ENTER to open the menu (new window).' class='ms-hidden' src='/_layouts/images/blank.gif'></a>");
// sbHtml.Append(strTitle);
sbHtml.Append("</div>");
sbHtml.Append("<div class='s4-ctx' onmouseover='OnChildItem(this.parentNode); return false;'>");
sbHtml.Append("<span> </span>");
sbHtml.Append("<a onfocus='OnChildItem(this.parentNode.parentNode); return false;' onclick='PopMenuFromChevron(event); return false;' href='javascript:;' title='Open Menu'></a>");
sbHtml.Append("<span> </span>");
sbHtml.Append("</div>");
String customMenuActionsHtml = CreateCustomMenuActionsHtml(itemParentList, ItemID);
if (!String.IsNullOrEmpty(customMenuActionsHtml))
{
sbHtml.Append(customMenuActionsHtml);
}
return sbHtml.ToString();
}
public String GetDispEx(SPListItem item, Int32 ctxID)
{
String strDispEx = String.Empty;
String htmlFileType = String.Empty;
String strCtxID = ctxID.ToString() + Math.Abs(item.ParentList.ID.GetHashCode()).ToString().Substring(0, 3);
if (item["HTML_x0020_File_x0020_Type"] != null)
{
htmlFileType = item["HTML_x0020_File_x0020_Type"].ToString();
}
String strDefaultItemOpenApplication = (item.ParentList.DefaultItemOpen == DefaultItemOpen.Browser) ? "1" : "0";
String strCurrentUserID = item.Web.CurrentUser.ID.ToString();
String strFileName = "";
if (item["FileRef"] != null)
{
strFileName = item["FileRef"].ToString();
}
String strRedirectToServerFile = SPEncode.ScriptEncode(SPUtility.MapToServerFileRedirect(item.ParentList.ParentWeb, strFileName, htmlFileType));
if (!String.IsNullOrEmpty(strRedirectToServerFile))
{
strRedirectToServerFile = "1" + strRedirectToServerFile;
}
String strCheckedOutToLocal = "";
if (item["IsCheckedoutToLocal"] != null)
{
strCheckedOutToLocal = item["IsCheckedoutToLocal"].ToString();
}
String strForceCheckout = item.ParentList.ForceCheckout ? "1" : "0";
String strCheckedOutUserID = "";
if (item["CheckedOutUserId"] != null)
{
strCheckedOutUserID = item["CheckedOutUserId"].ToString().Split(new char[] { '#' })[1];
}
String strPermMask = "";
if (item["PermMask"] != null)
{
strPermMask = item["PermMask"].ToString();
}
String strSetContext = "ctx=g_ctxDict['ctx" + strCtxID + "'];";
strDispEx = String.Format("return DispEx(this,event,'TRUE','FALSE','FALSE','SharePoint.OpenDocuments.3','{0}','SharePoint.OpenDocuments','{1}','{2}','{3}','{4}','{5}','{6}','{7}')", new object[] { strDefaultItemOpenApplication, htmlFileType, strRedirectToServerFile, strCheckedOutUserID, strCurrentUserID, strForceCheckout, strCheckedOutToLocal, strPermMask });
return strSetContext + strDispEx;
}
public virtual String CreateCustomMenuActionsHtml(SPList itemParentList, Int32 ItemID)
{
StringBuilder customMenuActionsHtml = new StringBuilder();
if (!customMenuActionsDivListIDs.Contains(itemParentList.ID.ToString()))
{
customMenuActionsHtml.AppendLine("<div id='ECBItems_{" + itemParentList.ID.ToString() + "}' style='display:none' height='0' width='0'>");
foreach (SPUserCustomAction objSPUserCustomAction in itemParentList.ParentWeb.UserCustomActions)
{
customMenuActionsHtml.AppendLine("<div>");
customMenuActionsHtml.AppendLine("<div>" + objSPUserCustomAction.Title + "</div>");
customMenuActionsHtml.AppendLine("<div>" + objSPUserCustomAction.ImageUrl + "</div>");
customMenuActionsHtml.AppendLine("<div>" + objSPUserCustomAction.Url + "</div>");
customMenuActionsHtml.AppendLine("<div>0x0</div>");
if (objSPUserCustomAction.Rights == SPBasePermissions.EditListItems)
{
customMenuActionsHtml.AppendLine("<div>0x4</div>");
}
else
{
customMenuActionsHtml.AppendLine("<div>0x0</div>");
}
customMenuActionsHtml.AppendLine("<div>" + objSPUserCustomAction.RegistrationType.ToString() + "</div>");
if (objSPUserCustomAction.RegistrationId != null)
{
customMenuActionsHtml.AppendLine("<div>" + objSPUserCustomAction.RegistrationId + "</div>");
}
customMenuActionsHtml.AppendLine("<div>" + objSPUserCustomAction.Sequence.ToString() + "</div>");
customMenuActionsHtml.AppendLine("</div>");
}
customMenuActionsHtml.AppendLine("</div>");
customMenuActionsDivListIDs.Add(itemParentList.ID.ToString());
}
return customMenuActionsHtml.ToString();
}
private String CreateContextMenu(SPList objSPList, Int32 ctxID)
{
StringBuilder javascript = new StringBuilder();
#region variables
String strListItemTitle = String.Empty;
Int32 listBaseType = 0;
Boolean navigateForFormsPages = false;
String listTemplateID = String.Empty;
String listName = String.Empty;
String viewID = String.Empty;
String strListUrlID = String.Empty;
String strHttpPath = String.Empty;
String strHttpRoot = String.Empty;
String strImagesPath = String.Empty;
String strPortalUrl = String.Empty;
String strSendToLocationName = String.Empty;
String strSendToLocationUrl = String.Empty;
Int32 recycleBinEnabled = 0;
String strOfficialFileName = String.Empty;
String strOfficialFileNames = String.Empty;
String strWriteSecurity = String.Empty;
String strSiteTitle = String.Empty;
String strListTitle = String.Empty;
String strDisplayFormUrl = String.Empty;
String strEditFormUrl = String.Empty;
Int32 isWebEditorPreview = 0;
//Int32 ctxId = 0;
String ctxId = String.Empty;
Boolean isXslView = false;
SPUser currentUser;
Boolean enableMinorVersions = false;
Int32 verEnabled = 0;
Boolean workflowsAssociated = false;
Boolean contentTypesEnabled = false;
String strCtrlName = String.Empty;
Int32 relatedCascadeLists = 0;
String strSource = String.Empty;
String strMenuHome = String.Empty;
String strHomeURL = String.Empty;
String strHomeImageURL = String.Empty;
String strMenuMyDoc = String.Empty;
String strMyDocURL = String.Empty;
String strMyDocImageURL = String.Empty;
String strMenuAudit = String.Empty;
String strAuditURL = String.Empty;
String strAuditImageURL = String.Empty;
String strMenuRollout = String.Empty;
String strRolloutAction = String.Empty;
String strMenuVersionPIM = String.Empty;
String strVersionPIMAction = String.Empty;
String strMenuCompliance = String.Empty;
String strComplianceAction = String.Empty;
Boolean isRolloutHASub = false;
Boolean isVersionPIM = false;
Int32 itemID = 0;
#endregion
#region Current Context Variables
listBaseType = (Int32)Enum.Parse(typeof(SPBaseType), objSPList.BaseType.ToString());
navigateForFormsPages = objSPList.NavigateForFormsPages == true ? true : false;
listTemplateID = ((Int32)objSPList.BaseTemplate).ToString();
listName = "{" + objSPList.ID.ToString().ToUpper() + "}";
viewID = "{" + objSPList.DefaultView.ID.ToString().ToUpper() + "}";
//strListUrlID = "/" + Page.Server.UrlEncode(objSPList.RootFolder.Url.ToString());
strListUrlID = "/" + SPHttpUtility.UrlPathEncode(objSPList.RootFolder.Url.ToString(), true);
strHttpPath = SPContext.Current.Site.Url + "/_vti_bin/owssvr.dll?CS=65001";
strHttpRoot = SPContext.Current.Site.Url;
strImagesPath = "/_layouts/images/";
strPortalUrl = SPContext.Current.Web.PortalUrl == String.Empty ? null : SPContext.Current.Web.PortalUrl;
strSendToLocationName = objSPList.SendToLocationName;
strSendToLocationUrl = objSPList.SendToLocationUrl;
recycleBinEnabled = SPContext.Current.Web.Site.WebApplication.RecycleBinEnabled == true ? 1 : 0;
strOfficialFileName = SPContext.Current.Web.Site.WebApplication.OfficialFileName;
strOfficialFileNames = "Relationships";//added for the sake of identification in js file
strWriteSecurity = Convert.ToString(objSPList.WriteSecurity);
strSiteTitle = SPContext.Current.Web.Title;
strListTitle = objSPList.Title;
strDisplayFormUrl = SPContext.Current.Site.Url + "/_layouts/listform.aspx?PageType=4&ListId={" + (Convert.ToString(objSPList.ID).ToUpper() + "}");//objSPList.Forms[PAGETYPE.PAGE_DISPLAYFORM].Url;
strEditFormUrl = SPContext.Current.Site.Url + "/_layouts/listform.aspx?PageType=6&ListId={" + (Convert.ToString(objSPList.ID).ToUpper() + "}");//objSPList.Forms[PAGETYPE.PAGE_EDITFORM].Url;
isWebEditorPreview = 0;
//ctxId = objSPList.ItemCount;
ctxId = ctxID.ToString() + Math.Abs(objSPList.ID.GetHashCode()).ToString().Substring(0,3);
isXslView = false;
currentUser = SPContext.Current.Web.CurrentUser;
enableMinorVersions = objSPList.EnableMinorVersions;
verEnabled = objSPList.EnableVersioning == true ? 1 : 0;
workflowsAssociated = objSPList.WorkflowAssociations.Count > 0 ? true : false;
contentTypesEnabled = objSPList.ContentTypesEnabled;
relatedCascadeLists = 1;
#endregion
#region Constructing javascript for context object
javascript.AppendLine("<script type='text/javascript'>");
//javascript.Append("debugger;");
javascript.AppendLine("ctx = new ContextInfo();");
javascript.AppendLine("var existingHash = '';");
javascript.AppendLine("if (window.location.href.indexOf('#') > -1)");
javascript.AppendLine("{");
javascript.AppendLine("existingHash = window.location.href.substr(window.location.href.indexOf('#'));");
javascript.AppendLine("}");
javascript.AppendLine("ctx.existingServerFilterHash = existingHash;");
javascript.AppendLine("if (ctx.existingServerFilterHash.indexOf('ServerFilter=') == 1) {");
javascript.AppendLine("ctx.existingServerFilterHash = ctx.existingServerFilterHash.replace(/-/g, '&').replace(/&&/g, '-');");
javascript.AppendLine("var serverFilterRootFolder = GetUrlKeyValue('RootFolder', true, ctx.existingServerFilterHash);");
javascript.AppendLine("var currentRootFolder = GetUrlKeyValue('RootFolder', true);");
javascript.AppendLine("if ('' == serverFilterRootFolder && '' != currentRootFolder) {");
javascript.AppendLine("ctx.existingServerFilterHash += '&RootFolder=' + currentRootFolder;");
javascript.AppendLine("}");
javascript.AppendLine("window.location.hash = '';");
javascript.AppendLine("window.location.search = '?' + ctx.existingServerFilterHash.substr('ServerFilter='.length + 1);");
javascript.AppendLine("}");
javascript.AppendLine("ctx.listBaseType = " + SPHttpUtility.NoEncode(listBaseType == null ? -1 : listBaseType) + ";");
javascript.AppendLine("var varNavigateForFormsPages='" + navigateForFormsPages + "';");
javascript.AppendLine("if(varNavigateForFormsPages=='False')");
javascript.AppendLine("{");
javascript.AppendLine("ctx.NavigateForFormsPages = false;");
javascript.AppendLine("}");
javascript.AppendLine("else");
javascript.AppendLine("{");
javascript.AppendLine("ctx.NavigateForFormsPages = true;");
javascript.AppendLine("}");
javascript.AppendLine("ctx.listTemplate = '" + listTemplateID + "';");
javascript.AppendLine("ctx.listName = '" + listName + "';");
javascript.AppendLine("ctx.view = '" + viewID + "';");
javascript.AppendLine("ctx.listUrlDir = '" + strListUrlID + "';");
javascript.AppendLine("ctx.HttpPath = '" + strHttpPath + "';");
javascript.AppendLine("ctx.HttpRoot = '" + strHttpRoot + "';");
javascript.AppendLine("ctx.imagesPath = '" + strImagesPath + "';");
javascript.AppendLine("ctx.PortalUrl = '" + strPortalUrl + "';");
javascript.AppendLine("ctx.SendToLocationName = '" + strSendToLocationName + "';");
javascript.AppendLine("ctx.SendToLocationUrl = '" + strSendToLocationUrl + "';");
javascript.AppendLine("ctx.RecycleBinEnabled = " + recycleBinEnabled + ";");
javascript.AppendLine("ctx.OfficialFileName = '" + strOfficialFileName + "';");
javascript.AppendLine("ctx.OfficialFileNames = '" + strOfficialFileNames + "';");
javascript.AppendLine("ctx.WriteSecurity = '" + strWriteSecurity + "';");
javascript.AppendLine("ctx.SiteTitle = '" + strSiteTitle + "';");
javascript.AppendLine("ctx.ListTitle = '" + strListTitle + "';");
javascript.AppendLine("var varIsForceCheckout= '" + objSPList.ForceCheckout + "';");
javascript.AppendLine("if(varIsForceCheckout=='False')");
javascript.AppendLine("{");
javascript.AppendLine("ctx.isForceCheckout = false;");
javascript.AppendLine("}");
javascript.AppendLine("else");
javascript.AppendLine("{");
javascript.AppendLine("ctx.isForceCheckout = true;");
javascript.AppendLine("}");
javascript.AppendLine("if (ctx.PortalUrl == '')");
javascript.AppendLine("ctx.PortalUrl = null;");
javascript.AppendLine("ctx.displayFormUrl = '" + strDisplayFormUrl + "';");
javascript.AppendLine("ctx.editFormUrl = '" + strEditFormUrl + "';");
javascript.AppendLine("ctx.isWebEditorPreview = " + isWebEditorPreview + ";");
javascript.AppendLine("ctx.ctxId = " + SPHttpUtility.NoEncode(ctxId == null ? "-1" : ctxId.ToString()) + ";");
javascript.AppendLine("var varIsXslView= '" + isXslView + "';");
javascript.AppendLine("if(varIsXslView=='False')");
javascript.AppendLine("{");
javascript.AppendLine("ctx.isXslView = false;");
javascript.AppendLine("}");
javascript.AppendLine("else");
javascript.AppendLine("{");
javascript.AppendLine("ctx.isXslView = true;");
javascript.AppendLine("}");
javascript.AppendLine("if (g_ViewIdToViewCounterMap['" + viewID + "'] == null)");
javascript.AppendLine("g_ViewIdToViewCounterMap['" + viewID + "'] = " + SPHttpUtility.NoEncode(ctxId == null ? "-1" : ctxId.ToString()) + ";");
javascript.AppendLine("ctx.CurrentUserId = " + SPHttpUtility.NoEncode(currentUser == null ? "-1" : currentUser.ID.ToString()) + ";");
javascript.AppendLine("var varEnableMinorVersions= '" + enableMinorVersions + "';");
javascript.AppendLine("if(varEnableMinorVersions=='False')");
javascript.AppendLine("{");
javascript.AppendLine("ctx.EnableMinorVersions = false;");
javascript.AppendLine("}");
javascript.AppendLine("else");
javascript.AppendLine("{");
javascript.AppendLine("ctx.EnableMinorVersions = true;");
javascript.AppendLine("}");
javascript.AppendLine("ctx.verEnabled = " + verEnabled + ";");
javascript.AppendLine("var varWorkflowsAssociated='" + workflowsAssociated + "';");
javascript.AppendLine("if(varWorkflowsAssociated=='False')");
javascript.AppendLine("{");
javascript.AppendLine("ctx.WorkflowsAssociated = false;");
javascript.AppendLine("}");
javascript.AppendLine("else");
javascript.AppendLine("{");
javascript.AppendLine("ctx.WorkflowsAssociated = true;");
javascript.AppendLine("}");
javascript.AppendLine("var varContentTypesEnabled='" + contentTypesEnabled + "';");
javascript.AppendLine("if(varContentTypesEnabled=='False')");
javascript.AppendLine("{");
javascript.AppendLine("ctx.ContentTypesEnabled = false;");
javascript.AppendLine("}");
javascript.AppendLine("else");
javascript.AppendLine("{");
javascript.AppendLine("ctx.ContentTypesEnabled = true;");
javascript.AppendLine("}");
javascript.AppendLine("ctx.HasRelatedCascadeLists = " + relatedCascadeLists + ";");
javascript.AppendLine("ctx" + ctxId + " = ctx;");
javascript.AppendLine("g_ctxDict['ctx" + ctxId + "'] = ctx;");
javascript.AppendLine("</script>");
#endregion
return javascript.ToString();
}
{
StringBuilder sbHtml = new StringBuilder();
String ctxMenuJavascriptHtml = CreateContextMenu(itemParentList, itemCount);
if (!String.IsNullOrEmpty(ctxMenuJavascriptHtml))
{
sbHtml.Append(ctxMenuJavascriptHtml);
}
String strCtxId = itemCount.ToString() + Math.Abs(itemParentList.ID.GetHashCode()).ToString().Substring(0, 3);
sbHtml.Append("<div class='ms-vb itx' onmouseover='OnItem(this)' ctxname='ctx" + strCtxId + "' id='" + ItemID + "' Field='LinkFilename' Perm='0x7fffffffffffffff' EventType=''>");
sbHtml.Append("<a onclick=\"" + GetDispEx(currentListItem, itemCount) + "\" href='/" + strFileUrl + "' onfocus='OnLink(this)'>" + strTitle + "<img height='1' border='0' width='1' alt='Use SHIFT+ENTER to open the menu (new window).' class='ms-hidden' src='/_layouts/images/blank.gif'></a>");
// sbHtml.Append(strTitle);
sbHtml.Append("</div>");
sbHtml.Append("<div class='s4-ctx' onmouseover='OnChildItem(this.parentNode); return false;'>");
sbHtml.Append("<span> </span>");
sbHtml.Append("<a onfocus='OnChildItem(this.parentNode.parentNode); return false;' onclick='PopMenuFromChevron(event); return false;' href='javascript:;' title='Open Menu'></a>");
sbHtml.Append("<span> </span>");
sbHtml.Append("</div>");
String customMenuActionsHtml = CreateCustomMenuActionsHtml(itemParentList, ItemID);
if (!String.IsNullOrEmpty(customMenuActionsHtml))
{
sbHtml.Append(customMenuActionsHtml);
}
return sbHtml.ToString();
}
public String GetDispEx(SPListItem item, Int32 ctxID)
{
String strDispEx = String.Empty;
String htmlFileType = String.Empty;
String strCtxID = ctxID.ToString() + Math.Abs(item.ParentList.ID.GetHashCode()).ToString().Substring(0, 3);
if (item["HTML_x0020_File_x0020_Type"] != null)
{
htmlFileType = item["HTML_x0020_File_x0020_Type"].ToString();
}
String strDefaultItemOpenApplication = (item.ParentList.DefaultItemOpen == DefaultItemOpen.Browser) ? "1" : "0";
String strCurrentUserID = item.Web.CurrentUser.ID.ToString();
String strFileName = "";
if (item["FileRef"] != null)
{
strFileName = item["FileRef"].ToString();
}
String strRedirectToServerFile = SPEncode.ScriptEncode(SPUtility.MapToServerFileRedirect(item.ParentList.ParentWeb, strFileName, htmlFileType));
if (!String.IsNullOrEmpty(strRedirectToServerFile))
{
strRedirectToServerFile = "1" + strRedirectToServerFile;
}
String strCheckedOutToLocal = "";
if (item["IsCheckedoutToLocal"] != null)
{
strCheckedOutToLocal = item["IsCheckedoutToLocal"].ToString();
}
String strForceCheckout = item.ParentList.ForceCheckout ? "1" : "0";
String strCheckedOutUserID = "";
if (item["CheckedOutUserId"] != null)
{
strCheckedOutUserID = item["CheckedOutUserId"].ToString().Split(new char[] { '#' })[1];
}
String strPermMask = "";
if (item["PermMask"] != null)
{
strPermMask = item["PermMask"].ToString();
}
String strSetContext = "ctx=g_ctxDict['ctx" + strCtxID + "'];";
strDispEx = String.Format("return DispEx(this,event,'TRUE','FALSE','FALSE','SharePoint.OpenDocuments.3','{0}','SharePoint.OpenDocuments','{1}','{2}','{3}','{4}','{5}','{6}','{7}')", new object[] { strDefaultItemOpenApplication, htmlFileType, strRedirectToServerFile, strCheckedOutUserID, strCurrentUserID, strForceCheckout, strCheckedOutToLocal, strPermMask });
return strSetContext + strDispEx;
}
public virtual String CreateCustomMenuActionsHtml(SPList itemParentList, Int32 ItemID)
{
StringBuilder customMenuActionsHtml = new StringBuilder();
if (!customMenuActionsDivListIDs.Contains(itemParentList.ID.ToString()))
{
customMenuActionsHtml.AppendLine("<div id='ECBItems_{" + itemParentList.ID.ToString() + "}' style='display:none' height='0' width='0'>");
foreach (SPUserCustomAction objSPUserCustomAction in itemParentList.ParentWeb.UserCustomActions)
{
customMenuActionsHtml.AppendLine("<div>");
customMenuActionsHtml.AppendLine("<div>" + objSPUserCustomAction.Title + "</div>");
customMenuActionsHtml.AppendLine("<div>" + objSPUserCustomAction.ImageUrl + "</div>");
customMenuActionsHtml.AppendLine("<div>" + objSPUserCustomAction.Url + "</div>");
customMenuActionsHtml.AppendLine("<div>0x0</div>");
if (objSPUserCustomAction.Rights == SPBasePermissions.EditListItems)
{
customMenuActionsHtml.AppendLine("<div>0x4</div>");
}
else
{
customMenuActionsHtml.AppendLine("<div>0x0</div>");
}
customMenuActionsHtml.AppendLine("<div>" + objSPUserCustomAction.RegistrationType.ToString() + "</div>");
if (objSPUserCustomAction.RegistrationId != null)
{
customMenuActionsHtml.AppendLine("<div>" + objSPUserCustomAction.RegistrationId + "</div>");
}
customMenuActionsHtml.AppendLine("<div>" + objSPUserCustomAction.Sequence.ToString() + "</div>");
customMenuActionsHtml.AppendLine("</div>");
}
customMenuActionsHtml.AppendLine("</div>");
customMenuActionsDivListIDs.Add(itemParentList.ID.ToString());
}
return customMenuActionsHtml.ToString();
}
private String CreateContextMenu(SPList objSPList, Int32 ctxID)
{
StringBuilder javascript = new StringBuilder();
#region variables
String strListItemTitle = String.Empty;
Int32 listBaseType = 0;
Boolean navigateForFormsPages = false;
String listTemplateID = String.Empty;
String listName = String.Empty;
String viewID = String.Empty;
String strListUrlID = String.Empty;
String strHttpPath = String.Empty;
String strHttpRoot = String.Empty;
String strImagesPath = String.Empty;
String strPortalUrl = String.Empty;
String strSendToLocationName = String.Empty;
String strSendToLocationUrl = String.Empty;
Int32 recycleBinEnabled = 0;
String strOfficialFileName = String.Empty;
String strOfficialFileNames = String.Empty;
String strWriteSecurity = String.Empty;
String strSiteTitle = String.Empty;
String strListTitle = String.Empty;
String strDisplayFormUrl = String.Empty;
String strEditFormUrl = String.Empty;
Int32 isWebEditorPreview = 0;
//Int32 ctxId = 0;
String ctxId = String.Empty;
Boolean isXslView = false;
SPUser currentUser;
Boolean enableMinorVersions = false;
Int32 verEnabled = 0;
Boolean workflowsAssociated = false;
Boolean contentTypesEnabled = false;
String strCtrlName = String.Empty;
Int32 relatedCascadeLists = 0;
String strSource = String.Empty;
String strMenuHome = String.Empty;
String strHomeURL = String.Empty;
String strHomeImageURL = String.Empty;
String strMenuMyDoc = String.Empty;
String strMyDocURL = String.Empty;
String strMyDocImageURL = String.Empty;
String strMenuAudit = String.Empty;
String strAuditURL = String.Empty;
String strAuditImageURL = String.Empty;
String strMenuRollout = String.Empty;
String strRolloutAction = String.Empty;
String strMenuVersionPIM = String.Empty;
String strVersionPIMAction = String.Empty;
String strMenuCompliance = String.Empty;
String strComplianceAction = String.Empty;
Boolean isRolloutHASub = false;
Boolean isVersionPIM = false;
Int32 itemID = 0;
#endregion
#region Current Context Variables
listBaseType = (Int32)Enum.Parse(typeof(SPBaseType), objSPList.BaseType.ToString());
navigateForFormsPages = objSPList.NavigateForFormsPages == true ? true : false;
listTemplateID = ((Int32)objSPList.BaseTemplate).ToString();
listName = "{" + objSPList.ID.ToString().ToUpper() + "}";
viewID = "{" + objSPList.DefaultView.ID.ToString().ToUpper() + "}";
//strListUrlID = "/" + Page.Server.UrlEncode(objSPList.RootFolder.Url.ToString());
strListUrlID = "/" + SPHttpUtility.UrlPathEncode(objSPList.RootFolder.Url.ToString(), true);
strHttpPath = SPContext.Current.Site.Url + "/_vti_bin/owssvr.dll?CS=65001";
strHttpRoot = SPContext.Current.Site.Url;
strImagesPath = "/_layouts/images/";
strPortalUrl = SPContext.Current.Web.PortalUrl == String.Empty ? null : SPContext.Current.Web.PortalUrl;
strSendToLocationName = objSPList.SendToLocationName;
strSendToLocationUrl = objSPList.SendToLocationUrl;
recycleBinEnabled = SPContext.Current.Web.Site.WebApplication.RecycleBinEnabled == true ? 1 : 0;
strOfficialFileName = SPContext.Current.Web.Site.WebApplication.OfficialFileName;
strOfficialFileNames = "Relationships";//added for the sake of identification in js file
strWriteSecurity = Convert.ToString(objSPList.WriteSecurity);
strSiteTitle = SPContext.Current.Web.Title;
strListTitle = objSPList.Title;
strDisplayFormUrl = SPContext.Current.Site.Url + "/_layouts/listform.aspx?PageType=4&ListId={" + (Convert.ToString(objSPList.ID).ToUpper() + "}");//objSPList.Forms[PAGETYPE.PAGE_DISPLAYFORM].Url;
strEditFormUrl = SPContext.Current.Site.Url + "/_layouts/listform.aspx?PageType=6&ListId={" + (Convert.ToString(objSPList.ID).ToUpper() + "}");//objSPList.Forms[PAGETYPE.PAGE_EDITFORM].Url;
isWebEditorPreview = 0;
//ctxId = objSPList.ItemCount;
ctxId = ctxID.ToString() + Math.Abs(objSPList.ID.GetHashCode()).ToString().Substring(0,3);
isXslView = false;
currentUser = SPContext.Current.Web.CurrentUser;
enableMinorVersions = objSPList.EnableMinorVersions;
verEnabled = objSPList.EnableVersioning == true ? 1 : 0;
workflowsAssociated = objSPList.WorkflowAssociations.Count > 0 ? true : false;
contentTypesEnabled = objSPList.ContentTypesEnabled;
relatedCascadeLists = 1;
#endregion
#region Constructing javascript for context object
javascript.AppendLine("<script type='text/javascript'>");
//javascript.Append("debugger;");
javascript.AppendLine("ctx = new ContextInfo();");
javascript.AppendLine("var existingHash = '';");
javascript.AppendLine("if (window.location.href.indexOf('#') > -1)");
javascript.AppendLine("{");
javascript.AppendLine("existingHash = window.location.href.substr(window.location.href.indexOf('#'));");
javascript.AppendLine("}");
javascript.AppendLine("ctx.existingServerFilterHash = existingHash;");
javascript.AppendLine("if (ctx.existingServerFilterHash.indexOf('ServerFilter=') == 1) {");
javascript.AppendLine("ctx.existingServerFilterHash = ctx.existingServerFilterHash.replace(/-/g, '&').replace(/&&/g, '-');");
javascript.AppendLine("var serverFilterRootFolder = GetUrlKeyValue('RootFolder', true, ctx.existingServerFilterHash);");
javascript.AppendLine("var currentRootFolder = GetUrlKeyValue('RootFolder', true);");
javascript.AppendLine("if ('' == serverFilterRootFolder && '' != currentRootFolder) {");
javascript.AppendLine("ctx.existingServerFilterHash += '&RootFolder=' + currentRootFolder;");
javascript.AppendLine("}");
javascript.AppendLine("window.location.hash = '';");
javascript.AppendLine("window.location.search = '?' + ctx.existingServerFilterHash.substr('ServerFilter='.length + 1);");
javascript.AppendLine("}");
javascript.AppendLine("ctx.listBaseType = " + SPHttpUtility.NoEncode(listBaseType == null ? -1 : listBaseType) + ";");
javascript.AppendLine("var varNavigateForFormsPages='" + navigateForFormsPages + "';");
javascript.AppendLine("if(varNavigateForFormsPages=='False')");
javascript.AppendLine("{");
javascript.AppendLine("ctx.NavigateForFormsPages = false;");
javascript.AppendLine("}");
javascript.AppendLine("else");
javascript.AppendLine("{");
javascript.AppendLine("ctx.NavigateForFormsPages = true;");
javascript.AppendLine("}");
javascript.AppendLine("ctx.listTemplate = '" + listTemplateID + "';");
javascript.AppendLine("ctx.listName = '" + listName + "';");
javascript.AppendLine("ctx.view = '" + viewID + "';");
javascript.AppendLine("ctx.listUrlDir = '" + strListUrlID + "';");
javascript.AppendLine("ctx.HttpPath = '" + strHttpPath + "';");
javascript.AppendLine("ctx.HttpRoot = '" + strHttpRoot + "';");
javascript.AppendLine("ctx.imagesPath = '" + strImagesPath + "';");
javascript.AppendLine("ctx.PortalUrl = '" + strPortalUrl + "';");
javascript.AppendLine("ctx.SendToLocationName = '" + strSendToLocationName + "';");
javascript.AppendLine("ctx.SendToLocationUrl = '" + strSendToLocationUrl + "';");
javascript.AppendLine("ctx.RecycleBinEnabled = " + recycleBinEnabled + ";");
javascript.AppendLine("ctx.OfficialFileName = '" + strOfficialFileName + "';");
javascript.AppendLine("ctx.OfficialFileNames = '" + strOfficialFileNames + "';");
javascript.AppendLine("ctx.WriteSecurity = '" + strWriteSecurity + "';");
javascript.AppendLine("ctx.SiteTitle = '" + strSiteTitle + "';");
javascript.AppendLine("ctx.ListTitle = '" + strListTitle + "';");
javascript.AppendLine("var varIsForceCheckout= '" + objSPList.ForceCheckout + "';");
javascript.AppendLine("if(varIsForceCheckout=='False')");
javascript.AppendLine("{");
javascript.AppendLine("ctx.isForceCheckout = false;");
javascript.AppendLine("}");
javascript.AppendLine("else");
javascript.AppendLine("{");
javascript.AppendLine("ctx.isForceCheckout = true;");
javascript.AppendLine("}");
javascript.AppendLine("if (ctx.PortalUrl == '')");
javascript.AppendLine("ctx.PortalUrl = null;");
javascript.AppendLine("ctx.displayFormUrl = '" + strDisplayFormUrl + "';");
javascript.AppendLine("ctx.editFormUrl = '" + strEditFormUrl + "';");
javascript.AppendLine("ctx.isWebEditorPreview = " + isWebEditorPreview + ";");
javascript.AppendLine("ctx.ctxId = " + SPHttpUtility.NoEncode(ctxId == null ? "-1" : ctxId.ToString()) + ";");
javascript.AppendLine("var varIsXslView= '" + isXslView + "';");
javascript.AppendLine("if(varIsXslView=='False')");
javascript.AppendLine("{");
javascript.AppendLine("ctx.isXslView = false;");
javascript.AppendLine("}");
javascript.AppendLine("else");
javascript.AppendLine("{");
javascript.AppendLine("ctx.isXslView = true;");
javascript.AppendLine("}");
javascript.AppendLine("if (g_ViewIdToViewCounterMap['" + viewID + "'] == null)");
javascript.AppendLine("g_ViewIdToViewCounterMap['" + viewID + "'] = " + SPHttpUtility.NoEncode(ctxId == null ? "-1" : ctxId.ToString()) + ";");
javascript.AppendLine("ctx.CurrentUserId = " + SPHttpUtility.NoEncode(currentUser == null ? "-1" : currentUser.ID.ToString()) + ";");
javascript.AppendLine("var varEnableMinorVersions= '" + enableMinorVersions + "';");
javascript.AppendLine("if(varEnableMinorVersions=='False')");
javascript.AppendLine("{");
javascript.AppendLine("ctx.EnableMinorVersions = false;");
javascript.AppendLine("}");
javascript.AppendLine("else");
javascript.AppendLine("{");
javascript.AppendLine("ctx.EnableMinorVersions = true;");
javascript.AppendLine("}");
javascript.AppendLine("ctx.verEnabled = " + verEnabled + ";");
javascript.AppendLine("var varWorkflowsAssociated='" + workflowsAssociated + "';");
javascript.AppendLine("if(varWorkflowsAssociated=='False')");
javascript.AppendLine("{");
javascript.AppendLine("ctx.WorkflowsAssociated = false;");
javascript.AppendLine("}");
javascript.AppendLine("else");
javascript.AppendLine("{");
javascript.AppendLine("ctx.WorkflowsAssociated = true;");
javascript.AppendLine("}");
javascript.AppendLine("var varContentTypesEnabled='" + contentTypesEnabled + "';");
javascript.AppendLine("if(varContentTypesEnabled=='False')");
javascript.AppendLine("{");
javascript.AppendLine("ctx.ContentTypesEnabled = false;");
javascript.AppendLine("}");
javascript.AppendLine("else");
javascript.AppendLine("{");
javascript.AppendLine("ctx.ContentTypesEnabled = true;");
javascript.AppendLine("}");
javascript.AppendLine("ctx.HasRelatedCascadeLists = " + relatedCascadeLists + ";");
javascript.AppendLine("ctx" + ctxId + " = ctx;");
javascript.AppendLine("g_ctxDict['ctx" + ctxId + "'] = ctx;");
javascript.AppendLine("</script>");
#endregion
return javascript.ToString();
}
Subscribe to:
Posts (Atom)