1. SPFieldText(또는 다른 베이스 클래스)로부터 상속받은 새로운 클래스 파일 생성
   
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.SharePoint;
using Microsoft.SharePoint.WebControls;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace SK.EPIENCE.FieldType
{
    /// <summary>
    /// 필드 타입 정의
    /// </summary>
    public class Custom001FieldType : SPFieldText
    {
        public Custom001FieldType(SPFieldCollection fields, string fieldName)
            :base(fields, fieldName)
        {
            this.ShowInDisplayForm = false; //
        }

        public Custom001FieldType(SPFieldCollection fields, string typeName, string displayName)
            : base(fields, typeName, displayName)
        {
            this.ShowInDisplayForm = false; //
        }

        public override BaseFieldControl FieldRenderingControl
        {
            get
            {              
               BaseFieldControl fieldControl = new Custom001FieldTypeControl();
               fieldControl.FieldName = InternalName;
               return fieldControl;
            }
        }      
    }

    /// <summary>
    /// 필드 구현(Page상에 값을 래던링) 필요에 따라 메쏘드를 override 해서 사용
    /// </summary>
    public class Custom001FieldTypeControl : TextField
    {
        protected override void OnLoad(EventArgs e)
        {
            base.OnLoad(e);
         }

        public override string Text
        {
            set
            {
                if (!string.IsNullOrEmpty(value))
                {
                    base.Text = value + " ...";
                }
                else
                {
                    base.Text = value;
                }
            }
        }

        protected override void OnPreRender(EventArgs e)
        {
            base.OnPreRender(e);
         }
    }
}

2. 필드 정의에 관련된 XML File  생성

<?xml version="1.0" encoding="utf-8"?>

<FieldTypes>

  <FieldType>

    <Field Name="TypeName">Custom001FieldType </Field>

    <Field Name="ParentType">Text</Field>

    <Field Name="TypeDisplayName">Custom Name Field</Field>

    <Field Name="TypeShortDescription">Custom Name Text Field</Field>

    <Field Name="UserCreatable">TRUE</Field>

    <Field Name="ShowOnListCreate">TRUE</Field>

    <Field Name="ShowOnSurveyCreate">TRUE</Field>

    <Field Name="ShowOnDocumentLibrary">TRUE</Field>

    <Field Name="ShowOnColumnTemplateCreate">TRUE</Field>

    <Field Name="Sortable">TRUE</Field>

    <Field Name="Filterable">TRUE</Field>

    <Field Name="FieldTypeClass">SK.EPIENCE.FieldType, Custom001FieldType , Version=1.0.0.0, Culture=neutral, PublicKeyToken=xxxxxxxxxxxxxxxx</Field>

     </FieldType>

</FieldTypes>

3. 커스텀 필드가  있는  dll을  GAC 등록 또는 bin 디렉토리에 복사
4. ListTemplate 정의시에 참조해서 사용.



1. 모스
설정

     a. 기본 인증인 Windows 통합 인증 Web Application 대응하는 확장 Web Application 생성한다.(같은 포트도 사용 가능하다)

     b. ASP.NET membership Database 생성

    %System Drive%\Windows\Microsoft.NET\Framework\v2.0 디렉토리의 aspnet_regsql.exe 싱행해서 membership Database 생성

    MembershipSeede Tool 사용해 데스트 사용자 생성 (http://www.codeplex.com/CKS/Release/ProjectReleases.aspx?ReleaseId=7450 에서 다운로드)

      c. WebConfig 설정

    멤버 검색을 위한 와일드 문자열 등록

    <PeoplePickerWildcards>
     
    <clear />
     
    <add key="AspNetSqlMembershipProvider" value="%" />
     
    <add key="fbaMembers" value="%" />
    </PeoplePickerWildcards>

     

    DB연결설정

    <connectionStrings>
     
    <add name="fbaSQL" connectionString="data source=MOSSSUDEAN\OfficeServers;database=aspnetdb;user=sa2;password=Walkman;"

    providerName="System.Data.SqlClient" />

    </connectionStrings>

     

    인증 멤버십 등록

    <system.web>

    <membership defaultProvider="fbaMembers">
     
    <providers>
        <add connectionStringName="fbaSQL" applicationName="/"
          name="fbaMembers"
          type="System.Web.Security.SqlMembershipProvider, System.Web,
          Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
     
    </providers>
    </membership>
    <roleManager enabled="true" defaultProvider="fbaRoles">
     
    <providers>
        <add connectionStringName="fbaSQL" applicationName="/"
          name="fbaRoles" type="System.Web.Security.SqlRoleProvider, System.Web,
          Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
     
    </providers>
    </roleManager>
    ……………

     

    ## 모두 3군데의 Web Application Web.Config 수정해야 한다.

    확장서버는 위와 같이 처리하면 되고, 기본 Windows 인증과 Web Application 중앙관리 Web.Config  Role 부분에서 아래와 같이 주어야 한다.

    <roleManager enabled="true" defaultProvider="AspNetWindowsTokenRoleProvider">

     

    1. 모스 중앙관리에서 확장서버의 extranet 설정

    인증타입, Membership Provider, Role Manager 등록

    1. 중앙관리의 응용프로그램 정책에서 확장서버를 위한 사용자 등록(관리자 역할)

     

     

  1. .net Web Application 설정
    1. 어플리케이션 생성함.
    2. Web.Config 설정

    <connectionStrings>

    <add name="fbaSQL" connectionString="data source=MOSSSUDEAN\OfficeServers;database=aspnetdb;user=sa2;password=Walkman;" providerName="System.Data.SqlClient" />

    </connectionStrings> 

    <system.web>

    <membership defaultProvider="fbaMembers">

    <providers>

    <add connectionStringName="fbaSQL" applicationName="/" name="fbaMembers" type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />

    </providers>

    </membership>

    <roleManager enabled="true" defaultProvider="fbaRoles">

    <providers>

    <add connectionStringName="fbaSQL" applicationName="/" name="fbaRoles" type="System.Web.Security.SqlRoleProvider, System.Web,Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />

    </providers>

    </roleManager>

     

    <authentication mode="Forms">  부분은 모스 확장 서버것을 복사해서 붙이면 .

    <forms loginUrl="/_layouts/login.aspx" />

    </authentication>

    <identity impersonate="true" />

    <authorization>

    <deny users="?" />

    </authorization>

     

    1. Moss 확장 서버의 _Layouts 폴더 아래에 .net Web Application 추가하고 Form 인증으로 방식을 변경한다.

     

TAG Moss