コード例 #1
0
		static SPFieldListTemplates()
		{
			__ListsDefinitions = new SPFieldDefinitionCollection();
			__ListsDefinitions.Add(new SPFieldDefinition("ID", "ID", "UserData.tp_ID"));
			__ListsDefinitions.Add(new SPFieldDefinition("Created", "Created", "UserData.tp_Created"));
			__ListsDefinitions.Add(new SPFieldDefinition("Created By", "Created_x0020_By", "Author.tp_Login"));
			__ListsDefinitions.Add(new SPFieldDefinition("Modified", "Modified", "UserData.tp_Modified"));
			__ListsDefinitions.Add(new SPFieldDefinition("Modified By", "Modified_x0020_By", "Editor.tp_Login"));
			__ListsDefinitions.Add(new SPFieldDefinition("ModerationStatus", "_ModerationStatus", "UserData.tp_ModerationStatus"));
			__ListsDefinitions.Add(new SPFieldDefinition("HasAttachments", "Attachments", "UserData.tp_HasAttachment"));

			__DocLibsDefinitions = new SPFieldDefinitionCollection();
			__DocLibsDefinitions.Add(new SPFieldDefinition("ID", "ID", "UserData.tp_ID"));
			__DocLibsDefinitions.Add(new SPFieldDefinition("Created", "Created", "UserData.tp_Created"));
			__DocLibsDefinitions.Add(new SPFieldDefinition("Created By", "Created_x0020_By", "Author.tp_Login"));
			__DocLibsDefinitions.Add(new SPFieldDefinition("Modified", "Modified", "UserData.tp_Modified"));
			__DocLibsDefinitions.Add(new SPFieldDefinition("Modified By", "Modified_x0020_By", "Editor.tp_Login"));
			__DocLibsDefinitions.Add(new SPFieldDefinition("ModerationStatus", "_ModerationStatus", "UserData.tp_ModerationStatus"));
			__DocLibsDefinitions.Add(new SPFieldDefinition("HasAttachments", "Attachments", "CAST(1 AS BIT)"));
			__DocLibsDefinitions.Add(new SPFieldDefinition("Folder", "Folder", "Docs.DirName"));
			__DocLibsDefinitions.Add(new SPFieldDefinition("Filename", "Filename", "Docs.LeafName"));
			__DocLibsDefinitions.Add(new SPFieldDefinition("ContentID", "ContentID", "Docs.Id"));
			__DocLibsDefinitions.Add(new SPFieldDefinition("Title", "Title", "nvarchar7"));

			__CustomLists = new SPFieldDefinitionCollection();
			__CustomLists.Add(new SPFieldDefinition("Title", "Title", "nvarchar1"));

			__ContactLists = new SPFieldDefinitionCollection();
			__ContactLists.Add(new SPFieldDefinition("Last Name", "Title", "nvarchar1"));
			__ContactLists.Add(new SPFieldDefinition("First Name", "FirstName", "nvarchar3"));
			__ContactLists.Add(new SPFieldDefinition("Full Name", "FullName", "nvarchar5"));
			__ContactLists.Add(new SPFieldDefinition("Email", "Email", "nvarchar6"));
			__ContactLists.Add(new SPFieldDefinition("Company", "Company", "nvarchar8"));
			__ContactLists.Add(new SPFieldDefinition("JobTitle", "JobTitle", "nvarchar9"));
			__ContactLists.Add(new SPFieldDefinition("WorkPhone", "WorkPhone", "nvarchar10"));
			__ContactLists.Add(new SPFieldDefinition("HomePhone", "HomePhone", "nvarchar11"));
			__ContactLists.Add(new SPFieldDefinition("CellPhone", "CellPhone", "nvarchar12"));
			__ContactLists.Add(new SPFieldDefinition("WorkFax", "WorkFax", "nvarchar13"));
			__ContactLists.Add(new SPFieldDefinition("WorkAddress", "WorkAddress", "ntext2"));
			__ContactLists.Add(new SPFieldDefinition("WorkCity", "WorkCity", "nvarchar14"));
			__ContactLists.Add(new SPFieldDefinition("WorkState", "WorkState", "nvarchar15"));
			__ContactLists.Add(new SPFieldDefinition("WorkZip", "WorkZip", "nvarchar16"));
			__ContactLists.Add(new SPFieldDefinition("WorkCountry", "WorkCountry", "nvarchar17"));
			__ContactLists.Add(new SPUrlFieldDefinition("WebPage", "WebPage", new string [] {"nvarchar18", "nvarchar19"}));
			__ContactLists.Add(new SPFieldDefinition("Comments", "Comments", "ntext3"));

			__TaskLists = new SPFieldDefinitionCollection();
			__TaskLists.Add(new SPFieldDefinition("Title", "Title", "nvarchar1"));
			__TaskLists.Add(new SPFieldDefinition("Priority", "Priority", "nvarchar2"));
			__TaskLists.Add(new SPFieldDefinition("PercentComplete", "PercentComplete", "float1"));
			__TaskLists.Add(new SPFieldDefinition("AssignedTo", "AssignedTo", "int1"));
			__TaskLists.Add(new SPFieldDefinition("Body", "Body", "ntext2"));
			__TaskLists.Add(new SPFieldDefinition("StartDate", "StartDate", "datetime1"));
			__TaskLists.Add(new SPFieldDefinition("DueDate", "DueDate", "datetime2"));

			__LinkLists = new SPFieldDefinitionCollection();
			__LinkLists.Add(new SPUrlFieldDefinition("URL", "URL", new string [] {"nvarchar2", "nvarchar3"}));
			__LinkLists.Add(new SPFieldDefinition("Comments", "Comments", "ntext2"));

			__AnnoucementLists = new SPFieldDefinitionCollection();
			__AnnoucementLists.Add(new SPFieldDefinition("Title", "Title", "nvarchar1"));
			__AnnoucementLists.Add(new SPFieldDefinition("Body", "Body", "ntext2"));
			__AnnoucementLists.Add(new SPFieldDefinition("Expires", "Expires", "datetime1"));
		}
