/SP2010Library/WebPart.cs

http://sp2010library.codeplex.com · C# · 238 lines · 227 code · 7 blank · 4 comment · 28 complexity · 73dbdd3ba3353dca0a8d39f63eba1ed0 MD5 · raw file

  1. using System;
  2. using System.Web.UI.WebControls.WebParts;
  3. using Microsoft.SharePoint;
  4. namespace SP2010Library
  5. {
  6. public class WebParts
  7. {
  8. public static void ValidateAndCreateList(SPWeb rootWeb, String listName, String webPartName, int zoneIndex)
  9. {
  10. try
  11. {
  12. SPList listToCheck;
  13. try
  14. {
  15. listToCheck = rootWeb.Lists[listName];
  16. }
  17. catch (Exception)
  18. {
  19. listToCheck = null;
  20. }
  21. if (listToCheck == null)
  22. {
  23. CreateListAndInsertWebPart(rootWeb, listName, webPartName, zoneIndex);
  24. }
  25. else
  26. {
  27. try
  28. {
  29. if (zoneIndex == 0)
  30. {
  31. rootWeb.Lists.Delete(listToCheck.ID);
  32. rootWeb.Update();
  33. }
  34. CreateListAndInsertWebPart(rootWeb, listName, webPartName, zoneIndex);
  35. }
  36. catch (Exception)
  37. {
  38. return;
  39. }
  40. }
  41. }
  42. catch (Exception)
  43. {
  44. return;
  45. }
  46. }
  47. public static void AddWebPartToPage(SPWeb web, string pageUrl, string webPartName, string zoneId, int zoneIndex)
  48. {
  49. // adding Web part if not exists on the workspace
  50. using (WebPart webPart = CreateWebPart(web, webPartName))
  51. {
  52. Microsoft.SharePoint.WebPartPages.SPLimitedWebPartManager manager;
  53. try
  54. {
  55. manager = web.GetLimitedWebPartManager(pageUrl, PersonalizationScope.Shared);
  56. }
  57. catch (Exception)
  58. {
  59. manager = null;
  60. }
  61. if (manager != null)
  62. {
  63. Boolean webPartdonotExist = true;
  64. if (zoneIndex == 0)
  65. {
  66. while (true)
  67. {
  68. Boolean exitFlag = true;
  69. for (int i = 0; i < manager.WebParts.Count; i++)
  70. {
  71. if (manager.WebParts[i].Title == webPartName)
  72. {
  73. webPartdonotExist = false;
  74. }
  75. else
  76. {
  77. exitFlag = false;
  78. manager.DeleteWebPart(manager.WebParts[i]);
  79. break;
  80. }
  81. }
  82. if (exitFlag)
  83. break;
  84. }
  85. }
  86. if (webPartdonotExist)
  87. {
  88. webPart.ChromeType = PartChromeType.None;
  89. manager.AddWebPart(webPart, zoneId, zoneIndex);
  90. }
  91. // return webPart.ID;
  92. manager.Dispose();
  93. }
  94. }
  95. }
  96. public static void AddWebPartToPage(SPWeb web, string pageUrl, string webPartName, string zoneId, int zoneIndex, bool flag)
  97. {
  98. try
  99. {
  100. // adding Web part if not exists on the workspace
  101. using (WebPart webPart = CreateWebPart(web, webPartName))
  102. {
  103. Microsoft.SharePoint.WebPartPages.SPLimitedWebPartManager manager;
  104. try
  105. {
  106. manager = web.GetLimitedWebPartManager(pageUrl, PersonalizationScope.Shared);
  107. }
  108. catch (Exception)
  109. {
  110. manager = null;
  111. }
  112. if (manager != null)
  113. {
  114. webPart.ChromeType = PartChromeType.None;
  115. manager.AddWebPart(webPart, zoneId, zoneIndex);
  116. // return webPart.ID;
  117. manager.Dispose();
  118. }
  119. }
  120. }
  121. catch (Exception)
  122. {
  123. return;
  124. }
  125. }
  126. public static void CreateListAndInsertWebPart(SPWeb rootWeb, String listName, String webPartName, int zoneIndex)
  127. {
  128. try
  129. {
  130. if (zoneIndex == 0)
  131. rootWeb.Lists.Add(listName, "", SPListTemplateType.GenericList);
  132. SPList listPage = rootWeb.Lists[listName];
  133. listPage.OnQuickLaunch = true;
  134. rootWeb.Update();
  135. listPage.Update();
  136. AddWebPartToPage(rootWeb, "Lists/" + listName + "/AllItems.aspx", webPartName, "", zoneIndex);
  137. }
  138. catch (Exception)
  139. {
  140. return;
  141. }
  142. }
  143. public static WebPart CreateWebPart(SPWeb web, string webPartName)
  144. {
  145. var query = new SPQuery
  146. {
  147. Query =
  148. String.Format(
  149. "<Where><Eq><FieldRef Name='FileLeafRef'/><Value Type='string'>{0}</Value></Eq></Where>",
  150. webPartName)
  151. };
  152. SPList webPartGallery = web.ParentWeb == null ? web.GetCatalog(SPListTemplateType.WebPartCatalog) : web.ParentWeb.GetCatalog(SPListTemplateType.WebPartCatalog);
  153. SPListItemCollection webParts = webPartGallery.GetItems(query);
  154. if (webParts.Count > 0)
  155. {
  156. string typeName = webParts[0].GetFormattedValue("ows_WebPartTypeName");
  157. string assemblyName = webParts[0].GetFormattedValue("ows_WebPartAssembly");
  158. if (assemblyName != "")
  159. {
  160. System.Runtime.Remoting.ObjectHandle webPartHandle = Activator.CreateInstance(assemblyName, typeName);
  161. {
  162. var webPart = (WebPart)webPartHandle.Unwrap();
  163. webPart.Title = webPartName;
  164. return webPart;
  165. }
  166. }
  167. return null;
  168. }
  169. return null;
  170. }
  171. public static String ValidateAndCreatePage(SPWeb rootWeb, String documentName, String documentDesc, String pageName, String webPartName)
  172. {
  173. try
  174. {
  175. SPList list;
  176. try
  177. {
  178. list = rootWeb.Lists[documentName];
  179. }
  180. catch
  181. {
  182. list = null;
  183. }
  184. if (list == null)
  185. {
  186. rootWeb.Lists.Add(documentName, documentDesc, SPListTemplateType.DocumentLibrary);
  187. try
  188. {
  189. list = rootWeb.Lists[documentName];
  190. }
  191. catch (Exception)
  192. {
  193. list = null;
  194. }
  195. }
  196. if (list != null)
  197. {
  198. string postInformation = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" + "<Method>" + "<SetList Scope=\"Request\">"
  199. + list.ID + "</SetList>" + "<SetVar Name=\"ID\">New</SetVar>" + "<SetVar Name=\"Cmd\">NewWebPage</SetVar>"
  200. + "<SetVar Name=\"Type\">WebPartPage</SetVar>" + "<SetVar Name=\"WebPartPageTemplate\">1</SetVar>"
  201. + "<SetVar Name=\"Title\">" + pageName + "</SetVar>" + "<SetVar Name=\"Overwrite\">true</SetVar>" + "</Method>";
  202. rootWeb.ProcessBatchData(postInformation);
  203. try
  204. {
  205. foreach (SPListItem listItem in list.Items)
  206. {
  207. if (listItem.DisplayName.ToLower() == pageName.ToLower())
  208. {
  209. AddWebPartToPage(rootWeb, listItem.Url, webPartName, "", 0);
  210. return "Process Completed";
  211. }
  212. }
  213. }
  214. catch (Exception)
  215. {
  216. return "Unable to Create a Page in the Document Library";
  217. }
  218. }
  219. return "Unable to Create Document Library. Verify the Permission.";
  220. }
  221. catch (Exception ex)
  222. {
  223. return ex.Message;
  224. }
  225. }
  226. public void Dispose()
  227. {
  228. throw new NotImplementedException();
  229. }
  230. }
  231. }