コード例 #1
0
    private DataSet GetRecycleBinSeletedItems(BinSettingsContainer settings, string columns)
    {
        var where = new WhereCondition();

        switch (settings.CurrentWhat)
        {
        case What.AllObjects:
            if (IsSingleSite)
            {
                where.WhereNull("VersionObjectSiteID");
            }
            if (settings.Site != null)
            {
                where.Or().WhereEquals("VersionObjectSiteID", settings.Site.SiteID);
            }

            // Wrap filter condition with brackets
            where.Where(new WhereCondition(filter.WhereCondition)
            {
                WhereIsComplex = true
            });
            where = GetWhereCondition(where);
            break;

        case What.SelectedObjects:
            // Restore selected objects
            var toRestore = settings.SelectedItems;
            where.WhereIn("VersionID", toRestore);
            break;
        }

        return(ObjectVersionHistoryInfoProvider.GetRecycleBin(where.ToString(true), OrderBy, -1, columns));
    }
    /// <summary>
    /// Loads drop down list with data.
    /// </summary>
    private void ReloadData()
    {
        drpObjectTypes.Items.Clear();

        // Check if show all item should be displayed
        if (ShowAll)
        {
            drpObjectTypes.Items.Add(new ListItem(GetString("general.selectall"), ""));
        }

        // Get recycle bin object types
        DataSet dsObjectTypes = ObjectVersionHistoryInfoProvider.GetRecycleBin(UserID, WhereCondition, "VersionObjectType", -1, "DISTINCT VersionObjectType");

        if (!DataHelper.DataSourceIsEmpty(dsObjectTypes))
        {
            SortedDictionary <string, string> sdObjectTypes = new SortedDictionary <string, string>();
            foreach (DataRow dr in dsObjectTypes.Tables[0].Rows)
            {
                string objType = ValidationHelper.GetString(dr["VersionObjectType"], null);
                if (!String.IsNullOrEmpty(objType))
                {
                    // Sort object types by translated display names
                    sdObjectTypes.Add(objType, GetString("ObjectType." + objType.Replace(".", "_")));
                }
            }

            foreach (string key in sdObjectTypes.Keys)
            {
                drpObjectTypes.Items.Add(new ListItem(sdObjectTypes[key], key));
            }
        }
    }
コード例 #3
0
    protected void Page_Load(object sender, EventArgs e)
    {
        btnClose.Text = GetString("General.Close");
        bool noCompare = ValidationHelper.GetBoolean(QueryHelper.GetString("nocompare", string.Empty), false);

        // Initialize view version control
        viewVersion.NoComparison = noCompare;
        int versionId = ValidationHelper.GetInteger(QueryHelper.GetString("versionhistoryid", string.Empty), 0);

        viewVersion.VersionCompareID = ValidationHelper.GetInteger(QueryHelper.GetString("comparehistoryid", string.Empty), 0);

        // Get version to initialize title
        ObjectVersionHistoryInfo version = ObjectVersionHistoryInfoProvider.GetVersionHistoryInfo(versionId);

        if (version != null)
        {
            string objectType = version.VersionObjectType;
            string objType    = GetString("ObjectType." + objectType.Replace(".", "_"));
            string title      = String.Format(GetString("objectversioning.viewversion.title"), objType, HTMLHelper.HTMLEncode(ResHelper.LocalizeString(version.VersionObjectDisplayName)));
            // Set title - do not display context help when comparison not available
            string helpTopic = noCompare ? null : "objectversioning_viewversion";
            this.SetTitle("CMSModules/CMS_ObjectVersioning/viewversion.png", title, helpTopic, "Object versioning - View version");

            viewVersion.Version = version;

            // Exclude site binding table data
            GeneralizedInfo infoObj = TranslationHelper.GetReadOnlyObject(objectType);
            viewVersion.ExcludedTableNames = CMSObjectHelper.GetTableName(infoObj.TypeInfo.SiteBindingObject);
        }

        // Set what data should be displayed
        bool showAll = ValidationHelper.GetBoolean(QueryHelper.GetBoolean("showall", false), false);

        viewVersion.ObjectDataOnly = !showAll;
    }
