SetStream() public method

public SetStream ( Stream stream ) : void
stream Stream
return void
示例#1
0
		public static StepResult InstallContent(Content content)
		{
			bool isNewContent;
			try
			{
				SnC.Content snContent = CreateOrLoadContent(content, out isNewContent);
				foreach (var attachment in content.Attachments)
				{
					var data = new BinaryData() { FileName = attachment.FileName };
					data.SetStream(attachment.Manifest.GetStream(attachment.FileName));
					snContent[attachment.FieldName] = data;
				}
				snContent.Save();
				content.IsNewContent = isNewContent;
                if (!SetMetadata(snContent, content, isNewContent, false))
                {
                    Logger.LogWarningMessage(PrintFieldErrors(snContent));
                    return new StepResult { Kind = StepResultKind.Warning };
                }
			}
			catch (Exception transferEx)
			{
                Logger.LogException(transferEx);
				return new StepResult { Kind = StepResultKind.Error };
			}
			return new StepResult { Kind = StepResultKind.Successful };
		}
示例#2
0
        public SenseNet.ContentRepository.Fields.ImageField.ImageFieldData GetImageFieldData()
        {
            if (this.ImageStream == null)
                return null;

            var binaryData = new BinaryData();
            binaryData.SetStream(this.ImageStream);
            return new SenseNet.ContentRepository.Fields.ImageField.ImageFieldData(null, binaryData);
        }
示例#3
0
        private static void SetBinaryDataProperties(FileUpload fileUpload, BinaryData data)
        {
            var fileStream = fileUpload.PostedFile.InputStream;
            var contentType = fileUpload.PostedFile.ContentType;
            var fileName = fileUpload.PostedFile.FileName;

            data.ContentType = contentType;
            data.FileName = fileName;
            data.SetStream(fileStream);  
        }
示例#4
0
        protected override void Execute(NativeActivityContext context)
        {
            var message = Message.Get(context);
            var parentPath = ParentPath.Get(context);
            var overwrite = OverwriteExistingContent.Get(context);
            var displayName = ContentDisplayName.Get(context);
            var name = ContentName.Get(context);
            if (string.IsNullOrEmpty(name))
                name = ContentNamingHelper.GetNameFromDisplayName(displayName) + ".eml";

            var parent = Node.LoadNode(parentPath);
            if (parent == null)
                throw new ApplicationException("Cannot create content because parent does not exist. Path: " + parentPath);

            //var displayName = message.Subject;
            //var name = ContentNamingHelper.GetNameFromDisplayName(message.Subject) + ".eml";

            // check existing file
            var node = Node.LoadNode(RepositoryPath.Combine(parentPath, name));
            File file;
            if (node == null)
            {
                // file does not exist, create new one
                file = new File(parent);
                if (!string.IsNullOrEmpty(displayName))
                    file.DisplayName = displayName;
                file.Name = name;
            }
            else
            {
                // file exists
                if (overwrite)
                {
                    // overwrite it, so we open it
                    file = node as File;

                    // node exists and it is not a file -> delete it and create a new one
                    if (file == null)
                    {
                        node.ForceDelete();
                        file = new File(parent);
                    }
                    file.DisplayName = displayName;
                    file.Name = name;
                }
                else
                {
                    // do not overwrite it
                    file = new File(parent);
                    if (!string.IsNullOrEmpty(displayName))
                        file.DisplayName = displayName;
                    file.Name = name;
                    file.AllowIncrementalNaming = true;
                }
            }

            try
            {
                using (var memoryStream = new System.IO.MemoryStream(message.MimeContent.Content))
                {
                    var binaryData = new BinaryData();
                    binaryData.SetStream(memoryStream);
                    file.Binary = binaryData;

                    file.Save();
                }
            }
            catch (Exception ex)
            {
                Logger.WriteException(ex);
            }
        }
