private void ShowWarning() { TranslationServiceInfo info = (TranslationServiceInfo)EditForm.EditedObject; if ((info != null) && info.TranslationServiceEnabled) { if (!TranslationServiceHelper.IsServiceAvailable(info.TranslationServiceName, SiteContext.CurrentSiteName)) { ShowWarning(GetString("translationservice.notavailable"), null, null); } } }
/// <summary> /// Add translation control to the list of action buttons /// </summary> /// <param name="tsi">Translation service object used to initialize the control</param> /// <param name="siteName">Site name to check for service availability</param> private void AddTranslationControl(TranslationServiceInfo tsi, string siteName) { string arg = "'##SERVICE##|' + document.getElementById('" + (TranslationElementClientID ?? InputClientID) + @"').value"; if (TranslationServiceHelper.IsServiceAvailable(tsi.TranslationServiceName, siteName)) { var ctrl = new CMSAccessibleButton(); cntElem.ActionsContainer.Controls.Add(ctrl); ctrl.IconCssClass = "icon-" + tsi.TranslationServiceName.ToLowerCSafe(); ctrl.ToolTip = string.Format("{0} {1}", ResHelper.GetString("translations.translateusing"), tsi.TranslationServiceDisplayName); // Get callback reference for translation string cbRef = Page.ClientScript.GetCallbackEventReference(this, arg.Replace("##SERVICE##", tsi.TranslationServiceName), "SetValueToTextBox", "'" + InputClientID + ";" + ctrl.ClientID + "_icon;" + ctrl.IconCssClass + "'", true); ctrl.OnClientClick = "StartProgress('" + ctrl.ClientID + "_icon'); " + cbRef + ";return false;"; } }
/// <summary> /// Creates buttons in header actions /// </summary> private void CreateButtons() { var updateAction = new HeaderAction { ButtonStyle = ButtonStyle.Default, CommandName = UPDATE_STATUSES_ACTION, Tooltip = GetString("translationservice.updatestatusestooltip"), Text = GetString("translationservice.updatestatuses"), Enabled = MembershipContext.AuthenticatedUser.IsAuthorizedPerResource("CMS.TranslationServices", "Modify") && !Grid.IsEmpty }; string translateUrl = ApplicationUrlHelper.ResolveDialogUrl("~/CMSModules/Translations/Pages/TranslateDocuments.aspx") + "?select=1&dialog=1"; translateUrl = URLHelper.AddParameterToUrl(translateUrl, "hash", QueryHelper.GetHash(URLHelper.GetQuery(translateUrl))); // Check if any human translation is enabled bool enabled = TranslationServiceInfoProvider.GetTranslationServices("(TranslationServiceEnabled = 1) AND (TranslationServiceIsMachine = 0)", null, 0, "TranslationServiceID, TranslationServiceName").Any(t => TranslationServiceHelper.IsServiceAvailable(t.TranslationServiceName, SiteContext.CurrentSiteName)); var submitAction = new HeaderAction { OnClientClick = "modalDialog('" + translateUrl + "', 'SubmitTranslation', 988, 640);", Tooltip = GetString(enabled ? "translationservice.submittranslationtooltip" : "translationservice.noenabledservices"), Text = GetString("translationservice.submittranslation"), Enabled = enabled && MembershipContext.AuthenticatedUser.IsAuthorizedPerResource("CMS.Content", "SubmitForTranslation") }; AddHeaderAction(submitAction); AddHeaderAction(updateAction); HeaderActions.ReloadData(); }
/// <summary> /// Selects correct value. /// </summary> private void ReloadData() { string where = "TranslationServiceEnabled = 1"; if (!DisplayMachineServices) { where += " AND TranslationServiceIsMachine = 0"; } // Get services var data = TranslationServiceInfoProvider.GetTranslationServices(where, "TranslationServiceIsMachine DESC, TranslationServiceDisplayName ASC", 0, "TranslationServiceDisplayName, TranslationServiceName, TranslationServiceIsMachine, TranslationServiceSupportsPriority, TranslationServiceSupportsInstructions, TranslationServiceSupportsDeadline, TranslationServiceGenerateTargetTag"); if (DataHelper.DataSourceIsEmpty(data)) { return; } bool allowBinary = SettingsKeyInfoProvider.GetBoolValue(SiteContext.CurrentSiteName + ".CMSAllowAttachmentTranslation"); string selected = SelectedService; string lastDisplayName = null; int i = 0; string machSelectScript = null; ltlServices.Text += "<div class=\"radio-list-vertical\">"; foreach (DataRow dr in data.Tables[0].Rows) { string codeName = ValidationHelper.GetString(dr["TranslationServiceName"], ""); // Check availability if (!TranslationServiceHelper.IsServiceAvailable(codeName, SiteContext.CurrentSiteName)) { continue; } if (string.IsNullOrEmpty(selected) && (i == 0)) { selected = codeName; } bool isMachine = ValidationHelper.GetBoolean(dr["TranslationServiceIsMachine"], false); string displayName = ValidationHelper.GetString(dr["TranslationServiceDisplayName"], ""); bool supportsInstructions = ValidationHelper.GetBoolean(dr["TranslationServiceSupportsInstructions"], false); bool supportsPriority = ValidationHelper.GetBoolean(dr["TranslationServiceSupportsPriority"], false); bool supportsDeadline = ValidationHelper.GetBoolean(dr["TranslationServiceSupportsDeadline"], false); if (isMachine && !string.IsNullOrEmpty(MachineServiceSuffix)) { displayName += MachineServiceSuffix; } string selectScript = string.Format("SelectService({0}, {1}, {2}, {3}, {4}, {5})", ScriptHelper.GetString(codeName), (!isMachine && DisplaySeparateSubmissionOption ? "true" : "false"), (supportsInstructions ? "true" : "false"), (supportsPriority ? "true" : "false"), (!isMachine && allowBinary ? "true" : "false"), (supportsDeadline ? "true" : "false")); bool isSelected = selected.Equals(codeName, StringComparison.CurrentCultureIgnoreCase); if (isSelected) { SelectedService = selected; if (string.IsNullOrEmpty(machSelectScript)) { machSelectScript = selectScript; } } string radioBtn = "<div class=\"radio\"><input id=\"rad" + codeName + "\" " + (isSelected ? "checked=\"checked\"" : "") + " type=\"radio\" name=\"services\" value=\"" + codeName + "\" onclick=\"" + selectScript + "\" />"; radioBtn += "<label for=\"rad" + codeName + "\">" + HTMLHelper.HTMLEncode(displayName) + "</label></div>"; lastDisplayName = displayName; mAnyServiceAvailable = true; ltlServices.Text += radioBtn; i++; } ltlServices.Text += "</div>"; // If only one service is available, display it in a different way if (i == 1) { DisplayedServiceName = lastDisplayName; ltlServices.Text = DisplayOnlyServiceName ? "<strong>" + HTMLHelper.HTMLEncode(lastDisplayName) + "</strong>" : String.Empty; } if (!String.IsNullOrEmpty(machSelectScript)) { // Register selection script for first service ScriptHelper.RegisterStartupScript(Page, typeof(string), "TranslationServiceSelectorSelection", machSelectScript, true); } DisplayedServicesCount = i; }
protected override void OnPreRender(EventArgs e) { base.OnPreRender(e); ScriptHelper.RegisterDialogScript(Page); HeaderAction updateAction = new HeaderAction { OnClientClick = ControlsHelper.GetPostBackEventReference(btnUpdateStatuses), Tooltip = GetString("translationservice.updatestatusestooltip"), Text = GetString("translationservice.updatestatuses"), Enabled = MembershipContext.AuthenticatedUser.IsAuthorizedPerResource("CMS.TranslationServices", "Modify") && !listElem.Grid.IsEmpty }; string translateUrl = AuthenticationHelper.ResolveDialogUrl("~/CMSModules/Translations/Pages/TranslateDocuments.aspx") + "?select=1&dialog=1"; translateUrl = URLHelper.AddParameterToUrl(translateUrl, "hash", QueryHelper.GetHash(URLHelper.GetQuery(translateUrl))); // Check if any human translation is enabled bool enabled = TranslationServiceInfoProvider.GetTranslationServices("(TranslationServiceEnabled = 1) AND (TranslationServiceIsMachine = 0)", null, 0, "TranslationServiceID, TranslationServiceName").Any(t => TranslationServiceHelper.IsServiceAvailable(t.TranslationServiceName, SiteContext.CurrentSiteName)); HeaderAction submitAction = new HeaderAction { OnClientClick = "modalDialog('" + translateUrl + "', 'SubmitTranslation', 988, 634);", Tooltip = GetString(enabled ? "translationservice.submittranslationtooltip" : "translationservice.noenabledservices"), Text = GetString("translationservice.submittranslation"), Enabled = enabled && MembershipContext.AuthenticatedUser.IsAuthorizedPerResource("CMS.Content", "SubmitForTranslation") }; AddHeaderAction(submitAction); AddHeaderAction(updateAction); CurrentMaster.HeaderActions.ReloadData(); if (!listElem.Grid.IsEmpty) { string statusCheck = SettingsKeyInfoProvider.GetStringValue("CMSTranslationsLastStatusCheck"); if (string.IsNullOrEmpty(statusCheck)) { statusCheck = GetString("general.notavailable"); } ShowInformation(string.Format(GetString("translationservice.laststatuscheck"), statusCheck)); } }
/// <summary> /// Selects correct value. /// </summary> private void ReloadData() { string where = "TranslationServiceEnabled = 1"; if (!DisplayMachineServices) { where += " AND TranslationServiceIsMachine = 0"; } bool allowBinary = SettingsKeyProvider.GetBoolValue(CMSContext.CurrentSiteName + ".CMSAllowAttachmentTranslation"); DataSet ds = TranslationServiceInfoProvider.GetTranslationServices(where, "TranslationServiceIsMachine DESC, TranslationServiceDisplayName ASC", 0, "TranslationServiceDisplayName, TranslationServiceName, TranslationServiceIsMachine, TranslationServiceSupportsPriority, TranslationServiceSupportsInstructions, TranslationServiceSupportsDeadline, TranslationServiceGenerateTargetTag"); if (!DataHelper.DataSourceIsEmpty(ds)) { string selected = hdnSelectedName.Value; string lastDisplayName = null; int i = 0; int count = ds.Tables[0].Rows.Count; string machSelectScript = null; foreach (DataRow dr in ds.Tables[0].Rows) { string codeName = ValidationHelper.GetString(dr["TranslationServiceName"], ""); // Check availability if (TranslationServiceHelper.IsServiceAvailable(codeName, CMSContext.CurrentSiteName)) { if (string.IsNullOrEmpty(selected) && (i == 0)) { selected = codeName; } bool isMachine = ValidationHelper.GetBoolean(dr["TranslationServiceIsMachine"], false); string displayName = ValidationHelper.GetString(dr["TranslationServiceDisplayName"], ""); bool supportsInstructions = ValidationHelper.GetBoolean(dr["TranslationServiceSupportsInstructions"], false); bool supportsPriority = ValidationHelper.GetBoolean(dr["TranslationServiceSupportsPriority"], false); bool supportsDeadline = ValidationHelper.GetBoolean(dr["TranslationServiceSupportsDeadline"], false); bool generateTargetTag = ValidationHelper.GetBoolean(dr["TranslationServiceGenerateTargetTag"], false); if (isMachine && !string.IsNullOrEmpty(MachineServiceSuffix)) { displayName += MachineServiceSuffix; } string selectScript = "SelectService(" + ScriptHelper.GetString(codeName) + ", " + (supportsInstructions ? "true" : "false") + ", " + (supportsPriority ? "true" : "false") + ", " + (!isMachine && allowBinary ? "true" : "false") + ", " + (supportsDeadline ? "true" : "false") + ", " + (generateTargetTag ? "true" : "false") + ")"; bool isSelected = selected.Equals(codeName, StringComparison.CurrentCultureIgnoreCase); if (isSelected) { hdnSelectedName.Value = selected; if (string.IsNullOrEmpty(machSelectScript)) { machSelectScript = selectScript; } } string radioBtn = "<input id=\"rad" + codeName + "\" " + (isSelected ? "checked=\"checked\"" : "") + " type=\"radio\" name=\"services\" value=\"" + codeName + "\" onclick=\"" + selectScript + "\" />"; radioBtn += "<label for=\"rad" + codeName + "\">" + HTMLHelper.HTMLEncode(displayName) + "</label>"; lastDisplayName = displayName; mAnyServiceAvailable = true; ltlServices.Text += radioBtn + (i < count - 1 ? "<br />" : ""); i++; } } // If only one service is available, display it in a different way if (i == 1) { DisplayedServiceName = lastDisplayName; if (DisplayOnlyServiceName) { ltlServices.Text = "<strong>" + HTMLHelper.HTMLEncode(lastDisplayName) + "</strong>"; } else { ltlServices.Text = ""; } } if ((i > 1) && !string.IsNullOrEmpty(machSelectScript)) { // Register script if more than one service is available ScriptHelper.RegisterStartupScript(this.Page, typeof(string), "TranslationServiceSelectorSelection", machSelectScript, true); } DisplayedServicesCount = i; } }