コード例 #4
0
ファイル: Default.aspx.cs プロジェクト: kudutest2/Kentico
    /// <summary>
    /// Provides version rollback. Called when the "Rollback version" button is pressed.
    /// Expects the CreateVersionedObject method to be run first.
    /// </summary>
    private bool RollbackVersion()
    {
        // Get the css stylesheet
        CssStylesheetInfo stylesheet = CssStylesheetInfoProvider.GetCssStylesheetInfo("MyNewVersionedStylesheet");

        if (stylesheet != null)
        {
            // Prepare query parameters
            string where = "VersionObjectID =" + stylesheet.StylesheetID + " AND VersionObjectType = '" + stylesheet.ObjectType + "'";
            string orderBy = "VersionModifiedWhen ASC";
            int    topN    = 1;

            // Get dataset with versions according to the parameters
            DataSet versionDS = ObjectVersionHistoryInfoProvider.GetVersionHistories(where, orderBy, topN, null);

            if (!DataHelper.DataSourceIsEmpty(versionDS))
            {
                // Get version
                ObjectVersionHistoryInfo version = new ObjectVersionHistoryInfo(versionDS.Tables[0].Rows[0]);

                // Roll back
                ObjectVersionManager.RollbackVersion(version.VersionID);

                return(true);
            }
        }

        return(false);
    }
コード例 #5
0
    /// <summary>
    /// Loads drop down list with data.
    /// </summary>
    private void ReloadData()
    {
        drpObjectTypes.Items.Clear();

        // Check if show all item should be displayed
        if (ShowAll)
        {
            drpObjectTypes.Items.Add(new ListItem(GetString("general.selectall"), ""));
        }

        // Get recycle bin object types
        DataSet dsObjectTypes = ObjectVersionHistoryInfoProvider.GetRecycleBin(UserID, WhereCondition, null, -1, "DISTINCT VersionObjectType");

        if (!DataHelper.DataSourceIsEmpty(dsObjectTypes))
        {
            SortedDictionary <string, string> sdObjectTypes = new SortedDictionary <string, string>();
            foreach (DataRow dr in dsObjectTypes.Tables[0].Rows)
            {
                string objType = ValidationHelper.GetString(dr["VersionObjectType"], null);
                if (!String.IsNullOrEmpty(objType))
                {
                    sdObjectTypes.Add(GetString("ObjectType." + objType.Replace(".", "_")), objType);
                }
            }

            foreach (string key in sdObjectTypes.Keys)
            {
                drpObjectTypes.Items.Add(new ListItem(key, sdObjectTypes[key]));
            }
        }

        // Preselect value
        if (!String.IsNullOrEmpty(SelectedValue))
        {
            mObjectType = SelectedValue;
        }
        ListItem selectedItem = drpObjectTypes.Items.FindByValue(mObjectType);

        if (selectedItem != null)
        {
            this.drpObjectTypes.ClearSelection();
            selectedItem.Selected = true;
        }
        else
        {
            this.drpObjectTypes.SelectedIndex = 0;
            SelectedValue = null;
        }
    }
コード例 #6
0
ファイル: Default.aspx.cs プロジェクト: kudutest2/Kentico
    /// <summary>
    /// Restores object from recycle bin. Called when the "Restore object" button is pressed.
    /// Expects the DeleteObject method to be run first.
    /// </summary>
    private bool RestoreObject()
    {
        // Prepare query parameters
        string where = "VersionObjectType = '" + SiteObjectType.CSSSTYLESHEET + "' AND VersionDeletedByUserID = " + CMSContext.CurrentUser.UserID;
        string orderBy = "VersionDeletedWhen DESC";
        int    topN    = 1;

        // Get dataset with versions according to the parameters
        DataSet versionDS = ObjectVersionHistoryInfoProvider.GetVersionHistories(where, orderBy, topN, null);

        if (!DataHelper.DataSourceIsEmpty(versionDS))
        {
            // Get version
            ObjectVersionHistoryInfo version = new ObjectVersionHistoryInfo(versionDS.Tables[0].Rows[0]);

            // Restore the object
            ObjectVersionManager.RestoreObject(version.VersionID, true);

            return(true);
        }

        return(false);
    }