示例#5
0
		private static BinaryData CreateBinaryFromString(string name, string textData)
		{
			BinaryData binaryData = new BinaryData();
			binaryData.FileName = name;

			System.IO.MemoryStream memoryStream = new System.IO.MemoryStream();
			System.IO.StreamWriter writer = new System.IO.StreamWriter(memoryStream, Encoding.Unicode);
			writer.Write(textData);
			writer.Flush();

			binaryData.SetStream(memoryStream);
			return binaryData;
		}
示例#6
0
        private void SetBinaryDataProperties(BinaryData data, FileUpload fileUpload, ITextControl editor)
        {
            //if (editor == null) 
            //    return;
            //var hasText = editor.Text.Length > 0;
            //if (fileUpload != null && fileUpload.HasFile)
            //{
            //    var fileStream = fileUpload.PostedFile.InputStream;
            //    var contentType = fileUpload.PostedFile.ContentType;
            //    var fileName = fileUpload.PostedFile.FileName;

            //    data.ContentType = contentType;
            //    data.FileName = fileName;
            //    data.SetStream(fileStream);

            //    if (AutoName)
            //        Content.Fields["Name"].SetData(Path.GetFileName(fileName));
            //}
            //else if (hasText)
            //    data.SetStream(Tools.GetStreamFromString(editor.Text));

            if (editor == null)
                return;
            var textMode = ((TextBox)editor).Visible;
            if (textMode)
            {
                data.SetStream(Tools.GetStreamFromString(editor.Text));
            }
            else
            {
                if (fileUpload != null && fileUpload.HasFile)
                {
                    var fileStream = fileUpload.PostedFile.InputStream;
                    var contentType = fileUpload.PostedFile.ContentType;
                    var fileName = fileUpload.PostedFile.FileName;

                    data.ContentType = contentType;
                    data.FileName = fileName;
                    data.SetStream(fileStream);

                    //if (AutoName)
                    //    Content.Fields["Name"].SetData(Path.GetFileName(fileName));
                }
            }
        }
示例#7
0
        //======================================================================== tools

        private static void CreateResourceFile()
        {
            //  /Root/Localization/MessageTemplateResources.xml
            var locFolder = Node.LoadNode("/Root/Localization");
            if (locFolder == null)
            {
                locFolder = new SystemFolder(Repository.Root);
                locFolder.Name = "Localization";
                locFolder.Save();
            }
            var resFile = new SenseNet.ContentRepository.i18n.Resource(locFolder);
            resFile.Name = "MessageTemplateResources.xml";
            var binData = new BinaryData();
            binData.SetStream(Tools.GetStreamFromString(_resFileSrc));
            resFile.SetBinary("Binary", binData);
            resFile.Save();
        }
示例#8
0
        //// Creating test node
        private string CreateTestFile()
        {
            File f = new File(this.TestRoot);
            f.Name = Guid.NewGuid().ToString();
            BinaryData data = new BinaryData();
			data.SetStream(TestTools.GetTestStream());
            f.Binary = data;
            f.Save();
            return RepositoryPath.Combine(this.TestRoot.Path, f.Name);
        }
		public void PageTemplateManager_CheckPageTemplateBinaryStream_Test()
		{
			PageTemplate pageTemplate = new PageTemplate(this.TestRoot);
			BinaryData binaryData = new BinaryData();
			string streamData = "TestString";
			binaryData.SetStream(Tools.GetStreamFromString(streamData));
			pageTemplate.Binary = binaryData;

			bool expected = true;
			bool actual = SenseNet.ContentRepository.Tests.SenseNet_Portal_PageTemplateManagerAccessor.CheckPageTemplateBinaryStream(pageTemplate);

			Assert.AreEqual(expected, actual, "PageTemplateManager.CheckPageTemplateBinaryStream did not return the expected value.");
		}
