Feb 10, 2011
visibility 3827
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
Two more database surprises when upgrading from CMS 11 to CMS 13

Back in June I wrote about four database surprises when upgrading from CMS 11 to CMS 13 ( old post ). Here are two more, found on another CMS 11...

Per Nergård (MVP) | Sep 8, 2026

WebMCP providing understandable actions to agents in Optimizely

WebMCP is coming to Optimizely: a strategic view for CMS and Commerce teams At Opticon 2026 in New York, Alex Atzberger framed Optimizely's strateg...

Scott Reed | Sep 8, 2026

The Optimizely SaaS CMS Administrator Certification: More Than an Admin Exam

When I started preparing for the Optimizely SaaS CMS Administrator Certification, I expected most of the material to focus on administrative work:...

Augusto Davalos | Sep 8, 2026

Two Machines, One Memory

How to keep a Claude Code memory store in lockstep across two machines, using nothing but git and two hooks. We've been running Claude Code against...

KennyG | Sep 7, 2026

Opticon New York & The Strategy on Upgrading to CMS 13 & Commerce 15

Overview Well, another exciting Opticon in New York City wrapped up last week and it was certainly one of the most fun and exciting ones I've been...

Scott Reed | Sep 7, 2026

A Look at the New Optimizely Certification Program

Optimizely has introduced a new certification program. So far, I have completed Optimizely Foundations and the Core certifications for Opti ID, Age...

Pär Wissmark | Sep 7, 2026 |