コード例 #7
0
    /// <summary>
    /// Removes global shipping options from recycle bin.
    /// </summary>
    private static void RemoveGlobalShippingOptionsFromRecycleBin()
    {
        const string shippingObjectType = "ecommerce.shippingoption";
        var          shippingOption     = ModuleManager.GetObject(shippingObjectType);

        // Nothing to remove when shipping option type not present
        if (shippingOption == null)
        {
            return;
        }

        // Get histories for all objects of shipping option type
        var histories = ObjectVersionHistoryInfoProvider.GetVersionHistories().WhereEquals("VersionObjectType", shippingObjectType);

        // Fill ids list with IDs of global shipping options present in histories
        var ids = new List <int>();

        foreach (var history in histories)
        {
            if (!String.IsNullOrEmpty(history.VersionXML))
            {
                HierarchyHelper.LoadObjectFromXML(OperationTypeEnum.Export, shippingOption, history.VersionXML);

                if (shippingOption.IsGlobal)
                {
                    ids.Add(shippingOption.Generalized.ObjectID);
                }
            }
        }

        // Remove version histories for selected shipping options
        if (ids.Count != 0)
        {
            var where = new WhereCondition().WhereIn("VersionObjectID", ids);
            ObjectVersionHistoryInfoProvider.DeleteVersionHistories(where.ToString(true));
        }
    }
    protected void Page_Load(object sender, EventArgs e)
    {
        // Even thought this page uses dialog master page, it always opens in new tab
        PageTitle.IsDialog = false;

        bool noCompare = ValidationHelper.GetBoolean(QueryHelper.GetString("nocompare", string.Empty), false);

        // Initialize view version control
        viewVersion.NoComparison = noCompare;
        int versionId = ValidationHelper.GetInteger(QueryHelper.GetString("versionhistoryid", string.Empty), 0);

        viewVersion.VersionCompareID = ValidationHelper.GetInteger(QueryHelper.GetString("comparehistoryid", string.Empty), 0);

        // Get version to initialize title
        ObjectVersionHistoryInfo version = ObjectVersionHistoryInfoProvider.GetVersionHistoryInfo(versionId);

        if (version != null)
        {
            string objectType = version.VersionObjectType;
            string objType    = GetString("ObjectType." + objectType.Replace(".", "_"));
            string title      = String.Format(GetString("objectversioning.viewversion.title"), objType, HTMLHelper.HTMLEncode(ResHelper.LocalizeString(version.VersionObjectDisplayName)));
            // Set title
            SetTitle(title);

            viewVersion.Version = version;

            // Exclude site binding table data
            GeneralizedInfo infoObj = ModuleManager.GetReadOnlyObject(objectType);
            viewVersion.ExcludedTableNames = ObjectHelper.GetSerializationTableName(infoObj.TypeInfo.SiteBindingObject);
        }

        // Set what data should be displayed
        bool showAll = ValidationHelper.GetBoolean(QueryHelper.GetBoolean("showall", false), false);

        viewVersion.ObjectDataOnly = !showAll;
    }