示例#10
0
 public static BinaryData CreateTestBinary()
 {
     var data = new BinaryData();
     data.SetStream(TestTools.GetTestStream());
     return data;
 }
        public static void SaveBlob(string path, byte[] sharedDataBlob)
        {
			if (SNP.Page.Current == null || String.IsNullOrEmpty(SNP.Page.Current.Path))
            {
                throw new PersonalizationException("No page loaded.");
            }

			var p = SNP.Page.Current;
            if (p.PersonalizationSettings != null)
            {
                if (sharedDataBlob.Length == 0)
					SenseNetPersonalizationProvider.WriteLog(String.Format("SaveBlob --> missing personalization settings at {0} path.", SNP.Page.Current.Path));

                p.PersonalizationSettings.SetStream(new MemoryStream(sharedDataBlob));
            }
            else
            {
                BinaryData binaryPers = new BinaryData();
                binaryPers.SetStream(new MemoryStream(sharedDataBlob));
                p.PersonalizationSettings = binaryPers;
            }
            p.Save();
        }
示例#12
0
		private static BinaryData CreateBinary(string name, byte byteValue)
		{
			BinaryData binaryData = new BinaryData();
			binaryData.FileName = name;
			System.IO.MemoryStream memoryStream = new System.IO.MemoryStream(100);
			memoryStream.WriteByte(byteValue);
			binaryData.SetStream(memoryStream);
			return binaryData;
		}
示例#13
0
 /// <summary>
 /// Creates BinaryData from filename and stream
 /// </summary>
 /// <param name="fileName"></param>
 /// <param name="stream"></param>
 /// <returns></returns>
 public static BinaryData CreateBinaryData(string fileName, Stream stream)
 {
     var binaryData = new BinaryData();
     binaryData.FileName = fileName;
     binaryData.SetStream(stream);
     return binaryData;
 }
示例#14
0
		public void Node_Properties_BinaryPropertyDelete()
		{
			File file = new File(this.TestRoot);

			// Save binary
			BinaryData data = new BinaryData();
			data.SetStream(TestTools.GetTestStream());
			data.FileName = ".bin";

			file.Binary = data;
			file.Save();
			int id = file.Id;

			// Load binary back, empty it and save again
			file = (File)Node.LoadNode(id);
			Assert.AreNotEqual(null, file.Binary, "#1");
			file.Binary = null;
			file.Save();

			// Load binary back
			file = (File)Node.LoadNode(id);

			Assert.IsTrue(file.Binary.IsEmpty, "#2");
		}
示例#15
0
        public void Node_Save_Refresh_1()
        {
            //this test does a few general things to be sure that they do not fail
            const string text = "text file content";
            const string text2 = "new text";
            var bd = new BinaryData {FileName = "TestFile.txt"};
            bd.SetStream(Tools.GetStreamFromString(text));

            //create a file
            var file = new File(this.TestRoot) {Index = 1, Binary = bd};
            file.Save();

            //check binary
            Assert.AreEqual(text, Tools.GetStreamString(file.Binary.GetStream()), "#1");

            var mod1 = file.ModificationDate;

            //this should indicate a refresh inside
            file.Index = 2;
            file.Save();

            var mod2 = file.ModificationDate;

            Assert.AreEqual(2, file.Index, "#2");
            Assert.IsTrue(mod1 < mod2, "#3");

            //reaload
            file = Node.Load<File>(file.Id);

            Assert.AreEqual(2, file.Index, "#4");
            Assert.AreEqual(mod2.ToString(), file.ModificationDate.ToString(), "#5");

            //change the file
            file.Index = 3;
            file.Save();

            bd = new BinaryData { FileName = "TestFile.txt" };
            bd.SetStream(Tools.GetStreamFromString(text2));

            //this should indicate a refresh inside
            file.Binary = bd;
            file.Save();

            //check binary
            Assert.AreEqual(text2, Tools.GetStreamString(file.Binary.GetStream()), "#6");

            //reaload
            file = Node.Load<File>(file.Id);

            //check binary
            Assert.AreEqual(text2, Tools.GetStreamString(file.Binary.GetStream()), "#7");
        }
