Ejemplo n.º 1
0
        protected void updateButton_Click(object sender, EventArgs e)
        {
            PortalController.UpdatePortalSetting(ModuleContext.PortalId, "EnableBrowserLanguage", chkBrowser.Checked.ToString());
            PortalController.UpdatePortalSetting(ModuleContext.PortalId, "AllowUserUICulture", chkUserCulture.Checked.ToString());

            // if contentlocalization is enabled, default language cannot be changed
            if (!PortalSettings.ContentLocalizationEnabled)
            {
                // first check whether or not portal default language has changed
                string newDefaultLanguage = languagesComboBox.SelectedValue;
                if (newDefaultLanguage != PortalSettings.DefaultLanguage)
                {
                    if (!IsLanguageEnabled(newDefaultLanguage))
                    {
                        var language = LocaleController.Instance.GetLocale(newDefaultLanguage);
                        Localization.AddLanguageToPortal(ModuleContext.PortalId, language.LanguageId, true);
                    }

                    // update portal default language
                    var        objPortalController = new PortalController();
                    PortalInfo objPortal           = objPortalController.GetPortal(PortalId);
                    objPortal.DefaultLanguage = newDefaultLanguage;
                    objPortalController.UpdatePortalInfo(objPortal);

                    _PortalDefault = newDefaultLanguage;
                }

                PortalController.UpdatePortalSetting(ModuleContext.PortalId, "EnableUrlLanguage", chkUrl.Checked.ToString());
            }
            BindDefaultLanguageSelector();
            BindGrid();
        }
Ejemplo n.º 2
0
        public ActionResult Enabled(int lid)
        {
            string       ResourcesFile = "~/DesktopModules/Vanjaro/UXManager/Extensions/Menu/" + ExtensionInfo.Name + "/Views/Setting/App_LocalResources/Languages.resx";
            ActionResult actionResult  = new ActionResult();
            Locale       language      = LocaleController.Instance.GetLocale(lid);

            if (language == null)
            {
                actionResult.AddError("InvalidLocale.ErrorMessage", string.Format(Localization.GetString("InvalidLocale.ErrorMessage", ResourcesFile), language.Code));
                return(actionResult);
            }
            if (PortalSettings.DefaultLanguage != language.Code)
            {
                if (LanguagesManager.IsLanguageEnabled(PortalSettings.PortalId, language.Code))
                {
                    //remove language from portal
                    Localization.RemoveLanguageFromPortal(PortalSettings.PortalId, language.LanguageId);
                    LanguagesManager.SetTabUrlsActiveToRedirect(language.LanguageId);
                }
                else
                {
                    //Add language to portal
                    Localization.AddLanguageToPortal(PortalSettings.PortalId, language.LanguageId, true);
                    LanguagesManager.UpdateTabUrlsDefaultLocale();
                }
            }
            actionResult.Data      = LanguagesManager.GetLanguages(PortalSettings, UserInfo);
            actionResult.IsSuccess = true;
            return(actionResult);
        }