コード例 #9
0
    /// <summary>
    /// Handles the UniGrid's OnAction event.
    /// </summary>
    /// <param name="actionName">Name of item (button) that throws event</param>
    /// <param name="actionArgument">ID (value of Primary key) of corresponding data row</param>
    protected void ugRecycleBin_OnAction(string actionName, object actionArgument)
    {
        int versionHistoryId = ValidationHelper.GetInteger(actionArgument, 0);

        actionName = actionName.ToLowerCSafe();

        switch (actionName)
        {
        case "restorechilds":
        case "restorewithoutbindings":
        case "restorecurrentsite":
            try
            {
                if (MembershipContext.AuthenticatedUser.IsAuthorizedPerResource("cms.globalpermissions", "RestoreObjects"))
                {
                    switch (actionName)
                    {
                    case "restorechilds":
                        ObjectVersionManager.RestoreObject(versionHistoryId, true);
                        break;

                    case "restorewithoutbindings":
                        ObjectVersionManager.RestoreObject(versionHistoryId, 0);
                        break;

                    case "restorecurrentsite":
                        ObjectVersionManager.RestoreObject(versionHistoryId, SiteContext.CurrentSiteID);
                        break;
                    }

                    ShowConfirmation(GetString("ObjectVersioning.Recyclebin.RestorationOK"));
                }
                else
                {
                    ShowError(ResHelper.GetString("objectversioning.recyclebin.restorationfailedpermissions"));
                }
            }
            catch (CodeNameNotUniqueException ex)
            {
                ShowError(String.Format(GetString("objectversioning.restorenotuniquecodename"), (ex.Object != null) ? "('" + ex.Object.ObjectCodeName + "')" : null));
            }
            catch (Exception ex)
            {
                ShowError(GetString("objectversioning.recyclebin.restorationfailed") + GetString("general.seeeventlog"));

                // Log to event log
                LogException("OBJECTRESTORE", ex);
            }
            break;

        case "destroy":
            ObjectVersionHistoryInfo verInfo = ObjectVersionHistoryInfoProvider.GetVersionHistoryInfo(versionHistoryId);
            if (verInfo != null)
            {
                // Get object site name
                string siteName = (CurrentSite != null) ? CurrentSite.SiteName : SiteInfoProvider.GetSiteName(verInfo.VersionObjectSiteID);

                if (CurrentUser.IsAuthorizedPerObject(PermissionsEnum.Destroy, verInfo.VersionObjectType, siteName))
                {
                    ObjectVersionManager.DestroyObjectHistory(verInfo.VersionObjectType, verInfo.VersionObjectID);
                    ShowConfirmation(GetString("ObjectVersioning.Recyclebin.DestroyOK"));
                }
                else
                {
                    ShowError(String.Format(ResHelper.GetString("objectversioning.recyclebin.destructionfailedpermissions"), HTMLHelper.HTMLEncode(ResHelper.LocalizeString(verInfo.VersionObjectDisplayName))));
                }
            }
            break;
        }

        ugRecycleBin.ResetSelection();
    }
