2012-05-02 21 views
9

Chúng tôi đang sử dụng SDL Tridion 2009 SP1. Chúng tôi đã triển khai một chức năng mới, một phần mở rộng trong CMS của chúng tôi, cho phép chúng tôi khóa trang. Nếu một trang bị khóa, nó không thể được xuất bản nữa (thông tin của trang bị khóa sẽ được giữ trong cơ sở dữ liệu được tạo cho phần mở rộng này).Mở rộng đến trạng thái biểu tượng trang trong SDL Trdidion 2009

Chúng tôi muốn thêm biểu tượng mới sẽ thông báo cho người dùng về trạng thái mới của trang.

Hiện nay có 4 sự kết hợp của các biểu tượng (không có hành động, kiểm tra, công bố, kiểm tra và công bố)

Vì tôi không có kinh nghiệm lâu năm với giao diện CMS Tôi muốn có một số giúp đỡ về việc tìm kiếm một giải pháp mà không có tác động đến hiệu suất và mà nó dễ thực hiện trong điều kiện không làm nhiều sửa đổi.

Dưới đây là cuộc điều tra của tôi về vấn đề này:

tôi nhận thấy rằng cách các biểu tượng là render trong các cms không phải là một cơ chế đơn giản mà có thể được cập nhật dễ dàng. Mỗi khi chúng ta bấm vào một mục ở phía bên trái của CMS, để hiển thị danh sách từ bên phải, một cuộc gọi ajax (với một yêu cầu xml) được thực hiện cho WebGUIResponder.aspx. trang.

Câu trả lời chúng tôi sẽ liên lạc lại là một xml có chứa các biểu tượng lĩnh vực thuộc tính

<tcm:ListItems xmlns:tcm="http://www.tridion.com/ContentManager/5.0" 
    ID="tcm:yyy-zzzz-4" Managed="68" ItemType="4"> 
    <tcm:Item ID="tcm:yyy-zzzzz-64" Type="64" Title="NotificationTest" 
     Modified="2011-05-09T09:42:27" FromPub="400 YYYY Website Master (EN-GB)" 
     IsNew="false" Icon="T64L0P1"/> 
</tcm:ListItems> 

Dựa trên sân Biểu tượng thuộc tính này (Biểu tượng = "T64L0P1) tên hình ảnh bắt đầu được xử lý.

  • Xe tăng T-64 = có nghĩa là nó là một trang
  • L0 = không được chọn
  • P1 = nó đã được xuất bản

Đối với một lĩnh vực như vậy kết quả tên hình ảnh sẽ là = T64.16x16.List.Published.gif

tôi không thể tìm thấy một cách để cập nhật lĩnh vực này thông qua xml trang, không phải là một thông tin đó là giữ trong xml nhưng đúng hơn là được xây dựng trong dll khi yêu cầuxml. (Một nơi nào đó dựa trên các lĩnh vực khác như được xuất bản và một trường nào khác mà trường Biểu tượng này được tính toán.)

Vì vậy, nếu không thể sửa đổi trường này, chúng tôi có thể có: Để tích hợp thay đổi của chúng tôi trong CMS sửa đổi của họ .dll (điều này cho khả năng tương thích với phiên bản mới của SDL Trdion là không tốt để sửa đổi trong dlll) và không thay đổi quá nhiều logic tôi đã suy nghĩ đến cách tiếp cận này.

Chúng tôi có thể thực hiện cuộc gọi Ajax mới đến một trang mới WebGUICheckPageLocked.aspx (cần được kiểm tra tác động của hiệu suất). Trong mã phía sau của trang này, chúng tôi có thể xác định xem trang có bị khóa hay không (sử dụng chức năng nội bộ của chúng tôi để xác định xem trang có bị khóa hay không chức năng này đã được thực hiện). Trong trang, chúng tôi sẽ thay đổi trường biểu tượng thành thứ gì đó T64L0P1E01 (thêm một số thông tin bổ sung sẽ cho phép chúng tôi xác định trạng thái mới của trang). Chúng tôi cũng sẽ sửa đổi chức năng javascript GetPNGIconName, sau đó chúng tôi có thể thực hiện kiểm tra thêm khi xem xét thông tin mới E01 ...)

