Customizing MOSS Page Title

Dev 2009.10.22 17:25

default.master 페이지를 열어보게 되면 <HEAD> 태그 내에 다음과 같은 코드가 존재한다.

<Title ID="onetidTitle"><asp:ContentPlaceHolder id=PlaceHolderPageTitle runat="server"/></Title>

까보면 해당 마스터 페이지의 레이아웃에서 타이틀 명을 가져다가 보여주는 것이다.

MOSS 의 Page Title 을 변경하려면 '쉐어포인트 디자이너(SPDesigner)' 에서 해당 루트 싸이트의 default.aspx 파일을 연다.

열게되면 체크아웃 여부와 함께 default.aspx 페이지가 아니라 해당 페이지의 레이아웃 파일이 열리게 된다.

해당 파일의 소스를 보면 상단부에 다음과 같은 코드가 존재한다.

<asp:Content ContentPlaceHolderID="PlaceHolderPageTitle" runat="server">
    <SharePoint:ProjectProperty Property="Title" runat="server"/>
</asp:Content>

<SharePoint:ProjectProperty Property="Title" runat="server"/> 이 부분이 해당 페이지의 타이틀을 넣어주는 부분이다.
따라서 해당 컨트롤을 제거하고 고정으로 입력해줄 텍스를 넣어주어도 상관 없다.

<asp:Content ContentPlaceHolderID="PlaceHolderPageTitle" runat="server">
    고정 페이지 타이틀임.
</asp:Content>

이런 식으로 말이다.

ex) 싸이트 서식이 '보고서 센터' 일때...

<asp:Content ContentPlaceHolderId="PlaceHolderPageTitle" runat="server">
 <SharePoint:EncodedLiteral runat="server" text="<%$Resources:wss,multipages_homelink_text%>"
       EncodeMethod="HtmlEncode"/>
-
 <SharePoint:ProjectProperty Property="Title" runat="server"/>
</asp:Content>


이렇게 넣어주게 되면 타이틀이 '홈 - 보고서 센터' 이런식으로 보이게 된다.

Posted by 레젼드 회사마

댓글을 달아 주세요


SharePoint Site 구축시 필요한 성능 및 용량 가이드 라인

요소

Guideline

Content DB최대사이트 모음 개수

50,000

사이트모음하위에 최대 웹사이트 개수

250,000

사이트당 만들 있는 리스트 개수

2,000

목록당 넣을 있는 아이템 개수

10,000,000

문서라이브러리당 넣을 있는 문서 개수

2,000,000

문서라이브러리폴더당 최대문서 개수

2,000

파일하나당 최대 크기

2Gb

검색엔진이 인덱싱 있는SSP인덱싱아이템 최대 개수

50,000,000

사이트 모음별 검색 영역의 최대 개수

1,000

SSP사용자 프로파일 최대 개수

5,000,000


Posted by 레젼드 회사마

댓글을 달아 주세요

출처 : MSDN

- 요약
이 문서에서는 Visual Basic 컨트롤에서 IObjectSafety 인터페이스를 구현하여 컨트롤이 스크립팅과 초기화에 안전하다고 표시하는 방법을 설명합니다.
기본적으로 Visual Basic 컨트롤은 레지스트리의 구성 요소 범주 항목을 사용하여 컨트롤이 스크립팅과 초기화에 안전하다고 표시합니다.
IObjectSafety 인터페이스를 구현하는 방법이 더 많이 사용됩니다.
이 문서에는 Visual Basic 컨트롤에서 이 인터페이스를 구현하는 데 필요한 모든 코드가 들어 있습니다.

실제로 안전한 컨트롤에 대해서만 안전하다는 표시를 해야 합니다.
이 문서에서는 컨트롤이 스크립팅과 초기화에 안전하다고 표시하는 방법을 자세히 설명하지 않고 코드에서 이를 수행하는 방법만 보여 줍니다.
이에 대한 자세한 내용은 Internet Client SDK(Software Development Kit) 설명서의 구성 요소 개발(Component Development) 절에서 "ActiveX 컨트롤에 대한 안전한 초기화 및 스크립팅(Safe Initialization and Scripting for ActiveX Controls)"을 참조하십시오.

