예제 #1
0
            public Result SaveData(long dataID, IEditFieldData efdata)
            {
                ImageEditFieldData data = (ImageEditFieldData)efdata;

                try
                {
                    using (TransactionScope scope = new TransactionScope())
                    {
                        DatabaseManager.DatabaseEngine.GetConnection();
                        if (data.SprocketFile != null)
                        {
                            data.SprocketFileID = data.SprocketFile.SprocketFileID = DatabaseManager.DatabaseEngine.GetUniqueID();
                        }
                        Result r = ContentManager.Instance.DataProvider.StoreEditField_Image(dataID, data.SprocketFileID);
                        if (r.Succeeded && data.SprocketFile != null)
                        {
                            r = FileManager.FileManager.DataLayer.Store(data.SprocketFile);
                        }
                        if (r.Succeeded)
                        {
                            scope.Complete();
                        }
                        return(r);
                    }
                }
                catch (Exception e)
                {
                    return(new Result(e.Message));
                }
                finally
                {
                    DatabaseManager.DatabaseEngine.ReleaseConnection();
                }
            }
예제 #2
0
        public bool IsContentDifferent(IEditFieldData a, IEditFieldData b)
        {
            ImageEditFieldData d1 = (ImageEditFieldData)a;
            ImageEditFieldData d2 = (ImageEditFieldData)b;

            return(d1.SprocketFileID != d2.SprocketFileID ||
                   (d1.SprocketFileID == 0 && d2.SprocketFile != null) ||
                   (d2.SprocketFileID == 0 && d1.SprocketFile != null));
        }
예제 #3
0
        public Result ReadAdminField(out IEditFieldData efdata)
        {
            ImageEditFieldData data = new ImageEditFieldData();

            SprocketFile file = null;

            if (HttpContext.Current.Request.Files[fieldName] != null)
            {
                if (HttpContext.Current.Request.Files[fieldName].ContentLength > 0)
                {
                    file = new SprocketFile(SecurityProvider.ClientSpaceID, HttpContext.Current.Request.Files[fieldName], "", "");
                    Image  img;
                    Result r = file.ValidateImageData(out img);
                    if (!r.Succeeded)
                    {
                        efdata = new ImageEditFieldData();
                        return(new Result("The image selected could not be loaded. The system reported back the following error: " + r.Message));
                    }
                    if (maxwidth > 0 || maxheight > 0)
                    {
                        SizingOptions options = new SizingOptions(maxwidth, maxheight, SizingOptions.Display.Constrain, 0);
                        options.Image = img;
                        MemoryStream stream = new MemoryStream();
                        FileManager.FileManager.Instance.ResizeImage(options, stream);
                        file.FileData = stream.ToArray();
                    }
                }
            }

            bool deleted = HttpContext.Current.Request.Form["deleteimage_" + fieldName] != null;
            long existing;

            if (!long.TryParse(HttpContext.Current.Request.Form["existingimage_" + fieldName], out existing))
            {
                existing = 0;
            }

            if (deleted)
            {
                data.SprocketFileID = 0;
            }
            else if (file != null)
            {
                data.SprocketFile = file;
            }
            else
            {
                data.SprocketFileID = existing;
            }
            efdata = data;

            return(new Result());
        }
예제 #4
0
        public Result ReadAdminField(out IEditFieldData efdata)
        {
            ImageEditFieldData data = new ImageEditFieldData();

            SprocketFile file = null;
            if (HttpContext.Current.Request.Files[fieldName] != null)
                if (HttpContext.Current.Request.Files[fieldName].ContentLength > 0)
                {
                    file = new SprocketFile(SecurityProvider.ClientSpaceID, HttpContext.Current.Request.Files[fieldName], "", "");
                    Image img;
                    Result r = file.ValidateImageData(out img);
                    if (!r.Succeeded)
                    {
                        efdata = new ImageEditFieldData();
                        return new Result("The image selected could not be loaded. The system reported back the following error: " + r.Message);
                    }
                    if (maxwidth > 0 || maxheight > 0)
                    {
                        SizingOptions options = new SizingOptions(maxwidth, maxheight, SizingOptions.Display.Constrain, 0);
                        options.Image = img;
                        MemoryStream stream = new MemoryStream();
                        FileManager.FileManager.Instance.ResizeImage(options, stream);
                        file.FileData = stream.ToArray();
                    }
                }

            bool deleted = HttpContext.Current.Request.Form["deleteimage_" + fieldName] != null;
            long existing;
            if (!long.TryParse(HttpContext.Current.Request.Form["existingimage_" + fieldName], out existing))
                existing = 0;

            if (deleted)
                data.SprocketFileID = 0;
            else if (file != null)
                data.SprocketFile = file;
            else
                data.SprocketFileID = existing;
            efdata = data;

            return new Result();
        }