- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Alle Medien vom Projekt anzeigen
Hallo zusammen,
ist es in FirstSpirit mรถglich ein Skript zuschreiben, das alle Medienname und Metadaten von einem Projekt anzeigt, die in einem bestimmten Ordner im Mediastore liegen?
Viele Grรผรe,
Aissam
- Labels:
-
Developers
-
Project Usage
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hallo Aissam,
Du kannst im Script (Typ: Kontext) alle Medien eines Ordners in allen Unterordnern holen und dann darรผber jedes Element prรผfen (Name holen, etc.):
context.getElement().getChildren(Media.class, true)
Es ist gut mรถglich, dass Media.class geรคndert werden muss (Alle Medien im Media Store haben ja eine gemeinsame Vaterklasse und die kannst Du hier einsetzen, falls es nicht Media sein sollte).
Viele Grรผรe,
Phillip.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hallo Philipp,
kannst du mir bitte ein beispiel Skript schicken wie das aussehn kann.
Und wie finde ich raus welche Vaterklasse die Elemente haben.
Kann man auch sowas auch in einem Template schreiben?
Vielen Dank!
Viele Grรผรe,
Aissam
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hallo Aissam,
das gibt ein Beispiel; alles weitere ist dann abhรคngig von Deinem Ziel und Projekt.
Mir ist nicht klar, was Du ins Template schrieben willst, aber grundsรคtzlich kannst Du bspw. eine Formatvorlage oder ein Script schreiben, das genau das macht (bspw. s.u.) und das dann in Deinem PageTemplate aufrufen o.รค.
Viele Grรผรe,
Phillip.
Dieses Script loggt alle Anzeigenamen der Mastersprache. Es wird auch auf die MetaFormDaten zugegriffen und eine Eingabekomponente geholt und als simpler String ausgegeben. Hier muss dann natรผrlich als Parameter der wirkliche Name aus dem Metadaten Template stehen.
import de.espirit.firstspirit.access.store.mediastore.Media;
import de.espirit.firstspirit.access.store.IDProvider;
import de.espirit.firstspirit.access.Language;
IDProvider e = context.getElement();
Language pMasterLanguage = context.getProject().getMasterLanguage();
for (Media _media : e.getChildren(Media.class, true))
{
context.logInfo(_media.getLanguageInfo(pMasterLanguage).getDisplayName() + " - " + _media.getUid());
// Meda Form Data
if (!_media.hasMeta())
continue;
context.logInfo(_media.getMetaFormData().get(pMasterLanguage, "sc_eineEingabeComponente").get().toString());
}
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hallo Phillip,
wenn ich das obige Skript aufrufe bekomme ich folgende Fehlermeldung:
(de.espirit.firstspirit.server.scheduler.ScheduleManagerImpl): error in task 'get_mediastore_date' - schedule entry 'Mediastore daten auslesen' (id=132890) - de.espirit.firstspirit.access.script.SyntaxError: bsh.ParseException: Parse error at line 2, column 1. Encountered: }
de.espirit.firstspirit.access.script.SyntaxError: bsh.ParseException: Parse error at line 2, column 1. Encountered: }
at de.espirit.firstspirit.server.script.BeanshellScriptEngine$BeanshellExecutable.<init>(BeanshellScriptEngine.java:76)
at de.espirit.firstspirit.server.script.BeanshellScriptEngine.getExecutable(BeanshellScriptEngine.java:55)
at de.espirit.firstspirit.common.ScriptUtil.getExecutable(ScriptUtil.java:86)
at de.espirit.firstspirit.admin.ScriptTaskImpl.getExecutable(ScriptTaskImpl.java:115)
at de.espirit.firstspirit.server.scheduler.ScriptTaskExecutor.run(ScriptTaskExecutor.java:64)
at de.espirit.firstspirit.server.scheduler.ScheduleManagerImpl$TaskCallable.executeLocal(ScheduleManagerImpl.java:2475)
at de.espirit.firstspirit.server.scheduler.ScheduleManagerImpl$TaskCallable.executeLocal(ScheduleManagerImpl.java:2458)
at de.espirit.firstspirit.server.scheduler.ScheduleManagerImpl$TaskCallable.call(ScheduleManagerImpl.java:2390)
at de.espirit.firstspirit.server.ExecutionManagerImpl$ExtendedCallable.call(ExecutionManagerImpl.java:590)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at de.espirit.common.util.BoundedExecutorService$RunnableWrapper.run(BoundedExecutorService.java:436)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
at de.espirit.common.util.SuspendableThread.run(SuspendableThread.java:56)
Caused by: bsh.ParseException: Parse error at line 2, column 1. Encountered: }
at bsh.Parser.generateParseException(Parser.java:5973)
at bsh.Parser.jj_consume_token(Parser.java:5925)
at bsh.Parser.Statement(Parser.java:2706)
at bsh.Parser.BlockStatement(Parser.java:2812)
at bsh.Parser.Block(Parser.java:2776)
at bsh.Parser.MethodDeclaration(Parser.java:409)
at bsh.Parser.BlockStatement(Parser.java:2807)
at bsh.Parser.Line(Parser.java:200)
at bsh.Interpreter.Line(Interpreter.java:1014)
at bsh.Interpreter.eval(Interpreter.java:651)
at bsh.Interpreter.eval(Interpreter.java:758)
at bsh.Interpreter.eval(Interpreter.java:747)
at bsh.PreparsedScript.<init>(PreparsedScript.java:46)
at de.espirit.firstspirit.server.script.BeanshellScriptEngine$BeanshellExecutable.<init>(BeanshellScriptEngine.java:70)
... 16 more
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hallo Aissam,
mein ursprรผngliches Script wirft keinen Parser Fehler, daher wรคre es interessant zu sehen, was Du verรคndert hast.
Gruร,
Phillip.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hallo Phillip,
so sieht mein Skript aus:
//!Beanshell
import de.espirit.firstspirit.access.store.mediastore.Media;
import de.espirit.firstspirit.access.store.IDProvider;
import de.espirit.firstspirit.access.Language;
IDProvider e = context.getElement();
Language pMasterLanguage = context.getProject().getMasterLanguage();
for (Media _media : e.getChildren(Media.class, true)) {
context.logInfo(_media.getLanguageInfo(pMasterLanguage).getDisplayName()
+ " - "
+ _media.getUid());
// Meda Form Data
if (!_media.hasMeta())
continue;
context.logInfo(_media.getMetaFormData().get(pMasterLanguage, "md_groups").get().toString());
print(_media.getMetaFormData().get(pMasterLanguage, "md_groups").get().toString());
}
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hallo Phillip,
hab den Quellcode jetzt direkt im Auftragverwaltungstool im Server Manager kopiert und aufgerufen.
Fehlermeldung:
de.espirit.firstspirit.server.scheduler.ScriptTaskExecutor): error during script execution : de.espirit.firstspirit.access.script.ExecutionException: Typed variable declaration : Error in method invocation: Method getElement() not found in class'de.espirit.firstspirit.server.scheduler.DelegatingScheduleContext' : at Line: 6 : in file: inline evaluation of: ``__execute() { //!Beanshell import de.espirit.firstspirit.access.store.mediastore . . . '' : context .getElement ( )
Called from method: __execute at line 6
FSVersion=5.2.1608.76631#4449;JDK=1.8.0_60 64bit Oracle Corporation;OS=Linux 3.10.0-693.5.2.el7.x86_64 amd64;Date=23.01.2018 11:13:37
de.espirit.firstspirit.access.script.ExecutionException: Typed variable declaration : Error in method invocation: Method getElement() not found in class'de.espirit.firstspirit.server.scheduler.DelegatingScheduleContext' : at Line: 6 : in file: inline evaluation of: ``__execute() { //!Beanshell import de.espirit.firstspirit.access.store.mediastore . . . '' : context .getElement ( )
Called from method: __execute at line 6
at de.espirit.firstspirit.server.script.BeanshellScriptEngine$BeanshellExecutable.execute(BeanshellScriptEngine.java:111)
at de.espirit.firstspirit.common.ScriptUtil.execute(ScriptUtil.java:106)
at de.espirit.firstspirit.server.scheduler.ScriptTaskExecutor.run(ScriptTaskExecutor.java:134)
at de.espirit.firstspirit.server.scheduler.ScheduleManagerImpl$TaskCallable.executeLocal(ScheduleManagerImpl.java:2475)
at de.espirit.firstspirit.server.scheduler.ScheduleManagerImpl$TaskCallable.executeLocal(ScheduleManagerImpl.java:2458)
at de.espirit.firstspirit.server.scheduler.ScheduleManagerImpl$TaskCallable.call(ScheduleManagerImpl.java:2390)
at de.espirit.firstspirit.server.ExecutionManagerImpl$ExtendedCallable.call(ExecutionManagerImpl.java:590)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at de.espirit.common.util.BoundedExecutorService$RunnableWrapper.run(BoundedExecutorService.java:436)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
at de.espirit.common.util.SuspendableThread.run(SuspendableThread.java:56)
Caused by: bsh.EvalError: Typed variable declaration : Error in method invocation: Method getElement() not found in class'de.espirit.firstspirit.server.scheduler.DelegatingScheduleContext' : at Line: 6 : in file: inline evaluation of: ``__execute() { //!Beanshell import de.espirit.firstspirit.access.store.mediastore . . . '' : context .getElement ( )
Called from method: __execute
at bsh.BSHMethodInvocation.eval(BSHMethodInvocation.java:77)
at bsh.BSHPrimaryExpression.eval(BSHPrimaryExpression.java:102)
at bsh.BSHPrimaryExpression.eval(BSHPrimaryExpression.java:47)
at bsh.BSHVariableDeclarator.eval(BSHVariableDeclarator.java:86)
at bsh.BSHTypedVariableDeclaration.eval(BSHTypedVariableDeclaration.java:84)
at bsh.BSHBlock.evalBlock(BSHBlock.java:130)
at bsh.BSHBlock.eval(BSHBlock.java:80)
at bsh.BshMethod.invokeImpl(BshMethod.java:371)
at bsh.BshMethod.invoke(BshMethod.java:267)
at bsh.BshMethod.invoke(BshMethod.java:170)
at bsh.PreparsedScript.invoke(PreparsedScript.java:66)
at de.espirit.firstspirit.server.script.BeanshellScriptEngine$BeanshellExecutable.execute(BeanshellScriptEngine.java:100)
... 14 more
Caused by: bsh.ReflectError: Method getElement() not found in class'de.espirit.firstspirit.server.scheduler.DelegatingScheduleContext'
at bsh.Reflect.resolveExpectedJavaMethod(Reflect.java:395)
at bsh.Reflect.invokeObjectMethod(Reflect.java:97)
at bsh.Name.invokeMethod(Name.java:858)
at bsh.BSHMethodInvocation.eval(BSHMethodInvocation.java:75)
... 25 more
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hallo Aissam,
Ich vermute, dass das Problem beim Template Scope liegt.
Wenn Du das Template erzeugst, dann kannst Du auf der 1. Reiter (Eigenschaften) beim Script den Scope festlegen. Dort mรผsste fรผr das Script "Context menu" ausgewรคhlt werden.
Dann kannst Du das Script auf einem Media Store Ordner ausfรผhren und siehst alle Medien darunter.
Falls Du das in einem anderen Rahmen laufen lassen mรถchtest, dann musst Du den Startpunkt (den IDProvider e) anders holen als mit context.getElement();
Viele Grรผรe,
Phillip.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hallo Phillip,
danke erstmal fรผr deine Hilfe.
Ich mรถchte das script in der Auftragsverwaltung mit der generierung bzw. publzierung starten und den Namen, pfad und medadaten auslesen und speichern.
Ist das mรถglich und wie bekomme ich den mediastore ordner?
Viele Grรผรe,
Aissam

