예제 #1
0
            public static ActionResult UpdateProfilePropertyLocalization(UpdateProfilePropertyLocalizationRequest request)
            {
                ActionResult           actionResult = new ActionResult();
                SiteSettingsController _controller  = new SiteSettingsController();

                try
                {
                    int pid = request.PortalId ?? PortalSettings.Current.PortalId;
                    if (!PortalSettings.Current.UserInfo.IsSuperUser && PortalSettings.Current.PortalId != pid)
                    {
                        actionResult.AddError(HttpStatusCode.Unauthorized.ToString(), Components.Constants.AuthFailureMessage);
                    }

                    if (actionResult.IsSuccess)
                    {
                        DNNLocalization.Locale language = DNNLocalization.LocaleController.Instance.GetLocale(pid, request.Language);
                        if (language == null)
                        {
                            actionResult.AddError(HttpStatusCode.BadRequest.ToString(), string.Format(DNNLocalization.Localization.GetString("InvalidLocale.ErrorMessage", PersonaBar.Constants.LocalResourcesFile), request.Language));
                        }

                        if (actionResult.IsSuccess)
                        {
                            _controller.SaveLocalizedKeys(pid, request.PropertyName, request.PropertyCategory, request.Language, request.PropertyNameString,
                                                          request.PropertyHelpString, request.PropertyRequiredString, request.PropertyValidationString, request.CategoryNameString);
                            DataCache.ClearCache();
                        }
                    }
                }
                catch (Exception exc)
                {
                    actionResult.AddError(HttpStatusCode.InternalServerError.ToString(), exc.Message);
                }
                return(actionResult);
            }
            public static IEnumerable <Url> GetCustomUrls(int pageId)
            {
                List <Url> CustomUrls         = PagesController.Instance.GetPageUrls(pageId).ToList();
                bool       IsLocaleNotEnabled = string.IsNullOrEmpty(PortalSettings.Current.PortalAlias.CultureCode);
                List <Url> Urls = new List <Url>();

                foreach (Url url in CustomUrls)
                {
                    DNNLocalization.Locale locale = DNNLocalization.LocaleController.Instance.GetLocale(url.Locale.Key);
                    if (!string.IsNullOrEmpty(url.Locale.Value) && locale != null && locale.Code == PortalSettings.Current.CultureCode)
                    {
                        Urls.Add(url);
                    }
                }
                if (Urls.Count == 0 || IsLocaleNotEnabled)
                {
                    foreach (Url url in CustomUrls)
                    {
                        DNNLocalization.Locale locale = DNNLocalization.LocaleController.Instance.GetLocale(url.Locale.Key);
                        if (locale == null && url.SiteAlias.Value == PortalSettings.Current.DefaultPortalAlias)
                        {
                            Urls.Add(url);
                        }
                    }
                }
                return(Urls);
            }
