Search the FirstSpirit Knowledge Base
Hallo zusammen,
ich hab in der Suche leider nichts dazu gefunden, aber uns kam bei der Benutzung des CorporateContent Moduls die Frage auf ob es möglich ist die im Master-Projekt angelegten Auflösungen für Medien in die Client-Projekteinstellungen zu übertragen.
Aktuell haben wir ca. 15 Auflösungen angelegt welche in 6 Client-Projekte übernommen werden müssen, was natürlich auf dem herkömlichen Wege über den Servermanager schon langsam zu einer nervigen Arbeit wird.
Gefunden haben wir auf dem FS-Server im Projektverzeichnis die Datei "project.xml", wo offenbar auch alle Auflösungen aufgelistet werden, wenn wir allerdings die Konfiguration der Auflösungen vom Master-Projekt in ein Client Projekt kopieren (bei heruntergefahrenem FS-Server) werden nach einem Server Neustart leider diese Auflösungen nicht angezeigt / übernommen.
Daher unsere Frage:
Ist es überhaupt (irgendwie) möglich solche Settings von Projekt A zu Projekt B zu übertragen? - Und wenn ja => Wie? 😉
Grüße,
Lars
Hallo Lars,
die Funktion wird mit der FirstSpirit Version 5.2 zur Verfügung gestellt werden, allerdings nicht über das Modul CorporateContent oder ContentTransport, sondern über die Entwicklerfunktion "ExternalSync".
Viele Grüße,
Daniel
Hallo Daniel,
das ist leider nicht ganz die Antwort die wir uns erhofft haben, bis zum Release von 5.2. haben wir vermutlich die Auflösungen per Hand in die Projekte eingepflegt. 😉
Trotzdem Danke für die Info.
Grüße,
Lars
Hallo Lars,
wenn die Access-API lizensiert wurde, kannst du die Auflösungen per API auslesen und setzen. Bei unseren Kunden machen wir das auch so. Falls du Fragen zur Umsetzung hast, kann ich dir gerne weiterhelfen.
Schöne Grüße
Sahin
Hallo Sahin,
ich wäre an einem Lösungsansatz interessiert.
Wo führt Ihr dieses Script aus über die Admininistrationskonsole als Auftrag in dem Projekt von dem ihr die Auflösungen rausholen wollt?
vielen Dank und viele Grüße,
Christopher Eggert
Hallo Christopher,
ich kann leider erst jetzt antworten. Wir haben eine eigene Applikation dafür geschrieben, die eine Verbindung zum Server aufbaut und mittels Access-API die notwendigen/gewünschten Operationen ausführt.
Wenn du weißt, wie eine externe Serververbindung zum FS-Server aufgebaut wird, dann ist das schon die halbe Miete. Du musst dir dann über diese Connection beide Projekte holen und die gewünschen Setter und Getter aufrufen.
Ich kann dir die Applikation leider nicht zur Verfügung stellen. Falls du nicht mehr weiter weißt, helfe ich gerne (sofern es die Zeit zulässt).
Schöne Grüße
Sahin
Hallo Sahin,
schon mal danke für deine Antwort. Ja etwas hab ich schon. Ich hole mir auf dem Server das Projekt in dem alle Auflösungen definiert sind und das Projekt in welche ich diese importieren möchte ich habe auch eine Methode in der API gefunden setResolutions(). Ich bekomme hier auch kein Fehler vom Server leider legt mir dieser aber auch die Auflösungen nicht automatisch an
Ich hatte zuerst den Verdacht, dass es an der Auflösung ORIGINAL liegt das er diese nicht importieren kann weil die ja schon zu jedem Projekt sowieso gehört. Daraufhin habe ich diese Auflösung aus der Liste entfernt aber jedoch auch ohne Erfolg. Leider keine Fehlermeldung ich habe einen eigenen Server auftrag dafür gemacht mit einem kleinen Beanshell-Script. Ergebnis auftrag läuft fehlerfrei durch aber keine Auflösungen.
Das Scrit ist bisher noch etwas unsauber war bisher nur ein Testing auf dem Server aber ich dachte so in der Art müsste es funktionieren:
//!Beanshell
import de.espirit.firstspirit.access.project.Resolution;
import java.util.List;
connection = context.getConnection();
masterProject = "Content Master";
List<Resolution> resolutions = null;
ArrayList<Resolution> resolutionList = null;
// get resolutions
project = connection.getProjectByName("Content Master");
if(project != null) {
resolutions = project.getResolutions();
}
for(resolution : resolutions) {
context.logInfo("DEBUG Resolutions " + resolution.getUid());
if("ORIGINAL".equals(resolution.getUid())) {
context.logInfo("DEBUG resolution to remove: " +resolution.getUid());
resolutions = new ArrayList(resolutions);
resolutions.remove(resolution);
}
}
// set resolutions
projects = connection.getProjects();
context.logInfo("DEBUG Class Info1: " + resolutions.getClass());
Resolution[] resArray = resolutions.toArray(new Resolution[resolutions.size()]);
for(project : projects) {
context.logInfo("DEBUG Array Groesse : " + resArray.length);
if(!masterProject.equals(project.getName())) {
project.setResolutions(resArray);
context.logInfo("DEBUG " + project.getName() + resArray);
}
}
context.logInfo("Script End");
habe ich hier evtl. noch einen Schritt vergessen?
viele Grüße und vielen Dank,
Christopher
Hallo Christopher,
also auf den ersten Blick fällt mir auf, dass du das Projekt nicht lockst. Du müsstest vor project.setResolutions(resArray); das Projekt locken.
Also quasi (abgekürzt ohne Exception handling etc.):
project.lock();
project.setResolutions(resArray);
project.save();
project.unlock();
Ich hoffe, dass funktioniert dann auch schon.
Viele Grüße
Sahin
Hallo zusammen,
hat das so wie du in deinem Code beschrieben hast funktioniert?
Ich hab auch so ein Skript geschrieben, jedoch hat das mit setResolutions bei mir nicht wirklich funktioniert...
Ich musste da mit createResolution.
viele Grüße
Tobias
Hallo Tobias,
ich werde das mal testen, in der Tat hat setResolution() bisher leider noch nicht funktioniert.
Ich muss das nochmal ausprobieren.
vielen Dank für die Hilfe.
Christopher