Search the FirstSpirit Knowledge Base
Folgendes sollte immer getan werden, nachdem eine Sprache hinzugefügt wurde:
Wenn eine Sprache aus einem Projekt entfernt wird, so sind deren Inhalte noch vorhanden, aber mit normalen Mitteln nicht erreichbar. jede Speicheroperation eines Knotens entfernt die nun nicht mehr benötigten Informationen aus diesem Knoten. Besondere Schritte sind somit nicht notwendig.Wenn die gespeicherten Daten komplett genutzt werden und in einen Kontext überführt werden, in dem die gelöschte Sprache noch vorhanden ist, kann dies aber zu Problemen führen. Dies ist beispielsweise der Fall, wenn Corporate Content, Content Transport, External Sync oder etwas Ähnliches genutzt wird und die gelöschte Sprache im Zielprojekt vorhanden ist. In solchen Fällen sollten folgende Anpassungen vorgenommen werden:
Hier ein einfaches Skript, welches für alle Seiten und Absätze [Inhalte-Verwaltung und globale Inhalte] den Inhalt neu setzt und zusätzlich die entsprechenden Haken für die gelöschte Seite entfernt. Diese einfache Skript-Variante speichert die Seiten unter dem Namen des aktuellen Benutzers. Außerdem gibt es die Seiten nicht frei, auch wenn diese vorher freigegeben waren. Weiterhin entfernt es von allen Ordnern in der Struktur-Verwaltung die gesetzten Werte in der gelöschten Sprache.
Beispielskript: Dieses geht davon aus, dass niemand sonst im Projekt arbeitet. Weiterhin ändert es alle Seiten und setzt deren Daten neu (Bearbeiter ist derjenige, der das Skript ausführt). Alle Seiten sind danach als verändert markiert. Es werden nur die Inhalte-Verwaltung und globale Inhalte betrachtet. Bitte beachten Sie, dass es sich nur um eine Beispielimplementierung handelt, die nicht alle Fälle abdeckt.
import de.espirit.firstspirit.agency.StoreAgent;
import de.espirit.firstspirit.access.store.Store;
import de.espirit.firstspirit.access.store.pagestore.Page;
import de.espirit.firstspirit.access.store.pagestore.Section;
import de.espirit.firstspirit.access.store.globalstore.GCAPage;
import de.espirit.firstspirit.access.store.globalstore.GCASection;
import de.espirit.firstspirit.access.store.sitestore.PageRefFolder;
context.logInfo("script started");
ml = context.getProject().getMasterLanguage();
storeAgent = context.requestSpecialist(StoreAgent.TYPE);
pageStore = storeAgent.getStore(Store.Type.PAGESTORE);
pages = pageStore.getChildren(Page.class,true);
pageCounter = pages.iterator();
while (pageCounter.hasNext()) {
page = pageCounter.next();
try {
page.setLock(true,true);
fd = page.getFormData();
page.setFormData(fd);
if (page.isTranslated(ml)) {
page.addTranslated(ml);
} else {
page.removeTranslated(ml);
}
sections = page.getChildren(Section.class,true);
sectionCounter = sections.iterator();
while (sectionCounter.hasNext()) {
section = sectionCounter.next();
if (!section.isReference()) {
fd = section.getFormData();
section.setFormData(fd);
}
//toDo exclude from output
}
page.save("removed deleted language",true);
} catch (Exception e) {
context.logError("Page " + page.getUid() + " (" + page.getId() + ") not corrected due to this exception",e);
} finally {
page.setLock(false,true);
}
}
globalStore = storeAgent.getStore(Store.Type.GLOBALSTORE);
pages = globalStore.getChildren(GCAPage.class,true);
pageCounter = pages.iterator();
while (pageCounter.hasNext()) {
page = pageCounter.next();
try {
page.setLock(true,true);
fd = page.getFormData();
page.setFormData(fd);
if (page.isTranslated(ml)) {
page.addTranslated(ml);
} else {
page.removeTranslated(ml);
}
sections = page.getChildren(GCASection.class,true);
sectionCounter = sections.iterator();
while (sectionCounter.hasNext()) {
section = sectionCounter.next();
if (!section.isReference()) {
fd = section.getFormData();
section.setFormData(fd);
}
//toDo exclude from output
}
page.save("removed deleted language",true);
} catch (Exception e) {
context.logError("Page " + page.getUid() + " (" + page.getId() + ") not corrected due to this exception",e);
} finally {
page.setLock(false,true);
}
}
siteStore = storeAgent.getStore(Store.Type.SITESTORE);
pagereffolders = siteStore.getChildren(PageRefFolder.class,true);
pagereffolderCounter = pagereffolders.iterator();
while (pagereffolderCounter.hasNext()) {
pagereffolder = pagereffolderCounter.next();
try {
pagereffolder.setLock(true,false);
fd = pagereffolder.getFormData();
pagereffolder.setFormData(fd);
pagereffolder.save("removed deleted language",false);
} catch (Exception e) {
context.logError("PageRefFolder " + pagereffolder.getUid() + " (" + pagereffolder.getId() + ") not corrected due to this exception",e);
} finally {
pagereffolder.setLock(false,true);
}
}
context.logInfo("script finished");
Subject | Latest Article | |
---|---|---|