No meu último artigo mostrei como é possivel saber que masterpage está a ser usada em SharePoint 2010 usando PowerShell. Mas em SharePoint 2007 num ambiente Windows Server 2003, o PowerShell não está disponivel por defeito.
Se tiver essa possibilidade, poderá instalar o PowerShell em Windows Server 2003, mas se não puder ou não quiser fazê-lo, existe outro método para fazer a mesma tarefa (que também funcionará em SharePoint 2010).
Console Application
Criei uma console application muito simples que pode ser usada para ver e editar, em qualquer site collection, as definições da custom e default masterpage assim como o alternate CSS.
Este é o código para a aplicação, pode compilá-lo ou alterá-lo conforme as suas necessidades.
class Program
{
static void Main(string[] args)
{
String url;
SPSite siteCollection = null;
SPWeb web = null;
try
{
while (true)
{
try
{
Console.WriteLine("Enter URL: ");
url = Console.ReadLine();
siteCollection = new SPSite(url);
web = siteCollection.OpenWeb();
if (web == null)
{
Console.Write("SPWeb not available!");
}
else
{
break;
}
}
catch (Exception e) { }
}
Console.ForegroundColor = ConsoleColor.Green;
Console.WriteLine("SPWeb: " + web.Title);
Console.WriteLine("Custom MasterPage: " + web.CustomMasterUrl);
Console.WriteLine("Default MasterPage: " + web.MasterUrl);
Console.WriteLine("Alternate CSS: " + web.AlternateCssUrl);
Console.ForegroundColor = ConsoleColor.White;
string op = "";
do {
try
{
Console.WriteLine("Enter: ");
Console.WriteLine("0 - Exit");
Console.WriteLine("1 - Edit custom master");
Console.WriteLine("2 - Edit default master");
Console.WriteLine("3 - Edit alternate CSS");
op = Console.ReadLine();
String newValue = "";
switch (op.Trim())
{
case "1":
Console.WriteLine("Enter new custom master:");
newValue = Console.ReadLine();
web.CustomMasterUrl = newValue;
web.Update();
Console.ForegroundColor = ConsoleColor.Green;
Console.WriteLine("New custom master: " + web.CustomMasterUrl);
break;
case "2":
Console.WriteLine("Enter new default master:");
newValue = Console.ReadLine();
web.MasterUrl = newValue;
web.Update();
Console.ForegroundColor = ConsoleColor.Green;
Console.WriteLine("New default master: " + web.MasterUrl);
break;
case "3":
Console.WriteLine("Enter new alternate css:");
newValue = Console.ReadLine();
web.AlternateCssUrl = newValue;
web.Update();
Console.ForegroundColor = ConsoleColor.Green;
Console.WriteLine("New alternate css: " + web.AlternateCssUrl);
break;
default:
break;
}
}
catch (Exception e)
{
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("Error: " + e.Message);
}
finally
{
Console.ForegroundColor = ConsoleColor.White;
}
}while(op.Trim() != "0");
}
finally
{
if (web != null)
web.Dispose();
if (siteCollection != null)
siteCollection.Dispose();
}
}
}
Este é um exemplo da sua utilização:
Colar valores para janela de comandos
Como estamos a lidar com URLs e strings relativamente grandes não queremos estar a escrever manualmente os valores na linha de comandos.
Para colar o input que deseja, clique no ícone da janela, no canto superior esquerdo, e use a opção Edit > Paste.