Beispiel #1
0
        public ActionResult Create(string template, string alternate, string returnUrl)
        {
            if (!Services.Authorizer.Authorize(StandardPermissions.SiteOwner, T("Not authorized to create templates")) && !Request.IsLocal)
            {
                return(new HttpUnauthorizedResult());
            }

            alternate = alternate.Replace("__", "-").Replace("_", ".");

            var currentTheme      = _themeManager.GetRequestTheme(Request.RequestContext);
            var alternateFilename = Server.MapPath(Path.Combine(currentTheme.Location, currentTheme.Id, "Views", alternate));

            // use same extension as template, or ".cshtml" if it's a code template))
            if (_webSiteFolder.FileExists(template))
            {
                alternateFilename += Path.GetExtension(template);

                using (var stream = System.IO.File.Create(alternateFilename)) {
                    _webSiteFolder.CopyFileTo(template, stream);
                }
            }
            else
            {
                alternateFilename += ".cshtml";
                using (System.IO.File.Create(alternateFilename)) {}
            }

            return(this.RedirectLocal(returnUrl));
        }
Beispiel #2
0
        protected override DriverResult Editor(ContentPart part, Fields.MediaPickerField field, IUpdateModel updater, dynamic shapeHelper)
        {
            // if the model could not be bound, don't try to validate its properties
            if (updater.TryUpdateModel(field, GetPrefix(field, part), null, null))
            {
                var settings = field.PartFieldDefinition.Settings.GetModel <MediaPickerFieldSettings>();

                var extensions = String.IsNullOrWhiteSpace(settings.AllowedExtensions)
                        ? new string[0]
                        : settings.AllowedExtensions.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);

                if (extensions.Any() && field.Url != null && !extensions.Any(x => field.Url.EndsWith(x, StringComparison.OrdinalIgnoreCase)))
                {
                    updater.AddModelError("Url", T("The field {0} must be have one of these extensions: {1}", field.Name.CamelFriendly(), settings.AllowedExtensions));
                }

                if (settings.Required && String.IsNullOrWhiteSpace(field.Url))
                {
                    updater.AddModelError("Url", T("The field {0} is mandatory", field.Name.CamelFriendly()));
                }

                if (!String.IsNullOrWhiteSpace(field.Url) && !_webSiteFolder.FileExists(field.Url))
                {
                    updater.AddModelError("Url", T("The media in {0} could not be found", field.Name.CamelFriendly()));
                }
            }

            return(Editor(part, field, shapeHelper));
        }
Beispiel #3
0
        public void OnDisplaying(ShapeDisplayingContext context)
        {
            if (!IsActivable())
            {
                return;
            }

            var shape         = context.Shape;
            var shapeMetadata = (ShapeMetadata)context.Shape.Metadata;
            var currentTheme  = _themeManager.GetRequestTheme(_workContext.HttpContext.Request.RequestContext);
            var shapeTable    = _shapeTableManager.GetShapeTable(currentTheme.Id);

            if (!shapeMetadata.Wrappers.Contains("ShapeTracingWrapper"))
            {
                return;
            }

            var descriptor = shapeTable.Descriptors[shapeMetadata.Type];

            // dump the Shape's content
            var dump = new ObjectDumper(6).Dump(context.Shape, "Model");

            var sb = new StringBuilder();

            ConvertToJSon(dump, sb);
            shape._Dump = sb.ToString();

            shape.Template         = null;
            shape.OriginalTemplate = descriptor.BindingSource;

            foreach (var extension in new[] { ".cshtml", ".aspx" })
            {
                foreach (var alternate in shapeMetadata.Alternates.Reverse().Concat(new [] { shapeMetadata.Type }))
                {
                    var alternateFilename = FormatShapeFilename(alternate, shapeMetadata.Type, shapeMetadata.DisplayType, currentTheme.Location + "/" + currentTheme.Id, extension);
                    if (_webSiteFolder.FileExists(alternateFilename))
                    {
                        shape.Template = alternateFilename;
                    }
                }
            }

            if (shape.Template == null)
            {
                shape.Template = descriptor.BindingSource;
            }

            if (shape.Template == null)
            {
                shape.Template = descriptor.Bindings.Values.FirstOrDefault().BindingSource;
            }

            if (shape.OriginalTemplate == null)
            {
                shape.OriginalTemplate = descriptor.Bindings.Values.FirstOrDefault().BindingSource;
            }

            try {
                // we know that templates are classes if they contain ':'
                if (!shape.Template.Contains(":") && _webSiteFolder.FileExists(shape.Template))
                {
                    shape.TemplateContent = _webSiteFolder.ReadFile(shape.Template);
                }
            }
            catch {
                // the url might be invalid in case of a code shape
            }

            if (shapeMetadata.PlacementSource != null && _webSiteFolder.FileExists(shapeMetadata.PlacementSource))
            {
                context.Shape.PlacementContent = _webSiteFolder.ReadFile(shapeMetadata.PlacementSource);
            }

            // Inject the Zone name
            if (shapeMetadata.Type == "Zone")
            {
                shape.Hint = ((Zone)shape).ZoneName;
            }

            shape.ShapeId = _shapeId++;
        }