コード例 #1
0
        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);
                }
            }
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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));
                }
            }
        }
コード例 #4
0
 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();
         }
     }
 }
コード例 #5
0
        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);
            }
        }
コード例 #6
0
        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);
                }
            }
        }
コード例 #7
0
        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);
        }
コード例 #8
0
        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());
        }
コード例 #9
0
 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);
         }
     }
 }
コード例 #10
0
        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);
        }
コード例 #11
0
 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();
         }
     }
 }
コード例 #12
0
        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));
            }
        }
コード例 #13
0
        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);
            }
        }
コード例 #14
0
        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);
                }
            }
        }
コード例 #15
0
        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);
        }
コード例 #16
0
        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();
            }
        }
コード例 #17
0
 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();
         }
     }
 }
コード例 #18
0
 private void LoadSettings(TemplateDefinitionVersion version)
 {
     LoadSettings(version, Service.GetChannelSettings(version));
 }
コード例 #19
0
        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);
        }
コード例 #20
0
        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);
                }
            }
        }
コード例 #21
0
        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);
        }
コード例 #22
0
        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)));
            //                }
            //            }

            //        }
            //    }
        }