コード例 #1
0
        public override async Task <IViewProviderResult> BuildUpdateAsync(AttachmentSettings settings, IViewProviderContext context)
        {
            var model = new AttachmentSettingsViewModel();

            // Validate model
            if (!await context.Updater.TryUpdateModelAsync(model))
            {
                return(await BuildEditAsync(settings, context));
            }

            // Update settings
            if (context.Updater.ModelState.IsValid)
            {
                //// Encrypt the password
                //var username = model.SmtpSettings.UserName;
                //var password = string.Empty;
                //if (!string.IsNullOrWhiteSpace(model.SmtpSettings.Password))
                //{
                //    try
                //    {
                //        password = _encrypter.Encrypt(model.SmtpSettings.Password);
                //    }
                //    catch (Exception e)
                //    {
                //        if (_logger.IsEnabled(LogLevel.Error))
                //        {
                //            _logger.LogError($"There was a problem encrypting the SMTP server password. {e.Message}");
                //        }
                //    }
                //}

                //settings = new EmailSettings()
                //{
                //    SmtpSettings = new SmtpSettings()
                //    {
                //        DefaultFrom = model.SmtpSettings.DefaultFrom,
                //        Host = model.SmtpSettings.Host,
                //        Port = model.SmtpSettings.Port,
                //        UserName = username,
                //        Password = password,
                //        RequireCredentials = model.SmtpSettings.RequireCredentials,
                //        EnableSsl = model.SmtpSettings.EnableSsl,
                //        PollingInterval = model.SmtpSettings.PollInterval,
                //        BatchSize = model.SmtpSettings.BatchSize,
                //        SendAttempts = model.SmtpSettings.SendAttempts,
                //        EnablePolling = model.SmtpSettings.EnablePolling
                //    }
                //};

                var result = await _attachmentSettingsStore.SaveAsync(settings);

                if (result != null)
                {
                    // Recycle shell context to ensure changes take effect
                    _platoHost.RecycleShellContext(_shellSettings);
                }
            }

            return(await BuildEditAsync(settings, context));
        }
コード例 #2
0
ファイル: AdminController.cs プロジェクト: mrs2020/Plato
        // ---------------
        // Settings
        // ---------------

        public async Task <IActionResult> Settings(RoleIndexOptions opts, PagerOptions pager)
        {
            // Ensure we have permission
            if (!await _authorizationService.AuthorizeAsync(User, Permissions.ManageAttachmentSettings))
            {
                return(Unauthorized());
            }

            _breadCrumbManager.Configure(builder =>
            {
                builder.Add(S["Home"], home => home
                            .Action("Index", "Admin", "Plato.Admin")
                            .LocalNav()
                            ).Add(S["Attachments"], manage => manage
                                  .Action("Index", "Admin", "Plato.Attachments")
                                  .LocalNav()
                                  ).Add(S["Settings"]);
            });

            // default options
            if (opts == null)
            {
                opts = new RoleIndexOptions();
            }

            // default pager
            if (pager == null)
            {
                pager = new PagerOptions();
            }

            // Get default options
            var defaultViewOptions  = new RoleIndexOptions();
            var defaultPagerOptions = new PagerOptions();

            // Add non default route data for pagination purposes
            if (opts.Search != defaultViewOptions.Search)
            {
                this.RouteData.Values.Add("opts.search", opts.Search);
            }
            if (opts.Sort != defaultViewOptions.Sort)
            {
                this.RouteData.Values.Add("opts.sort", opts.Sort);
            }
            if (opts.Order != defaultViewOptions.Order)
            {
                this.RouteData.Values.Add("opts.order", opts.Order);
            }
            if (pager.Page != defaultPagerOptions.Page)
            {
                this.RouteData.Values.Add("pager.page", pager.Page);
            }
            if (pager.Size != defaultPagerOptions.Size)
            {
                this.RouteData.Values.Add("pager.size", pager.Size);
            }

            // Build view model
            var viewModel = new AttachmentSettingsViewModel()
            {
                Options = opts,
                Pager   = pager
            };

            // Add view model to context
            this.HttpContext.Items[typeof(AttachmentSettingsViewModel)] = viewModel;

            // Return view
            return(View((LayoutViewModel)await _settingsViewProvider.ProvideIndexAsync(new AttachmentSetting(), this)));
        }