예제 #3
0
            public static ActionResult GetProfilePropertyLocalization(string cultureCode, string propertyName, string propertyCategory)
            {
                ActionResult actionResult = new ActionResult();

                try
                {
                    int pid = PortalSettings.Current.PortalId;
                    //if (!PortalSettings.Current.UserInfo.IsSuperUser)
                    //{
                    //    actionResult.AddError(HttpStatusCode.Unauthorized.ToString(), Components.Constants.AuthFailureMessage);
                    //}

                    if (actionResult.IsSuccess)
                    {
                        cultureCode = string.IsNullOrEmpty(cultureCode) ? DNNLocalization.LocaleController.Instance.GetCurrentLocale(pid).Code : cultureCode;

                        DNNLocalization.Locale language = DNNLocalization.LocaleController.Instance.GetLocale(pid, cultureCode);
                        if (language == null)
                        {
                            actionResult.AddError(HttpStatusCode.BadRequest.ToString(), string.Format(DNNLocalization.Localization.GetString("InvalidLocale.ErrorMessage", PersonaBar.Constants.LocalResourcesFile), cultureCode));
                        }

                        if (actionResult.IsSuccess)
                        {
                            string resourceFile = "~/DesktopModules/Admin/Security/App_LocalResources/Profile.ascx";
                            var    response     = new
                            {
                                PortalId                 = pid,
                                PropertyName             = propertyName,
                                PropertyCategory         = propertyCategory,
                                Language                 = cultureCode,
                                PropertyNameString       = DNNLocalization.Localization.GetString("ProfileProperties_" + propertyName, resourceFile, cultureCode) ?? "",
                                PropertyHelpString       = DNNLocalization.Localization.GetString("ProfileProperties_" + propertyName + ".Help", resourceFile, cultureCode) ?? "",
                                PropertyRequiredString   = DNNLocalization.Localization.GetString("ProfileProperties_" + propertyName + ".Required", resourceFile, cultureCode) ?? "",
                                PropertyValidationString = DNNLocalization.Localization.GetString("ProfileProperties_" + propertyName + ".Validation", resourceFile, cultureCode) ?? "",
                                CategoryNameString       = DNNLocalization.Localization.GetString("ProfileProperties_" + propertyCategory + ".Header", resourceFile, cultureCode) ?? ""
                            };
                            actionResult.Data = response;
                        }
                    }
                }
                catch (Exception exc)
                {
                    actionResult.AddError(HttpStatusCode.InternalServerError.ToString(), exc.Message);
                }
                return(actionResult);
            }
예제 #4
0
 /// -----------------------------------------------------------------------------
 /// <summary>
 /// Constructs the LanguageComponentWriter
 /// </summary>
 /// <param name="languagePack">Language Package info.</param>
 /// <param name="basePath">Base Path.</param>
 /// <param name="files">A Dictionary of files</param>
 /// <param name="package">Package Info.</param>
 /// <history>
 /// 	[cnurse]	02/08/2008	created
 /// </history>
 /// -----------------------------------------------------------------------------
 public LanguageComponentWriter(LanguagePackInfo languagePack, string basePath, Dictionary<string, InstallFile> files, PackageInfo package) : base(basePath, files, package)
 {
     _Language = LocaleController.Instance.GetLocale(languagePack.LanguageID);
     _PackageType = languagePack.PackageType;
     _DependentPackageID = languagePack.DependentPackageID;
 }
예제 #5
0
 /// -----------------------------------------------------------------------------
 /// <summary>
 /// Constructs the LanguageComponentWriter
 /// </summary>
 /// <param name="language">Language Info.</param>
 /// <param name="basePath">Base Path.</param>
 /// <param name="files">A Dictionary of files</param>
 /// <param name="package">Package Info.</param>
 /// <history>
 /// 	[cnurse]	02/08/2008	created
 /// </history>
 /// -----------------------------------------------------------------------------
 public LanguageComponentWriter(Locale language, string basePath, Dictionary<string, InstallFile> files, PackageInfo package) : base(basePath, files, package)
 {
     _Language = language;
     _PackageType = LanguagePackType.Core;
 }
예제 #6
0
        private void AddUrlToList(List <Url> tabs, int portalId, int id, PortalAliasInfo alias, DNNLocalization.Locale urlLocale, string path, string queryString, int statusCode, bool isSystem, FriendlyUrlSettings friendlyUrlSettings, int?lastModifiedByUserId)
        {
            string userName = "";

            if (lastModifiedByUserId.HasValue)
            {
                userName = UserController.Instance.GetUser(portalId, lastModifiedByUserId.Value)?.DisplayName;
            }

            tabs.Add(new Url
            {
                Id                  = id,
                SiteAlias           = new KeyValuePair <int, string>(alias.KeyID, alias.HTTPAlias),
                Path                = path,
                PathWithNoExtension = GetCleanPath(path, friendlyUrlSettings),
                QueryString         = queryString,
                Locale              = (urlLocale != null) ? new KeyValuePair <int, string>(urlLocale.KeyID, urlLocale.EnglishName)
                                             : new KeyValuePair <int, string>(-1, ""),
                StatusCode     = StatusCodes.SingleOrDefault(kv => kv.Key == statusCode),
                SiteAliasUsage = (int)PortalAliasUsageType.ChildPagesInherit,
                IsSystem       = isSystem,
                UserName       = userName
            });
        }
