In this article I would like to introduce you to the "Squadron" Site Structure Add-in.
What are the advantages of Site Structure?
Using Site Structure we can quickly generate the Site Collection, Sub sites, Lists & Libraries and Items in a hierarchical manner. The information is useful in analyzing a site collection.
We can also view in a Grid Style where the above objects are displayed in Rows with the facility to export too.
Squadron is a Free SharePoint 2010 Productivity tool deployed using ClickOnce technology. You can install it from the following location.
http://www.sharepointact.com/Squadron2010/publish.htm
How to generate the structure?
Install the Squadron application & execute it using the Desktop short cut. You will get the following screen.
Now click on the left pane named Site Structure. You will get the following Site Structure screen.
Enter the Web Application URL in the URL textbox of the header. Click the Execute button to generate the site structure as shown below:
Please note that you can include Lists & Libraries by checking the Show Lists and Libraries checkbox. Additionally you can include Items & Versions using the Show Items and Show Version Count Checkboxes.
The following is the result after generating Items & Versions.
Please note that the versions are displayed within Parenthesis.
Grid Style
We can also generate a Grid Style using the Grid Style checkbox.
Now click the Execute button again.
Export to Excel
For saving the rows, right click & choose:
- Export to Excel
- Export to CSV
After saving, the file is opened inside Microsoft Excel. You may uncheck the Open after the save option if you do not prefer automatic launching of the file after saving.
The CSV option is also good but if you have comma (,) characters in the names of Sites, Lists and Items; the generated file will be confusing.
Hidden Lists
The hidden lists checkbox allows you to include Hidden Lists in the result. Hidden Lists are those not displayed in the Quick Launch bar as well as the System Lists.
Property Grid
We can examine each item properties further using the Property Grid. For example you wanted to view:
- Allow Designer property of site collection
- Allow Unsafe Updates property of site
- Allow Deletion property of List & Library
You can view these properties by clicking the result item; the properties will be displayed in the right side.
Code Behind
The following is the code to generate the Hierarchy information.
The following is the main method:
private void GenerateHierarchy(string url)
{
tv.Nodes.Clear();
SPWebApplication webApp = SPWebApplication.Lookup(new Uri(url));
_rootNode = tv.Nodes.Add(webApp.Id.ToString(), GetDisplay(webApplication), 0, 0);
_rootNode.Tag = webApplication;
foreach (SPSite site in webApp.Sites)
{
if (FilterCheck.Checked)
if (!site.Url.StartsWith(FilterText.Text))
continue;
TreeNode node = _rootNode.Nodes.Add(site.ID.ToString(), GetDisplay(site), 1, 1);
node.Tag = site;
node.ToolTipText = "Site Collection";
IterateWebs(site, node);
Application.DoEvents();
}
tv.ExpandAll();
if (_rootNode != null)
_rootNode.EnsureVisible();
}
For iterating webs, the following method is used:
private void IterateWebs(SPSite site, TreeNode parentNode)
{
foreach (SPWeb web in site.AllWebs)
{
if (FilterCheck.Checked)
if (!web.Url.StartsWith(FilterText.Text))
continue;
if (!web.IsRootWeb) parentNode = GetParent(web.ParentWebId.ToString());
if (parentNode == null) parentNode = _rootNode;
TreeNode node = parentNode.Nodes.Add(web.ID.ToString(), GetDisplay(web), 2, 2);
node.Tag = web;
node.ToolTipText = "Site";
if (ShowListsChecked.Checked)
IterateLists(web, node);
}
}
For iterating Lists, the following is the method:
private void IterateLists(SPWeb web, TreeNode parentNode)
{
foreach (SPList list in web.Lists)
{
if (list.Hidden || !list.OnQuickLaunch)
if (!ShowHiddenChecked.Checked)
continue;
int imageIndex = 3;
if (list is SPDocumentLibrary)
imageIndex = 4;
TreeNode node = parentNode.Nodes.Add(list.ID.ToString(), GetDisplay(list),
imageIndex, imageIndex);
node.Tag = list;
if (list is SPDocumentLibrary)
node.ToolTipText = "Library";
else
node.ToolTipText = "List";
if (ShowItemsCheck.Checked)
IterateItems(list, node);
}
}
For iterating Items, use the following code:
private void IterateItems(SPList list, TreeNode parentNode)
{
foreach (SPListItem item in list.Items)
{
TreeNode node = parentNode.Nodes.Add(item.ID.ToString(), GetDisplay(item), 5, 5);
node.Tag = item;
}
}
For finding the Root Web of a site, the following method is used:
private SPWeb GetRootWeb(SPWeb web)
{
SPWeb result = web;
while (result.ParentWeb != null)
result = result.ParentWeb;
return result;
}
References
http://bit.ly/XdwpRV
Summary
In this article we have explored the Site Structure Add-in in Squadron. I believe this would be a useful tool in your bag while visiting a new SharePoint customer.
You can download & use Squadron for free, if you encounter any installation problems, please let me know.