Zum Hauptinhalt gehen

Script: Page validieren

Kommentare

3 Kommentare

  • Zendesk API User
    Author: bIT_sosswald - 12/8/2021 7:39

    Hi Patrick,

    schau mal in der Deveoper-API ob dir dieser Agent hilft: ValidationAgent (FirstSpirit Developer-API)

    Damit müsstest du FormData Objekte oder ganze IDProvider gegen die definierten RULES und für verschiedene Validation-Scopes validieren können.

    PS: An dem Skript zur Migration von Absätzen auf andere Absätze wäre ich interessiert. ;-)

    Beste Grüße

    Sandro

    0
  • Zendesk API User
    Author: Schmatrick - 12/8/2021 9:26

    Hallo Sandro,

    danke für den Hinweis, hat super funktioniert!

    Bezüglich des Scripts würde ich mich nochmal morgen melden, da ich nachfragen muss, ob ich das hier teilen darf. Ich denke aber, dass nichts dagegen spricht.

    Das Script ist aber recht statisch. Also viel "Magie" passiert hier nicht!

    Viele Dank & Viele Grüße,
    Patrick Wittke

    0
  • Zendesk API User
    Author: Schmatrick - 12/9/2021 13:46

    Hallo Sandro,

    das mit dem  ValidationAgent​ hat sich für mich doch erstmal erledigt, da hier keine Funktionalität für rekursives validieren gegeben wird. Das heißt wenn ich die Page da reinwerfe, werden nicht die unterliegenden Absatzvorlagen geprüft.

    Mein Workaround sieht daher so aus:

    try {

    page.setLock(true,true);

    page.save("Validation Check",true);

    page.setLock(false,true);

    } catch (Exception e) {

    page.setLock(false,true);

    continue;

    }

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

    }

    }

    }

    Vielen Dank für deine Hilfe!

    Viele Grüße,
    Patrick Wittke

    0

Bitte melden Sie sich an, um einen Kommentar zu hinterlassen.