示例#1
0
        public override void SetData(object data)
        {
            _data = data as SenseNet.ContentRepository.Fields.ImageField.ImageFieldData;

            if (!IsTemplated)
            {
                _cbxImageRef.Checked = (this.ImageField.ImageMode != ImageRequestMode.BinaryData) &&
                                       (this.Field.Content.Id != 0);
                if (!string.IsNullOrEmpty(this.ImageUrl))
                {
                    _imageControl.ImageUrl = this.ImageUrl;
                }
                _imageControl.Width  = this.Width;
                _imageControl.Height = this.Height;
            }
            else
            {
                // synchronize data with controls are given in the template
                var title = GetLabelForTitleControl() as Label;
                var desc  = GetLabelForDescription() as Label;
                if (title != null)
                {
                    title.Text = this.Field.DisplayName;
                }
                if (desc != null)
                {
                    desc.Text = this.Field.Description;
                }
                var imageIsRefControl = GetImageIsRefControl();
                if (imageIsRefControl != null)
                {
                    imageIsRefControl.Checked = (this.ImageField.ImageMode != ImageRequestMode.BinaryData) &&
                                                (this.Field.Content.Id != 0);
                }
                var imageControl = GetImageControl();
                if (imageControl != null)
                {
                    if (!string.IsNullOrEmpty(this.ImageUrl))
                    {
                        imageControl.ImageUrl = this.ImageUrl;
                    }
                }
            }
        }
示例#2
0
        /* ============================================================================= Methods */
        public override object GetData()
        {
            if (_data == null)
            {
                _data = new SenseNet.ContentRepository.Fields.ImageField.ImageFieldData(this.Field);
            }

            var innerControl      = _fileUploadControl;
            var imageIsRefControl = _cbxImageRef;

            // templates
            if (IsTemplated)
            {
                innerControl      = GetInnerControl() as FileUpload;
                imageIsRefControl = GetImageIsRefControl() as CheckBox;
            }

            _binaryData = null;

            // newly posted filestream
            bool newStream = false;

            if (innerControl != null && innerControl.HasFile)
            {
                var fileStream  = innerControl.PostedFile.InputStream;
                var contentType = innerControl.PostedFile.ContentType;
                var fileName    = innerControl.PostedFile.FileName;

                _binaryData             = new BinaryData();
                _binaryData.ContentType = contentType;
                _binaryData.FileName    = fileName;
                _binaryData.SetStream(fileStream);

                newStream = true;
            }

            // if there is no new stream and the reference control is not on the page,
            // it means the data could not be changed, so return the original data
            if (!newStream && imageIsRefControl == null)
            {
                return(_data);
            }

            // new image mode
            var newImageMode = (imageIsRefControl != null && imageIsRefControl.Checked) ? ImageRequestMode.Reference : ImageRequestMode.BinaryData;

            if (!newStream)
            {
                switch (this.ImageField.ImageMode)
                {
                case ImageRequestMode.BinaryData:
                    _binaryData = _data.ImgData;
                    break;

                case ImageRequestMode.Reference:
                    if (_data.ImgRef != null)
                    {
                        _binaryData = _data.ImgRef.Binary;
                    }
                    break;
                }
            }

            // no uploads and no original data, so return with empty data
            if (_binaryData == null)
            {
                return(_data);
            }

            // if mode is not changed, proceed only if new uploaded stream is available
            if ((newImageMode == this.ImageField.ImageMode) && (!newStream))
            {
                return(_data);
            }

            // from here either mode is changed or new stream is available
            // 2 possibilities: new mode is reference or new mode is binary
            // - reference
            //    - former binarydata is cleared
            //    - the referenced node is created or updated
            // - binary
            //    - binarydata property is set
            //    - referenced node is deleted
            if (newImageMode == ImageRequestMode.Reference)
            {
                // clear binarydata
                _data.ImgData = null;

                if (this.Content.Id != 0)
                {
                    CreateImageReference(this.ContentHandler);
                }
                else
                {
                    this.ContentHandler.Created += new EventHandler <SenseNet.ContentRepository.Storage.Events.NodeEventArgs>(ContentHandler_Created);
                }
            }
            else
            {
                // set binarydata
                _data.ImgData = new BinaryData();
                _data.ImgData.CopyFrom(_binaryData);

                // if copied from referenced node -> node name should be filename, not node's binary's filename (latter could contain '\'-s)
                if (!newStream)
                {
                    _data.ImgData.FileName = new BinaryFileName(_data.ImgRef.Name);
                }

                // clear referencedata (also delete the file but only after this node is saved!)
                this.ContentHandler.Modified += new EventHandler <SenseNet.ContentRepository.Storage.Events.NodeEventArgs>(ContentHandler_Modified);
            }

            // reset image url after new image is saved
            var imageControl = GetImageControl();

            if (imageControl != null)
            {
                if (!string.IsNullOrEmpty(this.ImageUrl))
                {
                    imageControl.ImageUrl = this.ImageUrl;
                }
            }

            return(_data);
        }