コード例 #2
0
        private void DecodeFieldList()
        {
            SPFieldDefinitionCollection oTemplateFields = SPFieldListTemplates.GetTemplateFieldList(this.ServerTemplate);

            _Fields = new SPFieldDefinitionCollection();
            _Fields.AddRange(SPFieldListTemplates.GetBasicFieldList(this.ListType));              // add the default definitions available no matter the list template.

            if (_ListData.IsNull("Fields"))
            {
                // the field definition is NULL, that means no customization has been applied to the server template for this list.
                //
                // We get the default field definitions for the list template.
                _Fields.AddRange(oTemplateFields);
            }
            else
            {
                // the field definitions are specified, that means the default server template has been override with custom metadata.

                // there 2 main node types for field definitions.
                // FieldRef and Field.  I understood that FieldRef maps to a server template default definition and
                // Field is a custom definition.

                // For each fieldref, we try to get its definition from the template field definitions.
                // for each field, we are going to create a new instance of field definition based on the element attributes.

                System.Xml.XmlDocument oDoc = null;
                string sXML = "<Fields>" + _ListData["Fields"].ToString() + "</Fields>";

                //note: for an unknown reason, oDoc.LoadXml fails in debug (within the VS IDE)
                //      I get rid of the error by freeing memory (closing other opened application).
                //		That piss me off and I discovered that when using an XmlReader it does not generate this error...
                oDoc = new System.Xml.XmlDocument();
                System.IO.StringReader oXmlReader = new System.IO.StringReader(sXML);
                oDoc.Load(oXmlReader);

                System.Xml.XmlNodeList oNodes = oDoc.SelectNodes("Fields/*");

                if (oNodes != null)
                {
                    foreach (System.Xml.XmlElement oFieldXmlNode in oNodes)
                    {
                        SPFieldDefinition oDefinition     = null;
                        string            sAttributeValue = null;

                        switch (oFieldXmlNode.Name)
                        {
                        case "Field":
                            if (oFieldXmlNode.GetAttribute("Type") == "URL")
                            {
                                oDefinition = new SPUrlFieldDefinition(
                                    oFieldXmlNode.GetAttribute("DisplayName"),
                                    oFieldXmlNode.GetAttribute("Name"),
                                    new string[] { oFieldXmlNode.GetAttribute("ColName"), oFieldXmlNode.GetAttribute("ColName2") });
                            }
                            else if (oFieldXmlNode.GetAttribute("ColName").Length != 0)
                            {
                                oDefinition = new SPFieldDefinition(
                                    oFieldXmlNode.GetAttribute("DisplayName"),
                                    oFieldXmlNode.GetAttribute("Name"),
                                    oFieldXmlNode.GetAttribute("ColName"));
                            }
                            break;

                        case "FieldRef":
                            sAttributeValue = oFieldXmlNode.GetAttribute("ColName");
                            string sName = oFieldXmlNode.GetAttribute("Name");

                            if (sAttributeValue != null && sAttributeValue.Length > 0)
                            {
                                // we have a ColName value, we use it.
                                string sDisplayName = sName.Replace("_x0020_", " ");
                                oDefinition = new SPFieldDefinition(sDisplayName, sName, sAttributeValue);
                            }
                            else
                            {
                                // we do not have a ColName value.
                                // we search the server template definition to get the default column mapping
                                oDefinition = oTemplateFields.FindByInternalName(sName);
                            }
                            break;
                        }

                        if (oDefinition != null && _Fields.FindByInternalName(oDefinition.InternalName) == null)
                        {
                            _Fields.Add(oDefinition);
                        }
                    }
                }
            }
        }
