1: using System;
2: using System.Collections.Generic;
3: using System.Text;
4: using Microsoft.SharePoint;
5: using System.Xml;
6:
7: namespace HMBIntranet.Global.Event_Receivers
8: {
9: public class SetHMBThemeFeatureReceiver : SPFeatureReceiver
10: {
11: public override void FeatureActivated(SPFeatureReceiverProperties properties)
12: {
13: SPWeb site = null;
14: try
15: {
16: site = (SPWeb)properties.Feature.Parent;
17: site.ApplyTheme("HMB");
18: site.Title = "HMB Intranet";
19: site.Update();
20: }
21: finally
22: {
23: if (site != null)
24: {
25: site.Dispose();
26: }
27: }
28:
29: AddThemeToSpThemes("HMB", "HMB", "The HMB Theme has a customized look and feel for the the HMB Intranet", "images/HMBPreview.gif", "images/HMBPreview.gif");
30: }
31:
32: private static void AddThemeToSpThemes(string id, string name, string description, string thumbnail, string preview)
33: {
34: XmlDocument spThemes = new XmlDocument();
35: spThemes.Load(@"C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\LAYOUTS\1033\spThemes.xml");
36: XmlNode root = spThemes.DocumentElement;
37: bool found = false;
38: foreach (XmlNode node in root.ChildNodes)
39: {
40: foreach (XmlNode prop in node.ChildNodes)
41: {
42: if (prop.Name.Equals("TemplateID"))
43: {
44: if (prop.InnerText.Equals(id))
45: {
46: found = true;
47: break;
48: }
49: }
50: }
51: if (found)
52: {
53: break;
54: }
55: }
56:
57: if (!found)
58: {
59: XmlNode node = spThemes.CreateElement("Templates", "http://tempuri.org/SPThemes.xsd");
60: node.Attributes.RemoveAll();
61: XmlNode templateIdNode = spThemes.CreateElement("TemplateID");
62: templateIdNode.InnerText = id;
63: XmlNode displayNameNode = spThemes.CreateElement("DistplayName");
64: displayNameNode.InnerText = name;
65: XmlNode descriptionNode = spThemes.CreateElement("Description");
66: descriptionNode.InnerText = description;
67: XmlNode thumbNode = spThemes.CreateElement("Thumbnail");
68: thumbNode.InnerText = thumbnail;
69: XmlNode previewNode = spThemes.CreateElement("Preview");
70: previewNode.InnerText = preview;
71:
72:
73: node.AppendChild(templateIdNode);
74: node.AppendChild(displayNameNode);
75: node.AppendChild(descriptionNode);
76: node.AppendChild(thumbNode);
77: node.AppendChild(previewNode);
78: root.AppendChild(node);
79: spThemes.Save(@"C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\LAYOUTS\1033\spThemes.xml");
80: }
81: }
82:
83: public override void FeatureDeactivating(SPFeatureReceiverProperties properties)
84: {
85: SPWeb site = null;
86: try
87: {
88: site = properties.Feature.Parent as SPWeb;
89: site.ApplyTheme("none");
90: site.Title = "Intranet";
91: site.Update();
92: }
93: finally
94: {
95: if (site != null)
96: {
97: site.Dispose();
98: }
99: }
100:
101: RemoveThemeFromSpThemes("HMB");
102: }
103:
104: private void RemoveThemeFromSpThemes(string id)
105: {
106: XmlDocument spThemes = new XmlDocument();
107: spThemes.Load(@"C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\LAYOUTS\1033\spThemes.xml");
108: XmlNode root = spThemes.DocumentElement;
109: bool found = false;
110: foreach (XmlNode node in root.ChildNodes)
111: {
112: foreach (XmlNode prop in node.ChildNodes)
113: {
114: if (prop.Name.Equals("TemplateID"))
115: {
116: if (prop.InnerText.Equals(id))
117: {
118: root.RemoveChild(node);
119: found = true;
120: spThemes.Save(@"C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\LAYOUTS\1033\spThemes.xml");
121: break;
122: }
123: }
124: }
125: if (found)
126: {
127: break;
128: }
129: }
130: }
131:
132: public override void FeatureInstalled(SPFeatureReceiverProperties properties)
133: {
134: }
135:
136: public override void FeatureUninstalling(SPFeatureReceiverProperties properties)
137: {
138: }
139: }
140: }