コード例 #10
0
    /// <summary>
    /// Empties recycle bin.
    /// </summary>
    private void EmptyBin(object parameter)
    {
        // Begin log
        AddLog(ResHelper.GetString("Recyclebin.EmptyingBin", currentCulture));
        BinSettingsContainer settings        = (BinSettingsContainer)parameter;
        CurrentUserInfo      currentUserInfo = settings.User;
        SiteInfo             currentSite     = settings.Site;

        DataSet recycleBin = null;

        string where = IsSingleSite ? "VersionObjectSiteID IS NULL" : null;

        switch (settings.CurrentWhat)
        {
        case What.AllObjects:
            if (currentSite != null)
            {
                where = SqlHelper.AddWhereCondition(where, "VersionObjectSiteID = " + currentSite.SiteID, "OR");
            }
            where = GetWhereCondition(where);
            where = SqlHelper.AddWhereCondition(where, filter.WhereCondition);
            break;

        case What.SelectedObjects:
            List <string> toRestore = ugRecycleBin.SelectedItems;
            // Restore selected objects
            if (toRestore.Count > 0)
            {
                where = SqlHelper.GetWhereCondition("VersionID", toRestore);
            }
            break;
        }
        recycleBin = ObjectVersionHistoryInfoProvider.GetRecycleBin(where, null, -1, "VersionID, VersionObjectType, VersionObjectID, VersionObjectDisplayName, VersionObjectSiteID");

        try
        {
            if (!DataHelper.DataSourceIsEmpty(recycleBin))
            {
                foreach (DataRow dr in recycleBin.Tables[0].Rows)
                {
                    int    versionHistoryId = Convert.ToInt32(dr["VersionID"]);
                    string versionObjType   = Convert.ToString(dr["VersionObjectType"]);
                    string objName          = HTMLHelper.HTMLEncode(ResHelper.LocalizeString(ValidationHelper.GetString(dr["VersionObjectDisplayName"], string.Empty)));
                    string siteName         = null;
                    if (currentSite != null)
                    {
                        siteName = currentSite.SiteName;
                    }
                    else
                    {
                        int siteId = ValidationHelper.GetInteger(dr["VersionObjectSiteID"], 0);
                        siteName = SiteInfoProvider.GetSiteName(siteId);
                    }

                    // Check permissions
                    if (!currentUserInfo.IsAuthorizedPerObject(PermissionsEnum.Destroy, versionObjType, siteName))
                    {
                        CurrentError = String.Format(ResHelper.GetString("objectversioning.Recyclebin.DestructionFailedPermissions", currentCulture), objName);
                        AddLog(CurrentError);
                    }
                    else
                    {
                        AddLog(ResHelper.GetString("general.object", currentCulture) + " '" + objName + "'");

                        // Destroy the version
                        int versionObjId = ValidationHelper.GetInteger(dr["VersionObjectID"], 0);
                        ObjectVersionManager.DestroyObjectHistory(versionObjType, versionObjId);
                        LogContext.LogEvent(EventType.INFORMATION, "Objects", "DESTROYOBJECT", ResHelper.GetString("objectversioning.Recyclebin.objectdestroyed"), RequestContext.RawURL, currentUserInfo.UserID, currentUserInfo.UserName, 0, null, RequestContext.UserHostAddress, (currentSite != null) ? currentSite.SiteID : 0, SystemContext.MachineName, RequestContext.URLReferrer, RequestContext.UserAgent, DateTime.Now);
                    }
                }
                if (!String.IsNullOrEmpty(CurrentError))
                {
                    CurrentError = ResHelper.GetString("objectversioning.recyclebin.errorsomenotdestroyed", currentCulture);
                    AddLog(CurrentError);
                }
                else
                {
                    CurrentInfo = ResHelper.GetString("ObjectVersioning.Recyclebin.DestroyOK", currentCulture);
                    AddLog(CurrentInfo);
                }
            }
        }
        catch (ThreadAbortException ex)
        {
            string state = ValidationHelper.GetString(ex.ExceptionState, string.Empty);
            if (state != CMSThread.ABORT_REASON_STOP)
            {
                // Log error
                CurrentError = "Error occurred: " + ResHelper.GetString("general.seeeventlog", currentCulture);
                AddLog(CurrentError);

                // Log to event log
                LogException("EMPTYINGBIN", ex);
            }
        }
        catch (Exception ex)
        {
            // Log error
            CurrentError = "Error occurred: " + ResHelper.GetString("general.seeeventlog", currentCulture);
            AddLog(CurrentError);

            // Log to event log
            LogException("EMPTYINGBIN", ex);
        }
    }