コード例 #3
0
 public void AddRange(SPFieldDefinitionCollection items)
 {
     this.InnerList.AddRange(items);
 }
コード例 #4
0
ファイル: SPDatabase2007.cs プロジェクト: yahiaman/Tools
        private string GetListItemsQuery(SPListDefinition list, bool includeDocumentContent, bool countQuery)
        {
            StringBuilder sbSQL  = new StringBuilder();
            bool          bFirst = true;

            sbSQL.Append("SELECT ");

            if (countQuery)
            {
                sbSQL.Append("COUNT(*)");
            }
            else
            {
                SPFieldDefinitionCollection oFields = list.Fields;

                //Note: Beware, the includeDocumentContent works ONLY on document libraries.
                //	    for custom lists we must use GetListItemAttachmentsList method.
                if (includeDocumentContent)
                {
                    oFields = new SPFieldDefinitionCollection();
                    oFields.AddRange(list.Fields);
                    oFields.Add(new SPFieldDefinition("DocContent", "DocContent", "Docs.Content"));
                }

                foreach (SPFieldDefinition oField in oFields)
                {
                    if (bFirst)
                    {
                        bFirst = false;
                    }
                    else
                    {
                        sbSQL.Append(", ");
                    }

                    sbSQL.AppendFormat("{0} AS [{1}]", oField.GetCompletePhysicalName(), oField.DisplayName);
                }
            }

            // Join between UserData and Docs occurs only for Document Libraries
            // Docs.Type = 0 = File
            // Docs.Type = 1 = Folder

            sbSQL.Append(" FROM UserData ");

            if (list.ListType == SharepointListType.DocumenLibrary)
            {
                // 2007/05/01: Bug Fix - Thanks to Merijn Boom
                //  This query was returning some invalid records (one per folder found in document libraries)
                //  that caused the exporter to crash.
                //
                //  The fix is to perform an INNER JOIN instead of a LEFT JOIN to keep only records of type "File"
                //  (exluding entries of type "Folder") when processing a document library.
                //
                // 2009/01/29:	Bug Fix - Thanks to Finn Olesen for discovering the issue.
                //				I have removed a condition in the INNER JOIN (on Doc.Version = UserData.tp_version)
                //				that have nothing to do here.  The unique value of a document in a document library
                //				can be obtain with only the 2 following fields: ListId, DocLibRowId
                sbSQL.Append("INNER JOIN Docs ON (Docs.ListId = UserData.tp_ListId AND Docs.DocLibRowId = UserData.tp_ID AND Docs.Type = 0) ");
            }

            sbSQL.Append("LEFT JOIN UserInfo Author ON (Author.tp_ID = UserData.tp_Author AND Author.tp_SiteID = UserData.tp_SiteID) ");
            sbSQL.Append("LEFT JOIN UserInfo Editor ON (Editor.tp_ID = UserData.tp_Editor AND Editor.tp_SiteID = UserData.tp_SiteID) ");
            sbSQL.AppendFormat("WHERE UserData.tp_ListId = '{0}' ", list.ID);
            sbSQL.AppendFormat("AND UserData.tp_IsCurrent = CONVERT(bit, 1) ");

            return(sbSQL.ToString());
        }