示例#3
0
        public override void SetData(object data)
        {
            _data = data as SenseNet.ContentRepository.Fields.ImageField.ImageFieldData;

            if (!IsTemplated)
            {
                _cbxImageRef.Checked = (this.ImageField.ImageMode != ImageRequestMode.BinaryData) &&
                        (this.Field.Content.Id != 0);
                if (!string.IsNullOrEmpty(this.ImageUrl))
                    _imageControl.ImageUrl = this.ImageUrl;
                _imageControl.Width = this.Width;
                _imageControl.Height = this.Height;
            }
            else
            {
                // synchronize data with controls are given in the template
                var title = GetLabelForTitleControl() as Label;
                var desc = GetLabelForDescription() as Label;
                if (title != null)
                    title.Text = this.Field.DisplayName;
                if (desc != null)
                    desc.Text = this.Field.Description;
                var imageIsRefControl = GetImageIsRefControl();
                if (imageIsRefControl != null)
                    imageIsRefControl.Checked = (this.ImageField.ImageMode != ImageRequestMode.BinaryData) &&
                            (this.Field.Content.Id != 0);
                var imageControl = GetImageControl();
                if (imageControl != null)
                {
                    if (!string.IsNullOrEmpty(this.ImageUrl))
                        imageControl.ImageUrl = this.ImageUrl;
                }
            }
        }
示例#4
0
        /* ============================================================================= Methods */
        public override object GetData()
        {
            if (_data == null)
                _data = new SenseNet.ContentRepository.Fields.ImageField.ImageFieldData();

            var innerControl = _fileUploadControl;
            var imageIsRefControl = _cbxImageRef;

            // templates
            if (IsTemplated)
            {
                innerControl = GetInnerControl() as FileUpload;
                imageIsRefControl = GetImageIsRefControl() as CheckBox;
            }

            _binaryData = null;

            // newly posted filestream
            bool newStream = false;
            if (innerControl != null && innerControl.HasFile)
            {
                var fileStream = innerControl.PostedFile.InputStream;
                var contentType = innerControl.PostedFile.ContentType;
                var fileName = innerControl.PostedFile.FileName;

                _binaryData = new BinaryData();
                _binaryData.ContentType = contentType;
                _binaryData.FileName = fileName;
                _binaryData.SetStream(fileStream);

                newStream = true;
            }

            // new image mode
            var originalImageMode = this.ImageField.ImageMode;
            var newImageMode = imageIsRefControl.Checked ? ImageRequestMode.Reference : ImageRequestMode.BinaryData;

            if (!newStream)
            {
                switch (this.ImageField.ImageMode)
                {
                    case ImageRequestMode.BinaryData:
                        _binaryData = _data.ImgData;
                        break;
                    case ImageRequestMode.Reference:
                        if (_data.ImgRef != null)
                            _binaryData = _data.ImgRef.Binary;
                        break;
                }
            }

            // no uploads and no original data, so return with empty data
            if (_binaryData == null)
                return _data;

            // if mode is not changed, proceed only if new uploaded stream is available
            if ((newImageMode == this.ImageField.ImageMode) && (!newStream))
                return _data;

            // from here either mode is changed or new stream is available
            // 2 possibilities: new mode is reference or new mode is binary
            // - reference
            //    - former binarydata is cleared
            //    - the referenced node is created or updated 
            // - binary
            //    - binarydata property is set
            //    - referenced node is deleted
            if (newImageMode == ImageRequestMode.Reference)
            {
                // clear binarydata
                _data.ImgData = null;

                if (this.Content.Id != 0)
                    CreateImageReference(this.ContentHandler);
                else
                    this.ContentHandler.Created += new EventHandler<SenseNet.ContentRepository.Storage.Events.NodeEventArgs>(ContentHandler_Created);
            }
            else
            {
                // set binarydata
                _data.ImgData = new BinaryData();
                _data.ImgData.CopyFrom(_binaryData);

                // if copied from referenced node -> node name should be filename, not node's binary's filename (latter could contain '\'-s)
                if (!newStream)
                    _data.ImgData.FileName = new BinaryFileName(_data.ImgRef.Name);

                // clear referencedata (also delete the file but only after this node is saved!)
                this.ContentHandler.Modified += new EventHandler<SenseNet.ContentRepository.Storage.Events.NodeEventArgs>(ContentHandler_Modified);
            }

            // reset image url after new image is saved
            var imageControl = GetImageControl();
            if (imageControl != null)
            {
                if (!string.IsNullOrEmpty(this.ImageUrl))
                    imageControl.ImageUrl = this.ImageUrl;
            }
            
            return _data;
        }