Archive for the ‘Monday Dev Heaven’ tag
Here’s a fun project to help you learn more about working with the Nuxeo Platform — display a random background image on the login page. And of course we’ll be picking up the image into our Nuxeo instance. Part of the challenge is to access this image when there is no user session :) This an opportunity to learn more about OpenURL and UnrestrictedSessionRunner. Here’s how we’re going to do this.
Create a WebEngine Module
What we need is to return an image for a simple URL. A WebEngine module is the simplest and quickest solution to achieve that. So using Nuxeo IDE, I’ve created a new WebEngine module called
RandomLoginPage. It doesn’t do much for now. If you deploy it on your server and go to
yourserver/nuxeo/site/RandomLoginPage/, you should be redirected to the login page. Once you login, you see a simple web page explaining hte module …
Being big Atlassian fans here at Nuxeo, we recently started using HipChat. It’s an enterprise chat room. One of the cool things about HipChat is its very simple web API. It makes it really easy to send notifications to a chat room.
To show you how dead easy it is, I did a project showing how to send Nuxeo events to a Hipchat room using their web API. I did it using Nuxeo IDE to generate my plugin structure, using the Nuxeo Plugin Project and Nuxeo Listener wizards. My listener only listens to documentCreated and documentModified events. Each time they occur, we send a small message to a HipChat room, containing the URL of the document, its title, date and creator. The code is really simple (especially because most of it is generated by Nuxeo IDE):
What it does is simply relay the modify or create events to a room. …
Today I’ll write a post a little differently than usual. I won’t write about code per say but about my experience with IntelliJ IDEA. Some of you might be aware that one of our developers has developed an IDEA plugin for Nuxeo, so I decided to give it a try.
First thing I did was import Nuxeo Platform source code using maven. All I had to do was tell IDEA where the root pom and the addon parent pom were. As you know we have many modules so I was expecting this step to take forever. I’m happy to say I was wrong. It went really fast. And I didn’t have to specify my maven repo as an environment variable. What surprised me though is that there is no default JDK, hence there are errors everywher — something fixed quickly using the contextual help. Anyway, it feels great just to …
Today we’re going to play with the templating module. It lets you render a document using a template. You can easily install it through our Marketplace. It comes with a bunch of examples to give you an idea of what’s doable. You will also find information in our user guide.
If you want to try it now it’s available in the nuxeo-template-rendering-deckjs bundle. Just copy the jar in the plugins folder and the template and its example should be automatically loaded. Be aware that the pdf conversion will only work if you have PhantomJS (version >= 1.8) installed on your server.
Welcome to the second part of the file metadata blog post. Last time I explained the issues I wanted to address and started to code a service for that. Today I’ll try to show you when and how to do the actual mapping.
First comes the “When.” We need to update metadata each time the document is about to be modified or created. So I need a Listener with the following configuration:
I’ve chosen to listen to aboutToCreate and beforeDocumentModification instead of the common documentModified or documentCreated. This way we don’t have to save document again, which could trigger another documentModified hence a loop.
The listener itself is simple. It just calls the mapping service. This is where all the logic is. This way you can call it from somewhere else like an importer or from an operation.
Now that we took care of the “When,” we can handle …
Today I’m digging out an old question about XMP support in Nuxeo. I’m actually going to widen this a bit and talk about metadata in Nuxeo. A limitation we have these days is the fact that you can only read metadata from a file, not write them. So let’s think about what this means.
A few questions first: do you write back metadata to files when you edit them in Nuxeo? Do you sync everything you can extract from the file? How do you map this to existing document properties? When should you do all of this?
What we need to know is which metadata from which type of file should we extract and/or write back to the file?
So we can define a specific mapping between document properties and file metadata. It will be differentiated by the file mime type, the type of the document and the file’s xPath. …
Hi, here’s a common need that is not really addressed in Nuxeo’s default UI: searching for documents with only PDF as attachments, or any other kind of file for that matter. So today I’m going to show you how to write a widget for the search form. This widget will let the user select any type of file.
I’m going to start with the NXQL, as I feel it’s really the part people usually don’t know about. The query part you need is quite simple. Let’s say you want to search for audio files stored in file:content. The appropriate query would be:
There’s no schema here, just the complex content metadata that is declared as follows:
So of course you can also search using other metadata like size:
Now let’s say you want all attachments, like all the files stored in files:files, this is …
Today I bring you the Nuxeo Shell. This is a wonderful toolbox for developers and administrators and I think it deserves more recognition.
Playing with the Shell
Using the Shell is quite easy when you have Nuxeo IDE. You need to be in the Nuxeo perspective and click on the little shell icon on the bottom left of the screen.
You can now type tab to see a list of the available commands. These commands are sorted by namespaces. Namespaces are command registries that you can register in the shell. A command registry helps bring inside the shell a new set of commands for a specific context without having name clash problems with already existing commands. It is also very useful because you have a different type of completion for each namespace. For instance, if you have selected the local namespace, hitting tab after ls will show you the list …
As you may know, we’re in the process of a releasing Nuxeo 5.6. The first RC is available here: http://www.nuxeo.com/5.6/ . Feedbacks are welcome :-)
The good thing about the code freeze is that the different labels we have are very unlikely to change. Hence it’s the perfect time to start translating Nuxeo in another language or update existing translations.
So I started a small WebEngine project to ease the process. It has really basic features right now. You can select any languages available in nuxeo-platform-lang-ext. You get to see every keys, English labels and labels of the selected language in a table. Those columns have a text filter input to ease navigation through the 2000+ labels. There’s also a checkbox that display only empty labels for the selected languages. Fields you have modified are saved to the server automatically so that we can add them to the current …
The search box
So about that search box, I’ve found a very nice JQuery script from Johann Burkard that does most of the work. It highlights the given String in a DOM element. I’ve modified it slightly so that each time it adds a span with …