- 추가 정보
경고: 이 문서에서는 VarPtr, VarPtrArray, VarPtrStringArray, StrPtr 및 ObjPtr 함수 중 하나 이상에 대해 설명하지만 Microsoft 기술 지원 서비스에서는 이러한 함수를 지원하지 않습니다.
이러한 함수는 Visual Basic 설명서에서 다루지 않으며 이 기술 자료 문서에서 "있는 그대로" 제공됩니다.
Microsoft는 Visual Basic의 향후 릴리스에서 이러한 함수를 사용할 수 있게 된다고 보증하지 않습니다.
이러한 함수에 대한 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.


199824
  (http://support.microsoft.com/kb/199824/ ) Visual Basic에서 변수 주소를 가져오는 방법



다음 단계는 간단한 Visual Basic 컨트롤을 만들고 스크립팅과 초기화에 안전하다고 표시하는 방법을 보여 줍니다.


1. 이 예제에서 만드는 모든 파일을 저장할 수 있는 새 폴더를 만듭니다.


2. Visual Basic 6.0 CD-ROM에서 OLE 자동화 형식 라이브러리 생성기를 가져옵니다. 이 생성기를 가져오려면 \Common\Tools\VB\Unsupprt\Typlib\ 폴더에 있는 네 파일을 모두 프로젝트 폴더로 복사합니다.
 
  참고
: Visual Basic 5.0의 경우 \VB5.0\Tools\Unsupprt\Typlib\ 폴더에 있는 파일을 모두 복사하십시오.


3. 다음 텍스트를 메모장으로 복사하고 프로젝트 폴더에 Objsafe.odl이라는 이름으로 파일을 저장합니다.

    [
        uuid(C67830E0-D11D-11cf-BD80-00AA00575603),
        helpstring("VB IObjectSafety Interface"),      
        version(1.0)
    ]
    library IObjectSafetyTLB{
        importlib("stdole2.tlb");
        [
            uuid(CB5BDC81-93C1-11cf-8F20-00805F2CD064),
            helpstring("IObjectSafety Interface"),
            odl
        ]
        interface IObjectSafety:IUnknown {
            [helpstring("GetInterfaceSafetyOptions")]
            HRESULT GetInterfaceSafetyOptions(
                [in]  long  riid,
                [in]  long *pdwSupportedOptions,
                [in]  long *pdwEnabledOptions);
                [helpstring("SetInterfaceSafetyOptions")]
                HRESULT SetInterfaceSafetyOptions(
                    [in]  long  riid,
                    [in]  long  dwOptionsSetMask,
                    [in]  long  dwEnabledOptions);
        }
    }


4. 명령 프롬프트에서 CD <path> 명령을 사용하여 프로젝트 폴더로 이동하고 다음 명령을 입력하여 .tlb 파일을 생성합니다.

    MKTYPLIB objsafe.odl /tlb objsafe.tlb


5. Visual Basic에서 ActiveX 컨트롤 프로젝트를 만듭니다.
   속성 목록에서 프로젝트 이름을 IObjSafety로 변경하고 컨트롤 이름을 DemoCtl로 변경합니다.
    cmdTest라는 CommandButton을 컨트롤에 추가합니다.
    cmdTest의 Click 이벤트 처리기에 MsgBox "Test" 문을 추가합니다.
   프로젝트 메뉴에서 References를 누르고 앞에서 만든 Objsafe.tlb를 찾아 추가합니다.
   다음 코드를 사용하여 새 모듈을 프로젝트에 추가하고 모듈 이름을 basSafeCtl로 지정합니다.

    Option Explicit

    Public Const IID_IDispatch = "{00020400-0000-0000-C000-000000000046}"
    Public Const IID_IPersistStorage = _
        "{0000010A-0000-0000-C000-000000000046}"
    Public Const IID_IPersistStream = _
        "{00000109-0000-0000-C000-000000000046}"
    Public Const IID_IPersistPropertyBag = _
        "{37D84F60-42CB-11CE-8135-00AA004BB851}"

    Public Const INTERFACESAFE_FOR_UNTRUSTED_CALLER = &H1
    Public Const INTERFACESAFE_FOR_UNTRUSTED_DATA = &H2
    Public Const E_NOINTERFACE = &H80004002
    Public Const E_FAIL = &H80004005
    Public Const MAX_GUIDLEN = 40

    Public Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" _
        (pDest As Any, pSource As Any, ByVal ByteLen As Long)
    Public Declare Function StringFromGUID2 Lib "ole32.dll" (rguid As _
        Any, ByVal lpstrClsId As Long, ByVal cbMax As Integer) As Long

    Public Type udtGUID
        Data1 As Long
        Data2 As Integer
        Data3 As Integer
        Data4(7) As Byte
    End Type

    Public m_fSafeForScripting As Boolean
    Public m_fSafeForInitializing As Boolean
    
    Sub Main()
        m_fSafeForScripting = True
        m_fSafeForInitializing = True
    End Sub


6. 프로젝트 속성에서 시작 개체를 Sub Main으로 변경하여 위의 Sub Main을 실행합니다.
   m_fSafeForScriptingm_fSafeForInitializing 변수를 사용하여 스크립팅과 초기화 변수에 안전한 값을 지정합니다.
   컨트롤의 코드 창을 엽니다.
   다음 코드 줄을 선언 구역에서 Option Explicit 바로 다음 또는 처음에 추가합니다.

    Implements IObjectSafety


7.
다음 두 프로시저를 컨트롤 코드에 복사합니다.

    Private Sub IObjectSafety_GetInterfaceSafetyOptions(ByVal riid As _
        Long, pdwSupportedOptions As Long, pdwEnabledOptions As Long)

        Dim Rc      As Long
        Dim rClsId  As udtGUID
        Dim IID     As String
        Dim bIID()  As Byte

        pdwSupportedOptions = INTERFACESAFE_FOR_UNTRUSTED_CALLER Or _
                              INTERFACESAFE_FOR_UNTRUSTED_DATA

        If (riid <> 0) Then
            CopyMemory rClsId, ByVal riid, Len(rClsId)
            
            bIID = String$(MAX_GUIDLEN, 0)
            Rc = StringFromGUID2(rClsId, VarPtr(bIID(0)), MAX_GUIDLEN)
            Rc = InStr(1, bIID, vbNullChar) - 1
            IID = Left$(UCase(bIID), Rc)

            Select Case IID
                Case IID_IDispatch
                    pdwEnabledOptions = IIf(m_fSafeForScripting, _
                    INTERFACESAFE_FOR_UNTRUSTED_CALLER, 0)
                    Exit Sub
                Case IID_IPersistStorage, IID_IPersistStream, _
                    IID_IPersistPropertyBag
                    pdwEnabledOptions = IIf(m_fSafeForInitializing, _
                    INTERFACESAFE_FOR_UNTRUSTED_DATA, 0)
                    Exit Sub
                Case Else
                    Err.Raise E_NOINTERFACE
                    Exit Sub
            End Select
        End If
    End Sub

    Private Sub IObjectSafety_SetInterfaceSafetyOptions(ByVal riid As _
    Long, ByVal dwOptionsSetMask As Long, ByVal dwEnabledOptions As Long)
        Dim Rc          As Long
        Dim rClsId      As udtGUID
        Dim IID         As String
        Dim bIID()      As Byte

        If (riid <> 0) Then
            CopyMemory rClsId, ByVal riid, Len(rClsId)
            bIID = String$(MAX_GUIDLEN, 0)
            Rc = StringFromGUID2(rClsId, VarPtr(bIID(0)), MAX_GUIDLEN)
            Rc = InStr(1, bIID, vbNullChar) - 1
            IID = Left$(UCase(bIID), Rc)
            
            Select Case IID
                Case IID_IDispatch
                    If ((dwEnabledOptions And dwOptionsSetMask) <> _
                    INTERFACESAFE_FOR_UNTRUSTED_CALLER) Then
                        Err.Raise E_FAIL
                        Exit Sub
                    Else
                        If Not m_fSafeForScripting Then
                            Err.Raise E_FAIL
                        End If
                        Exit Sub
                    End If

                Case IID_IPersistStorage, IID_IPersistStream, _
                IID_IPersistPropertyBag
                    If ((dwEnabledOptions And dwOptionsSetMask) <> _
                    INTERFACESAFE_FOR_UNTRUSTED_DATA) Then
                        Err.Raise E_FAIL
                        Exit Sub
                    Else
                        If Not m_fSafeForInitializing Then
                            Err.Raise E_FAIL
                        End If
                        Exit Sub
                    End If
                
                Case Else
                    Err.Raise E_NOINTERFACE
                    Exit Sub
            End Select
        End If
    End Sub


11.
파일 메뉴에서 프로젝트와 파일을 저장합니다. 프로젝트에서 OCX 파일을 만듭니다.
       이제 컨트롤이 IObjectSafety 인터페이스를 구현합니다.
       테스트하려면 .htm 파일에 컨트롤을 삽입합니다.



- 참조
MkTypLib.exe는 이전에 Microsoft Visual Studio 6.0에 포함된 Platform SDK(Software Development Kit)와 함께 제공된 오래된 도구입니다. Visual Studio 6.0에 포함된 Platform SDK를 설치하는 방법에 대한 자세한 내용은 다음 Microsoft 웹 사이트를 참조하십시오.

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/sdkintro/sdkintro/installing_the_platform_sdk_with_visual_studio.asp (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/sdkintro/sdkintro/installing_the_platform_sdk_with_visual_studio.asp) (영문)

최신 Platform SDK에는 MkTypLib.exe 도구가 들어 있지 않습니다. 어떤 Microsoft 제품에 형식 라이브러리 컴파일러(MkTypLib.exe)가 제공되는지에 대한 자세한 내용을 보려면 다음 Microsoft DLL 도움말 데이터베이스에서 MkTypLib.exe라는 파일 이름을 검색하십시오.

http://support.microsoft.com/dllhelp (http://support.microsoft.com/?scid=http%3a%2f%2fsupport.microsoft.com%2fservicedesks%2ffileversion%2fdllinfo.asp)

MkTypLib를 실행하는 방법에 대한 자세한 내용은 다음 Microsoft 웹 사이트를 참조하십시오.

http://www.microsoft.com/msj/0297/visualprog/visualprog0297.aspx (http://www.microsoft.com/msj/0297/visualprog/visualprog0297.aspx) (영문)

자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.

161873  (http://support.microsoft.com/kb/161873/ ) HOWTO: MFC 컨트롤을 스크립트 사용에 안전(Safe for Scripting)/초기화에 안전(Safe for Initialization)으로 표시
143258  (http://support.microsoft.com/kb/143258/ ) 형식 라이브러리에서 상수 및 DLL 선언을 만드는 방법
131105  (http://support.microsoft.com/kb/131105/ ) 샘플: TYPEBLD: ICreateTypeLib 및 ICreateTypeInfo를 사용하는 방법

IObjectSafety 인터페이스에 대한 자세한 내용은 다음 Microsoft 웹 사이트를 참조하십시오.

http://msdn.microsoft.com/workshop/components/com/reference/ifaces/iobjectsafety/iobjectsafety.asp (http://msdn.microsoft.com/workshop/components/com/reference/ifaces/iobjectsafety/iobjectsafety.asp) (영문)

ActiveX 컨트롤의 초기화 및 스크립팅 안전에 대한 자세한 내용은 다음 Microsoft 웹 사이트를 참조하십시오.

http://msdn.microsoft.com/workshop/components/activex/safety.asp (http://msdn.microsoft.com/workshop/components/activex/safety.asp) (영문)

Microsoft Internet Explorer용 웹 기반 솔루션 개발에 대한 자세한 내용을 보려면 다음 Microsoft 웹 사이트를 방문하십시오.

http://www.microsoft.com/korea/msdn/ie/ (http://www.microsoft.com/korea/msdn/ie/)

http://support.microsoft.com/iep (http://support.microsoft.com/iep) (영문)
Posted by 레젼드 회사마

댓글을 달아 주세요