Como saber que masterpage está a ser usada em SharePoint 2007

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.

Dércia Silva
Publicado por Dércia Silva em 10 outubro, 2013

Artigos relacionados