I have document library x on my site. I need to move it by code to a subsite with the same name.
Probably there is no way to do it by code, because I couldnt find an example like this.
Update 1: I havent tested it yet. But should do the trick?? its a custom workflow activity.
public MoveDocumentLibrary()
{
InitializeComponent();
}
public static DependencyProperty SourceUrlProperty = DependencyProperty.Register("SourceUrl", typeof(string), typeof(CreateDocumentLibrary), new PropertyMetadata(""));
[DescriptionAttribute("Source Url of current site")]
[BrowsableAttribute(true)]
[DesignerSerializationVisibilityAttribute(DesignerSerializationVisibility.Visible)]
[ValidationOption(ValidationOption.Optional)]
public string SourceUrl
{
get
{
return ((string)(base.GetValue(SourceUrlProperty)));
}
set
{
base.SetValue(SourceUrlProperty, value);
}
}
public static DependencyProperty DestinationUrlProperty = DependencyProperty.Register("DestinationUrl", typeof(string), typeof(CreateDocumentLibrary), new PropertyMetadata(""));
[DescriptionAttribute("Destination Url where document library will be created")]
[BrowsableAttribute(true)]
[DesignerSerializationVisibilityAttribute(DesignerSerializationVisibility.Visible)]
[ValidationOption(ValidationOption.Optional)]
public string DestinationUrl
{
get
{
return ((string)(base.GetValue(SourceUrlProperty)));
}
set
{
base.SetValue(SourceUrlProperty, value);
}
}
public static DependencyProperty NameDocLibraryProperty = DependencyProperty.Register("SiteUrl", typeof(string), typeof(CreateDocumentLibrary), new PropertyMetadata(""));
[DescriptionAttribute("Name of document library to be moved")]
[BrowsableAttribute(true)]
[DesignerSerializationVisibilityAttribute(DesignerSerializationVisibility.Visible)]
[ValidationOption(ValidationOption.Optional)]
public string NameDocLibrary
{
get
{
return ((string)(base.GetValue(NameDocLibraryProperty)));
}
set
{
base.SetValue(NameDocLibraryProperty, value);
}
}
public static DependencyProperty DocumentLibraryDestinationUrlProperty = DependencyProperty.Register("DocumentLibraryUrl", typeof(string), typeof(CreateDocumentLibrary), new PropertyMetadata(""));
[DescriptionAttribute("Destination Url for new DocumentLibrary")]
[BrowsableAttribute(true)]
[DesignerSerializationVisibilityAttribute(DesignerSerializationVisibility.Visible)]
[ValidationOption(ValidationOption.Optional)]
public string DocumentLibraryDestinationUrl
{
get
{
return ((string)(base.GetValue(DocumentLibraryDestinationUrlProperty)));
}
set
{
base.SetValue(DocumentLibraryDestinationUrlProperty, value);
}
}
protected override ActivityExecutionStatus Execute(ActivityExecutionContext executionContext)
{
MoveDocLibrary();
return ActivityExecutionStatus.Closed;
}
/// <summary>
/// It moves the document library to a new collection
/// </summary>
private void MoveDocLibrary()
{
try
{
using (SPSite oSPSite = new SPSite(SourceUrl))
{
using (SPWeb oSPWeb = oSPSite.RootWeb)
{
SPFolder oFolder = oSPWeb.GetFolder(NameDocLibrary);
SPFileCollection collFile = oFolder.Files;
List<SPFile> listFiles = new List<SPFile>(collFile.Count);
foreach (SPFile oFile in collFile)
{
listFiles.Add(oFile);
}
Guid ID = new Guid();
if (oSPWeb.Lists[NameDocLibrary] != null)
{
ID = oSPWeb.Lists.Add(NameDocLibrary, NameDocLibrary, SPListTemplateType.DocumentLibrary);
}
else
{
ID = oSPWeb.Lists[NameDocLibrary].ID;
}
SPList oSPList = oSPWeb.Lists[ID];
foreach (SPFile moveFile in listFiles)
{
moveFile.MoveTo(DestinationUrl + "/" + NameDocLibrary + "/" + moveFile.Name, true);
}
}
}
}
catch (Exception)
{
throw;
}
}