using System;
using System.Data;
using System.Collections;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Globalization;
using CMS.SettingsProvider;
using CMS.CMSHelper;
using CMS.GlobalHelper;
using CMS.UIControls;
using CMS.TranslationServices;
using CMS.ExtendedControls;
public partial class CMSModules_Translations_Controls_UI_TranslationSubmission_List : CMSAdminListControl
{
#region "Variables"
private bool modifyAllowed = false;
#endregion
#region "Properties"
///
/// Inner grid.
///
public UniGrid Grid
{
get
{
return this.gridElem;
}
}
///
/// Indicates if the control should perform the operations.
///
public override bool StopProcessing
{
get
{
return base.StopProcessing;
}
set
{
base.StopProcessing = value;
this.gridElem.StopProcessing = value;
}
}
///
/// Indicates if the control is used on the live site.
///
public override bool IsLiveSite
{
get
{
return base.IsLiveSite;
}
set
{
base.IsLiveSite = value;
gridElem.IsLiveSite = value;
}
}
#endregion
#region "Methods"
protected void Page_Load(object sender, EventArgs e)
{
modifyAllowed = CMSContext.CurrentUser.IsAuthorizedPerResource("CMS.TranslationServices", "Modify");
this.gridElem.WhereCondition = "SubmissionSiteID = " + CMSContext.CurrentSiteID;
this.gridElem.OnExternalDataBound += new OnExternalDataBoundEventHandler(gridElem_OnExternalDataBound);
this.gridElem.OnAction += new OnActionEventHandler(gridElem_OnAction);
}
protected void gridElem_OnAction(string actionName, object actionArgument)
{
string err = null;
string info = null;
// Check modify permission for all actions except for download ZIP
if (!actionName.EqualsCSafe("downloadzip", true))
{
if (!modifyAllowed)
{
RedirectToAccessDenied("CMS.TranslationServices", "Modify");
}
}
TranslationSubmissionInfo submissionInfo = TranslationSubmissionInfoProvider.GetTranslationSubmissionInfo(ValidationHelper.GetInteger(actionArgument, 0));
if (submissionInfo != null)
{
switch (actionName.ToLowerCSafe())
{
case "downloadzip":
TranslationServiceHelper.DownloadXLIFFinZIP(submissionInfo, Page.Response);
break;
case "resubmit":
err = TranslationServiceHelper.ResubmitSubmission(submissionInfo);
info = GetString("translationservice.translationresubmitted");
break;
case "process":
err = TranslationServiceHelper.ProcessSubmission(submissionInfo);
info = GetString("translationservice.translationsimported");
break;
case "cancel":
err = TranslationServiceHelper.CancelSubmission(submissionInfo);
info = GetString("translationservice.submissioncanceled");
break;
case "delete":
TranslationServiceHelper.CancelSubmission(submissionInfo);
submissionInfo.Delete();
info = GetString("translationservice.submissioncanceledanddeleted");
break;
}
if (!string.IsNullOrEmpty(err))
{
ShowError(err);
}
else if (!string.IsNullOrEmpty(info))
{
ShowConfirmation(info);
}
}
}
protected object gridElem_OnExternalDataBound(object sender, string sourceName, object parameter)
{
switch (sourceName.ToLowerCSafe())
{
case "resubmitaction":
case "processaction":
case "cancelaction":
ImageButton img = sender as CMSImageButton;
if (img != null)
{
img.Enabled = modifyAllowed;
GridViewRow gvr = parameter as GridViewRow;
if (gvr != null)
{
DataRowView drv = gvr.DataItem as DataRowView;
if (drv != null)
{
TranslationStatusEnum status = (TranslationStatusEnum)ValidationHelper.GetInteger(drv["SubmissionStatus"], 0);
switch (sourceName.ToLowerCSafe())
{
case "resubmitaction":
img.Enabled = modifyAllowed && (status == TranslationStatusEnum.WaitingForTranslation) || (status == TranslationStatusEnum.SubmissionError);
break;
case "processaction":
img.Enabled = modifyAllowed && (status == TranslationStatusEnum.TranslationReady) || (status == TranslationStatusEnum.TranslationCompleted) || (status == TranslationStatusEnum.ProcessingError);
break;
case "cancelaction":
img.Enabled = modifyAllowed && (status == TranslationStatusEnum.WaitingForTranslation);
break;
}
}
}
}
return img;
case "submissionstatus":
TranslationStatusEnum submissionstatus = (TranslationStatusEnum)ValidationHelper.GetInteger(parameter, 0);
return TranslationServiceHelper.GetFormattedStatusString(submissionstatus);
case "submissionprice":
string price = GetString("general.notavailable");
double priceVal = ValidationHelper.GetDouble(parameter, -1);
if (priceVal >= 0)
{
price = priceVal.ToString();
}
return price;
}
return parameter;
}
#endregion
}