public ActionResult AddFile(string file, int pageID, string zoneID, int pos) { try { var app = App.Get(); var page = app.CurrentWeb.FindPage(pageID); if (!page.IsOwner(HttpContext)) return new HttpUnauthorizedResult(); var webFile = new WebResourceInfo(file); WidgetDescriptorDecorator descriptor = null; if (webFile.IsFile) { if (descriptor == null && webFile.ContentType.StartsWith("image")) descriptor = app.Descriptors[@"multimedia\image"]; if (descriptor == null && webFile.ContentType.StartsWith("video")) descriptor = app.Descriptors[@"multimedia\video"]; if (descriptor == null && webFile.ContentType.Equals("text/html")) descriptor = app.Descriptors[@"text\htmlfile"]; //if (webFile.ContentType.Equals("text/xml")) // descriptor = app.Descriptors[@"text\code"]; if (webFile.ContentType.Equals("text/javascript") || webFile.ContentType.Equals("text/vbscript")) descriptor = app.Descriptors[@"text\script"]; if (descriptor == null && webFile.Extension.Equals(".css", StringComparison.OrdinalIgnoreCase)) descriptor = app.Descriptors[@"text\css"]; var codeexts = new string[] { ".cs", ".vb", ".sql", ".c", ".asp", ".aspx" }; if (descriptor == null && (codeexts.Contains(webFile.Extension.ToLower()) || (webFile.ContentType.Equals("text/xml")))) descriptor = app.Descriptors[@"text\codefile"]; //var isText = false; if (descriptor == null && webFile.ContentType.StartsWith("text")) { //;isText = true; descriptor = app.Descriptors[@"text\notes"]; } if (descriptor == null) descriptor = app.Descriptors[@"content\filedownload"]; } else descriptor = app.Descriptors[@"content\downloadlist"]; var widget = page.Widgets.Add(descriptor.Model, zoneID, pos); //app.AddWidgetTo(pageID, descriptor.ID, zoneID, pos); widget.ShowHeader = false; widget.ShowBorder = false; widget.Title = webFile.Name; //if (isText) //{ // var _file = app.NetDrive.MapPath(new Uri(file)); // if (System.IO.File.Exists(_file)) // { // var fileContent = System.IO.File.OpenText(_file); // widget.SetUserPreference("content", fileContent); // } //} //else widget.SetUserPreference("src", file); widget.Save(); ClearCache(widget); return Content(widget.ToJsonString(HttpContext, app.Context.Locale, this.CurrentWebName()), "application/json", System.Text.Encoding.UTF8); } catch (Exception e) { return Json(new { error = e.Message }, JsonRequestBehavior.AllowGet); } }