public void InitView() { dtoTemplateMessageContext context = GetContext(); View.ContainerContext = context; if (UserContext.isAnonymous) { View.DisplaySessionTimeout(); } else { if (HasPermission(context)) { InitializeView(context); } else { View.DisplayNoPermission(context.IdCommunity, context.IdModule, context.ModuleCode); } } }
private dtoTemplateMessageContext GetContext() { dtoTemplateMessageContext item = new dtoTemplateMessageContext(); item.ModuleObject = View.PreloadModuleObject; item.IdCommunity = View.PreloadIdCommunity; item.IdModule = View.PreloadIdModule; item.IdMessageTemplate = View.PreloadIdMessageTemplate; item.ModuleCode = View.PreloadModuleCode; if (item.IdCommunity == -1 && item.ModuleObject != null) { item.IdCommunity = item.ModuleObject.CommunityID; } if (item.IdModule > 0 && String.IsNullOrEmpty(item.ModuleCode)) { item.ModuleCode = CurrentManager.GetModuleCode(item.IdModule); } else if (item.IdModule == 0 && !String.IsNullOrEmpty(item.ModuleCode)) { item.IdModule = CurrentManager.GetModuleID(item.ModuleCode); } return(item); }
private void InitializeView(dtoTemplateMessageContext context) { MailMessage message = Service.GetMessage(context.IdMessageTemplate); if (message == null) { View.DisplayNoTemplateFound(); } else { Boolean isAdministrative = Service.IsAdministrativeUser(UserContext.CurrentUserID); Boolean senderEdit = isAdministrative; View.DisplayMessageInfo(message.CreatedBy, message.CreatedOn); View.InitializeMailSettings(message.MailSettings, senderEdit, isAdministrative, isAdministrative); List <lm.Comol.Core.TemplateMessages.Domain.dtoTemplateTranslation> translations = new List <lm.Comol.Core.TemplateMessages.Domain.dtoTemplateTranslation>(); if (message.Template != null) { Boolean onlyShortText = false; Boolean hasShortText = false; if (message.Template.IsTemplateCompliant) { lm.Comol.Core.TemplateMessages.Domain.TemplateDefinitionVersion version = null; if (message.Template.IdVersion > 0) { version = TemplatesService.GetVersion(message.Template.IdVersion); } if (version == null) { version = TemplatesService.GetLastActiveVersion(message.Template.IdTemplate); } if (version != null) { translations = (from t in version.Translations where t.Deleted == BaseStatusDeleted.None select new lm.Comol.Core.TemplateMessages.Domain.dtoTemplateTranslation() { Id = t.Id, IdLanguage = t.IdLanguage, LanguageCode = t.LanguageCode, LanguageName = t.LanguageName, Translation = t.Translation }).ToList(); if (!translations.Where(t => t.LanguageCode == "multi" && t.IdLanguage == 0).Any()) { translations.Add(new lm.Comol.Core.TemplateMessages.Domain.dtoTemplateTranslation() { Id = 0, IdLanguage = 0, LanguageCode = "multi", Translation = version.DefaultTranslation }); } View.ContentModules = version.GetModuleContentCodes(); onlyShortText = version.OnlyShortText; hasShortText = version.HasShortText; } } else { translations = (from t in message.Template.Translations where t.Deleted == BaseStatusDeleted.None select new lm.Comol.Core.TemplateMessages.Domain.dtoTemplateTranslation() { Id = t.Id, IdLanguage = t.IdLanguage, LanguageCode = t.LanguageCode, LanguageName = t.LanguageName, Translation = t.Translation }).ToList(); View.ContentModules = new List <String>() { context.ModuleCode }; } List <Language> languages = CurrentManager.GetAllLanguages().ToList(); List <lm.Comol.Core.DomainModel.Languages.LanguageItem> inUseLanguages = translations.Select(t => new lm.Comol.Core.DomainModel.Languages.LanguageItem() { Id = t.IdLanguage, Code = t.LanguageCode, Name = t.LanguageName, IsMultiLanguage = (t.LanguageCode == "multi" && t.IdLanguage == 0), Status = (t.IsEmpty) ? DomainModel.Languages.ItemStatus.wrong : (t.Translation.IsValid(!onlyShortText, hasShortText, true)) ? DomainModel.Languages.ItemStatus.valid : DomainModel.Languages.ItemStatus.warning }).ToList(); inUseLanguages.Where(l => languages.Where(ll => ll.isDefault && l.Id == ll.Id).Any()).ToList().ForEach(l => l.IsDefault = true); inUseLanguages.Where(l => l.Id > 0).ToList().ForEach(l => l.Name = languages.Where(ll => ll.Id == l.Id).Select(ll => ll.Name).FirstOrDefault()); inUseLanguages = inUseLanguages.OrderByDescending(l => l.IsMultiLanguage).ThenBy(l => l.Name).ToList(); lm.Comol.Core.DomainModel.Languages.LanguageItem current = inUseLanguages.Where(l => l.Id == UserContext.Language.Id).FirstOrDefault(); if (current == null && languages.Any()) { current = inUseLanguages.Where(l => l.IsDefault).FirstOrDefault(); if (current == null) { current = inUseLanguages.Where(l => l.IsMultiLanguage).FirstOrDefault(); } } if (current == null && inUseLanguages.Any()) { current = inUseLanguages[0]; } View.InitializeControls(translations, inUseLanguages, current); String tagTranslation = View.TagTranslation; if (translations.Any() && !String.IsNullOrEmpty(tagTranslation)) { List <lm.Comol.Core.DomainModel.Helpers.TemplatePlaceHolder> placeHolders = View.GetContentPlaceHolders(View.ContentModules); foreach (lm.Comol.Core.DomainModel.Helpers.TemplatePlaceHolder pHolder in placeHolders.Where(t => translations.Where(ct => !ct.Translation.IsContentEmpty() && ((!String.IsNullOrEmpty(ct.Translation.Body) && ct.Translation.Body.Contains(t.Tag)) || (!String.IsNullOrEmpty(ct.Translation.Subject) && ct.Translation.Subject.Contains(t.Tag)))).Any())) { translations.Where(ct => !ct.Translation.IsContentEmpty() && !String.IsNullOrEmpty(ct.Translation.Body) && ct.Translation.Body.Contains(pHolder.Tag)).ToList().ForEach(t => t.Translation.Body = t.Translation.Body.Replace(pHolder.Tag, String.Format(tagTranslation, pHolder.Tag, pHolder.Name))); translations.Where(ct => !ct.Translation.IsContentEmpty() && !String.IsNullOrEmpty(ct.Translation.Subject) && ct.Translation.Subject.Contains(pHolder.Tag)).ToList().ForEach(t => t.Translation.Subject = t.Translation.Subject.Replace(pHolder.Tag, String.Format(tagTranslation, pHolder.Tag, pHolder.Name))); } } View.LoadMessage((current != null) ? translations.Where(t => t.IdLanguage == current.Id && t.LanguageCode == current.Code).FirstOrDefault() : (translations.Any() ? translations[0] : null)); } //List<lm.Comol.Core.DomainModel.Languages.BaseLanguageItem> availableItems = Service.GetAvalableLanguage(version); //List<lm.Comol.Core.DomainModel.Languages.LanguageItem> items = Service.GetInUseLanguageItems(version); //if (version != null) //{ // View.IdSelectedVersion = version.Id; // View.ContentModules = Service.GetVersionModuleContentCodes(version.Id); // translations.Add(new dtoTemplateTranslation() { IdLanguage = 0, LanguageCode = "multi", Translation = version.DefaultTranslation.Copy() }); // translations.AddRange(version.Translations.Where(t => t.Deleted == BaseStatusDeleted.None).Select(t => new dtoTemplateTranslation() { IdLanguage = t.IdLanguage, LanguageCode = t.LanguageCode, Translation = t.Translation.Copy() }).ToList()); // if (version.ChannelSettings.Where(c => c.Deleted == BaseStatusDeleted.None && c.Channel == NotificationChannel.Mail).Any()) // settings = version.ChannelSettings.Where(c => c.Deleted == BaseStatusDeleted.None && c.Channel == NotificationChannel.Mail).FirstOrDefault().MailSettings; // senderEdit = senderEdit && version.Template.Type == TemplateType.System; // View.LoadEditor(translations, "multi", version.HasShortText, version.OnlyShortText, availableItems, items, items.Where(i => i.IsMultiLanguage).FirstOrDefault()); //} //else //{ // View.ContentModules = new List<String>() { currentCode }; // translations.Add(new dtoTemplateTranslation() { IdLanguage = 0, LanguageCode = "multi", Translation = new ItemObjectTranslation() { IsHtml = (settings == null) ? true : settings.isHtml, Body = "", Name = "" } }); // View.LoadEditor(translations, "multi", false, false, availableItems, items, items.Where(i => i.IsMultiLanguage).FirstOrDefault()); //} } }
private Boolean HasPermission(dtoTemplateMessageContext context) { Person p = CurrentManager.GetPerson(UserContext.CurrentUserID); return(View.HasModulePermissions(context.ModuleCode, GetModulePermissions(context.IdModule, context.IdCommunity), context.IdCommunity, (p == null) ? (int)UserTypeStandard.Guest : p.TypeID, context.ModuleObject)); }