public void PreviewMessage(dtoTemplateTranslation content) { long idVersion = View.IdSelectedVersion; if (UserContext.isAnonymous) { View.CurrentMode = Domain.EditMessageMode.None; } else { Int32 idCommunity = View.ContainerIdCommunity; TemplateDefinitionVersion v = Service.GetVersion(idVersion); if (v != null && v.Template != null) { List <ChannelSettings> channels = (v.ChannelSettings == null) ? new List <ChannelSettings>() : v.ChannelSettings.Where(s => s.Deleted == BaseStatusDeleted.None).ToList(); Boolean sendMail = (channels != null && channels.Where(n => n.Channel == NotificationChannel.Mail).Any()) && v.Template.OwnerInfo.Type == OwnerType.Object; if (sendMail) { View.DisplayMessagePreview(sendMail, content.LanguageCode, content.Translation, View.ContentModules, channels, idCommunity, View.CurrentObject); } else { View.DisplayMessagePreview(true, content.LanguageCode, content.Translation, View.ContentModules, View.CurrentSettings, idCommunity, View.CurrentObject); } } else { View.DisplayMessagePreview(true, content.LanguageCode, content.Translation, View.ContentModules, View.CurrentSettings, idCommunity, View.CurrentObject); } } }
private void LoadAvailableItemsToAdd(TemplateDefinitionVersion version) { List <PermissionType> itemsToAdd = new List <PermissionType>(); if (!View.InputReadOnly && View.AllowSave) { if (version.Template != null) { Boolean isAdministrative = Service.IsAdministrativeUser(UserContext.CurrentUserID); if (version.Template.Type == TemplateType.System || version.Template.OwnerInfo.Type == OwnerType.System || (View.IdTemplateCommunity < 1 && isAdministrative)) { itemsToAdd.Add(PermissionType.ProfileType); } // else{ List <Int32> removeCommunities = Service.GetIdCommunityAssignments(version.Id); removeCommunities.Add((version.Template.OwnerInfo.Community == null) ? 0 : version.Template.OwnerInfo.Community.Id); if (CommunityService.HasAvailableCommunitiesByModule(UserContext.CurrentUserID, true, removeCommunities)) { itemsToAdd.Add(PermissionType.Community); InitializeCommunitySelector(); } // } if (View.IdTemplateCommunity > 0) { itemsToAdd.Add(PermissionType.Person); } } } View.LoadAvailableAssignments(itemsToAdd); }
private void LoadAssignments(long idVersion, List <Int32> usersToAdd) { TemplateDefinitionVersion version = Service.GetVersion(idVersion); if (version == null) { View.DisplayUnknownTemplate(); } else { List <dtoTemplateAssignment> assignments = Service.GetPermissionAssignments(version, View.GetTranslatedModules(), View.GetTranslatedProfileTypes(), View.GetTranslatedRoles()); List <Int32> idSelectedUsers = GetUpdatedUsersSelection(); idSelectedUsers.AddRange(usersToAdd); View.SelectedIdUsers = idSelectedUsers; if (assignments == null || !assignments.Any()) { View.DisplayNoAssignments(); } else { assignments = UpdateAssigments(assignments); View.LoadAssignments(TranslateAndReorderAssignments(assignments)); } } }
public void LeavePlaceHolders(List <String> contentmodules) { View.HideUserMessage(); if (UserContext.isAnonymous) { Logout(View.CurrentType, View.IdTemplate, View.IdVersion); } else { View.SavingSettings = false; TemplateDefinitionVersion version = Service.GetVersion(View.IdVersion); if (version != null) { if (Service.SaveModuleContentSettings(version, contentmodules)) { View.SendUserAction(View.IdTemplateCommunity, Service.ServiceModuleID(), ModuleTemplateMessages.ActionType.SaveModuleContent); View.DisplayContentModulesSaved(); } else { View.SendUserAction(View.IdTemplateCommunity, Service.ServiceModuleID(), ModuleTemplateMessages.ActionType.ErrorSavingModuleContent); View.DisplayContentModulesErrorSaving(); } } else { View.DisplayUnknownTemplate(); } } }
private void LoadPermissions(TemplateDefinitionVersion version) { View.ForPortal = version.IsForPortal(); LoadAvailableItemsToAdd(version); List <dtoTemplateAssignment> assignments = UpdateAssigments(Service.GetPermissionAssignments(version, View.GetTranslatedModules(), View.GetTranslatedProfileTypes(), View.GetTranslatedRoles())); if (assignments.Count == 0) { View.SelectedIdUsers = new List <Int32>(); switch (version.Template.Type) { case TemplateType.System: View.LoadAssignments(TranslateAndReorderAssignments(Service.GetDefaultAssignmentSettings(version.Id))); break; default: break; } } else { List <dtoTemplateAssignment> items = TranslateAndReorderAssignments(assignments); View.SelectedIdUsers = assignments.Where(a => a.Type == PermissionType.Person).Select(a => ((dtoPersonAssignment)a).IdPerson).ToList(); View.LoadAssignments(items); } }
public void PreviewMessage(dtoTemplateTranslation content) { long idVersion = View.IdVersion; View.HideUserMessage(); if (UserContext.isAnonymous) { Logout(View.CurrentType, View.IdTemplate, idVersion); } else { TemplateDefinitionVersion v = Service.GetVersion(idVersion); if (v != null && v.Template != null) { Int32 idCommunity = View.IdTemplateCommunity; if (View.Ownership.IdObjectCommunity > 0) { idCommunity = View.Ownership.IdObjectCommunity; } List <ChannelSettings> channels = (v.ChannelSettings == null) ? new List <ChannelSettings>() : v.ChannelSettings.Where(s => s.Deleted == BaseStatusDeleted.None).ToList(); Boolean sendMail = (channels != null && channels.Where(n => n.Channel == lm.Comol.Core.Notification.Domain.NotificationChannel.Mail).Any()) && v.Template.OwnerInfo.Type == OwnerType.Object; View.DisplayMessagePreview(sendMail, content.LanguageCode, content.Translation, View.ContentModules, channels, idCommunity, (v.Template.OwnerInfo.Type == OwnerType.Object) ? v.Template.OwnerInfo.ModuleObject : null); } } }
private void LoadSettings(TemplateDefinitionVersion version, List <dtoChannelConfigurator> items) { List <string> modules = View.GetAvailableModules(); View.AllowEditModuleContent = (version.Template != null && version.Template.OwnerInfo.Type != OwnerType.Module && version.Template.OwnerInfo.IdModule <= 0); View.DisplayInput(version.DefaultTranslation.Name, version.Number, version.Status, modules, version.GetModuleContentCodes(), Service.GetAvailableChannels(version.Template.Type, version)); //UpdateInUseSettings(items); View.ChannelSettings = items; View.LoadChannelSettings(items); }
private void LoadDefaultTranslation(TemplateDefinitionVersion version) { dtoTemplateTranslation current = new dtoTemplateTranslation() { Id = 0, IdLanguage = 0, LanguageCode = "multi", IdVersion = version.Id, Translation = version.DefaultTranslation }; List <lm.Comol.Core.DomainModel.Languages.LanguageItem> items = Service.GetInUseLanguageItems(version); View.AllowDelete = false; View.ContentModules = Service.GetVersionModuleContentCodes(version.Id); View.AllowPreview = (!String.IsNullOrEmpty(current.Translation.Subject) || !String.IsNullOrEmpty(current.Translation.ShortText) || !String.IsNullOrEmpty(current.Translation.Body)); View.LoadTranslation(current, version.HasShortText, version.OnlyShortText, Service.GetAvalableLanguage(version), items, items.Where(i => i.IsMultiLanguage).FirstOrDefault()); }
public void SendMessage(SmtpServiceConfig smtpConfig, List <lm.Comol.Core.Mail.Messages.dtoMailTranslatedMessage> messages) { if (UserContext.isAnonymous) { View.CurrentMode = Domain.EditMessageMode.None; } else { if (messages == null) { View.DisplayUnableToSendMessage(); } else { List <dtoTemplateTranslation> translations = View.CurrentTranslations; List <lm.Comol.Core.Mail.Messages.dtoBaseMessageRecipient> rSkipped = new List <lm.Comol.Core.Mail.Messages.dtoBaseMessageRecipient>(); lm.Comol.Core.Mail.Messages.dtoBaseMailTemplate template = new lm.Comol.Core.Mail.Messages.dtoBaseMailTemplate(View.CurrentSettings); template.IdTemplate = View.IdSelectedTemplate; TemplateDefinitionVersion version = null; if (View.IdSelectedVersion > 0 || template.IdTemplate > 0) { version = Service.GetVersion(template.IdTemplate, View.IdSelectedVersion); } if (version != null) { template.IdVersion = version.Id; template.IsTemplateCompliant = IsTemplateCompliant(translations, version); } else { template.IsTemplateCompliant = false; } if (!template.IsTemplateCompliant) { template.DefaultTranslation = (translations.Where(t => t.LanguageCode == "multi" && t.IdLanguage == 0).Any() ? translations.Where(t => t.LanguageCode == "multi" && t.IdLanguage == 0).FirstOrDefault().Translation.Copy() : null); template.Translations = translations.Where(t => !(t.LanguageCode == "multi" && t.IdLanguage == 0) && t.IsValid).Select(t => new lm.Comol.Core.Mail.Messages.dtoBaseMailTemplateContent() { IdLanguage = t.IdLanguage, LanguageCode = t.LanguageCode, LanguageName = t.LanguageName, Translation = t.Translation }).ToList(); } Boolean sent = OtherModuleService.SendMail(CurrentManager.GetPerson(UserContext.CurrentUserID), smtpConfig, template.MailSettings, messages, ref rSkipped, template, View.CurrentObject, View.ModuleCode); Int32 removed = rSkipped.Count + messages.SelectMany(m => m.RemovedRecipients).Count(); View.DisplayMessageSentTo(messages.SelectMany(m => m.Recipients).Count() - rSkipped.Count, removed); } } }
private void InitializeModuleSelector(List <dtoTemplateTranslation> translations) { long idTemplate = View.IdSelectedTemplate; long idVersion = View.IdSelectedVersion; Boolean isTemplateCompliant = false; TemplateDefinitionVersion version = null; if (idVersion > 0 || idTemplate > 0) { version = Service.GetVersion(idTemplate, idVersion); } if (version != null) { isTemplateCompliant = IsTemplateCompliant(translations, version); } View.InitializeModuleRecipientsSelector((View.ContainerIdCommunity == 0 && View.CurrentObject.CommunityID == 0), View.ContainerIdCommunity, View.CurrentObject, idTemplate, idVersion, isTemplateCompliant, translations); }
public void SaveModuleContentSettings(List <String> contentmodules) { View.HideUserMessage(); if (UserContext.isAnonymous) { Logout(View.CurrentType, View.IdTemplate, View.IdVersion); } else { View.SavingSettings = false; TemplateDefinitionVersion version = Service.GetVersion(View.IdVersion); if (version != null) { Boolean askConfirm = false; Dictionary <String, List <String> > placeHolders = View.GetOldContentPlaceHolders((version.ModulesForContent == null) ? new List <String>() : version.ModulesForContent.Where(m => m.Deleted == BaseStatusDeleted.None && !contentmodules.Contains(m.ModuleCode)).Select(m => m.ModuleCode).ToList()); if (placeHolders.Keys.Count > 0) { Dictionary <String, List <String> > inUsePlaceHolders = Service.GetInUserPlaceHolders(version, placeHolders); if (inUsePlaceHolders.Keys.Count > 0) { View.InUsePlaceHolders = inUsePlaceHolders; View.DisplayConfirmModules(inUsePlaceHolders.Keys.ToList(), inUsePlaceHolders); askConfirm = true; } } if (!askConfirm) { if (Service.SaveModuleContentSettings(version, contentmodules)) { View.SendUserAction(View.IdTemplateCommunity, Service.ServiceModuleID(), ModuleTemplateMessages.ActionType.SaveModuleContent); View.DisplayContentModulesSaved(); } else { View.SendUserAction(View.IdTemplateCommunity, Service.ServiceModuleID(), ModuleTemplateMessages.ActionType.ErrorSavingModuleContent); View.DisplayContentModulesErrorSaving(); } } } else { View.DisplayUnknownTemplate(); } } }
private void LoadAssignments(long idVersion, List <dtoTemplateAssignment> currentItems, PermissionType fromDB, Int32 idCommunity = -1) { TemplateDefinitionVersion version = Service.GetVersion(idVersion); if (version == null) { View.DisplayUnknownTemplate(); } else { List <dtoRoleAssignment> roles = currentItems.Where(i => i.Type == PermissionType.Role).Select(i => (dtoRoleAssignment)i).ToList(); List <dtoProfileTypeAssignment> types = currentItems.Where(i => i.Type == PermissionType.ProfileType).Select(i => (dtoProfileTypeAssignment)i).ToList(); List <dtoPersonAssignment> users = currentItems.Where(i => i.Type == PermissionType.Person).Select(i => (dtoPersonAssignment)i).ToList(); List <dtoTemplateAssignment> assignments = Service.GetPermissionAssignments(version, View.GetTranslatedModules(), View.GetTranslatedProfileTypes(), View.GetTranslatedRoles()); switch (fromDB) { case PermissionType.Role: assignments.Where(a => a.Type == PermissionType.Portal).SelectMany(a => ((dtoPortalAssignment)a).ProfileTypes).Where(a => types.Where(r => r.IdPersonType == a.IdPersonType && a.PermissionToLong() != r.PermissionToLong()).Any()).ToList().ForEach(a => a.UpdatePermissions(types.Where(r => r.IdPersonType == a.IdPersonType).FirstOrDefault())); assignments.Where(a => a.Type == PermissionType.Community).SelectMany(a => ((dtoCommunityAssignment)a).Roles).Where(a => a.IdCommunity != idCommunity && roles.Where(r => r.IdRole == a.IdRole && r.IdCommunity == a.IdCommunity && a.PermissionToLong() != r.PermissionToLong()).Any()).ToList().ForEach(a => a.UpdatePermissions(roles.Where(r => r.IdRole == a.IdRole && r.IdCommunity == a.IdCommunity).FirstOrDefault())); assignments.Where(a => a.Type == PermissionType.Person).Select(a => (dtoPersonAssignment)a).Where(a => users.Where(r => r.IdPerson == a.IdPerson && a.PermissionToLong() != r.PermissionToLong()).Any()).ToList().ForEach(a => a.UpdatePermissions(users.Where(r => r.IdPerson == a.IdPerson).FirstOrDefault())); break; case PermissionType.ProfileType: assignments.Where(a => a.Type == PermissionType.Community).SelectMany(a => ((dtoCommunityAssignment)a).Roles).Where(a => roles.Where(r => r.IdRole == a.IdRole && r.IdCommunity == a.IdCommunity && a.PermissionToLong() != r.PermissionToLong()).Any()).ToList().ForEach(a => a.UpdatePermissions(roles.Where(r => r.IdRole == a.IdRole && r.IdCommunity == a.IdCommunity).FirstOrDefault())); assignments.Where(a => a.Type == PermissionType.Person).Select(a => (dtoPersonAssignment)a).Where(a => users.Where(r => r.IdPerson == a.IdPerson && a.PermissionToLong() != r.PermissionToLong()).Any()).ToList().ForEach(a => a.UpdatePermissions(users.Where(r => r.IdPerson == a.IdPerson).FirstOrDefault())); break; case PermissionType.Person: assignments.Where(a => a.Type == PermissionType.Portal).SelectMany(a => ((dtoPortalAssignment)a).ProfileTypes).Where(a => types.Where(r => r.IdPersonType == a.IdPersonType && a.PermissionToLong() != r.PermissionToLong()).Any()).ToList().ForEach(a => a.UpdatePermissions(types.Where(r => r.IdPersonType == a.IdPersonType).FirstOrDefault())); assignments.Where(a => a.Type == PermissionType.Community).SelectMany(a => ((dtoCommunityAssignment)a).Roles).Where(a => roles.Where(r => r.IdRole == a.IdRole && r.IdCommunity == a.IdCommunity && a.PermissionToLong() != r.PermissionToLong()).Any()).ToList().ForEach(a => a.UpdatePermissions(roles.Where(r => r.IdRole == a.IdRole && r.IdCommunity == a.IdCommunity).FirstOrDefault())); break; default: assignments.Where(a => a.Type == PermissionType.Portal).SelectMany(a => ((dtoPortalAssignment)a).ProfileTypes).Where(a => types.Where(r => r.IdPersonType == a.IdPersonType && a.PermissionToLong() != r.PermissionToLong()).Any()).ToList().ForEach(a => a.UpdatePermissions(types.Where(r => r.IdPersonType == a.IdPersonType).FirstOrDefault())); assignments.Where(a => a.Type == PermissionType.Community).SelectMany(a => ((dtoCommunityAssignment)a).Roles).Where(a => roles.Where(r => r.IdRole == a.IdRole && r.IdCommunity == a.IdCommunity && a.PermissionToLong() != r.PermissionToLong()).Any()).ToList().ForEach(a => a.UpdatePermissions(roles.Where(r => r.IdRole == a.IdRole && r.IdCommunity == a.IdCommunity).FirstOrDefault())); assignments.Where(a => a.Type == PermissionType.Person).Select(a => (dtoPersonAssignment)a).Where(a => users.Where(r => r.IdPerson == a.IdPerson && a.PermissionToLong() != r.PermissionToLong()).Any()).ToList().ForEach(a => a.UpdatePermissions(users.Where(r => r.IdPerson == a.IdPerson).FirstOrDefault())); break; } assignments = UpdateAssigments(assignments); View.LoadWizardSteps(View.IdTemplateCommunity, Service.GetAvailableSteps(idVersion, WizardTemplateStep.Permission, View.Ownership.Type)); View.LoadAssignments(TranslateAndReorderAssignments(assignments)); } }
public void AddNewVersion(long idTemplate, String name, dtoModuleContext context, dtoBaseFilters filters, int pageIndex, int pageSize) { if (UserContext.isAnonymous) { View.DisplaySessionTimeout(); } else { TemplateDefinitionVersion v = Service.AddTemplateVersion(idTemplate); View.OpenIdTemplate = idTemplate; View.DisplayMessage(name, Domain.ListAction.AddVersion, ModuleTemplateMessages.ObjectType.Template, (v != null)); if (View.SendTemplateActions) { View.SendUserAction(context.IdCommunity, context.IdModule, (v != null) ? ModuleTemplateMessages.ActionType.AddNewTemplateVersion : ModuleTemplateMessages.ActionType.GenericError); } ReloadPageAndFilters(context, filters, pageIndex, pageSize); } }
public void LoadTranslation(LanguageItem current, Boolean forAdd = false) { View.HideUserMessage(); if (UserContext.isAnonymous) { Logout(View.CurrentType, View.IdTemplate, View.IdVersion); } else { TemplateDefinitionVersion version = Service.GetVersion(View.IdVersion); if (version == null || (version.Deleted != BaseStatusDeleted.None && !View.PreloadPreview) || (version.Template == null)) { View.DisplayUnknownTemplate(); List <lm.Comol.Core.Wizard.NavigableWizardItem <dtoTemplateStep> > steps = Service.GetAvailableSteps(View.IdVersion, WizardTemplateStep.Translations, View.Ownership.Type); steps.ForEach(s => s.Status = Wizard.WizardItemStatus.disabled); View.LoadWizardSteps(View.IdTemplateCommunity, steps); View.SendUserAction(View.IdTemplateCommunity, Service.ServiceModuleID(), ModuleTemplateMessages.ActionType.UnknownTemplateVersion); } else { dtoTemplateTranslation t = Service.GetTranslation(View.IdVersion, current.Id, current.Code); if (t.Id != current.Id) { t.IdLanguage = current.Id; t.LanguageCode = current.Code; } if (forAdd && t != null) { TemplateTranslation sTranslation = Service.SaveTranslation(View.IdVersion, t); if (sTranslation != null) { View.UpdateTranslationSelector(Service.GetAvalableLanguages(), Service.GetInUseLanguageItems(View.IdVersion), View.CurrentTranslation); View.LoadWizardSteps(View.IdTemplateCommunity, Service.GetAvailableSteps(View.IdVersion, WizardTemplateStep.Translations, View.Ownership.Type)); View.SendUserAction(View.IdTemplateCommunity, Service.ServiceModuleID(), ModuleTemplateMessages.ActionType.TranslationSaved); } } View.AllowDelete = !current.IsMultiLanguage && (View.InputReadOnly && (View.AllowSave)); View.AllowPreview = t != null && (!String.IsNullOrEmpty(t.Translation.Subject) || !String.IsNullOrEmpty(t.Translation.ShortText) || !String.IsNullOrEmpty(t.Translation.Body)); View.LoadTranslation(t, version.HasShortText, version.OnlyShortText, current); } } }
public void InitializeCommunitySelector() { long idVersion = View.IdVersion; TemplateDefinitionVersion version = Service.GetVersion(idVersion); Dictionary <Int32, long> rPermissions = new Dictionary <Int32, long>(); Boolean forAdmin = (UserContext.UserTypeID == (Int32)UserTypeStandard.SysAdmin) || (UserContext.UserTypeID == (Int32)UserTypeStandard.Administrator) || (UserContext.UserTypeID == (Int32)UserTypeStandard.Administrative); Core.BaseModules.CommunityManagement.CommunityAvailability availability = (forAdmin) ? Core.BaseModules.CommunityManagement.CommunityAvailability.All : Core.BaseModules.CommunityManagement.CommunityAvailability.Subscribed; /*if (version!=null && version.Template!= null && version.Template.OwnerInfo.Type== OwnerType.Module) * rPermissions.Add(version.Template.OwnerInfo.IdModule, version.Template.OwnerInfo.); * else*/ rPermissions.Add(Service.ServiceModuleID(), (long)ModuleTemplateMessages.Base2Permission.Administration | (long)ModuleTemplateMessages.Base2Permission.ManageTemplates); rPermissions.Add(CommunityService.ServiceModuleID(), (long)lm.Comol.Core.DomainModel.Domain.ModuleCommunityManagement.Base2Permission.Manage | (long)lm.Comol.Core.DomainModel.Domain.ModuleCommunityManagement.Base2Permission.AdminService); List <Int32> idCommunities = Service.GetIdCommunityAssignments(idVersion); View.InitializeCommunityToAdd(UserContext.CurrentUserID, forAdmin, rPermissions, idCommunities, availability); }
private void SaveSettings(long idVersion, String name, List <String> contentmodules, List <dtoChannelConfigurator> items, TemplateStatus status, Dictionary <String, List <String> > placeHolders = null) { TemplateDefinitionVersion version = Service.SaveSettings(idVersion, name, contentmodules, items, status, placeHolders); if (version != null) { View.AllowSaveDraft = (version.Status == TemplateStatus.Draft); View.AllowSave = (version.Status == TemplateStatus.Draft); //UpdateInUseSettings(items); View.LoadWizardSteps(View.IdTemplateCommunity, Service.GetAvailableSteps(idVersion, WizardTemplateStep.Settings, View.Ownership.Type)); View.SendUserAction(View.IdTemplateCommunity, Service.ServiceModuleID(), ModuleTemplateMessages.ActionType.SaveVersionSettings); View.DisplayTemplateSettingsSaved(); View.DisplayInput(version.DefaultTranslation.Name, version.Number, version.Status); } else { View.SendUserAction(View.IdTemplateCommunity, Service.ServiceModuleID(), ModuleTemplateMessages.ActionType.ErrorSavingSettings); View.DisplayTemplateSettingsErrors(); } }
public void SaveSettings(String name, List <String> contentmodules, List <dtoChannelConfigurator> items, TemplateStatus status) { View.HideUserMessage(); if (UserContext.isAnonymous) { Logout(View.CurrentType, View.IdTemplate, View.IdVersion); } else { View.SavingSettings = true; View.SavingStatus = status; TemplateDefinitionVersion version = Service.GetVersion(View.IdVersion); if (version != null) { Boolean askConfirm = false; Dictionary <String, List <String> > placeHolders = View.GetOldContentPlaceHolders((version.ModulesForContent == null) ? new List <String>() : version.ModulesForContent.Where(m => m.Deleted == BaseStatusDeleted.None && !contentmodules.Contains(m.ModuleCode)).Select(m => m.ModuleCode).ToList()); if (placeHolders.Keys.Count > 0) { Dictionary <String, List <String> > inUsePlaceHolders = Service.GetInUserPlaceHolders(version, placeHolders); if (inUsePlaceHolders.Keys.Count > 0) { View.InUsePlaceHolders = inUsePlaceHolders; View.DisplayConfirmModules(inUsePlaceHolders.Keys.ToList(), inUsePlaceHolders); askConfirm = true; } } if (!askConfirm) { SaveSettings(version.Id, name, contentmodules, items, status); } } else { View.DisplayUnknownTemplate(); } } }
private void LoadSettings(TemplateDefinitionVersion version) { LoadSettings(version, Service.GetChannelSettings(version)); }
private Boolean IsTemplateCompliant(List <dtoTemplateTranslation> translations, TemplateDefinitionVersion version) { Boolean isCompliant = true; foreach (dtoTemplateTranslation t in translations) { if (t.IdLanguage == 0 && t.LanguageCode == "multi") { isCompliant = t.IsCompliant(version.DefaultTranslation); } else { ItemObjectTranslation content = version.GetTranslation(t.LanguageCode, t.IdLanguage); isCompliant = (content != null && t.IsCompliant(content)); } if (!isCompliant) { break; } } return(isCompliant); }
public void InitView() { long idTemplate = View.PreloadIdTemplate; long idVersion = View.PreloadIdVersion; TemplateType t = View.PreloadTemplateType; dtoBaseTemplateOwner ownerInfo = View.PreloadOwnership; Int32 idCommunity = ownerInfo.IdCommunity; if (idCommunity == -1) { idCommunity = UserContext.CurrentCommunityID; } if (ownerInfo.IdModule == 0 && !String.IsNullOrEmpty(ownerInfo.ModuleCode)) { ownerInfo.IdModule = CurrentManager.GetModuleID(ownerInfo.ModuleCode); } View.Ownership = ownerInfo; View.IdTemplateCommunity = idCommunity; if (UserContext.isAnonymous) { Logout(t, idTemplate, idVersion); } else { Boolean allowSave = false; TemplateDefinitionVersion version = Service.GetVersion(idVersion); List <lm.Comol.Core.Wizard.NavigableWizardItem <dtoTemplateStep> > steps = Service.GetAvailableSteps(idVersion, WizardTemplateStep.Translations, ownerInfo.Type);; if (version == null || (version.Deleted != BaseStatusDeleted.None && !View.PreloadPreview) || (version.Template == null)) { View.DisplayUnknownTemplate(); steps.ForEach(s => s.Status = Wizard.WizardItemStatus.disabled); View.SendUserAction(idCommunity, Service.ServiceModuleID(), ModuleTemplateMessages.ActionType.UnknownTemplateVersion); } else { dtoTemplatePermission permission = null; Boolean isPreview = View.PreloadPreview; Boolean allowSee = false; View.IdTemplate = version.Template.Id; View.IdVersion = version.Id; t = version.Template.Type; switch (ownerInfo.Type) { case OwnerType.None: View.UnableToReadUrlSettings(); View.SendUserAction(idCommunity, Service.ServiceModuleID(), ModuleTemplateMessages.ActionType.MalformedUrl); break; case OwnerType.Object: //allowSave = View.HasPermissionForObject(ModuleObject.CreateLongObject(ownerInfo.IdObject, ownerInfo.IdObjectType, ownerInfo.IdObjectCommunity, CurrentManager.GetModuleCode(ownerInfo.IdObjectModule))); //break; case OwnerType.Module: View.IdTemplateModule = ownerInfo.IdModule; if (ownerInfo.IdModule == Service.ServiceModuleID()) { permission = Service.GetItemPermission(idVersion); } else { permission = Service.GetManagementTemplatePermission(version, GetPermissions(ownerInfo.ModuleCode, ownerInfo.ModulePermission, ownerInfo.IdCommunity, t)); } allowSave = permission.AllowEdit; allowSee = permission.AllowUse; break; default: permission = Service.GetItemPermission(idVersion); allowSave = permission.AllowEdit; allowSee = permission.AllowUse; break; } allowSave = allowSave && (version.Status == TemplateStatus.Draft) && !isPreview; //allowActivate = allowDraft && (version.DefaultTranslation.IsValid() || (version!=null && version.Translations.Where(tn => tn.Deleted == BaseStatusDeleted.None && tn.IsValid).Any())); Boolean isAdministrative = Service.IsAdministrativeUser(UserContext.CurrentUserID); View.InputReadOnly = isPreview || (!allowSave && allowSee); View.AllowSave = allowSave; if (allowSave || allowSee) { LoadDefaultTranslation(version); View.SendUserAction(idCommunity, Service.ServiceModuleID(), ModuleTemplateMessages.ActionType.StartEditingSettings); } else { View.DisplayNoPermission(idCommunity, Service.ServiceModuleID()); View.SendUserAction(idCommunity, Service.ServiceModuleID(), ModuleTemplateMessages.ActionType.TryToEditingSettings); } } View.CurrentType = t; View.LoadWizardSteps(idCommunity, steps); if (String.IsNullOrEmpty(View.PreloadBackUrl)) { View.SetBackUrl(RootObject.List(View.PreloadFromIdCommunity, t, ownerInfo, true, View.PreloadFromModuleCode, View.PreloadFromModulePermissions, idTemplate, idVersion)); } else { View.SetBackUrl(View.PreloadBackUrl); } } }
private void InitializeEditor(String currentCode = "", long idTemplate = 0, long idVersion = 0, long idAction = 0) { Boolean isAdministrative = Service.IsAdministrativeUser(UserContext.CurrentUserID); Boolean senderEdit = isAdministrative; View.CurrentMode = Domain.EditMessageMode.Edit; View.IdSelectedTemplate = idTemplate; View.IdSelectedVersion = idVersion; View.IdSelectedAction = idAction; lm.Comol.Core.MailCommons.Domain.Messages.MessageSettings settings = null; List <dtoTemplateTranslation> translations = new List <dtoTemplateTranslation>(); TemplateDefinitionVersion version = null; if (idVersion > 0) { version = Service.GetVersion(idVersion); } if (version == null) { version = Service.GetLastActiveVersion(idTemplate); } 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.IsBodyHtml, Body = "", Name = "" } }); View.LoadEditor(translations, "multi", false, false, availableItems, items, items.Where(i => i.IsMultiLanguage).FirstOrDefault()); } if (settings == null) { settings = new lm.Comol.Core.MailCommons.Domain.Messages.MessageSettings(); settings.CopyToSender = false; settings.IsBodyHtml = true; settings.NotifyToSender = false; settings.SenderType = MailCommons.Domain.SenderUserType.LoggedUser; settings.PrefixType = MailCommons.Domain.SubjectPrefixType.SystemConfiguration; } View.CurrentTranslations = translations; View.InitializeMailSettings(settings, senderEdit, isAdministrative, isAdministrative); }
private void InitializeView(long idTemplate, long idVersion, dtoSelectorContext context) { TemplateDefinitionVersion version = InternalService.GetVersion(idTemplate, idVersion); if (version == null) { if (idVersion > 0) { View.DisplayNoTemplateVersionFound(); } else { View.DisplayNoTemplateFound(); } } else { if (idVersion > 0) { View.DisplayVersionInfo(version.Number); } else { View.DisplayLastVersionInfo(); } Boolean isAdministrative = InternalService.IsAdministrativeUser(UserContext.CurrentUserID); if (version.ChannelSettings != null && version.ChannelSettings.Where(c => c.Deleted == BaseStatusDeleted.None && c.Channel == lm.Comol.Core.Notification.Domain.NotificationChannel.Mail).Any()) { View.InitializeMailSettings(version.ChannelSettings.Where(c => c.Deleted == BaseStatusDeleted.None && c.Channel == lm.Comol.Core.Notification.Domain.NotificationChannel.Mail).FirstOrDefault().MailSettings, isAdministrative, isAdministrative, isAdministrative); } List <lm.Comol.Core.TemplateMessages.Domain.dtoTemplateTranslation> translations = new List <lm.Comol.Core.TemplateMessages.Domain.dtoTemplateTranslation>(); 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(); translations.Add(new dtoTemplateTranslation() { Id = 0, IdLanguage = 0, LanguageCode = "multi", LanguageName = "multi", IdVersion = version.Id, Translation = version.DefaultTranslation }); View.ContentModules = version.GetModuleContentCodes(); 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(!version.OnlyShortText, version.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.Add(new lm.Comol.Core.DomainModel.Languages.LanguageItem() { Id = 0, Code = "multi", IsEnabled = true, IsMultiLanguage = true, Status = (version.DefaultTranslation.IsValid(!version.OnlyShortText, version.HasShortText, true)) ? lm.Comol.Core.DomainModel.Languages.ItemStatus.valid : lm.Comol.Core.DomainModel.Languages.ItemStatus.warning }); inUseLanguages = inUseLanguages.OrderByDescending(l => l.IsMultiLanguage).ThenBy(l => l.Name).ToList(); //if (!inUseLanguages.Any(l => l.IsMultiLanguage)) //{ // inUseLanguages.Add(new DomainModel.Languages.LanguageItem(){ IsMultiLanguage=true, }) //} lm.Comol.Core.DomainModel.Languages.LanguageItem current = inUseLanguages.Where(l => l.Id == UserContext.Language.Id).FirstOrDefault(); if (current == null && inUseLanguages.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.FirstOrDefault(); } View.InitializeControls(translations, inUseLanguages, current); View.LoadTemplate((current != null) ? translations.Where(t => t.IdLanguage == current.Id && t.LanguageCode == current.Code).FirstOrDefault() : (translations.Any() ? translations[0] : null)); } // Boolean isAdministrative = Service.IsAdministrativeUser(UserContext.CurrentUserID); // Boolean senderEdit = 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; // 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))); // } // } // } // } }