using System;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Collections.Generic;
using CMS.CMSHelper;
using CMS.DataEngine;
using CMS.GlobalHelper;
using CMS.SiteProvider;
using CMS.UIControls;
using CMS.TranslationServices;
using CMS.ExtendedControls;
using CMS.ExtendedControls.ActionsConfig;
using CMS.SettingsProvider;
// Edited object
[EditedObject(TranslationServicesObjectType.TRANSLATIONSUBMISSION, "submissionId")]
// Breadcrumbs
[Breadcrumbs(2)]
[Breadcrumb(0, "translationservice.translationsubmission.list", "~/CMSModules/Translations/Pages/Tools/TranslationSubmission/List.aspx", null)]
[Breadcrumb(1, Text = "{%EditedObject.DisplayName%}", ExistingObject = true)]
[Breadcrumb(1, ResourceString = "translationservice.translationsubmission.new", NewObject = true)]
// Title
[Title(ImageUrl = "Objects/CMS_TranslationSubmission/object.png", ResourceString = "translationservice.translationsubmission.edit", HelpTopic = "translationservices_translationsubmission_edit", ExistingObject = true)]
[Title(ImageUrl = "Objects/CMS_TranslationSubmission/new.png", ResourceString = "translationservice.translationsubmission.new", HelpTopic = "translationservices_translationsubmission_edit", NewObject = true)]
public partial class CMSModules_Translations_Pages_Tools_TranslationSubmission_Edit : CMSTranslationServicePage
{
#region "Variables"
TranslationSubmissionInfo mSubmissionInfo = null;
#endregion
#region "Properties"
///
/// Returns submission info being edited.
///
public TranslationSubmissionInfo SubmissionInfo
{
get
{
if (mSubmissionInfo == null)
{
mSubmissionInfo = (TranslationSubmissionInfo)editElem.UIFormControl.EditedObject;
}
return mSubmissionInfo;
}
}
#endregion
#region "Page events"
protected void Page_Load(object sender, EventArgs e)
{
btnImportTranslations.Click += btnImportTranslations_Click;
btnShowMessage.Click += btnShowMessage_Click;
CurrentMaster.HeaderActions.ActionPerformed += HeaderActions_ActionPerformed;
}
protected override void OnPreRender(EventArgs e)
{
base.OnPreRender(e);
if (SubmissionInfo == null)
{
return;
}
bool allowed = CheckModifyPermissions(false);
HeaderAction processAction = new HeaderAction()
{
OnClientClick = "if (confirm(" + ScriptHelper.GetString(GetString("translationservice.confirmprocesstranslations")) + ")) { " + ControlsHelper.GetPostBackEventReference(btnImportTranslations, null) + " }",
Tooltip = GetString("translationservice.importtranslationstooltip"),
Text = GetString("translationservice.importtranslations"),
Enabled = allowed && ((SubmissionInfo.SubmissionStatus == TranslationStatusEnum.TranslationReady) || (SubmissionInfo.SubmissionStatus == TranslationStatusEnum.TranslationCompleted) || (SubmissionInfo.SubmissionStatus == TranslationStatusEnum.ProcessingError))
};
processAction.ImageUrl = GetImageUrl("Design/Controls/UniGrid/Actions/Synchronize" + (processAction.Enabled ? "" : "Disabled") + ".png");
HeaderAction resubmitAction = new HeaderAction()
{
CommandName = "resubmit",
Tooltip = GetString("translationservice.resubmittooltip"),
Text = GetString("translationservice.resubmit"),
Enabled = allowed && ((SubmissionInfo.SubmissionStatus == TranslationStatusEnum.WaitingForTranslation) || (SubmissionInfo.SubmissionStatus == TranslationStatusEnum.SubmissionError))
};
resubmitAction.ImageUrl = GetImageUrl("Design/Controls/UniGrid/Actions/Rebuild" + (resubmitAction.Enabled ? "" : "Disabled") + ".png");
HeaderAction updateAction = new HeaderAction()
{
CommandName = "update",
Tooltip = GetString("translationservice.updateandresubmittooltip"),
Text = GetString("translationservice.updateandresubmit"),
Enabled = allowed && ((SubmissionInfo.SubmissionStatus == TranslationStatusEnum.WaitingForTranslation) || (SubmissionInfo.SubmissionStatus == TranslationStatusEnum.SubmissionError))
};
updateAction.ImageUrl = GetImageUrl("Design/Controls/UniGrid/Actions/Rebuild" + (updateAction.Enabled ? "" : "Disabled") + ".png");
HeaderAction cancelAction = new HeaderAction()
{
CommandName = "cancel",
Tooltip = GetString("translationservice.cancelsubmissiontooltip"),
Text = GetString("translationservice.cancelsubmission"),
Enabled = allowed && (SubmissionInfo.SubmissionStatus == TranslationStatusEnum.WaitingForTranslation)
};
cancelAction.ImageUrl = GetImageUrl("Design/Controls/UniGrid/Actions/Undo" + (cancelAction.Enabled ? "" : "Disabled") + ".png");
HeaderAction saveAction = new SaveAction(Page);
saveAction.Enabled = allowed;
List actions = this.CurrentMaster.HeaderActions.ActionsList;
actions.Add(saveAction);
actions.Add(updateAction);
actions.Add(resubmitAction);
actions.Add(processAction);
actions.Add(cancelAction);
CurrentMaster.HeaderActions.ReloadData();
ScriptHelper.RegisterClientScriptBlock(Page, typeof(string), "ShowUploadSuccess", "function ShowUploadSuccess() { " + ControlsHelper.GetPostBackEventReference(btnShowMessage, null) + " }", true);
}
protected void HeaderActions_ActionPerformed(object sender, CommandEventArgs e)
{
CheckModifyPermissions(true);
switch (e.CommandName)
{
case ComponentEvents.SAVE:
if (!editElem.UIFormControl.SaveData(null))
{
ShowError(GetString("translationservice.savesubmissionfailed"));
}
break;
case "resubmit":
string errResubmit = TranslationServiceHelper.ResubmitSubmission(SubmissionInfo);
if (string.IsNullOrEmpty(errResubmit))
{
ShowInformation(GetString("translationservice.translationresubmitted"));
}
else
{
ShowError(errResubmit);
}
editElem.UIFormControl.ReloadData();
break;
case "update":
if (editElem.UIFormControl.SaveData(null))
{
string errUpdate = TranslationServiceHelper.ResubmitSubmission(SubmissionInfo);
if (string.IsNullOrEmpty(errUpdate))
{
ShowInformation(GetString("translationservice.translationupdatedandresubmitted"));
}
else
{
ShowError(errUpdate);
}
}
editElem.UIFormControl.ReloadData();
break;
case "cancel":
string errCancel = TranslationServiceHelper.CancelSubmission(SubmissionInfo);
if (string.IsNullOrEmpty(errCancel))
{
ShowInformation(GetString("translationservice.submissioncanceled"));
}
else
{
ShowError(errCancel);
}
editElem.UIFormControl.ReloadData();
break;
}
}
///
/// Checks Modify permissions for given translation submission.
///
/// If true, redirects user to Access denied
private bool CheckModifyPermissions(bool redirect)
{
TranslationSubmissionInfo submission = EditedObject as TranslationSubmissionInfo;
if (submission != null)
{
if (!CMSContext.CurrentUser.IsAuthorizedPerObject(PermissionsEnum.Modify, submission, SiteInfoProvider.GetSiteName(submission.SubmissionSiteID)))
{
if (redirect)
{
RedirectToAccessDenied("CMS.TranslationServices", "Modify");
}
return false;
}
}
return true;
}
protected void btnShowMessage_Click(object sender, EventArgs e)
{
ShowInformation(GetString("translationservice.translationuploadedsuccessfully"));
// Reload is required because status of the submission could have been changed and form has to be reloaded
editElem.UIFormControl.ReloadData();
}
protected void btnImportTranslations_Click(object sender, EventArgs e)
{
string err = TranslationServiceHelper.ProcessSubmission(SubmissionInfo);
if (string.IsNullOrEmpty(err))
{
ShowInformation(GetString("translationservice.translationsimported"));
}
else
{
ShowError(err);
}
editElem.UIFormControl.ReloadData();
}
#endregion
}