Yugeen Klimenko
Feb 10, 2011
  3074
(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

Please login to comment.
Latest blogs
Opti ID overview

Opti ID allows you to log in once and switch between Optimizely products using Okta, Entra ID, or a local account. You can also manage all your use...

K Khan | Jul 26, 2024

Getting Started with Optimizely SaaS using Next.js Starter App - Extend a component - Part 3

This is the final part of our Optimizely SaaS CMS proof-of-concept (POC) blog series. In this post, we'll dive into extending a component within th...

Raghavendra Murthy | Jul 23, 2024 | Syndicated blog

Optimizely Graph – Faceting with Geta Categories

Overview As Optimizely Graph (and Content Cloud SaaS) makes its global debut, it is known that there are going to be some bugs and quirks. One of t...

Eric Markson | Jul 22, 2024 | Syndicated blog

Integration Bynder (DAM) with Optimizely

Bynder is a comprehensive digital asset management (DAM) platform that enables businesses to efficiently manage, store, organize, and share their...

Sanjay Kumar | Jul 22, 2024