Weblog

Andrew vonderLuft Joins the Core Team John W. Long

Andrew vonderLuft of AVLUX has officially joined the core team as our resident Sys Admin. Andrew’s been serving in this capacity for a long time now so we thought it fitting to give him rank and title!

Seriously, I can’t say enough about how much Andrew has contributed by managing the Radiant infrastructure. When AVLUX first took over the hosting for the project Andrew and his team managed the complicated transition from our old servers to the new and made it as seamless as possible. At the time this was no easy task because we were running a custom install of Trac, our own Subversion repository, and our own mailing lists — not to mention our custom install of Radiant for the main website. Since that time we’ve moved over to Google and GitHub and we’ve added the extension registry. Andrew and his team have been there every step of the way.

So thank you Andrew! Thank you for your tireless efforts on behalf of the Radiant community. And welcome to the team!

RadiantCasts episode 23 - Radiant As A Blog - Part 1 Cristi Duma

Part one of a series of episodes where you'll see a quick rundown of extensions and techniques that can used to publish blogs with Radiant.

Content

Resources

Cristi Duma is a software engineer at Aissac.

RadiantCasts episode 22 - Sphinx Search Extension Josh French

Thinking Sphinx is a popular choice for easily adding powerful, full-text searching to Rails applications. Find out how the Sphinx Search extension can bring the power of Thinking Sphinx to your Radiant sites in this screencast. We'll install the Sphinx Search gem, create a search form and results page, and discuss some advanced options.

Content

Resources

Josh French is the senior engineer at Digital Pulp.

Continue Reading…

Manage CSS and Javascript from the Admin UI Jim Gay

Yesterday I committed a new core extension to Radiant: Sheets

With this new feature you can manage stylesheets and javascripts from the admin interface, but before I get into the details of it you should be aware that if you don’t want this feature, you can simply prevent it from being loaded with:

config.extensions -= [:sheets]

What is Sheets?

Sheets is a way to manage stylesheets and scripts from your existing page tree. With Sheets, you’ll create new types of pages: JavascriptPage and StylesheetPage.

Pages of these types are Sheets.

The basic features:

Differences with other solutions and the benefit of using Sheets

Some standard site templates provided by Radiant include stylesheet content in a typical page. This requires a custom layout merely to set the content type, and displays content unintended for editing by typical users. This makes for a cluttered page index view and cluttered layout index view.

A popular solution to these problems is the SNS extension . SNS separates the editing interfaces for these types of content, but the problem is that it makes too much of a separation. With SNS, stylesheet and javascript content is stored in a separate table and is generated by models completely unrelated to the Page model. This means that other extensions are required to do extra work to provide features and Radius tags to SNS content, and as a result many extensions do not do this work. This situation makes for a confusing introduction to Radiant for new users and developers alike.

You can get around this SNS limitation by using the SNS Page Hook extension but even this solution will lead to unpredictable results because it merely copies modules from the Page model to the TextAsset model and tricks the included methods into believing they are operating on a Page. But this is not a good long-term solution.

Sheets keeps this content in the same location as all other content: Pages. Doing it this way allows any chosen URL or Page slug to be protected properly with newly created pages. Even more importantly, this allows user and developer expectations about the behavior of Radius tags to make sense. With Sheets, extensions which add Radius tags to the Page model add them to stylesheets and javascripts too; there is no extra work to be done.

Not only does it do all this, but the standard Page model provides a headers method which Sheets overrides to alter the mime-type for the returned content. Sheets uses the built-in ways to serve content, rather than generating yet another way to serve content like SNS.

Extra features

By default Sheets has a SassFilter for text and since Radiant depends on (and includes) Sass, you’ll always have that available. But the SassFilter is just a regular TextFilter like the ones used on pages so I had to do some work to ensure that you wouldn’t be able to filter your typical Page content with Sass.

The SheetsExtension has 2 accessors: stylesheet_filters and javascript_filters.

You may manipulate the contents of these variables with your added text filters. You could write an extension to provide a Less filter:

SheetsExtension.stylesheet_filters << LessFilter

In the future, it will probably be a good idea to move these accessors off of the SheetsExtension itself and onto the ApplicationController so that you don’t need to worry about extension load order to add a text filter.

Currently, there is no interface element to alter the path from where your site will pull content. CSS is pulled from /css and Javascripts are pulled from /js. SNS was standardizing this approach because changing this setting required running rake tasks and not merely changing a simple setting. With Sheets, the path is determined by a page slug so in the future we’ll have a way to change that location to /whatever-you-want (but if you really want to do it now just jump in the console find the css or js pages and change their slugs).

I will be providing the ability to migrate your content from SNS to the page tree in some way (be it in the Sheets extension itself, in SNS, or some other migrator extension).

I still need to write some specs and cucumber features but I wanted to get this out in the wild to get feedback, so please leave your complaints or praise here.

Reasons for the change from SNS

Aside from the reasons I’ve listed above I could only see more difficulty down the road in getting TextAssets to behave the way you’d expect. I’ve been committing a lot of changes to SNS and recently wrote the SNS Page Hook extension to deal with these problems.

