/// <summary>
        /// Used to create or update a 'partialview', 'partialviewmacro', 'script' or 'stylesheets' file
        /// </summary>
        /// <param name="display"></param>
        /// <returns>The updated CodeFileDisplay model</returns>
        public ActionResult <CodeFileDisplay> PostSave(CodeFileDisplay display)
        {
            if (display == null)
            {
                throw new ArgumentNullException(nameof(display));
            }

            TryValidateModel(display);
            if (ModelState.IsValid == false)
            {
                return(ValidationProblem(ModelState));
            }

            if (!display.IsConfigurationFile())
            {
                return(NotFound());
            }

            // if the file is the root web.config file, save a backup.
            var result = UpdateFile(display);

            if (result.Success)
            {
                return(result.Result);
            }

            display.AddErrorNotification(
                _localizedTextService.Localize("speechBubbles/configFileErrorHeader"),
                _localizedTextService.Localize("speechBubbles/configFileErrorText"));

            return(display);
        }
        /// <summary>
        /// Used to create or update a 'partialview', 'partialviewmacro', 'script' or 'stylesheets' file
        /// </summary>
        /// <param name="display"></param>
        /// <returns>The updated CodeFileDisplay model</returns>
        public CodeFileDisplay PostSave(CodeFileDisplay display)
        {
            if (display == null)
            {
                throw new ArgumentNullException("display");
            }

            if (ModelState.IsValid == false)
            {
                throw new HttpResponseException(Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState));
            }

            switch (display.FileType)
            {
            case Core.Constants.Trees.PartialViews:
                var partialViewResult = CreateOrUpdatePartialView(display);
                if (partialViewResult.Success)
                {
                    display      = Mapper.Map(partialViewResult.Result, display);
                    display.Path = Url.GetTreePathFromFilePath(partialViewResult.Result.Path);
                    display.Id   = System.Web.HttpUtility.UrlEncode(partialViewResult.Result.Path);
                    return(display);
                }

                display.AddErrorNotification(
                    Services.TextService.Localize("speechBubbles/partialViewErrorHeader"),
                    Services.TextService.Localize("speechBubbles/partialViewErrorText"));
                break;

            case Core.Constants.Trees.PartialViewMacros:
                var partialViewMacroResult = CreateOrUpdatePartialViewMacro(display);
                if (partialViewMacroResult.Success)
                {
                    display      = Mapper.Map(partialViewMacroResult.Result, display);
                    display.Path = Url.GetTreePathFromFilePath(partialViewMacroResult.Result.Path);
                    display.Id   = System.Web.HttpUtility.UrlEncode(partialViewMacroResult.Result.Path);
                    return(display);
                }

                display.AddErrorNotification(
                    Services.TextService.Localize("speechBubbles/partialViewErrorHeader"),
                    Services.TextService.Localize("speechBubbles/partialViewErrorText"));
                break;

            case Core.Constants.Trees.Scripts:

                var scriptResult = CreateOrUpdateScript(display);
                display      = Mapper.Map(scriptResult, display);
                display.Path = Url.GetTreePathFromFilePath(scriptResult.Path);
                display.Id   = System.Web.HttpUtility.UrlEncode(scriptResult.Path);
                return(display);

            //display.AddErrorNotification(
            //    Services.TextService.Localize("speechBubbles/partialViewErrorHeader"),
            //    Services.TextService.Localize("speechBubbles/partialViewErrorText"));

            case Core.Constants.Trees.Stylesheets:

                var stylesheetResult = CreateOrUpdateStylesheet(display);
                display      = Mapper.Map(stylesheetResult, display);
                display.Path = Url.GetTreePathFromFilePath(stylesheetResult.Path);
                display.Id   = System.Web.HttpUtility.UrlEncode(stylesheetResult.Path);
                return(display);

            default:
                throw new HttpResponseException(HttpStatusCode.NotFound);
            }

            return(display);
        }
Пример #3
0
    /// <summary>
    ///     Used to create or update a 'partialview', 'partialviewmacro', 'script' or 'stylesheets' file
    /// </summary>
    /// <param name="display"></param>
    /// <returns>The updated CodeFileDisplay model</returns>
    public ActionResult <CodeFileDisplay> PostSave(CodeFileDisplay display)
    {
        if (display == null)
        {
            throw new ArgumentNullException("display");
        }

        TryValidateModel(display);
        if (ModelState.IsValid == false)
        {
            return(ValidationProblem(ModelState));
        }

        switch (display.FileType)
        {
        case Constants.Trees.PartialViews:
            Attempt <IPartialView?> partialViewResult = CreateOrUpdatePartialView(display);
            if (partialViewResult.Success)
            {
                display      = _umbracoMapper.Map(partialViewResult.Result, display);
                display.Path = Url.GetTreePathFromFilePath(partialViewResult.Result?.Path);
                display.Id   = HttpUtility.UrlEncode(partialViewResult.Result?.Path);
                return(display);
            }

            display.AddErrorNotification(
                _localizedTextService.Localize("speechBubbles", "partialViewErrorHeader"),
                _localizedTextService.Localize("speechBubbles", "partialViewErrorText"));
            break;

        case Constants.Trees.PartialViewMacros:
            Attempt <IPartialView?> partialViewMacroResult = CreateOrUpdatePartialViewMacro(display);
            if (partialViewMacroResult.Success)
            {
                display      = _umbracoMapper.Map(partialViewMacroResult.Result, display);
                display.Path = Url.GetTreePathFromFilePath(partialViewMacroResult.Result?.Path);
                display.Id   = HttpUtility.UrlEncode(partialViewMacroResult.Result?.Path);
                return(display);
            }

            display.AddErrorNotification(
                _localizedTextService.Localize("speechBubbles", "partialViewErrorHeader"),
                _localizedTextService.Localize("speechBubbles", "partialViewErrorText"));
            break;

        case Constants.Trees.Scripts:

            IScript?scriptResult = CreateOrUpdateScript(display);
            display      = _umbracoMapper.Map(scriptResult, display);
            display.Path = Url.GetTreePathFromFilePath(scriptResult?.Path);
            display.Id   = HttpUtility.UrlEncode(scriptResult?.Path);
            return(display);

        //display.AddErrorNotification(
        //    _localizedTextService.Localize("speechBubbles/partialViewErrorHeader"),
        //    _localizedTextService.Localize("speechBubbles/partialViewErrorText"));

        case Constants.Trees.Stylesheets:

            IStylesheet?stylesheetResult = CreateOrUpdateStylesheet(display);
            display      = _umbracoMapper.Map(stylesheetResult, display);
            display.Path = Url.GetTreePathFromFilePath(stylesheetResult?.Path);
            display.Id   = HttpUtility.UrlEncode(stylesheetResult?.Path);
            return(display);

        default:
            return(NotFound());
        }

        return(display);
    }