예제 #7
0
        private IEnumerable <Url> GetSortedUrls(TabInfo tab, int portalId, Lazy <Dictionary <string, DNNLocalization.Locale> > locales, int sortColumn, bool sortOrder, bool isSystem)
        {
            FriendlyUrlSettings friendlyUrlSettings = new FriendlyUrlSettings(tab.PortalID);
            List <Url>          tabs = new List <Url>();

            if (isSystem)
            {
                //Add generated urls
                foreach (PortalAliasInfo alias in PortalAliasController.Instance.GetPortalAliasesByPortalId(portalId))
                {
                    DNNLocalization.Locale urlLocale = locales.Value.Values.FirstOrDefault(local => local.Code == alias.CultureCode);

                    /*var isRedirected = tab.TabUrls.Any(u => u.HttpStatus == "200"
                     *                                      && u.CultureCode == ((urlLocale != null) ? urlLocale.Code : String.Empty))
                     || alias.PortalAliasID != PrimaryAliasId;*/

                    bool   isRedirected    = false;
                    bool   isCustom200Urls = tab.TabUrls.Any(u => u.HttpStatus == "200");//are there any custom Urls for this tab?
                    string baseUrl         = Globals.AddHTTP(alias.HTTPAlias) + "/Default.aspx?TabId=" + tab.TabID;
                    if (urlLocale != null)
                    {
                        baseUrl += "&language=" + urlLocale.Code;
                    }

                    string customPath = null;
                    if (isCustom200Urls)
                    {
                        //get the friendlyUrl, including custom Urls
                        customPath = AdvancedFriendlyUrlProvider.ImprovedFriendlyUrl(tab,
                                                                                     baseUrl,
                                                                                     Globals.glbDefaultPage,
                                                                                     alias.HTTPAlias,
                                                                                     false,
                                                                                     friendlyUrlSettings,
                                                                                     Guid.Empty);

                        customPath = customPath.Replace(Globals.AddHTTP(alias.HTTPAlias), "");
                    }
                    //get the friendlyUrl and ignore and custom Urls
                    string path = AdvancedFriendlyUrlProvider.ImprovedFriendlyUrl(tab,
                                                                                  baseUrl,
                                                                                  Globals.glbDefaultPage,
                                                                                  alias.HTTPAlias,
                                                                                  true,
                                                                                  friendlyUrlSettings,
                                                                                  Guid.Empty);

                    path = path.Replace(Globals.AddHTTP(alias.HTTPAlias), "");
                    int status = 200;
                    if (customPath != null && (string.Compare(customPath, path, StringComparison.OrdinalIgnoreCase) != 0))
                    {
                        //difference in custom/standard URL, so standard is 301
                        status       = 301;
                        isRedirected = true;
                    }
                    //AddUrlToList(tabs, -1, alias, urlLocale, path, String.Empty, (isRedirected) ? 301 : 200);
                    //27139 : only show primary aliases in the tab grid (gets too confusing otherwise)
                    if (alias.IsPrimary) //alias was provided to FriendlyUrlCall, so will always get the correct canonical Url back
                    {
                        AddUrlToList(tabs, portalId, -1, alias, urlLocale, path, string.Empty, status, isSystem, friendlyUrlSettings, null);
                    }

                    //Add url with diacritics
                    isRedirected = friendlyUrlSettings.RedirectUnfriendly;
                    string asciiTabPath = TabPathHelper.ReplaceDiacritics(tab.TabPath, out bool replacedDiacritic).Replace("//", "/");
                    if (replacedDiacritic)
                    {
                        if (friendlyUrlSettings.AutoAsciiConvert)
                        {
                            if (friendlyUrlSettings.ReplaceSpaceWith != FriendlyUrlSettings.ReplaceSpaceWithNothing)
                            {
                                path = path.Replace(friendlyUrlSettings.ReplaceSpaceWith, string.Empty);
                            }
                            path = path.Replace(asciiTabPath, tab.TabPath.Replace("//", "/"));
                            AddUrlToList(tabs, portalId, -1, alias, urlLocale, path, string.Empty, (isRedirected) ? 301 : 200, isSystem, friendlyUrlSettings, null);
                        }
                    }
                    else
                    {
                        //Add url with space
                        if (tab.TabName.Contains(" ") && friendlyUrlSettings.ReplaceSpaceWith != FriendlyUrlSettings.ReplaceSpaceWithNothing)
                        {
                            path = path.Replace(friendlyUrlSettings.ReplaceSpaceWith, string.Empty);
                            if (customPath != null && string.Compare(customPath, path, StringComparison.OrdinalIgnoreCase) != 0)
                            {
                                AddUrlToList(tabs, portalId, -1, alias, urlLocale, path, string.Empty, (isRedirected) ? 301 : 200, isSystem, friendlyUrlSettings, null);
                            }
                        }
                    }
                }
            }

            foreach (TabUrlInfo url in tab.TabUrls.Where(u => u.IsSystem == isSystem).OrderBy(u => u.SeqNum))
            {
                int.TryParse(url.HttpStatus, out int statusCode);

                //27133 : Only show a custom URL
                if (url.PortalAliasUsage == PortalAliasUsageType.Default)
                {
                    IEnumerable <PortalAliasInfo> aliases = PortalAliasController.Instance.GetPortalAliasesByPortalId(portalId);
                    PortalAliasInfo alias = aliases.FirstOrDefault(primary => primary.IsPrimary == true);
                    if (alias == null)
                    {
                        //if no primary alias just get first in list, need to use something
                        alias = aliases.FirstOrDefault(a => a.PortalID == portalId);
                    }
                    if (alias != null)
                    {
                        DNNLocalization.Locale urlLocale = locales.Value.Values.FirstOrDefault(local => local.Code == alias.CultureCode);
                        AddUrlToList(tabs, portalId, url.SeqNum, alias, urlLocale, url.Url, url.QueryString, statusCode, isSystem, friendlyUrlSettings, url.LastModifiedByUserId);
                    }
                }
                else
                {
                    DNNLocalization.Locale urlLocale = locales.Value.Values.FirstOrDefault(local => local.Code == url.CultureCode);
                    PortalAliasInfo        alias     = PortalAliasController.Instance.GetPortalAliasesByPortalId(portalId)
                                                       .SingleOrDefault(p => p.PortalAliasID == url.PortalAliasId);
                    if (alias != null)
                    {
                        AddUrlToList(tabs, portalId, url.SeqNum, alias, urlLocale, url.Url, url.QueryString, statusCode, isSystem, friendlyUrlSettings, url.LastModifiedByUserId);
                    }
                }
            }

            KeyValuePairComparer pairComparer = new KeyValuePairComparer();

            switch ((SortingFields)sortColumn)
            {
            case SortingFields.Url:
            case SortingFields.None:
                return(sortOrder ?
                       tabs.OrderBy(url => url.SiteAlias, pairComparer).ThenBy(url => url.Path) :
                       tabs.OrderByDescending(url => url.SiteAlias, pairComparer).ThenByDescending(url => url.Path));

            case SortingFields.Locale:
                return(sortOrder ?
                       tabs.OrderBy(url => url.Locale, pairComparer) :
                       tabs.OrderByDescending(url => url.Locale, pairComparer));

            case SortingFields.Status:
                return(sortOrder ?
                       tabs.OrderBy(url => url.StatusCode, pairComparer) :
                       tabs.OrderByDescending(url => url.StatusCode, pairComparer));

            default:
                return(sortOrder ?
                       tabs.OrderBy(url => url.SiteAlias, pairComparer).ThenBy(url => url.Path) :
                       tabs.OrderByDescending(url => url.SiteAlias, pairComparer).ThenByDescending(url => url.Path));
            }
        }
예제 #8
0
 public LocaleFilePack()
 {
     this._LocalePackCulture = new Locale();
     this._Files = new LocaleFileCollection();
 }