Ejemplo n.º 3
0
        protected void enabledCheckbox_CheckChanged(object sender, EventArgs e)
        {
            try
            {
                if ((sender) is DnnCheckBox)
                {
                    var    enabledCheckbox = (DnnCheckBox)sender;
                    int    languageId      = int.Parse(enabledCheckbox.CommandArgument);
                    Locale locale          = LocaleController.Instance.GetLocale(languageId);
                    Locale defaultLocale   = LocaleController.Instance.GetDefaultLocale(PortalId);

                    Dictionary <string, Locale> enabledLanguages = LocaleController.Instance.GetLocales(PortalId);

                    var redirectUrl = string.Empty;
                    if (enabledCheckbox.Enabled)
                    {
                        // do not touch default language
                        if (enabledCheckbox.Checked)
                        {
                            if (!enabledLanguages.ContainsKey(locale.Code))
                            {
                                //Add language to portal
                                Localization.AddLanguageToPortal(PortalId, languageId, true);
                            }
                        }
                        else
                        {
                            //remove language from portal
                            Localization.RemoveLanguageFromPortal(PortalId, languageId);

                            //if the disable language is current language, should redirect to default language.
                            if (locale.Code.Equals(Thread.CurrentThread.CurrentUICulture.ToString(), StringComparison.InvariantCultureIgnoreCase))
                            {
                                redirectUrl = Globals.NavigateURL(PortalSettings.ActiveTab.TabID,
                                                                  PortalSettings.ActiveTab.IsSuperTab,
                                                                  PortalSettings, "", defaultLocale.Code);
                            }
                        }
                    }

                    //Redirect to refresh page (and skinobjects)
                    if (string.IsNullOrEmpty(redirectUrl))
                    {
                        redirectUrl = Globals.NavigateURL();
                    }

                    Response.Redirect(redirectUrl, true);
                }
            }
            catch (Exception ex)
            {
                Exceptions.ProcessModuleLoadException(this, ex);
            }
        }
        protected void cmdUpdate_Click(object sender, EventArgs e)
        {
            try
            {
                if (UserInfo.IsSuperUser)
                {
                    //Update Language
                    if (Language == null)
                    {
                        _Language = LocaleController.Instance.GetLocale(languageComboBox.SelectedValue);
                        if (_Language == null)
                        {
                            _Language     = new Locale();
                            Language.Code = languageComboBox.SelectedValue;
                        }
                    }
                    Language.Fallback = fallBackComboBox.SelectedValue;
                    Language.Text     = CultureInfo.GetCultureInfo(Language.Code).NativeName;
                    Localization.SaveLanguage(Language);
                }

                if (!IsLanguageEnabled(Language.Code))
                {
                    //Add language to portal
                    Localization.AddLanguageToPortal(PortalId, Language.LanguageId, true);
                }

                string roles = Null.NullString;
                if (IsAddMode)
                {
                    roles = string.Format("Administrators;{0}", string.Format("Translator ({0})", Language.Code));
                }
                else
                {
                    foreach (string role in translatorRoles.SelectedRoleNames)
                    {
                        roles += role + ";";
                    }

                    roles = roles.TrimEnd(';');
                }

                PortalController.UpdatePortalSetting(PortalId, string.Format("DefaultTranslatorRoles-{0}", Language.Code), roles);

                Response.Redirect(Globals.NavigateURL(), true);
                //Module failed to load
            }
            catch (Exception exc)
            {
                Exceptions.ProcessModuleLoadException(this, exc);
            }
        }
        public static ActionResult Update(PortalSettings PortalSettings, UserInfo UserInfo, string Code)
        {
            ActionResult actionResult = new ActionResult();

            try
            {
                if (!UserInfo.IsSuperUser)
                {
                    actionResult.AddError("AuthFailureMessage", Constants.AuthFailureMessage);
                    return(actionResult);
                }

                Locale language = LocaleController.Instance.GetLocale(Code) ?? new Locale {
                    Code = Code
                };
                language.Code     = Code;
                language.Fallback = "";
                language.Text     = CultureInfo.GetCultureInfo(Code).NativeName;
                Localization.SaveLanguage(language);

                if (!IsLanguageEnabled(PortalSettings.PortalId, language.Code))
                {
                    Localization.AddLanguageToPortal(PortalSettings.PortalId, language.LanguageId, true);
                    UpdateTabUrlsDefaultLocale();
                }

                string roles = $"Administrators;{$"Translator ({language.Code})"}";
                PortalController.UpdatePortalSetting(PortalSettings.PortalId, $"DefaultTranslatorRoles-{language.Code}", roles);
                Config.Touch();
                actionResult.IsSuccess = true;
            }
            catch (Exception exc)
            {
                actionResult.AddError("", "", exc);
            }
            return(actionResult);
        }
        protected void cmdUpdate_Click(object sender, EventArgs e)
        {
            try
            {
                if (UserInfo.IsSuperUser)
                {
                    //Update Language
                    if (Language == null)
                    {
                        _Language = LocaleController.Instance.GetLocale(languageComboBox.SelectedValue);
                        if (_Language == null)
                        {
                            _Language     = new Locale();
                            Language.Code = languageComboBox.SelectedValue;
                        }
                    }
                    Language.Fallback = fallBackComboBox.SelectedValue;
                    Language.Text     = CultureInfo.CreateSpecificCulture(Language.Code).NativeName;
                    Localization.SaveLanguage(Language);
                }

                if (!IsLanguageEnabled(Language.Code))
                {
                    //Add language to portal
                    Localization.AddLanguageToPortal(PortalId, Language.LanguageId, true);
                }

                string roles = Null.NullString;
                if (IsAddMode)
                {
                    roles = string.Format("Administrators;{0}", string.Format("Translator ({0})", Language.Code));
                }
                else
                {
                    foreach (string role in translatorRoles.SelectedRoleNames)
                    {
                        roles += role + ";";
                    }

                    roles = roles.TrimEnd(';');
                }

                PortalController.UpdatePortalSetting(PortalId, string.Format("DefaultTranslatorRoles-{0}", Language.Code), roles);

                //var tabCtrl = new TabController();
                //TabCollection tabs = tabCtrl.GetTabsByPortal(PortalId).WithCulture(Language.Code, false);
                //if (PortalSettings.ContentLocalizationEnabled && tabs.Count == 0)
                //{
                //    //Create Localized Pages
                //    foreach (TabInfo t in tabCtrl.GetCultureTabList(PortalId))
                //    {
                //        tabCtrl.CreateLocalizedCopy(t, Language, false);
                //    }

                //    var portalCtl = new PortalController();
                //    portalCtl.MapLocalizedSpecialPages(PortalId, Language.Code);

                //    DataCache.ClearPortalCache(PortalId, true);

                //}

                Response.Redirect(Globals.NavigateURL(), true);
                //Module failed to load
            }
            catch (Exception exc)
            {
                Exceptions.ProcessModuleLoadException(this, exc);
            }
        }
        protected void enabledCheckbox_CheckChanged(object sender, EventArgs e)
        {
            try
            {
                if ((sender) is CheckBox)
                {
                    var              enabledCheckbox = (CheckBox)sender;
                    GridDataItem     item            = (GridDataItem)enabledCheckbox.NamingContainer;
                    DnnLanguageLabel code            = item.FindControl("translationStatusLabel") as DnnLanguageLabel;
                    Locale           locale          = LocaleController.Instance.GetLocale(code.Language);
                    Locale           defaultLocale   = LocaleController.Instance.GetDefaultLocale(PortalId);

                    Dictionary <string, Locale> enabledLanguages = LocaleController.Instance.GetLocales(PortalId);

                    var localizedTabs = PortalSettings.ContentLocalizationEnabled ?
                                        TabController.Instance.GetTabsByPortal(PortalId).WithCulture(locale.Code, false).AsList() : new List <TabInfo>();

                    var redirectUrl = string.Empty;
                    if (enabledCheckbox.Enabled)
                    {
                        // do not touch default language
                        if (enabledCheckbox.Checked)
                        {
                            if (!enabledLanguages.ContainsKey(locale.Code))
                            {
                                //Add language to portal
                                Localization.AddLanguageToPortal(PortalId, locale.LanguageId, true);
                            }

                            //restore the tabs and modules
                            foreach (var tab in localizedTabs)
                            {
                                TabController.Instance.RestoreTab(tab, PortalSettings);
                                ModuleController.Instance.GetTabModules(tab.TabID).Values.ToList().ForEach(ModuleController.Instance.RestoreModule);
                            }
                        }
                        else
                        {
                            //remove language from portal
                            Localization.RemoveLanguageFromPortal(PortalId, locale.LanguageId);

                            //if the disable language is current language, should redirect to default language.
                            if (locale.Code.Equals(Thread.CurrentThread.CurrentUICulture.ToString(), StringComparison.InvariantCultureIgnoreCase))
                            {
                                redirectUrl = Globals.NavigateURL(PortalSettings.ActiveTab.TabID,
                                                                  PortalSettings.ActiveTab.IsSuperTab,
                                                                  PortalSettings, "", defaultLocale.Code);
                            }

                            //delete the tabs in this language
                            foreach (var tab in localizedTabs)
                            {
                                tab.DefaultLanguageGuid = Guid.Empty;
                                TabController.Instance.SoftDeleteTab(tab.TabID, PortalSettings);
                            }
                        }
                    }

                    //Redirect to refresh page (and skinobjects)
                    if (string.IsNullOrEmpty(redirectUrl))
                    {
                        redirectUrl = Globals.NavigateURL();
                    }

                    Response.Redirect(redirectUrl, true);
                }
            }
            catch (Exception ex)
            {
                Exceptions.ProcessModuleLoadException(this, ex);
            }
        }