示例#16
0
        private void CreateContent(HttpContext context)
        {
            try
            {
                //---- content type

                var contentTypeName = GetRequestParameter("contenttype");
                if (String.IsNullOrEmpty(contentTypeName))
                {
                    WriteError("Parameter 'contenttype' cannot be null or empty.", context);
                    return;
                }

                var contentType = ContentType.GetByName(contentTypeName);
                if (contentType == null)
                {
                    WriteError("Content type not found: " + contentTypeName, context);
                    return;
                }
                //---- create content

                var snPath = GetRequestParameter("snpath");
                if (String.IsNullOrEmpty(snPath))
                {
                    WriteError("Parameter 'snpath' cannot be null or empty.", context);
                    return;
                }

                using (new SenseNet.ContentRepository.Storage.Security.SystemAccount())
                {
                    BenchmarkCounter.Reset();
                    benchmarkTimer = Stopwatch.StartNew();
                    benchmarkTimer.Restart();

                    var parentPath = RepositoryPath.GetParentPath(snPath);

                    BenchmarkCounter.IncrementBy(BenchmarkCounter.CounterName.GetParentPath, benchmarkTimer.ElapsedTicks);
                    benchmarkTimer.Restart();

                    var parent = Node.LoadNode(parentPath);
                    if (parent == null)
                    {
                        WriteError("Cannot load the parent: " + snPath, context);
                        return;
                    }

                    BenchmarkCounter.IncrementBy(BenchmarkCounter.CounterName.LoadParent, benchmarkTimer.ElapsedTicks);
                    benchmarkTimer.Restart();



                    var contentName = RepositoryPath.GetFileName(snPath);
                    var content = SnContent.CreateNew(contentTypeName, parent, contentName);

                    BenchmarkCounter.IncrementBy(BenchmarkCounter.CounterName.ContentCreate, benchmarkTimer.ElapsedTicks);
                    benchmarkTimer.Restart();

                    //---- create binary

                    if (contentTypeName == "File")
                    {
                        var fsPath = GetRequestParameter("fspath");
                        if (String.IsNullOrEmpty(snPath))
                        {
                            WriteError("Parameter 'fspath' cannot be null or empty if the content type is 'File'.", context);
                            return;
                        }

                        using (var stream = context.Request.InputStream)
                        {

                            var binaryData = new BinaryData();
                            binaryData.FileName = fsPath; //.Replace("$amp;", "&");
                            binaryData.SetStream(stream);

                            content["Binary"] = binaryData;
                            BenchmarkCounter.IncrementBy(BenchmarkCounter.CounterName.BinarySet, benchmarkTimer.ElapsedTicks);
                            benchmarkTimer.Restart();


                            using (new SenseNet.ContentRepository.Storage.Security.SystemAccount())
                                content.Save();
                        }
                    }
                    else
                    {
                        BenchmarkCounter.IncrementBy(BenchmarkCounter.CounterName.BinarySet, benchmarkTimer.ElapsedTicks);
                        benchmarkTimer.Restart();

                        content.Save();
                    }

                    BenchmarkCounter.IncrementBy(BenchmarkCounter.CounterName.FullSave, benchmarkTimer.ElapsedTicks);
                    benchmarkTimer.Restart();

                }
            }
            catch (Exception e)
            {
                //WriteError(String.Concat(e.Message, "\r", e.StackTrace), context);
                Logger.WriteException(e);
                WriteError(e, context);
                return;
            }

            WriteCounters(context);

            context.Response.StatusCode = 200;
            context.Response.Write("ok");
        }
