1public class FeatureReceiver : SPFeatureReceiver
2{
3
4 public override void FeatureActivated(SPFeatureReceiverProperties properties)
5 {
6 SPSite site = (SPSite)properties.Feature.Parent;
7 SPWebApplication WebApp = site.WebApplication;
8 foreach (ModificationEntry modEntry in Entries)
9 {
10 WebApp.WebConfigModifications.Add(CreateModification(modEntry));
11 }
12 WebApp.WebService.ApplyWebConfigModifications();
13 }
14
15 public override void FeatureDeactivating(SPFeatureReceiverProperties properties)
16 {
17 SPSite site = (SPSite)properties.Feature.Parent;
18 SPWebApplication WebApp = (SPWebApplication)site.WebApplication;
19 foreach (ModificationEntry modEntry in Entries)
20 {
21 WebApp.WebConfigModifications.Remove(CreateModification(modEntry));
22 }
23 WebApp.WebService.ApplyWebConfigModifications();
24 }
25
26 private struct ModificationEntry
27 {
28 public string Name;
29 public string XPath;
30 public string Value;
31 public SPWebConfigModification.SPWebConfigModificationType ModType;
32 // parameterized contructor
33
34 public ModificationEntry(string Name, string XPath, string Value, SPWebConfigModification.SPWebConfigModificationType ModType)
35 {
36 // intialize structure instances
37 this.Name = Name;
38 this.XPath = XPath;
39 this.Value = Value;
40 this.ModType = ModType;
41 }
42 }
43
44 private ModificationEntry[] Entries =
45 {
46
47 new ModificationEntry(
48 "mpaQuickfindServiceUrl",
49 "configuration/appSettings",
50 "quickfindService.aspx",
51 SPWebConfigModification.SPWebConfigModificationType.EnsureChildNode),
52
53 new ModificationEntry(
54 "mpaQuickfindListGUID",
55 "configuration/appSettings",
56 "39CDA74E-F23A-4ED2-85D4-46C8A8D81A67",
57 SPWebConfigModification.SPWebConfigModificationType.EnsureChildNode),
58
59 new ModificationEntry(
60 "mpaQuickfindNameField",
61 "configuration/appSettings",
62 "Title",
63 SPWebConfigModification.SPWebConfigModificationType.EnsureChildNode),
64
65 new ModificationEntry(
66 "mpaQuickfindSynonymField",
67 "configuration/appSettings",
68 "synonyms",
69 SPWebConfigModification.SPWebConfigModificationType.EnsureAttribute),
70
71 new ModificationEntry(
72 "mpaQuickfindOfficeField",
73 "configuration/appSettings",
74 "OfficeName",
75 SPWebConfigModification.SPWebConfigModificationType.EnsureChildNode),
76
77 new ModificationEntry(
78 "mpaQuickfindGlobalFieldValue",
79 "configuration/appSettings",
80 "Global",
81 SPWebConfigModification.SPWebConfigModificationType.EnsureChildNode),
82
83 new ModificationEntry(
84 "mpaQuickfindTransformLocation",
85 "configuration/appSettings",
86 "xml/QuickfindTransform.xslt",
87 SPWebConfigModification.SPWebConfigModificationType.EnsureChildNode),
88 };
89
90 private SPWebConfigModification CreateModification(ModificationEntry modEntry)
91 {
92 // create and return SPWebConfigModification object
93 SPWebConfigModification modification;
94 modification = new SPWebConfigModification(modEntry.Name, modEntry.XPath);
95 modification.Owner = "test";
96 modification.Sequence = 0;
97 modification.Type = modEntry.ModType;
98 modification.Value = modEntry.Value;
99 return modification;
100 }
101
102 public override void FeatureInstalled(SPFeatureReceiverProperties properties) { }
103 public override void FeatureUninstalling(SPFeatureReceiverProperties properties) { }
104}