Ejemplo n.º 8
0
        /// <summary>
        /// Process legacy language package (that is based on manifest xml file).
        /// </summary>
        public static void ProcessLegacyLanguages()
        {
            string filePath = Globals.ApplicationMapPath + Localization.SupportedLocalesFile.Substring(1).Replace("/", "\\");

            if (File.Exists(filePath))
            {
                var doc = new XPathDocument(filePath);

                // Check for Browser and Url settings
                XPathNavigator browserNav = doc.CreateNavigator().SelectSingleNode("root/browserDetection");
                if (browserNav != null)
                {
                    HostController.Instance.Update("EnableBrowserLanguage", Util.ReadAttribute(browserNav, "enabled", false, null, Null.NullString, "true"));
                }

                XPathNavigator urlNav = doc.CreateNavigator().SelectSingleNode("root/languageInUrl");
                if (urlNav != null)
                {
                    HostController.Instance.Update("EnableUrlLanguage", Util.ReadAttribute(urlNav, "enabled", false, null, Null.NullString, "true"));
                }

                // Process each language
                foreach (XPathNavigator nav in doc.CreateNavigator().Select("root/language"))
                {
                    if (nav.NodeType != XPathNodeType.Comment)
                    {
                        var language = new Locale();
                        language.Text     = Util.ReadAttribute(nav, "name");
                        language.Code     = Util.ReadAttribute(nav, "key");
                        language.Fallback = Util.ReadAttribute(nav, "fallback");

                        // Save Language
                        Localization.SaveLanguage(language);
                        if (language.Code != Localization.SystemLocale)
                        {
                            // Create a Package
                            var package = new PackageInfo(new InstallerInfo())
                            {
                                Name         = language.Text,
                                FriendlyName = language.Text,
                                Description  = Null.NullString,
                                Version      = new Version(1, 0, 0),
                                PackageType  = "CoreLanguagePack",
                                License      = Util.PACKAGE_NoLicense,
                            };

                            // Create a LanguagePackWriter
                            var packageWriter = new LanguagePackWriter(language, package);

                            // Save the manifest
                            package.Manifest = packageWriter.WriteManifest(true);

                            // Save Package
                            PackageController.Instance.SaveExtensionPackage(package);

                            var languagePack = new LanguagePackInfo
                            {
                                LanguageID         = language.LanguageId,
                                PackageID          = package.PackageID,
                                DependentPackageID = -2,
                            };
                            LanguagePackController.SaveLanguagePack(languagePack);
                        }
                    }
                }
            }

            // Process Portal Locales files
            foreach (PortalInfo portal in PortalController.Instance.GetPortals())
            {
                int portalID = portal.PortalID;
                filePath = string.Format(Globals.ApplicationMapPath + Localization.ApplicationResourceDirectory.Substring(1).Replace("/", "\\") + "\\Locales.Portal-{0}.xml", portalID);

                if (File.Exists(filePath))
                {
                    var doc = new XPathDocument(filePath);

                    // Check for Browser and Url settings
                    XPathNavigator browserNav = doc.CreateNavigator().SelectSingleNode("locales/browserDetection");
                    if (browserNav != null)
                    {
                        PortalController.UpdatePortalSetting(portalID, "EnableBrowserLanguage", Util.ReadAttribute(browserNav, "enabled", false, null, Null.NullString, "true"));
                    }

                    XPathNavigator urlNav = doc.CreateNavigator().SelectSingleNode("locales/languageInUrl");
                    if (urlNav != null)
                    {
                        PortalController.UpdatePortalSetting(portalID, "EnableUrlLanguage", Util.ReadAttribute(urlNav, "enabled", false, null, Null.NullString, "true"));
                    }

                    foreach (Locale installedLanguage in LocaleController.Instance.GetLocales(Null.NullInteger).Values)
                    {
                        string code   = installedLanguage.Code;
                        bool   bFound = false;

                        // Check if this language is "inactive"
                        foreach (XPathNavigator inactiveNav in doc.CreateNavigator().Select("locales/inactive/locale"))
                        {
                            if (inactiveNav.Value == code)
                            {
                                bFound = true;
                                break;
                            }
                        }

                        if (!bFound)
                        {
                            // Language is enabled - add to portal
                            Localization.AddLanguageToPortal(portalID, installedLanguage.LanguageId, false);
                        }
                    }
                }
                else
                {
                    foreach (Locale installedLanguage in LocaleController.Instance.GetLocales(Null.NullInteger).Values)
                    {
                        // Language is enabled - add to portal
                        Localization.AddLanguageToPortal(portalID, installedLanguage.LanguageId, false);
                    }
                }
            }
        }