Using The Javascript Console For Development and Administration
This document summarizes Florian Maul's presentation on using the Javascript Console for Alfresco development and administration. The Javascript Console allows developers to [1] easily test and develop Javascript code for Alfresco by providing features like code completion, loading scripts from the repository, and importing code. It also [2] provides access to the Alfresco Javascript API and custom functions to help with tasks like recursively iterating nodes, logging output, and more. The presentation demonstrates how to [3] use the Javascript Console for tasks like managing users, tagging content, reporting on permissions, and creating webscripts.
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0 ratings0% found this document useful (0 votes)
187 views
Using The Javascript Console For Development and Administration
This document summarizes Florian Maul's presentation on using the Javascript Console for Alfresco development and administration. The Javascript Console allows developers to [1] easily test and develop Javascript code for Alfresco by providing features like code completion, loading scripts from the repository, and importing code. It also [2] provides access to the Alfresco Javascript API and custom functions to help with tasks like recursively iterating nodes, logging output, and more. The presentation demonstrates how to [3] use the Javascript Console for tasks like managing users, tagging content, reporting on permissions, and creating webscripts.
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 26
Using the Javascript Console for
development and administration
Florian Maul (fme AG) About me Florian Maul Senior Consultant at fme AG (Platinum Partner) Many years of experience with Alfresco Winner of the Dashlet Challenge 2011 Gallery Plus Dashlet Opensource Contributor to Share Extras and other Alfresco Extensions Android CMIS Browser (2010)
Agenda Overview and History while(t < 50) { Javascript Console Features Demos } Alfresco APIs What kinds of APIs are there? Java Foundation API Javascript API & Javascript Services CMIS
Where can I use Javascript in Alfresco: Webscripts developed in Javascript Javascript run by Actions (Run Script Action) Javascript attached to Tasks & Events in Workflows
But how to develop Javascript code? Webscripts Develop in Eclipse ANT build script to copy changes & reload the webscripts Run the webscript manually in the browser
Data Dictionary Scripts upload a script to Data Dictionary run Script Action watch errors in the Alfresco Log file (ScriptLogger=DEBUG) fix bugs and iterate
It takes too long to test Javascript code and fix bugs.
Meet the Javascript Console Meet the Javascript Console Mike Farman (Director Product Management Alfresco): I really like the stuff youve been doing, my favourite is the JavaScript console, its the first add-on I always install!
(c) fme AG - #215124 7 Javascript Console Features Component for Share Admin Console to develop, execute and test Javascript code Features Full access to the Alfresco JavaScript API Specifiy a context (space, document, user) Simple code completion Load & save scripts from the repository Import Javascript code from the Alfresco classpath Develop freemarker templates (since v0.5)
Javascript Cnosole Milestones End of 2010 Need to develop and execute Javascript code for a project sparked development of the first prototype First internal versions with a single standalone page in Share April 2011: Contact with Will Abson refactoring and integration into the admin console of Alfresco 3.4 May 2011: First checkin into the Share-Extras project and first public release Nov 2011: Version 0.4 with basic code completion June 2012: Version 0.5 with freemarker editor
Download & Installation Download from http://code.google.com/p/share-extras/
3.4.x or 4.0.x AMP or JAR versions
The repo.jar must be copied to tomcat/webapps/alfresco/WEB- INF/lib and the share.jar to tomcat/webapps/share/WEB-INF/lib Basic Demo Overview Poor mans Nodebrowser Selecting the file or folder to work with Select the space variable from a directory chooser:
Open any document in the Javascript Console from the document library:
Custom Javascript functions print() Prints a String, Number or an Array to the console output window Formats output for ScriptNode, NodeRef, ScriptUser, ScriptGroup, ChildeAssociationRef objects logger.log() Logs normaly to the debug log but also performs a print() Recommended for any output! (works outside of JS Console) logger.setLevel() Sets the log4j log level logger.setLevel(org.alfresco.repo.jscript.ScriptLogger, DEBUG); space variable can be changed from code e.g. space = space.parent; On the next script run, the new value will be used. Custom Javascript functions recurse() Special function to iterate over a tree of nodes:
recurse(space, function(node) { if (node.name.toLowerCase().indexOf("alfresco") >= 0) { print("adding tag alfresco to " +node.displayPath+"/"+node.name); node.addTag("alfresco"); } });
If no function is given it returns the nodes as an array:
for each (imageNode in space.children) { var user = people.getPerson(name); user.createAssociation( imageNode, "cm:avatar"); }
Code completion Use with Ctrl+Space Javascript operations for, if, while, All javascript root objects search, siteService, Custom javascript extensions are included as well All methods 1 level below the root objects search.findNode(), siteService.getSite(), Some variables are completed as ScriptNode objects: space document companyhome *node or *Node
Demo - Tagging Automatically tag content
Spreadsheet metadata import How does it work? Alfresco Repository / Webscripts Browser / Javascript / YUI / Codemirror Execute Webscript Input Output print(), recurse(), logger eval() / Java-Webscript <imports> Error handling Javascript code Freemarker template space / document Print / log output Freemarker output Error messages JSON POST Demo - permission reporting All parent permission while (document) { print(document); print(document.fullPermissions); print(""); document = document.parent; }
All direct permissions recurse(space, function(node) { for each(permission in node.fullPermissions) { if (/;DIRECT$/.test(permission)) { logger.log(node.displayPath + "/" + node.name + ";" + permission); } } });
Demo - Creating Webscripts The new version 0.5 makes it easy to create webscripts: Write a controller javascript using logger.log output Create a freemarker template See HTML or Text output Test different URL arguments and different users
DEMO
Keyboard shortcuts Currently supported Ctrl + Enter Execute Script Ctrl + Space Code Completion Ctrl + Z Undo Ctrl + Y Redo
Upcomming (0.5.1) Ctrl + Shift + F Format javascript code (beautify.js) Ctrl + / Comment / uncomment with //
Access spring beans / unlock documents LockService is not accessible though the Javascript API Example to unlock a document:
var ctx = Packages.org.springframework. web.context.ContextLoader.getCurrentWebApplicationContext();
var lockService = ctx.getBean("lockService");
lockService.unlock(document.nodeRef);
may look like a hack but is perfectly valid Alfresco JS It only works in Javascript stored in the Classpath (not in the Data Dictionary) Also very useful to test your own Beans written in Java Javascript Puzzlers Alfresco Edition What do these two do? node.properties["cm:name"] = "textfile.txt"; node.name = "textfile.txt";
Batch processing Examples Set all documents to inherit permissions Disable automatic versioning for all documents
Small batches can run in the Javascript Console Single transaction (up to about 10000 nodes) I install the Javascript Console on every production system
Large batches currently only possible using Java Batch processing (updates for >100000 nodes) How to find the nodes? Search or recursion? Split in smaller batches with own transaction How to make use of multithreading?
Developer Tools Menu If you like the Javascript Console, you might also like
Immediate download (Ebook) Frontend Unicorn: Learn code faster, be more efficient, become a high-valued developer and earn more money by Michał Malewicz; Szymon Adamiak; Albert Pawłowski; Albert Walicki ebooks 2024