コード例 #5
0
ファイル: SPListDefinition.cs プロジェクト: vjohnson01/Tools
		private void DecodeFieldList()
		{
			SPFieldDefinitionCollection oTemplateFields = SPFieldListTemplates.GetTemplateFieldList(this.ServerTemplate);

			_Fields = new SPFieldDefinitionCollection();
			_Fields.AddRange(SPFieldListTemplates.GetBasicFieldList(this.ListType));  // add the default definitions available no matter the list template.

			if (_ListData.IsNull("Fields"))
			{
				// the field definition is NULL, that means no customization has been applied to the server template for this list.
				// 
				// We get the default field definitions for the list template.
				_Fields.AddRange(oTemplateFields);
			}
			else
			{
				// the field definitions are specified, that means the default server template has been override with custom metadata.

				// there 2 main node types for field definitions.
				// FieldRef and Field.  I understood that FieldRef maps to a server template default definition and 
				// Field is a custom definition.

				// For each fieldref, we try to get its definition from the template field definitions.
				// for each field, we are going to create a new instance of field definition based on the element attributes.

				System.Xml.XmlDocument oDoc = null;
				string sXML = "<Fields>" + _ListData["Fields"].ToString() + "</Fields>";

				//note: for an unknown reason, oDoc.LoadXml fails in debug (within the VS IDE)
				//      I get rid of the error by freeing memory (closing other opened application).
				//		That piss me off and I discovered that when using an XmlReader it does not generate this error...
				oDoc = new System.Xml.XmlDocument();
				System.IO.StringReader oXmlReader = new System.IO.StringReader(sXML);
				oDoc.Load(oXmlReader);

				System.Xml.XmlNodeList oNodes = oDoc.SelectNodes("Fields/*");

				if (oNodes != null)
				{
					foreach (System.Xml.XmlElement oFieldXmlNode in oNodes)
					{
						SPFieldDefinition oDefinition = null;
						string sAttributeValue = null;
					
						switch (oFieldXmlNode.Name)
						{
							case "Field":
								if (oFieldXmlNode.GetAttribute("Type") == "URL")
									oDefinition = new SPUrlFieldDefinition(
										oFieldXmlNode.GetAttribute("DisplayName"),
										oFieldXmlNode.GetAttribute("Name"),
										new string[] { oFieldXmlNode.GetAttribute("ColName"), oFieldXmlNode.GetAttribute("ColName2") });
								else if (oFieldXmlNode.GetAttribute("ColName").Length != 0)
									oDefinition = new SPFieldDefinition(
										oFieldXmlNode.GetAttribute("DisplayName"),
										oFieldXmlNode.GetAttribute("Name"),
										oFieldXmlNode.GetAttribute("ColName"));
								break;

							case "FieldRef":
								sAttributeValue = oFieldXmlNode.GetAttribute("ColName");
								string sName = oFieldXmlNode.GetAttribute("Name");

								if (sAttributeValue != null && sAttributeValue.Length > 0)
								{
									// we have a ColName value, we use it.
									string sDisplayName = sName.Replace("_x0020_", " ");
									oDefinition = new SPFieldDefinition(sDisplayName, sName, sAttributeValue);
								}
								else
								{
									// we do not have a ColName value.
									// we search the server template definition to get the default column mapping
									oDefinition = oTemplateFields.FindByInternalName(sName);
								}
								break;
						}

						if (oDefinition != null && _Fields.FindByInternalName(oDefinition.InternalName) == null)
							_Fields.Add(oDefinition);
					}
				}

			}
		}
コード例 #6
0
		public void AddRange(SPFieldDefinitionCollection items)
		{
			this.InnerList.AddRange(items);
		}
