Exemplo n.º 1
0
    /// <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);
    }
    /// <summary>
    /// Raises event postback event
    /// </summary>
    /// <param name="eventArgument">Argument</param>
    public void RaisePostBackEvent(string eventArgument)
    {
        string[] args = eventArgument.Split('|');
        if (args.Length == 2)
        {
            int  rollbackVersionId = ValidationHelper.GetInteger(args[0], 0);
            bool processChilds     = ValidationHelper.GetBoolean(args[1], false);
            if (rollbackVersionId > 0)
            {
                try
                {
                    // Rollback version
                    int newVersionHistoryId = ObjectVersionManager.RollbackVersion(rollbackVersionId, processChilds);

                    lblInfo.Text = GetString("objectversioning.rollbackOK");

                    string url = URLHelper.CurrentURL;

                    // Add URL parameters
                    url = URLHelper.AddParameterToUrl(url, "versionhistoryid", newVersionHistoryId.ToString());
                    url = URLHelper.AddParameterToUrl(url, "comparehistoryid", VersionCompare.VersionID.ToString());
                    url = URLHelper.AddParameterToUrl(url, "rollbackok", "1");
                    url = URLHelper.AddParameterToUrl(url, "showall", processChilds.ToString());
                    url = URLHelper.RemoveParameterFromUrl(url, "hash");
                    url = URLHelper.AddParameterToUrl(url, "hash", QueryHelper.GetHash(url));

                    // Prepare URL
                    url = ScriptHelper.GetString(URLHelper.ResolveUrl(url), true);

                    // Prepare script for refresh parent window and this dialog
                    StringBuilder builder = new StringBuilder();
                    builder.Append("if (wopener != null) {\n");

                    string clientId = QueryHelper.GetString("clientid", "");
                    if (!String.IsNullOrEmpty(clientId))
                    {
                        builder.Append("if (wopener.RefreshVersions_", clientId, " != null) {wopener.RefreshVersions_", clientId, "();}",
                                       "if (wopener.RefreshRelatedContent_", clientId, " != null) {wopener.RefreshRelatedContent_", clientId, "();}}");
                    }

                    builder.Append("window.document.location.replace(" + url + ");");

                    string script = ScriptHelper.GetScript(builder.ToString());
                    ScriptHelper.RegisterStartupScript(this, typeof(string), "RefreshAndReload", script);
                }
                catch (Exception ex)
                {
                    lblError.Text = GetString("objectversioning.recyclebin.restorationfailed") + " " + GetString("general.seeeventlog");

                    // Log to event log
                    EventLogProvider.LogException("View object version", "OBJECTRESTORE", ex);
                }
            }
        }
    }
Exemplo n.º 3
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 = ObjectVersionHistoryInfo.Provider.Get(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
                        Service.Resolve <IEventLogService>().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;
        }
    }
Exemplo n.º 4
0
    protected void gridHistory_OnAction(string actionName, object actionArgument)
    {
        int versionHistoryId = ValidationHelper.GetInteger(actionArgument, 0);

        actionName = actionName.ToLower();
        switch (actionName.ToLower())
        {
        case "rollback":
        case "fullrollback":
            if (versionHistoryId > 0)
            {
                try
                {
                    ObjectVersionManager.RollbackVersion(versionHistoryId, (actionName == "fullrollback") ? true : false);
                    lblInfo.Text = GetString("objectversioning.rollbackOK");

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

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

                    ScriptHelper.RegisterStartupScript(this, typeof(string), "RefreshContent", ScriptHelper.GetScript("RefreshRelatedContent_" + ClientID + "();"));
                }
                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
                    EventLogProvider.LogException("Object version list", "OBJECTRESTORE", ex);
                }
            }
            break;

        case "destroy":
            if (versionHistoryId > 0)
            {
                // Check permissions
                if (CheckPermissions && !AllowDestroy)
                {
                    lblError.Text = GetString("History.ErrorNotAllowedToDestroy");
                }
                else
                {
                    ObjectVersionManager.DestroyObjectVersion(versionHistoryId);
                    lblInfo.Text = GetString("objectversioning.destroyOK");
                }
            }
            break;
        }
        plcLabels.Visible = true;
    }