コード例 #11
0
    /// <summary>
    /// Restores objects selected in UniGrid.
    /// </summary>
    private void Restore(object parameter, Action action)
    {
        try
        {
            // Begin log
            AddLog(ResHelper.GetString("objectversioning.recyclebin.restoringobjects", currentCulture));

            BinSettingsContainer settings = (BinSettingsContainer)parameter;
            DataSet recycleBin            = null;
            if (settings.User.IsAuthorizedPerResource("cms.globalpermissions", "RestoreObjects"))
            {
                string where = IsSingleSite ? "VersionObjectSiteID IS NULL" : null;

                switch (settings.CurrentWhat)
                {
                case What.AllObjects:
                    if (settings.Site != null)
                    {
                        where = SqlHelper.AddWhereCondition(where, "VersionObjectSiteID = " + settings.Site.SiteID, "OR");
                    }

                    where      = SqlHelper.AddWhereCondition(where, filter.WhereCondition);
                    recycleBin = ObjectVersionHistoryInfoProvider.GetRecycleBin(GetWhereCondition(where), null, -1, "VersionID, VersionObjectDisplayName, VersionObjectType, VersionObjectID");
                    break;

                case What.SelectedObjects:
                    List <string> toRestore = ugRecycleBin.SelectedItems;
                    // Restore selected objects
                    if (toRestore.Count > 0)
                    {
                        where      = SqlHelper.GetWhereCondition("VersionID", toRestore);
                        recycleBin = ObjectVersionHistoryInfoProvider.GetRecycleBin(where, OrderBy, -1, "VersionID, VersionObjectDisplayName, VersionObjectType, VersionObjectID");
                    }
                    break;
                }

                if (!DataHelper.DataSourceIsEmpty(recycleBin))
                {
                    RestoreDataSet(settings, recycleBin, action);
                }
            }
            else
            {
                CurrentError = ResHelper.GetString("objectversioning.recyclebin.restorationfailedpermissions");
                AddLog(CurrentError);
            }
        }
        catch (ThreadAbortException ex)
        {
            string state = ValidationHelper.GetString(ex.ExceptionState, string.Empty);
            if (state == CMSThread.ABORT_REASON_STOP)
            {
                // When canceled
                CurrentInfo = ResHelper.GetString("Recyclebin.RestorationCanceled", currentCulture);
                AddLog(CurrentInfo);
            }
            else
            {
                // Log error
                CurrentError = ResHelper.GetString("objectversioning.recyclebin.restorationfailed", currentCulture) + ": " + ResHelper.GetString("general.seeeventlog", currentCulture);
                AddLog(CurrentError);

                // Log to event log
                LogException("OBJECTRESTORE", ex);
            }
        }
        catch (Exception ex)
        {
            // Log error
            CurrentError = ResHelper.GetString("objectversioning.recyclebin.restorationfailed", currentCulture) + ": " + ResHelper.GetString("general.seeeventlog", currentCulture);
            AddLog(CurrentError);

            // Log to event log
            LogException("OBJECTRESTORE", ex);
        }
    }
コード例 #12
0
    protected void gridHistory_OnAction(string actionName, object actionArgument)
    {
        int versionHistoryId = ValidationHelper.GetInteger(actionArgument, 0);

        actionName = actionName.ToLowerCSafe();
        switch (actionName.ToLowerCSafe())
        {
        case "rollback":
        case "fullrollback":
            if (versionHistoryId > 0)
            {
                // Check permissions
                if (CheckPermissions && !AllowModify)
                {
                    ShowError(GetString("History.ErrorNotAllowedToModify"));
                }
                else
                {
                    try
                    {
                        var newVersionId = ObjectVersionManager.RollbackVersion(versionHistoryId, (actionName == "fullrollback"));
                        ObjectVersionHistoryInfo newVersion = ObjectVersionHistoryInfoProvider.GetVersionHistoryInfo(newVersionId);

                        // Set object to null because after rollback it doesn't contain current data
                        Object = null;
                        gridHistory.ReloadData();

                        if (OnAfterRollback != null)
                        {
                            OnAfterRollback(this, null);
                        }

                        ShowConfirmation(GetString("objectversioning.rollbackOK"));

                        ScriptHelper.RegisterStartupScript(this, typeof(string), "RefreshContent", ScriptHelper.GetScript("RefreshRelatedContent_" + ClientID + "();"));

                        ScriptHelper.RefreshTabHeader(Page, newVersion.VersionObjectDisplayName);
                    }
                    catch (CodeNameNotUniqueException ex)
                    {
                        ShowError(String.Format(GetString("objectversioning.restorenotuniquecodename"), (ex.Object != null) ? "('" + ex.Object.ObjectCodeName + "')" : null));
                    }
                    catch (Exception ex)
                    {
                        ShowError(GetString("objectversioning.recyclebin.restorationfailed") + " " + GetString("general.seeeventlog"));

                        // Log to event log
                        EventLogProvider.LogException("Object version list", "OBJECTRESTORE", ex);
                    }
                }
            }
            break;

        case "destroy":
            if (versionHistoryId > 0)
            {
                // Check permissions
                if (CheckPermissions && !AllowDestroy)
                {
                    ShowError(GetString("History.ErrorNotAllowedToDestroy"));
                }
                else
                {
                    ObjectVersionManager.DestroyObjectVersion(versionHistoryId);
                    ShowConfirmation(GetString("objectversioning.destroyOK"));
                }
            }
            break;
        }
    }