示例#17
0
        private void CreateOrModifyCacheFile(BinaryData cacheBinary, bool compress)
        {
            SN.File f = null;
            MemoryStream cacheStream = new MemoryStream();

            if (compress)
            {
                GZipOutputStream gzipStream = new GZipOutputStream(cacheStream);
                byte[] buff = Encoding.ASCII.GetBytes(this._content.ToCharArray());
                gzipStream.Write(buff, 0, buff.Length);
                gzipStream.Flush();
                gzipStream.Close();

                // set compressed binary
                byte[] compressedData = cacheStream.ToArray();
                cacheBinary.SetStream(new MemoryStream(compressedData));
            } else
                cacheBinary.SetStream(Tools.GetStreamFromString(_content));

            // gets cache file or creates a new one, the new stream will be saved in both cases
            if (!Node.Exists(FullCacheFilePath))
            {
				f = SN.File.CreateByBinary(this.CacheFolder, cacheBinary);
                f.Name = _cacheFile;
            }
            else
            {
				f = Node.Load<SN.File>(this.FullCacheFilePath);
                f.Binary = cacheBinary;
            }
            f.Save();

        }
示例#18
0
        protected override bool ParseValue(string value)
        {
            var binaryData = new BinaryData();
			binaryData.SetStream(Tools.GetStreamFromString(value));
            this.SetData(binaryData);
            return true;
        }
示例#19
0
        /// <summary>
        /// Creates BinaryData from HttpPostedFile
        /// </summary>
        /// <param name="file"></param>
        /// <returns></returns>
        public static BinaryData CreateBinaryData(HttpPostedFile file)
        {
            BinaryData result = new BinaryData();

            string fileName = file.FileName;
            if (file.FileName.LastIndexOf("\\") > -1)
                fileName = file.FileName.Substring(file.FileName.LastIndexOf("\\") + 1);

            result.FileName = new BinaryFileName(fileName);
            result.ContentType = file.ContentType;
            result.SetStream(file.InputStream);

            return result;
        }
示例#20
0
		private void SaveMasterPage(MasterPage masterPage, string textData)
		{
            BinaryData binaryData = new BinaryData();

            if (masterPage.Binary != null)
            {
                masterPage.Binary.SetStream(Tools.GetStreamFromString(textData));
                masterPage.Binary.FileName = new BinaryFileName(ASPX);
            }
            else
            {
                
                binaryData.SetStream(Tools.GetStreamFromString(textData));
                binaryData.FileName = new BinaryFileName(ASPX);
                masterPage.Binary = binaryData;
            }
            masterPage.Save();
		}
示例#21
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;
        }
示例#22
0
		public BinaryData GetASPXBinaryByPageTemplate(Page page, PageTemplate pageTemplate)
		{
			if (page == null)
			{
				throw new ArgumentNullException("page");
			}

			if (pageTemplate == null)
			{
				throw new ArgumentNullException("pageTemplate");
			}

			BinaryData binaryData = new BinaryData();
            if (page.Binary != null)
            {
				binaryData = page.Binary;
			}

			string pageTmp = Tools.GetStreamString(pageTemplate.Binary.GetStream());
			IList<object> fragments = SplitPageTemplate(pageTmp);
			StringBuilder aspx = new StringBuilder();

            //MasterPage is inside the PageTemplates folder.
            aspx.AppendFormat(ASPXHEADER, string.Concat("/", GetFileNameWithoutExt(pageTemplate.Name), MASTER), Repository.PageTemplatesFolderPath);
			for (int i = 0; i < fragments.Count; i++)
			{
				if (fragments[i] is PageZone)
				{
					PageZone zone = fragments[i] as PageZone;
					aspx.AppendFormat(WEBPARTZONE, zone.Name, zone.InnerText, zone.AttrListText);
				}
			}

			binaryData.SetStream(Tools.GetStreamFromString(aspx.ToString()));
			binaryData.FileName = new BinaryFileName (ASPX);
			binaryData.ContentType = ASPXCONTENTTYPE;

			return binaryData;
		}