Xin vui lòng nếu ai đó có ý tưởng tốt hơn về điều này, có thể nó là một cái gì đó dễ dàng có thể được thực hiện, có lẽ nó là một cách chúng ta có thể cập nhật các lĩnh vực biểu tượng.

Kind Regards, Cristina

+0

Chúc mừng bài đăng Tridion đầu tiên của bạn trên SO Cristina - Bạn cũng có thể muốn xem xét cam kết với đề xuất SDL Tridion trên Khu vực 51 tại http://area51.stackexchange.com/proposals/38335/tridion?referrer=eo63snjNlUWNn9xqeeO2NA2 –

+1

Xin chào Chris, Cảm ơn bạn rất nhiều vì đã giúp bạn với tất cả điều này. Tôi không bao giờ thêm bất kỳ câu hỏi nào trên diễn đàn cho đến bây giờ ngay cả khi tôi không phải là người mới trong lập trình. Tôi thực sự đánh giá cao sự giúp đỡ của bạn với điều này. – Cristina

Trả lời

5

tôi sẽ dán câu trả lời của tôi từ các diễn đàn ở đây, vì vậy mọi người có thể nhìn thấy (và có thể mang ý tưởng về cách để làm điều đó khác nhau?) ...

Năm 2011 Tôi sẽ sử dụng một Data Extender để thay đổi biểu tượng.

Vì đây là năm 2009, bạn sẽ cần phải sử dụng người tiền nhiệm kém thanh lịch hơn: Tiện ích mở rộng phản hồi GUI. Về cơ bản, bạn cần thao tác XML được trả về cho các yêu cầu liên quan (chẳng hạn như GetList trên một thư mục).

Tôi không thể tìm thấy ngay bất kỳ tài liệu nào về điều này - điều này không đáng ngạc nhiên vì đây là phiên bản cũ hơn. Nhưng nó nắm này:

  1. Tạo một assembly .NET có chứa một lớp học với chữ ký phương pháp sau đây và thuộc tính:
[ResponseMessageHandler] 
    public XmlDocument HandleMessage(XmlDocument messageXml, string userName, HttpContext httpContext, object tcmSession) 
  1. Trong phương pháp này, bạn có thể thay đổi các thiết lập biểu tượng trong XML dựa trên logic của riêng bạn.
  2. Trong tập tin cấu hình mở rộng, thêm một phần để móc vào câu trả lời cho các danh mục mà bạn quan tâm (thay thế "YourResponderExtension.dll" với tên của hội đồng bạn gia tăng):
<ProcessResponse> 
    <!-- GetList --> 
    <ExecuteWhen>/tcmapi:Message/tcmapi:Response/tcmapi:Request/tcmapi:GetList</ExecuteWhen>                      

    <!-- Handler for all of the above --> 
    <Execute>/bin/YourResponderExtension.dll</Execute> 
</ProcessResponse> 
  1. Thêm nhiều phần tử hơn trước khi áp dụng - và làm cho truy vấn XPath cụ thể nhất có thể để tránh phần mở rộng của bạn được gọi không cần thiết. Bạn cũng có thể cần kiểm tra nhiều trường hợp hơn trong mã .NET mà bạn không thể thực hiện với truy vấn XPath.
  2. Nén phần mở rộng của bạn và triển khai nó bằng TcmExtensionInstaller.exe.

Từ văn bản của bạn Tôi cho rằng bạn đã tìm cách tạo và đóng gói tiện ích trong năm 2009. Tôi hy vọng rằng các bước nhỏ này có thể giúp bạn bắt đầu.

Nếu bạn gặp bất kỳ sự cố hoặc câu hỏi tiếp theo nào, chỉ cần cho tôi biết và tôi sẽ xem tôi có thể trả lời chúng không.

Các vấn đề liên quan