2012-04-04 33 views
6

Trong Alfresco Chia sẻ, khi bạn nhấp vào biểu tượng "Kho" trên thanh công cụ, bạn sẽ được đưa đến:Làm thế nào để bạn thay đổi liên kết Kho lưu trữ trên Alfresco Share?

/share/trang/kho

Tôi muốn thay đổi liên kết này để đưa người sử dụng tới thư mục nhà của họ, ví dụ:

/share/page/repository#filter=path|/User%2520Homes/g/gi/gillespie/patrick.j.gillespie

I figured này sẽ là một sự thay đổi đơn giản, tuy nhiên, tôi đang kéo tóc ra để cố gắng tìm ra cách thay đổi liên kết. Có ai biết những gì tôi chỉnh sửa để thay đổi liên kết đó không?

Cập nhật: Vì vậy, tôi có thể cập nhật các liên kết thông qua các thư mục chia sẻ-config-custom.xml, thay đổi dòng này:

<item type="link" id="repository">/repository</item> 

Nhưng tôi không chắc chắn làm thế nào để có được thông tin đường dẫn thư mục trong đó. Có ai có ý tưởng nào?

Trả lời

5

Điều này thật đáng ngạc nhiên, vì vậy tôi đã đoán tôi sẽ đăng những gì tôi đã làm trong trường hợp bất kỳ ai khác có cùng vấn đề.

Nếu bạn không sử dụng các thư mục nhà băm, bạn có thể cung cấp chức năng này bằng cách đơn giản cập nhật phần-config.xml của bạn hoặc chia sẻ-config-custom.xml như vậy:

<item type="link" id="repository">/repository#filter=path|/User%2520Homes/{userid}</item> 

Tuy nhiên, nếu bạn đang sử dụng các thư mục nhà băm, mọi thứ trở nên phức tạp một chút. Thay vì sửa đổi bất kỳ tệp XML nào, thay vào đó bạn sẽ tạo một tập lệnh web để nhận đường dẫn thư mục chính của người dùng và sau đó sửa đổi tệp mẫu chia sẻ để thay thế các liên kết đến kho lưu trữ. Dưới đây là một kịch bản web mẫu và các sửa đổi đối với tệp mẫu cần thiết để thực hiện việc này.

hfp.get.desc.xml

<webscript> 
    <shortname>Home Folder Path</shortname> 
    <description>Description here.</description> 
    <format default="json">argument</format> 
    <url>/demo/get-home-folder-path</url> 
    <authentication>user</authentication> 
</webscript> 

hfp.get.js

Kịch bản này đi qua lên cây nút và đặt cùng con đường của thư mục.

var myPerson = person;//used people.getPerson("patrick.j.gillespie") for testing 
var currentNode = myPerson.properties.homeFolder; 
var myDir = currentNode.properties["{http://www.alfresco.org/model/content/1.0}name"]; 
var count = 0; 

while (count < 100) { // prevent an infinite loop 
    currentNode = currentNode.parent; 
    if (currentNode === undefined || currentNode === null) {break;} 
    if (currentNode.properties === undefined) {break;} 
    myDir = currentNode.properties["{http://www.alfresco.org/model/content/1.0}name"] + "/" + myDir; 
    count++; 
} 
if (count === 100) { //something went wrong 
    myDir = ""; 
} 

model.homeFolder = myDir; 

hfp.get.json.ftl

{ 
    "homeFolder": "${homeFolder}" 
} 

Cuối cùng, bạn sẽ cần phải sửa đổi "ngoài trời-template.ftl" tập tin, nằm trong "share/WEB-INF/classes/alfresco/templates/org/alfresco/include ". Gần cuối tệp, thêm mã bên dưới. Nó sẽ gọi kịch bản lệnh trên để tìm đường dẫn thư mục chính, sau đó cập nhật liên kết Kho lưu trữ với liên kết thư mục chính.

<script type="text/javascript"> 
    var callback = { 
     success: function(res) { 
      var data = YAHOO.lang.JSON.parse(res.responseText); 
      var homeFolder = ""; 
      var hfIndex = data.homeFolder.indexOf("/User Homes/"); 
      if (hfIndex !== -1) { 
       homeFolder = data.homeFolder.substr(hfIndex+12); 
      } 

      var repoLinks = $("a[title='Repository']"); 
      for (var ii = 0; ii < repoLinks.length; ii++) { 
       repoLinks.get(ii).href = "/share/page/repository#filter=path|/User%2520Homes/" + homeFolder; 
      } 
     } 
    }; 
    var sUrl = Alfresco.constants.PROXY_URI + "demo/get-home-folder-path"; 
    var postData = ""; 
    var getData = ""; 
    var request = YAHOO.util.Connect.asyncRequest('GET', sUrl+getData, callback, postData); 
</script> 

Có thể có cách nào tốt hơn, nhưng tôi không thể tìm thấy. Tôi có lẽ sẽ tinh chỉnh nó sau này, và điều này chủ yếu chỉ nên được sử dụng như là một điểm khởi đầu, nhưng tôi figured tôi muốn đăng nó trong trường hợp bất cứ ai có một vấn đề tương tự.

1

Mặc dù không siêu thanh lịch, tôi đoán bạn có thể nối thêm thông số hoặc neo bằng cách sử dụng trình xử lý Javascript onclick trên liên kết. Không hoàn toàn chắc chắn webscript nào hiển thị thanh công cụ, nhưng đó có thể là một nơi tốt để đặt tùy chỉnh.

+0

Tôi nghĩ rằng điều này cuối cùng sẽ là những gì tôi sẽ làm (tự động cập nhật liên kết ở phía máy khách). Có vẻ như "replaceUriTokens" trong header-min.js là nơi đặt liên kết. Tuy nhiên, thay đổi đó có thể mở một thùng giun khi tôi cập nhật Alfresco xuống đường. Thêm vào đó, tôi vẫn phải tìm cách để có được đường dẫn thư mục chính (có thể với một kịch bản web tùy chỉnh thông qua một cuộc gọi AJAX). Tôi sẽ phải suy nghĩ về điều này một chút. – patorjk

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