protected void SaveButton_Click(object sender, EventArgs e)
        {
            // Get the plugin
            Plugin plugin = GetCurrentPlugin();

            if (plugin.HasPluginFile)
            {
                int oldId = plugin.PluginId.GetValueOrDefault();

                //set the plugin values
                plugin.PluginFile.Disabled = (!PluginActiveCheckbox.Checked);

                //set the plugins context values by iterating through data repeater values
                for (int i = 0; i < ContextsRepeater.Items.Count; i++)
                {
                    PluginContextDropDownList contextNames = (PluginContextDropDownList)ContextsRepeater.Items[i].FindControl("ContextNamesDropDownList");

                    IPluginContext context = PluginManager.GetContext(plugin, contextNames.ContextType);

                    if (context.Name != (string)contextNames.SelectedValue)
                    {
                        //selected context has changed
                        PluginManager.AddContextTypeInSection(plugin, contextNames.ContextType, (string)contextNames.SelectedValue);
                    }
                }

                //register and update the plugin
                int pluginId = ContextInfo.PluginManager.RegisterPlugin(plugin);

                if (oldId < 0)
                {
                    if (oldId != pluginId)
                    {
                        Session["FeedbackLabel"] = "registered";
                        //reload the page using the new registered plugin id
                        ReloadPlugin(pluginId);
                    }
                    else
                    {
                        FeedbackPlaceholder.Visible = true;
                        SaveFeedbackLabel.SetErrorMessage("Not Successful", "The preview plug-in was not registered");
                    }
                }
                else
                {
                    //update active status text
                    PluginActiveCheckbox.Text = (PluginActiveCheckbox.Checked ? "Yes" : "No");

                    FeedbackPlaceholder.Visible = true;
                    SaveFeedbackLabel.SetSuccessMessage("Plug-in Saved", "The plug-in was successfully updated");
                }
            }
            else
            {
                FeedbackPlaceholder.Visible = true;
                SaveFeedbackLabel.SetErrorMessage("Not Successful", "Preview plug-ins cannot be registered with invalid plugin files");
            }
        }
        protected void ContextsRepeater_ItemDataBound(object sender, RepeaterItemEventArgs e)
        {
            if (GeneralUtils.ValueIsInList(e.Item.ItemType, ListItemType.Item, ListItemType.AlternatingItem))
            {
                string contextType = (string)e.Item.DataItem;

                // Get the plugin
                Plugin plugin = GetCurrentPlugin();

                //get the current context type
                ContextType type = (ContextType)Enum.Parse(typeof(ContextType), contextType.Replace(" ", ""));

                //bind dropdown to contexts
                PluginContextDropDownList contextNames = (PluginContextDropDownList)e.Item.FindControl("ContextNamesDropDownList");

                contextNames.ContextType = type;
                contextNames.PluginId    = plugin.PluginId.GetValueOrDefault();
                contextNames.RefreshFromDataSource();
            }
        }