2012-04-04 15 views
6

Alfresco शेयर में, जब आप टूलबार में "भंडार" आइकन पर क्लिक करें, तो आप पर ले जाया जाता:आप अल्फ्रेस्को शेयर पर रिपोजिटरी लिंक कैसे बदलते हैं?

/शेयर/पेज/भंडार

मैं करने के लिए उपयोगकर्ता लेने के लिए इस लिंक को बदलना चाहते हैं उनके घर फ़ोल्डर, उदाहरण:

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

मैं लगा यह एक सरल परिवर्तन हो सकता है, हालांकि, मैं लिंक को बदलने का तरीका जानने के लिए अपने बालों को खींच रहा हूं। क्या किसी को पता है कि मैं उस लिंक को बदलने के लिए क्या संपादित करता हूं?

अद्यतन: तो मैं, शेयर-config-custom.xml फ़ाइल के माध्यम से लिंक अद्यतन कर सकते हैं इस लाइन को बदलने:

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

लेकिन मुझे यकीन है कि कैसे में फ़ोल्डर पथ जानकारी पाने के लिए नहीं कर रहा हूँ क्या आप वहां मौजूद हैं। क्या किसी के पास कोई विचार है?

उत्तर

5

यह आश्चर्यजनक रूप से कठिन था, इसलिए मुझे लगा कि मैंने पोस्ट किया होगा अगर किसी और के पास कोई समस्या हो तो मैंने पोस्ट किया।

आप टुकड़ों में बांटा घर फ़ोल्डर का उपयोग नहीं कर रहे हैं, तो आप बस इतना की तरह अपना हिस्सा-config.xml या शेयर-config-custom.xml अपडेट करके इस कार्यक्षमता प्रदान कर सकते हैं:,

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

लेकिन यदि आप हैश होम फ़ोल्डरों का उपयोग कर रहे हैं, चीजें थोड़ा मुश्किल हो गई हैं। किसी भी एक्सएमएल फाइलों को संशोधित करने के बजाय, आप उपयोगकर्ता के होम फ़ोल्डर पथ को प्राप्त करने के लिए एक वेब स्क्रिप्ट तैयार करेंगे और फिर भंडार के लिंक को प्रतिस्थापित करने के लिए साझा टेम्पलेट फ़ाइल को संशोधित करेंगे। नीचे एक नमूना वेब स्क्रिप्ट और टेम्पलेट फ़ाइल में संशोधन है जो इसे करने के लिए आवश्यक हैं।

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

यह स्क्रिप्ट नोड पेड़ को पार करता और फोल्डर के पथ एक साथ रखता है।

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}" 
} 
अंत में

, आप "खुले-template.ftl" फ़ाइल, "शेयर/वेब-INF/वर्गों में स्थित को संशोधित करना होगा/खुले स्थान/टेम्पलेट्स/org/अल्फ्रेस्को/"शामिल हैं। फ़ाइल के निचले भाग के पास, नीचे कोड जोड़ें। यह होम फ़ोल्डर पथ लाने के लिए उपरोक्त वेब स्क्रिप्ट को कॉल करेगा, और उसके बाद घर फ़ोल्डर लिंक के साथ रिपोजिटरी लिंक अपडेट करें।

<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> 

संभवतः एक बेहतर तरीका हो सकता है, लेकिन मैं इसे खोजने में असमर्थ था। मैं इसे बाद में परिष्कृत कर दूंगा, और इसे ज्यादातर शुरुआती बिंदु के रूप में उपयोग किया जाना चाहिए, लेकिन मुझे लगा कि अगर किसी को भी ऐसी ही समस्या हो तो मैं इसे पोस्ट करूंगा।

1

हालांकि सुपर सुरुचिपूर्ण नहीं है, मुझे लगता है कि आप लिंक पर जावास्क्रिप्ट ऑनक्लिक हैंडलर का उपयोग करके पैरामीटर या एंकर जोड़ सकते हैं। यह सुनिश्चित नहीं है कि कौन सी वेबस्क्रिप्ट टूलबार प्रस्तुत करती है, लेकिन यह अनुकूलन डालने के लिए एक अच्छी जगह हो सकती है।

+0

मुझे लगता है कि आखिरकार यह होगा कि मैं क्या करूँगा (गतिशील रूप से क्लाइंट पक्ष पर लिंक अपडेट कर रहा हूं)। ऐसा लगता है कि हेडर-min.js में "replaceUriTokens" है जहां लिंक सेट है। हालांकि, जब मैं अल्फ्रेस्को को सड़क से नीचे अद्यतन करता हूं तो संशोधित करना कि कीड़े का एक खोल खोल सकता है। इसके अलावा मुझे अभी भी घर फ़ोल्डर पथ (संभवतः एक कस्टम वेब स्क्रिप्ट के साथ एक AJAX कॉल के माध्यम से) प्राप्त करने का एक तरीका ढूंढना है। मुझे इसके बारे में थोड़ा सा सोचना होगा। – patorjk

संबंधित मुद्दे