Ubiquo 0.8.1 released

Today we are releasing the Ubiquo version 0.8.1. This new version brings bugfixes and some new features.

Ubiquo settings

We have completely revamped the Ubiquo::Config module and now it’s called Settings. But has a lot more to offer. Type validation, transparent backend, and best of all, no-brainer CMS integration, to easily allow Ubiquo users to change the value of the settings.

You can find out more in the post about it.

Ubiquo Media

Added suport for #translation_shared_on_initialize for media attachments( #701 )  and validations on media_attachment sizes and types.

Ubiquo Design

Update the widget rendering behaviour to manage redirects in a more suitable way (#431).

Ubiquo Authentication

We added an option to define the storage for user’s photo ( #467 ).

Ubiquo i18n

It comes with some performance improvements on the localize filter ( #719 ), support for #initialize_translations_for and more features on nested attributes ( #696#669 ) and support for mark_for_destruction in shared associations ( #659 ).

 

As always, we encourage you to upgrade the plugins to this version, on the 0.8-stable branch.

If you are following the stable branch you should update to the latest version:

 

You can see the full list of changes on the 0.8.1 changelog.

Episode V: Settings strike back

Today we are releasing a new feature that has been cooking slowly in the labs during a lot of time.

We have completely revamped the Ubiquo::Config module and now it’s called Settings. But has a lot more to offer. Type validation, transparent backend, and best of all, no-brainer CMS integration, to easily allow Ubiquo users to change the value of the settings.

The new syntax looks like this:

https://gist.github.com/1601452

It gets better: it’s backwards compatible with the old syntax! (you’ll have a nice deprecation warning though). This means that you can add it to your existing project following these simple steps:

  1. Update ubiquo_core (it’s where it is bundled, since it’s a basic piece to build the other plugins). You should be in the 0.8-stable branch.

That’s all! You can start to use Settings from here. But if you want to use the user interface too:

  1. Overwrite the ubiquo.css and ubiquo.js from ubiquo_core to your app.
  2. Open your _main_navtabs file and use ubiquo_settings_tab(navigator) wherever you want the Settings tab to appear in.

Nothing more required. It’s time to start playing with it. You will find more info in the ubiquo_core guide and in ubiquo_configuration if you want to learn how to get the most of it.

 

Releasing ubiquo 0.8

A new version of ubiquo is out!

After these months of “silent” work on the master branch, we reached the features for this release.

We’ve devoted a lot of love and time to it and we expect you to like it as much as we do. We use it everyday, so we can assure you that it’s something to consider.

Among other, the main changes are:

Ubiquo Categories

Our categorization plugin makes it really easy to tag or classify your models. It actually has become a “must-have” plugin for us. It provides a simple mechanism to organize and categorize the content of your website, adding a generic category system for your models and forms. It makes easy the typical case of news categorization, write post tags or choose an attribute value from a list of options. You categorize something with only 2 lines of code. It rocks!

Find out more in ubiquo categories guide.

Ubiquo Design

This plugin provides a complete solution for the public part of your website. It gives you the needed tools to publish pages with a modular structure in a totally dynamic way. Managing page contents with a user-friendly drag & drop interface, organized within blocks that can be shared among other pages, or creating diferent page layouts. It allows to publish multilingual contents when working together with the ubiquo_i18n plugin. Cache aware, tied to the models and integrated with the rails cache framework, thanks to our experience in high load sites.

It brings reusability, power and user-friendlyness to the publishers in their day by day work. It’s also this way for the developer who works on it.

Find out more in ubiquo design guide.

Ubiquo Core

Our plugin base where we set the main features and where other plugins can be built on top of it. We’ve refactored the filters interface to get a big code reduction. Redesigned the user interface to a freshened and cooler look. Improved the lightbox implementation giving support to nested lightboxes, and added a custom builder to reduce code repetition when writing forms without losing freedom. Easily schedule your cron jobs without having to worry about concurrency, logging, notifying, or installing on the environments. A class loading mechanism to easily extend the ubiquo plugins code without forking it. And at last but not less important, a relation selector, to manage the associations between models on the forms in a breeze!

Find out more in ubiquo core guide.

Ubiquo Media

Our media manager plugin has been reviewed and some parts of it rewritten. We did a redesign on the media selector to show a better interface. We added a “crop and resize” feature to avoid having to use a desktop program to do that, and choose which part of the image to show on the diferent image sizes defined for the site.

Find out more in ubiquo media guide.

Translate

We integrated the “translate” plugin to manage the literals from the web. It is customized to both be useful for third-party translators and developers, and make it easy for the user to generate the translations to the other languages.

Find out more in translate guide.

Ubiquo i18n

The plugin has been revamped and code-reviewed. With more intuitive default behaviours, it now supports sharing transparently associations between translations in a lot of new situations, and allows other plugins to be built on top of it.

Find out more in ubiquo i18n guide.

 

And many more…!

In these almost 2 years of work, there are a lot of small improvements, fixes and features in Ubiquo that you can find useful and interesting. We want to thank everybody who contributed to it.

 

If you want to check a more detailed list of changes take a look to the 0.8 Changelog.

 

Revamping Ubiquo forms – UbiquoFormBuilder

The forms have been pieces of repeated HTML code till now. We focused on it to get more DRY and get a powerful abstraction applying the “the convention over configuration” concept.

We have a new helper method, ubiquo_form_for, which is like the form_for but uses our custom form builder UbiquoFormBuilder.

This builder does the same as usual but adds all the surrounding html that uses to be added to a input in a ubiquo form.

Using the regular builder, we would write this:

but with UbiquoFormBuilder we write this:

As you can see the form gets more “right to the point”, and the code is far less verbose.

Features:

  • Add hidden tooltips on a field to help introducing the data.
  • Mark a field as translatable
  • Add a description to the field
  • Group fields in tabs

The tabs are shown like this:

    tabs on a form

    You can find more on our guide: http://guides.ubiquo.me/edge/ubiquo_core.html#form-helpers

     

    Ubiquo updated to Rails 2.3.14

    Ubiquo has been updated to the latest 2.3.X release, which contains critical security fixes:

    http://weblog.rubyonrails.org/2011/8/16/ann-rails-2-3-14

    For new projects, simply update your ubiquo gem and the project will be created using 2.3.14.

    For existing projects, if you are in Rails 2.3.11, you have to upgrade following the usual steps:

    1. Update config/environment.rb’s RAILS_GEM_VERSION
    2. Update Gemfile’s rails version (if using bundler)
    3. Run bundle install

    If you are still stuck in a version <2.3.11, you should also upgrade as soon as possible. You can follow the instructions we published on how to do it.

    Introducing Ubiquo Extensions Loader

    A few weeks ago we added a new extension mechanism to Ubiquo, to easily overcome all the issues that show up in Rails projects when you try to extend classes or modules. If you have tried it, you will know that some factors have to be taken into account, primarily, the loading order and the caching or not of classes. As you try to modularize your application, you run into bigger problems, and in the end the load of the different components can be something similar to a puzzle.

    Using Ubiquo Extensions Loader these problems are now gone. This is the mechanism that we use for example to conditionally extend a plugin from another plugin, or to safely extend a plugin from an application. Take a look at the guide for more information, and start using it in all your edge Ubiquo projects, since it’s bundled in ubiquo_core.

    Now on edge: easier relations in scaffold generation

    Until now, when you created a ubiquo_scaffold, and you wanted to indicate relations from the command line, you had to eiher manually add any xx_id field in the migration after creating the ubiquo_scaffold (and before running the migration), or, if you added it as another field, you had to remove it later from the views.

    Both options were repetitive and annoying to the developer. So we changed it. Now you can create three scaffolds just like this:

    script/generate ubiquo_scaffold Book name:string –belongs-to author

    script/generate ubiquo_scaffold Author name:string –has_many books –belongs_to country

    script/generate ubiquo_scaffold Country name:string –has_many authors

    Then simply go to ubiquo and you will find the scaffolds as you would expect: with relation selectors, and without any xx_id field in the views.