示例#23
0
        public void File_CanCreateByBinary()
        {
            Node parent = Repository.Root;
            BinaryData binary = new BinaryData();
			binary.SetStream(TestTools.GetTestStream());

            File target = File.CreateByBinary(Repository.Root, binary);

            Assert.IsNotNull(target.Size, "Size is null.");
            Assert.IsFalse(target.Size == 0, "Size is 0.");


        }
示例#24
0
        // -----------------------------------------------------------
        // -----------------------------------------------------------

        #region Helpers
        
        private BinaryData CreateBinaryDataFromString(string stringToTransform)
        {
            Stream streamFromString = Tools.GetStreamFromString(stringToTransform);

            BinaryData  binaryDataFromStream = new BinaryData();
            binaryDataFromStream.SetStream(streamFromString);

            return binaryDataFromStream;
        }
		private PageTemplate CreatePageTemplate(string zoneName, string parentPath)
		{
            var folderpath = parentPath ?? this.TestRoot.Path;

			PageTemplate pageTemplate = null;
            pageTemplate = Node.LoadNode(string.Concat(folderpath, "/TestPageTemplate.html")) as PageTemplate;
			if (pageTemplate == null)
			{
                var parent = Node.LoadNode(folderpath);
                pageTemplate = new PageTemplate(parent);
				pageTemplate.Name = "TestPageTemplate.html";
			}
			
			BinaryData binaryData = new BinaryData();
			binaryData.FileName = new BinaryFileName("TestPageTemplate.html");
			string streamString = string.Concat(
										"<html>",
										"	<body>",
										"		<snpe-zone name=\"ZoneName_", zoneName, "\"></snpe-zone>",
										"		<snpe-edit name=\"Editor\"></snpe-edit>",
										"		<snpe-catalog name=\"Catalog\"></snpe-catalog>",
										"		<snpe:PortalRemoteControl2 ID=\"RemoteControl1\" runat=\"server\" />",
										"	</body>",
										"</html>"
									);
			Stream stream = Tools.GetStreamFromString(streamString);
			binaryData.SetStream(stream);

			pageTemplate.Binary = binaryData;
			pageTemplate.Save();

			return pageTemplate;
		}
示例#26
0
        public static void SetAttachment(SenseNet.ContentRepository.File file, FileAttachment fileAttachment)
        {
            using (var stream = new MemoryStream())
            {
                fileAttachment.Load(stream);
                stream.Seek(0, SeekOrigin.Begin);

                var binaryData = new BinaryData();
                binaryData.SetStream(stream);
                file.Binary = binaryData;
                file.Save();
            }
        }
		public void PageTemplateManager_CheckPageTemplateBinaryStream_NullStreamTest()
		{
			PageTemplate pageTemplate = new PageTemplate(this.TestRoot);
			BinaryData binaryData = new BinaryData();
			binaryData.SetStream(null);
			pageTemplate.Binary = binaryData;

			bool expected = false;
			bool actual = SenseNet.ContentRepository.Tests.SenseNet_Portal_PageTemplateManagerAccessor.CheckPageTemplateBinaryStream(pageTemplate);

			Assert.AreEqual(expected, actual, "PageTemplateManager.CheckPageTemplateBinaryStream did not return the expected value.");
		}