In previous versions of SNS and Radiant, the SNS approach made sense. It setup a separate ResponseCache to serve stylesheet content and javascript content from separate locations. And it completely separated those TextAssets from your page tree which makes a lot of sense for users, but developers who have worked with SNS have expected to be able to use any radius tag in the system and they couldn’t.

If you’re a user of SNS, I really think you’ll like the change to Sheets.

RadiantCasts episode 21 - Radiant 0.9 Refraction Release Cristi Duma

A few weeks ago Radiant 0.9 was released. I'm sure you saw it, and if you watch Radiantcasts, you saw Radiant 0.9 in action. This episode outlines some of the best features this release brings.

Content

Resources

Cristi Duma is a software engineer at Aissac.

RadiantCasts episode 20 - Radiant Snippets Cristi Duma

Snippets are small fragments of pages which get reused, but which do not need appear on every page. Two different layouts can share the same snippet without having to copy and paste between them. As a Rails developer you could see them as Rails partials, and in this episode you'll see how and why to use snippets to organize your code and reuse as much of it as possible.

Content

Resources

Cristi Duma is a software engineer at Aissac.

RadiantCasts episode 19 - Radiant Layouts Reloaded Cristi Duma

A few weeks back I presented three ways to make the best use of Radiant Layouts. The third was by using the Nested Layouts Extension. From the feedback I got, it seems I didn't show the full power of Nested Layouts, so in this episode you'll see the way I like to create, manage and use Radiant layouts, with the help of Nested Layouts and Stereotype extensions.

Content

Resources

Cristi Duma is a software engineer at Aissac.

RadiantCasts episode 18 - packaging Radiant extensions as gems Josh French

One of the new features in Radiant 0.9 is the ability to load extensions from gems. This screencast demonstrates how to package your extension as a gem, how to load extensions through config.gem instead of vendor/extensions, and discusses why you might prefer using gems over vendorizing your extensions.

Content

Josh French is the senior engineer at Digital Pulp.

Radiant the Organization (on github) Jim Gay

GitHub released features for managing organizations and we’ve converted the radiant account to an organization.

This means that you’ll see a message that you’re a part of the organization if you’ve been given commit rights to any of the repositories in the radiant account.

And I’d like to also point out that if you want to become a member of any particular team and help manage an official extension, please let us know. If you’ve got a bug fix, or new (well-tested) feature to add then you’re organization material.

I believe I’ve configured everyone to have access who always has, but if you’re missing from some project, complain somewhere like the mailing list.

Continue Reading…

Radiant 0.9.0 - Refraction Release Jim Gay

Announcing the release of Radiant 0.9.0.

Radiant now has a new UI, support for internationalization, loading of extensions as gems, etc. See the CHANGELOG for the full details. Here are some other quick details:

If you are an extension developer, please update your extensions.

As always we welcome your feedback and contributions.

Download & Install

You can download the gem here http://github.com/radiant/radiant/downloads

Install it with the gem command:

$ gem install radiant

How to Upgrade an Existing Project or Site

1. Update the Radiant assets from in your project:

rake radiant:update

2. Migrate the database:

rake production db:migrate

3. Restart the web server

RadiantCasts episode 17 - Managing Site Structure Cristi Duma

When using Radiant CMS out of the box we can only create, edit or remove pages. But most of the times this simple behavior is not enough. Most of the times we need to better control the order of pages, or to simply move or copy pages to different places in the tree hierarchy. Episode 17 presents Copy-Move, Reorder and Drag-Order Radiant Extensions, three extensions that help manage the site structure.

Watch in full screen

Content

Resources

Cristi Duma is a software engineer at Aissac.

In-depth view of Page#find_by_url Jim Gay

Over on the Saturn Flyer blog I’ve written up some details about how find_by_url works within the Page model.

Radiant allows you to override this method for subclasses of Page and change the behavior of the finder. I pull in an example from the Archive extension which implements a simple match against the request URI to pull up the appropriate archive index type pages.

John Muhl is our newest Core Team member Jim Gay

The addition of John Muhl to the core team is long overdue. He’s been a contributor to Radiant, squasher of bugs, and paved the way for developers to install extensions from github with ray as a precursor and alternative to the Extension Registry

Welcome, John!

RadiantCasts episode 16 - Radiant Layouts Cristi Duma

Episode 16 presents some tips and tricks on how to make the best use of Radiant Layouts and the Radiant Nested Layouts Extension - an extension that helps keeping your layouts organized and DRY.

Watch in full screen

Content

Resources

Cristi Duma is a software engineer at Aissac.

RadiantCasts episode 15 - I18N Your Extensions Cristi Duma

Radiant 0.9 is right around the corner, and one of the best features it brings is the admin side internationalization. See in this episode how easy it is to translate an extension.

Watch in full screen

Content

Resources

Cristi Duma is a software engineer at Aissac.

RSS Feed | Weblog Archives | Comments powered by HaloScan