Beispiel #1
0
        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);
            }
        }