using System; using System.IO; using System.Xml; using System.Xml.XPath; using System.Configuration; using System.Security.Principal; using System.Runtime.InteropServices; using Microsoft.SharePoint; namespace WikiEventHanlder { /// /// Summary description for Class1. /// public class WikiEvent : IListEventSink { #region IListEventSink Members public void OnEvent(SPListEvent listEvent) { //Open the current context site SPWeb myWeb = listEvent.Site.OpenWeb(); //Get the target Event hanlder source name as file name SPFile fileItem = myWeb.GetFile(listEvent.UrlAfter); //get the folder structure of the source SPFolder folderItem = myWeb.GetFolder(listEvent.UrlAfter); //assign a delimiter to get the target url to add the folders string delimiter = "/"; //get the collection atleast 10 of folder names under the parent folder of the source of the event i.e wiki pages library string[] subFolder = folderItem.ParentFolder.Url.Split(delimiter.ToCharArray(), 10); //get all folders of the site SPFolderCollection folders= myWeb.Folders; SPFolder targetfolder=null,targetFolder1=null; //Get the page name of the created page string pageName = fileItem.Name; //remove .aspx from the name int index=pageName.IndexOf(".aspx"); pageName = pageName.Remove(index, 5); pageName = pageName.Trim(); //traverse to Shared documents folder foreach (SPFolder folder in folders) { if (folder.Name == "Shared Documents") { targetfolder = folder; break; } } //traverse to Images folder foreach (SPFolder folder in folders) { if (folder.Name == "Images1") { targetFolder1 = folder; break; } } //create the folders under them switch(listEvent.Type.ToString()) { case "Update": if (subFolder.Length < 2) { create_folders(listEvent, myWeb, targetfolder, pageName); create_folders(listEvent, myWeb, targetFolder1, pageName); } break; default: break; } } #endregion /* creates the folder for the * list Event on the current myWeb and under folderItem with name pageName*/ private void create_folders(SPListEvent listEvent, SPWeb myWeb, SPFolder folderItem , string pageName) { SPFolder tempFolder=folderItem.SubFolders.Add(pageName); } } }