2016-05-30 14 views
1

Ich schreibe ein einfaches Skript auf Javascript für Alfresco Community. Ich lasse das Skript jedes Mal laufen, wenn eine neue Datei hochgeladen wird.alfresco Javascript Vererbung und Pfade

Ich muss überprüfen, ob ein bestimmter Dateiname (label.txt) im Ordner existiert. Wenn es existiert, werde ich die Informationen in der Datei für die spätere Behandlung verwenden.

Wenn ich den Dateinamen allein festlege, funktioniert es so lange, wie der Ordner selbst derjenige ist, dem das Skript zugewiesen ist, es funktioniert einwandfrei.

var labelFile = space.childByNamePath("label.txt"); 
    if (labelFile != null) 
    { 
    ... 
    } 

Wenn ich das Erbe des Skripts untere Ebene gesetzt Ordner das Skript ausgeführt wird, aber immer noch versucht, die label.txt Datei im Stammordner zu finden. Ich versuche, den tatsächlichen Pfad des hochgeladenen Dokuments zu finden:

var dpath = document.displayPath + "/label.txt"; 
var labelFile = space.childByNamePath(dpath); 
logFile.content += "labelFile: " + labelFile.displayPath + "\r\n"; 
    if (labelFile != null) 
    { 
    ... 
    } 

Ich erhalte einen vermeintlich richtigen Pfad in dem DPATH var, aber ich bekomme ein NULL-Ergebnis auf dem Dateiobjekt, so kann ich die Datei nicht lesen und seine Inhalt.

Was mache ich falsch?

Antwort

0

Das Problem war nicht über die Vererbung, aber space.childByNamePath nur relative Pfade zu akzeptieren, nicht absolut, so dass ich ahd es aus dem Raum Wurzel zu berechnen:

var dpath = document.displayPath; 
var dpatharray = dpath.split("/"); 
var dpathlength = dpatharray.length; 
var spath = space.displayPath; 
var spatharray = spath.split("/"); 
var spathlength = spatharray.length; 
var labelpath = ""; 
for (var i=spathlength + 1; i<dpathlength; i++) 
{ 
    labelpath += dpatharray[i] + "/"; 
} 

var labelFile = space.childByNamePath(labelpath + "label.txt"); 
1

Was ist "Raum" dort? Versuchen Sie "firmenheim" zu verwenden, sehen Sie das für weitere Ideen. http://docs.alfresco.com/4.0/references/API-JS-rootscoped.html

Der aktuelle Platz ScriptNode (falls vorhanden). Bei einem Skript, das von einer Regel ausgeführt wird, ist das Space-Objekt der Bereich, in dem sich die Regel befindet. Wenn die Regel vererbt wird, ist dies möglicherweise nicht der erwartete Speicherplatz.

+0

ich das gelesen und das ist genau die Problem, das ich habe. Ich erwarte, dass die Benutzer ihre Dateien in neue Ordner unter dem importierenden Ordner (dem mit dem Skript) hochladen und Informationen in einer bekannten Datei "label.txt" hinzufügen. Da ich nicht auf dem Weltraumpfad liegen kann, muss ich den Dokumentpfad erfassen (die reale Route, auf der die Daten hochgeladen werden). Aber das funktioniert nicht. – jordi

+1

Es funktioniert nicht, da Sie die Regel auf untergeordnete Bereiche anwenden, und das Wurzelobjekt "space" ist jedes Mal anders. Das Stammobjekt "Firmenheim" sollte dagegen immer gleich sein. – Lista

+0

Ich denke, dass mein Problem, wie ich es jetzt teste, mehr zu sehen hat, wobei "childByNamePath()" den absoluten Pfad nicht akzeptiert, den "displayPath" zurückgibt. Ich muss versuchen, eine Zeichenfolge zu bearbeiten, um eine funktionierende Lösung zu erhalten. – jordi