示例#28
0
        private void HandleAuthorPutDocument(HttpContext context, string firstLine, System.IO.Stream resultStream)
        {
            // firstline: method=put document:14.0.0.6009&service_name=/Root/Sites/Default_Site/workspaces/Project/budapestprojectworkspace/&document=[document_name=Document_Library/Aenean semper.doc;meta_info=[]]&put_option=edit&comment=&keep_checked_out=false
            var serviceNameIdx = firstLine.IndexOf("&service_name=");
            var workspacePathIdx = serviceNameIdx + "&service_name=".Length;
            var documentIdx = firstLine.IndexOf("&document=[document_name=");
            var documentPathIdx = documentIdx + "&document=[document_name=".Length;

            var workspacePath = firstLine.Substring(workspacePathIdx, documentIdx - workspacePathIdx);
            var documentPath = firstLine.Substring(documentPathIdx, firstLine.IndexOf(';') - documentPathIdx);

            //System.Diagnostics.Trace.Write("   FPP put document workspace: " + workspacePath);
            //System.Diagnostics.Trace.Write("   FPP put document doc path: " + documentPath);

            var nodePath = RepositoryPath.Combine(workspacePath, documentPath);

            var file = Node.LoadNode(nodePath) as File;
            if (file != null)
            {
                var binaryData = new BinaryData();
                binaryData.SetStream(resultStream);
                file.SetBinary("Binary", binaryData);
                file.Save(SavingMode.KeepVersion);  // file is not checked in as of yet. office will try to check it in via lists.asmx
            }

            var docinfo = GetDocInfo(file);
            var responseStr = GetFormattedString(string.Format(PUTDOCUMENTSTR, docinfo));

            context.Response.Charset = "";
            context.Response.ContentType = "application/x-vermeer-rpc";
            context.Response.AddHeader("Content-Length", responseStr.Length.ToString());
            context.Response.AddHeader("Connection", "close");
            context.Response.Write(responseStr);
            context.Response.Flush();
            context.Response.End();
        }
示例#29
0
		internal static ContentType LoadOrCreateNew(IXPathNavigable contentTypeDefinitionXml)
		{
			//==== saves and puts the holder

			//-- #1 Determine name and parent's name
			XPathNavigator nav = contentTypeDefinitionXml.CreateNavigator().SelectSingleNode("/*[1]");
			string name = nav.GetAttribute("name", "");
			string parentTypeName = nav.GetAttribute("parentType", "");

			//-- #2 Load ContentType
			ContentType contentType = ContentTypeManager.Current.GetContentTypeByName(name);

			//-- #3 Parent Node: if it is loaded yet use it (ReferenceEqals)
			Node parentNode;
			if (String.IsNullOrEmpty(parentTypeName))
			{
				parentNode = (Folder)Node.LoadNode(Repository.ContentTypesFolderPath);
			}
			else
			{
				parentNode = ContentTypeManager.Current.GetContentTypeByName(parentTypeName);
				if (parentNode == null)
					throw new ApplicationException(String.Concat(SR.Exceptions.Content.Msg_UnknownContentType, ": ", parentTypeName));
			}

			//-- #4 Create ContentType if it does not exist
			if (contentType == null)
			{
				contentType = new ContentType(parentNode);
				contentType.Name = name;
			}

			//-- #5 Update hierarchy if parent is changed
			if (contentType.ParentId != parentNode.Id)
			{
				throw new NotImplementedException("Change ContentType hierarchy is not implemented");
			}

			//-- #6 Set Binary data
			BinaryData binaryData = new BinaryData();
			binaryData.FileName = new BinaryFileName(name, ContentType.ContentTypeFileNameExtension);
			binaryData.SetStream(Tools.GetStreamFromString(contentTypeDefinitionXml.CreateNavigator().OuterXml));
			contentType.Binary = binaryData;

			//contentType.Save(false);
			//ContentTypeManager.Current.AddContentType(contentType, parentNode as ContentType);
			return contentType;
		}
示例#30
0
		private static void CreateTestPageTemplate()
		{
			PageTemplate pt = null;

			pt = new PageTemplate(Node.LoadNode(_rootNodePath));
			pt.Name = _testPageTemplateName;
			BinaryData binaryData = new BinaryData();
			binaryData.FileName = new BinaryFileName(_testPageTemplateName);
			string streamString = _pageTemplateHtml;

			Stream stream = Tools.GetStreamFromString(streamString);
			binaryData.SetStream(stream);

			pt.Binary = binaryData;
			pt.Save();

			_pageTemplatePath = pt.Path;
		}