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)); }
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)); }
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++; }