コード例 #7
0
        static SPFieldListTemplates()
        {
            __ListsDefinitions = new SPFieldDefinitionCollection();
            __ListsDefinitions.Add(new SPFieldDefinition("ID", "ID", "UserData.tp_ID"));
            __ListsDefinitions.Add(new SPFieldDefinition("Created", "Created", "UserData.tp_Created"));
            __ListsDefinitions.Add(new SPFieldDefinition("Created By", "Created_x0020_By", "Author.tp_Login"));
            __ListsDefinitions.Add(new SPFieldDefinition("Modified", "Modified", "UserData.tp_Modified"));
            __ListsDefinitions.Add(new SPFieldDefinition("Modified By", "Modified_x0020_By", "Editor.tp_Login"));
            __ListsDefinitions.Add(new SPFieldDefinition("ModerationStatus", "_ModerationStatus", "UserData.tp_ModerationStatus"));
            __ListsDefinitions.Add(new SPFieldDefinition("HasAttachments", "Attachments", "UserData.tp_HasAttachment"));

            __DocLibsDefinitions = new SPFieldDefinitionCollection();
            __DocLibsDefinitions.Add(new SPFieldDefinition("ID", "ID", "UserData.tp_ID"));
            __DocLibsDefinitions.Add(new SPFieldDefinition("Created", "Created", "UserData.tp_Created"));
            __DocLibsDefinitions.Add(new SPFieldDefinition("Created By", "Created_x0020_By", "Author.tp_Login"));
            __DocLibsDefinitions.Add(new SPFieldDefinition("Modified", "Modified", "UserData.tp_Modified"));
            __DocLibsDefinitions.Add(new SPFieldDefinition("Modified By", "Modified_x0020_By", "Editor.tp_Login"));
            __DocLibsDefinitions.Add(new SPFieldDefinition("ModerationStatus", "_ModerationStatus", "UserData.tp_ModerationStatus"));
            __DocLibsDefinitions.Add(new SPFieldDefinition("HasAttachments", "Attachments", "CAST(1 AS BIT)"));
            __DocLibsDefinitions.Add(new SPFieldDefinition("Folder", "Folder", "Docs.DirName"));
            __DocLibsDefinitions.Add(new SPFieldDefinition("Filename", "Filename", "Docs.LeafName"));
            __DocLibsDefinitions.Add(new SPFieldDefinition("ContentID", "ContentID", "Docs.Id"));
            __DocLibsDefinitions.Add(new SPFieldDefinition("Title", "Title", "nvarchar7"));

            __CustomLists = new SPFieldDefinitionCollection();
            __CustomLists.Add(new SPFieldDefinition("Title", "Title", "nvarchar1"));

            __ContactLists = new SPFieldDefinitionCollection();
            __ContactLists.Add(new SPFieldDefinition("Last Name", "Title", "nvarchar1"));
            __ContactLists.Add(new SPFieldDefinition("First Name", "FirstName", "nvarchar3"));
            __ContactLists.Add(new SPFieldDefinition("Full Name", "FullName", "nvarchar5"));
            __ContactLists.Add(new SPFieldDefinition("Email", "Email", "nvarchar6"));
            __ContactLists.Add(new SPFieldDefinition("Company", "Company", "nvarchar8"));
            __ContactLists.Add(new SPFieldDefinition("JobTitle", "JobTitle", "nvarchar9"));
            __ContactLists.Add(new SPFieldDefinition("WorkPhone", "WorkPhone", "nvarchar10"));
            __ContactLists.Add(new SPFieldDefinition("HomePhone", "HomePhone", "nvarchar11"));
            __ContactLists.Add(new SPFieldDefinition("CellPhone", "CellPhone", "nvarchar12"));
            __ContactLists.Add(new SPFieldDefinition("WorkFax", "WorkFax", "nvarchar13"));
            __ContactLists.Add(new SPFieldDefinition("WorkAddress", "WorkAddress", "ntext2"));
            __ContactLists.Add(new SPFieldDefinition("WorkCity", "WorkCity", "nvarchar14"));
            __ContactLists.Add(new SPFieldDefinition("WorkState", "WorkState", "nvarchar15"));
            __ContactLists.Add(new SPFieldDefinition("WorkZip", "WorkZip", "nvarchar16"));
            __ContactLists.Add(new SPFieldDefinition("WorkCountry", "WorkCountry", "nvarchar17"));
            __ContactLists.Add(new SPUrlFieldDefinition("WebPage", "WebPage", new string [] { "nvarchar18", "nvarchar19" }));
            __ContactLists.Add(new SPFieldDefinition("Comments", "Comments", "ntext3"));

            __TaskLists = new SPFieldDefinitionCollection();
            __TaskLists.Add(new SPFieldDefinition("Title", "Title", "nvarchar1"));
            __TaskLists.Add(new SPFieldDefinition("Priority", "Priority", "nvarchar2"));
            __TaskLists.Add(new SPFieldDefinition("PercentComplete", "PercentComplete", "float1"));
            __TaskLists.Add(new SPFieldDefinition("AssignedTo", "AssignedTo", "int1"));
            __TaskLists.Add(new SPFieldDefinition("Body", "Body", "ntext2"));
            __TaskLists.Add(new SPFieldDefinition("StartDate", "StartDate", "datetime1"));
            __TaskLists.Add(new SPFieldDefinition("DueDate", "DueDate", "datetime2"));

            __LinkLists = new SPFieldDefinitionCollection();
            __LinkLists.Add(new SPUrlFieldDefinition("URL", "URL", new string [] { "nvarchar2", "nvarchar3" }));
            __LinkLists.Add(new SPFieldDefinition("Comments", "Comments", "ntext2"));

            __AnnoucementLists = new SPFieldDefinitionCollection();
            __AnnoucementLists.Add(new SPFieldDefinition("Title", "Title", "nvarchar1"));
            __AnnoucementLists.Add(new SPFieldDefinition("Body", "Body", "ntext2"));
            __AnnoucementLists.Add(new SPFieldDefinition("Expires", "Expires", "datetime1"));
        }
