public async Task Update(IPage page)
        {
            await EnsureProjectSettings().ConfigureAwait(false);

            await _eventHandlers.HandlePreUpdate(_settings.Id, page.Id).ConfigureAwait(false);

            await _pageCommands.Update(_settings.Id, page).ConfigureAwait(false);

            await _eventHandlers.HandleUpdated(_settings.Id, page).ConfigureAwait(false);
        }
Example #2
0
        public async Task Update(IPage page, bool convertToRelativeUrls = false)
        {
            await EnsureProjectSettings().ConfigureAwait(false);

            if (convertToRelativeUrls)
            {
                await _pageUrlResolver.ConvertToRelativeUrls(page, _settings).ConfigureAwait(false);
            }

            await _eventHandlers.HandlePreUpdate(_settings.Id, page.Id).ConfigureAwait(false);

            await _pageCommands.Update(_settings.Id, page).ConfigureAwait(false);

            await _eventHandlers.HandleUpdated(_settings.Id, page).ConfigureAwait(false);
        }
Example #3
0
        public async Task Update(
            string projectId,
            string userName,
            string password,
            IPage page,
            bool publish)
        {
            var permission = await security.ValidatePermissions(
                projectId,
                userName,
                password,
                CancellationToken
                ).ConfigureAwait(false);

            if (!permission.CanEditPosts)
            {
                return;
            }

            var settings = await projectService.GetProjectSettings(projectId).ConfigureAwait(false);

            var urlHelper            = urlHelperFactory.GetUrlHelper(actionContextAccesor.ActionContext);
            var imageAbsoluteBaseUrl = urlHelper.Content("~" + settings.LocalMediaVirtualPath);

            if (context != null)
            {
                imageAbsoluteBaseUrl = context.Request.AppBaseUrl() + settings.LocalMediaVirtualPath;
            }

            // open live writer passes in posts with absolute urls
            // we want to change them to relative to keep the files portable
            // to a different root url
            page.Content = await _contentProcessor.ConvertMediaUrlsToRelative(
                settings.LocalMediaVirtualPath,
                imageAbsoluteBaseUrl, //this shold be resolved from virtual using urlhelper
                page.Content);

            // olw also adds hard coded style to images
            page.Content = _contentProcessor.RemoveImageStyleAttribute(page.Content);

            // here we need to process any base64 embedded images
            // save them under wwwroot
            // and update the src in the post with the new url
            // since this overload of Save is only called from metaweblog
            // and metaweblog does not base64 encode the images like the browser client
            // this call may not be needed here
            //await mediaProcessor.ConvertBase64EmbeddedImagesToFilesWithUrls(
            //    settings.LocalMediaVirtualPath,
            //    post
            //    ).ConfigureAwait(false);

            var nonPublishedDate = new DateTime(1, 1, 1);

            if (page.PubDate == nonPublishedDate)
            {
                page.PubDate = DateTime.UtcNow;
            }

            await eventHandlers.HandlePreUpdate(projectId, page.Id).ConfigureAwait(false);

            await pageCommands.Update(projectId, page).ConfigureAwait(false);

            await eventHandlers.HandleUpdated(projectId, page).ConfigureAwait(false);
        }