Feb 10, 2011
visibility 3847
star star star star star
(0 votes)

How plugin settings are saved?

To extend UI functionality you can use plugins. One of their marvelous feature is the ability to store data entered by admin or editor. As to myself I was in curiousity about where and how these data are saved.  So I’d like to save the values of two parameters somewhere in the button click handler:

    protected void btnSave_Click(object sender, EventArgs e)

         {

             DataSet dataSet = new DataSet();

             dataSet.Tables.Add(new DataTable());

             dataSet.Tables[0].Columns.Add(new DataColumn ("Parameter1", typeof(string)));

             dataSet.Tables[0].Columns.Add(new DataColumn("Parameter2", typeof(string)));

             DataRow dataRow = dataSet.Tables[0].NewRow();

             dataRow["Parameter1"] = HttpUtility.HtmlEncode(txtParameter1.Text);

             dataRow["Parameter2"] = HttpUtility.HtmlEncode(txtParameter2.Text);

             dataSet.Tables[0].Rows.Add(dataRow);

             PlugInSettings.Save(typeof(CustomAdminPlugin), dataSet);

         }

 

OK - With a help of .NET Reflector I dug into depth of

PlugInSettings.Save(typeof(MyAdminPlugin), data) call.

 

It applies for PlugInDB in EPiServer.DataAccess namespace – namely to its SaveSettings function:

public void SaveSettings(int plugin, string xml)

    {

      base.Execute(delegate {

        IDbCommand command = this.CreateCommand("netPlugInSaveSettings");

        command.Parameters.Add(this.CreateParameter("PlugInID", plugin));

        command.Parameters.Add(this.CreateParameter("Settings", xml));

        command.ExecuteNonQuery();

      });

    }

In my case plugin is equal to 141 and xml is

<NewDataSet>
  <Table1>
    <Parameter1>value 1</Parameter1>
    <Parameter2>value 2</Parameter2>
  </Table1>
</NewDataSet>

As you can see the working horse is the netPlugInSaveSettings stored procedure. Let’s look on it:

ALTER PROCEDURE [dbo].[netPlugInSaveSettings]

@PlugInID         INT,

@Settings         NTEXT

AS

BEGIN

 

      UPDATE tblPlugIn SET

            Settings    = @Settings,

            Saved       = GetDate()

      WHERE pkID = @PlugInID

END

Conclusion : plugin’s settings are saved in tblPlugIn table , namely in xml field. This is in consistency with SDK which says “PlugInSettings is used to store plug-in settings and information in a DataSet, these will be persisted as xml together will the plug-in definition in the EpiServer database.”

 

Feb 10, 2011

Comments

error Please login to comment.
Latest blogs
Composition Over Inheritance: Why Your Content Contract Is Not a Base Class

Inside the structural conformance pattern in SaaS CMS — from server-side inheritance to pipeline governance. A contract in Optimizely SaaS CMS is...

Vipin Banka | Sep 19, 2026

Optimizely Opti ID Integration: Why the API Key Was Missing from the DXP Management Portal

While working on an Optimizely CMS 12 Opti ID integration recently, we ran into an issue that initially appeared to be related to SSO authenticatio...

Madhu | Sep 18, 2026 |

Extending a Contract: What You Can Override

Contracts share fields across content types — but not every field setting can be overridden. Push the same contract onto several components, and CM...

Chirag Khanna | Sep 18, 2026 |

Building a Blazor Server UI Inside the Optimizely CMS 13 Admin Shell

What I learned shipping a Blazor Server UI inside Optimizely CMS 13 — Razor components in a NuGet package, the Blazor hub next to MapContent(),...

Stanisław Szołkowski | Sep 17, 2026 |