コード例 #8
0
ファイル: SPDatabase2007.cs プロジェクト: vjohnson01/Tools
		private string GetListItemsQuery(SPListDefinition list, bool includeDocumentContent, bool countQuery)
		{
			StringBuilder sbSQL = new StringBuilder();
			bool bFirst = true;

			sbSQL.Append("SELECT ");

			if (countQuery)
			{
				sbSQL.Append("COUNT(*)");
			}
			else
			{
				SPFieldDefinitionCollection oFields = list.Fields;

				//Note: Beware, the includeDocumentContent works ONLY on document libraries.
				//	    for custom lists we must use GetListItemAttachmentsList method.
				if (includeDocumentContent)
				{
					oFields = new SPFieldDefinitionCollection();
					oFields.AddRange(list.Fields);
					oFields.Add(new SPFieldDefinition("DocContent", "DocContent", "Docs.Content"));
				}

				foreach (SPFieldDefinition oField in oFields)
				{
					if (bFirst)
						bFirst = false;
					else
						sbSQL.Append(", ");

					sbSQL.AppendFormat("{0} AS [{1}]", oField.GetCompletePhysicalName(), oField.DisplayName);
				}
			}

			// Join between UserData and Docs occurs only for Document Libraries
			// Docs.Type = 0 = File
			// Docs.Type = 1 = Folder

			sbSQL.Append(" FROM UserData ");

			if (list.ListType == SharepointListType.DocumenLibrary)
			{
				// 2007/05/01: Bug Fix - Thanks to Merijn Boom
				//  This query was returning some invalid records (one per folder found in document libraries)
				//  that caused the exporter to crash.
				//
				//  The fix is to perform an INNER JOIN instead of a LEFT JOIN to keep only records of type "File" 
				//  (exluding entries of type "Folder") when processing a document library.
				//
				// 2009/01/29:	Bug Fix - Thanks to Finn Olesen for discovering the issue.
				//				I have removed a condition in the INNER JOIN (on Doc.Version = UserData.tp_version)
				//				that have nothing to do here.  The unique value of a document in a document library
				//				can be obtain with only the 2 following fields: ListId, DocLibRowId
				sbSQL.Append("INNER JOIN Docs ON (Docs.ListId = UserData.tp_ListId AND Docs.DocLibRowId = UserData.tp_ID AND Docs.Type = 0) ");
			}

			sbSQL.Append("LEFT JOIN UserInfo Author ON (Author.tp_ID = UserData.tp_Author AND Author.tp_SiteID = UserData.tp_SiteID) ");
			sbSQL.Append("LEFT JOIN UserInfo Editor ON (Editor.tp_ID = UserData.tp_Editor AND Editor.tp_SiteID = UserData.tp_SiteID) ");
			sbSQL.AppendFormat("WHERE UserData.tp_ListId = '{0}' ", list.ID);
			sbSQL.AppendFormat("AND UserData.tp_IsCurrent = CONVERT(bit, 1) ");

			return (sbSQL.ToString());
		}