2010-01-12 2 views
2

내 페이지 작성자가 페이지 편집기에서 사용할 사용자 지정 편집 컨트롤을 만들고 있습니다. 물론 이것은 사용자가 [저장] 버튼을 클릭 할 때 데이터가 항목에 저장되도록하려는 것입니다.Sitecore 페이지 편집기에서 저장 이벤트를 연결하려면 어떻게해야합니까?

어떻게 처리하나요? 나는 많은 서류를 훑어 보았다. 나는 뭔가를 놓치고있는 것처럼 느낀다. 확실히 여기에 내 이벤트 처리기를 추가 할 수 있습니까?

참고 :이 페이지 편집기에서 인라인 편집되고 싶어요. 그것은 Sitecore에서 누락 된 아주 기본적인 기능처럼 보입니다. 나는 체크 박스 필드에 대해서도 체크 박스 항목을 사용하는 것을 확실히 볼 수있다. (얼마나 미친 개념인가?!?!). 편집을위한 기본 제공 옵션은 텍스트 상자 또는 RichText 편집기 인 것 같습니다. 나는 명백한 것을 놓치고 있는가?

답변

2

확인 ... Sitecore 지원의 도움 후, 나는 마침내이 질문에 대한 답을 가지고있다. Page Editor가 필드의 새 값을 가져 오려면 Sitecore.WebEdit.setFieldValue() javascript 함수를 호출해야합니다. 이렇게하면 Save 또는 Save/Close 버튼을 클릭 할 때 PageEditor가 읽는 숨겨진 입력 필드가 생성됩니다.

//RenderItem is the item in question, DropListField is the string name of 
//the target Droplist field we want rendered 
string itemID = RenderItem.ID.ToShortID().ToString(); 
string fieldID = RenderItem.Fields[DropListField].ID.ToShortID().ToString(); 
string language = RenderItem.Language.ToString(); 
string version = RenderItem.Version.ToString(); 
string revision = RenderItem[FieldIDs.Revision].Replace("-", string.Empty); 

ddlList.Attributes.Add("onchange", string.Format("var ddl = getElementById('{5}');var itemURI = new Sitecore.ItemUri('{0}','{1}','{2}','{3}');Sitecore.WebEdit.setFieldValue(itemURI,'{4}',ddl.options[ddl.selectedIndex].value);",itemID,language,version,revision,fieldID,ddlList.ClientID)); 

그래서, 기본적으로 우리는 단지이 Sitecore JS 함수를 호출있는 DropDownList에 대한 핸들러 onchange를 클라이언트 측을 추가합니다. 참고 : Sitecore 6.2이 필요하다고 생각합니다.

0

내가 지정 컨트롤을 구축 할 필요가있을 때, 나는 일반 모드에서 사용하고 그냥 SC 사용 : 사용자가 편집 모드에있는 동안 텍스트 (또는 무엇이든). 그렇게하면 혼전없이 모든 Sitecore 장점을 얻을 수 있습니다.

<MultiView> 
    <View id=NormalView> 
    <MyAwesomeCustomControl /> 
    </View> 
    <View id=EditView> 
    <sc:Text /> 
    </View> 
</MultiView> 

는 그 다음에 코드 숨김 오른쪽 모드에 맞는보기를 선택해야합니다 이렇게하는 한 가지 방법은 좀 보이는 좋아 이는 멀티 뷰를 사용하는 것입니다.

+0

불행히도, 이것은 내가 원하는 것의 정반대입니다. 내 항목에 대한 Droplist 필드를 편집 할 때 asp : DropDownList를 표시하려고합니다. 이렇게하면 사용자는 페이지 편집기를 종료하지 않고도 컨텐츠 편집기에서와 같이 드롭 다운에서 새 값을 선택할 수 있습니다. – Bryan

0

당신은 또한 당신이 필요로하는 정보를 편집 할 수있는 팝업을 불러 필드 편집기를 사용할 수 있습니다. 의이 예를 들어 가정 해 봅시다 당신이 할 : PAGEEDITOR (편집) 모드에서 누군가가 당신이 EditFrame 안에 넣어 HTML을 가리킬 때

<sc:EditFrame runat="server" Buttons="MyThing"> 
<!-- any html, or other controls --> 
</sc:EditFrame> 

그래서 그들은 팝업 메뉴가 나타납니다. 이 메뉴에서 원하는 수의 명령을 표시 할 수 있습니다. 보통 "편집"옵션을 사용하면 대화 상자가 열리고 트리의 컨텐트 항목에서 원하는 필드를 편집 할 수 있습니다.

사용 가능한 옵션을 구성하는 방법은 무엇입니까? Buttons 속성을 통해 코어 데이터베이스의/sitecore/content/Applications/WebEdit/Edit Frame 버튼 아래에있는 폴더를 가리켜 야합니다 (기본 예제를 참조). 또한 편집 할 필드를 설정할 수 있습니다. 위의 스 니펫에서 Sitecore는 MyThing이라는 폴더를 찾을 것으로 예상됩니다.

필드를 편집 할 항목을 어떻게 알 수 있습니까? 아무것도 지정하지 않으면 Context.Item이되고 다른 것을 원할 경우 editFrame 컨트롤의 datasource 속성을 사용하여 예를 들어 일부 ID로 설정합니다.

+0

감사합니다. 이것은 아마도 내가 끝낼 것입니다. INLINE 편집 옵션을 만드는 것이 너무 어렵다는 점이 조금 귀찮습니다. – Bryan

관련 문제