コード例 #13
0
    /// <summary>
    /// Handles the UniGrid's OnAction event.
    /// </summary>
    /// <param name="actionName">Name of item (button) that throws event</param>
    /// <param name="actionArgument">ID (value of Primary key) of corresponding data row</param>
    protected void ugRecycleBin_OnAction(string actionName, object actionArgument)
    {
        int versionHistoryId = ValidationHelper.GetInteger(actionArgument, 0);

        actionName = actionName.ToLower();

        switch (actionName)
        {
        case "restorechilds":
        case "restorewithoutbindings":
        case "restorecurrentsite":
            try
            {
                if (CMSContext.CurrentUser.IsAuthorizedPerResource("cms.globalpermissions", "RestoreObjects"))
                {
                    switch (actionName)
                    {
                    case "restorechilds":
                        ObjectVersionManager.RestoreObject(versionHistoryId, true);
                        break;

                    case "restorewithoutbindings":
                        ObjectVersionManager.RestoreObject(versionHistoryId, 0);
                        break;

                    case "restorecurrentsite":
                        ObjectVersionManager.RestoreObject(versionHistoryId, CMSContext.CurrentSiteID);
                        break;
                    }

                    lblInfo.Visible = true;
                    lblInfo.Text    = GetString("ObjectVersioning.Recyclebin.RestorationOK");
                }
                else
                {
                    lblError.Visible = true;
                    lblError.Text    = ResHelper.GetString("objectversioning.recyclebin.restorationfailedpermissions");
                }
            }
            catch (CodeNameNotUniqueException ex)
            {
                lblError.Visible = true;
                lblError.Text    = String.Format(GetString("objectversioning.restorenotuniquecodename"), (ex.Object != null) ? "('" + ex.Object.ObjectCodeName + "')" : null);
            }
            catch (Exception ex)
            {
                lblError.Visible = true;
                lblError.Text    = GetString("objectversioning.recyclebin.restorationfailed") + GetString("general.seeeventlog");

                // Log to event log
                LogException("OBJECTRESTORE", ex);
            }
            break;

        case "destroy":

            ObjectVersionHistoryInfo verInfo = ObjectVersionHistoryInfoProvider.GetVersionHistoryInfo(versionHistoryId);

            // Get object site name
            string siteName = null;
            if (CurrentSite != null)
            {
                siteName = CurrentSite.SiteName;
            }
            else
            {
                siteName = SiteInfoProvider.GetSiteName(verInfo.VersionObjectSiteID);
            }

            if ((verInfo != null) && CurrentUser.IsAuthorizedPerObject(PermissionsEnum.Destroy, verInfo.VersionObjectType, siteName))
            {
                ObjectVersionManager.DestroyObjectHistory(verInfo.VersionObjectType, verInfo.VersionObjectID);
                lblInfo.Visible = true;
                lblInfo.Text    = GetString("ObjectVersioning.Recyclebin.DestroyOK");
            }
            else
            {
                lblError.Visible = true;
                lblError.Text    = String.Format(ResHelper.GetString("objectversioning.recyclebin.destructionfailedpermissions"), HTMLHelper.HTMLEncode(ResHelper.LocalizeString(verInfo.VersionObjectDisplayName)));
            }
            break;
        }

        ugRecycleBin.ResetSelection();
        pnlUpdateInfo.Update();
        ReloadFilter((CurrentSite != null) ? CurrentSite.SiteID : -1, IsSingleSite, false);
    }