Archive for the ‘Nuxeo IDE’ tag
We continue to release iterations to fix bugs and improve your experience with this developing tool that enables you to create applications faster and better.
So what has been updated? Here are the changes that we made for this release:
Nuxeo Project Conversion? Simplified!
The “Seam” project conversion has been removed to let you convert all your Nuxeo bundles, whatever they contain, with a unique “Convert Nuxeo Project” button.
We have also updated the way that the project is converted: we ensure that the classpath is maintained, so you can use your favorite M2Eclipse plug-in in your Eclipse with Nuxeo IDE tool and keep the dependencies that you have already set.
Hot reload technical update
Before, you had to put your Seam beans in a special source folder named “src/main/seam” so the Nuxeo server could handle them for hot reloading.
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 …
This question is sometimes asked on answers or in the forum. It’s a method to handle password reset for users. So I’m going to show you how I would do it. This is going to be a two part blog. Today I’ll write mostly about the WebEngine module handling the password reset functionality. Next week I’ll show you how to package it for Nuxeo’s Marketplace.
How does it work?
Starting with something simple, we’ll add a ‘forgotten password’ link on Nuxeo’s home page. It will redirect the user to an open (i.e. no authentication needed) page asking for an email address. Once the user submits the form, we’ll look in the user directory to see if the email has a corresponding user. If there’s no user, we’ll simply render the page again with an error message saying there’s no user associated with that email address. If we do find …
Today we have a question from pibou, who asks how he can refresh the UI using content automation in Studio.
There is indeed a Refresh UI operation, but what it does is invalidate the different query caches. This will not empty the selected documents list, for instance. And that is just what pibou needs. Unfortunately we have no operation available for this by default on 5.5. So here’s a workaround, until the operation is available for 5.6.
Clear selected documents list operation
This part is simple. You need Nuxeo IDE with a SDK setup. Create a new project or use an existing one, and run the operation wizard.
And here’s the code of my operation:
The operationHelper can give you access to some useful Seam components. Here, it gives us the DocumentListManager, which handles the different selection lists like the clipboard, the …
If you follow this blog you’ll remember I’ve been writing a lot about file import recently. And I have a new trick for you on this matter. When I created the import factory, I took an existing Nuxeo XML export as example. But this could also work with single files. In this case, the importer uses the FileMangerService plugin. The role of this plugin is to create Documents in Nuxeo using a given file.
When the file is imported, Nuxeo goes through each plugin following their processes. If the mime type matches, then it tries to create the document. If it returns null instead of a DocumentModel, the next plugin with a matching mime type is used, and so on. Here is a simple plugin contribution as an example:
Take a simple zip file as an example. The first plugin used will be the ExportedArchivePlugin. It will return …
Unfortunately, as explained by Anahide, the answer is no, you can’t. You have to override the XHTML template displaying those links. Now the good thing about Nuxeo’s architecture is that you don’t have to modify its source code and rebuild everything. It’s a lot simpler than that.
Create a new bundle with Nuxeo IDE
The first step is to set up your work environment. I strongly suggest you go through the Nuxeo IDE documentation to get strated. You’ll have a configured Eclipse and a Nuxeo server running in no time.
The next step is for you to create a new Nuxeo project. Once you’re done, you’ll have an empty Nuxeo project. Then you need to create the XHTML file you want to override. In usual Nuxeo bundles the …
This is a great opportunity to dive a little bit deeper into the IDE internals and the SDK. Stephane, one of our dedicated support guys, tells us how it works.
Did you know that the SDK has its own configuration file, nuxeo-sdk.conf? It’s the one used by the IDE when you start the server from the Nuxeo perspective. It means that if you want to use Postgres, configure the mail server or choose different templates on the SDK server that run within the IDE, you need to modify nuxeo-sdk.conf. Keep in mind that you always have to select the SDK template.
Because this template does something that is very important: it adds a valve and changes Tomcat’s class loader. A Tomcat Valve act as a preprocessor for each request. In our case, it’s …
I’ve already written about WebEngine, and I’ve written about unit testing, but I haven’t written about WebEngine AND unit testing. Let’s fix this with a little example. If you don’t already know our testing framework I suggest that you read a previous post on how to test operations or our test framework documentation.
So this is a very simple WebEngine module that returns a String “Hello WebEngine.” And we want to make sure that when we hit the /hello/ url, we get that hello.
To make sure this happens, we can set up a unit test that deploys our WebEngine module in a Jetty test server. It’s really easy to do thanks to JUnit4 runners. We’ve written our own that starts Jetty and deploys the necessary Nuxeo bundles for your tests. As you can see in the code below all you need to do is select the right …
A notification is basically an email that is sent to the people who’ve subscribed to the notification when an event occurs. For instance I can subscribe to the ‘modification’ notification on a specific document. Every time this document is modified, I receive an email from Nuxeo with the document URL and some relevant informations on this modification (date, author, etc..).
Let’s start by looking at the notifications extension point. When you add a notification, you need to choose a freemarker email template, an email subject, a label. And you have to choose events. The notification will be sent when the chosen events occurs.
But as Alice said, we still have an issue:
The curious thing is that the code works with every other defined event (for
The real life example I had in mind last time was about writing and publishing job offers. Staying on the sharing/collaborating trend, we’re going to give the opportunity to users to not only read the job offer but to send feedback to the application. It’s a common need for such a thing. We could easily imagine an application form at the bottom of the page that would collect applications, enter them in Nuxeo with an adhoc document type including resume and cover letter, adhoc content lifecycle including all the required steps (filtering, review, notifications…) up to selections of candidates. But this is a whole HR application and I don’t want to lose you. We will just make a simple thing here for now. We will allow users to simply comment on job offers to illustrate the idea of collecting user-generated feedback, content or documents. Then I’ll show you how to …