Ich darf das ganze Script hier auch teilen, aber wie gesagt, sollte nichts besonderes sein.
//!Beanshell
// 2021-11-11 / Script: Bildergalerie CW migrieren auf Mediengalerie [FirstSpirit] (Story: CW-2119) / Patrick Wittke
import de.espirit.firstspirit.agency.StoreAgent;
import de.espirit.firstspirit.agency.LanguageAgent;
import de.espirit.firstspirit.access.Language;
import de.espirit.firstspirit.access.store.Store.Type;
import de.espirit.firstspirit.access.store.templatestore.*;
import de.espirit.firstspirit.access.store.pagestore.*;
import de.espirit.firstspirit.access.ReferenceEntry;
import de.espirit.firstspirit.access.link.*;
import de.espirit.firstspirit.forms.FormData;
import de.espirit.firstspirit.client.access.editor.lists.*;
import java.util.List;
//setup
LanguageAgent languageAgent = context.requireSpecialist(LanguageAgent.TYPE);
List<Language> langList = languageAgent.getEditorialLanguages();
StoreAgent storeAgent = context.requestSpecialist(StoreAgent.TYPE);
TemplateStoreRoot templateRoot = storeAgent.getStore(Type.TEMPLATESTORE);
LinkTemplates linkTemplates = templateRoot.getLinkTemplates();
LinkTemplate imageLinkTemplate = linkTemplates.getTemplate("lt_image_global");
SectionTemplates sectionTemplates = templateRoot.getSectionTemplates();
SectionTemplate imageSectionTemplate = sectionTemplates.getTemplate("image_gallery");
SectionTemplate mediaSectionTemplate = sectionTemplates.getTemplate("st_media_gallery");
SectionTemplate mediaEntrySectionTemplate = sectionTemplates.getTemplate("st_media_gallery_entry");
//all uses of image_gallery
ReferenceEntry[] referenceEntry = imageSectionTemplate.getIncomingReferences();
for(entry: referenceEntry){
if(entry.getStoreType().toString().equals("PAGESTORE")){
//get pagestore section & formdata
Section imageSection = entry.getReferencedElement();
FormData imageData = imageSection.getFormData();
//content of the section
Body body = imageSection.getParent();
//page of the given section
Page page = body.getParent();
//get current position of imagegallery
int index = body.getChildIndex(imageSection);
// Check if a page and content is a valid
// This is a workaround, else every sectiontemplate has to be validated one by one plus page
try {
page.setLock(true,true);
page.save("Validation Check",true);
page.setLock(false,true);
} catch (Exception e) {
page.setLock(false,true);
continue;
}
if(page.isLockSupported() && !page.hasTask() && !page.getStore().isRelease()) {
//lock page
page.setLock(true,true);
//creating mediagallery & get formdata
Section mediaSection = body.createSection(imageSection.getName(), mediaSectionTemplate);
FormData mediaData = mediaSection.getFormData();
for(lang: langList){
//set displayname of section
mediaSection.setDisplayName(lang, imageSection.getDisplayName(lang));
//setting values
//set headline
mediaData.get(lang,"st_headline").set(imageData.get(lang,"st_headline").get());
//set headline level
mediaData.get(lang,"st_headlineLevel").set(imageData.get(lang,"st_headlineLevel").get());
//set description
mediaData.get(lang,"st_description").set(imageData.get(lang,"st_description").get());
//set background to white
mediaData.get(lang,"st_background").set("media-gallery-white");
//set hideOrShow to showAll
mediaData.get(lang,"st_hideOrShow").set("showAll");
Catalog catalog = mediaData.get(lang,"st_mediaEntries").get();
for(image: imageData.get(lang,"st_imageEntries").get()){
Link imageLink = imageLinkTemplate.createLink(lang);
FormData imageLinkData = imageLinkTemplate.getFormDefaults();
FormData mediaEntryData = mediaEntrySectionTemplate.getFormDefaults();
FormData imageEntryData = image.getItem();
//ImageLinkfields
// Copyrighttext and Copyright Text is always empty
imageLinkData.get(lang,"lt_image").set(imageEntryData.get(lang,"st_image").get());
imageLinkData.get(lang,"lt_alt").set(imageEntryData.get(lang,"st_alt").get());
imageLinkData.get(lang,"lt_title").set(imageEntryData.get(lang,"st_title").get());
imageLinkData.get(lang,"lt_caption").set(imageEntryData.get(lang,"st_caption").get().toText(false));
imageLink.setFormData(imageLinkData);
//Mediafields
mediaEntryData.get(lang, "st_imageVideoEntry").set(imageLink);
mediaEntryData.get(lang, "st_enableImageDownload").set(imageEntryData.get(lang,"st_enableImageDownload").get());
//create and add card to catalog
Catalog.Card card = catalog.create(mediaEntrySectionTemplate,mediaEntryData);
catalog.add(card);
}
//set images
mediaData.get(lang,"st_mediaEntries").set(catalog);
//set formdata
mediaSection.setFormData(mediaData);
}
//move mediagallery to position of imagegallery
body.moveChild(mediaSection,index);
//save before delete, else position of mediagallerie is lost
page.save("Migration",true);
imageSection.delete();
page.save("Migration",true);
//unlock page
page.setLock(false,true);
}
}
}