Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

Allows overriding of Validators in Radiant CMS Models.

branch: master

Fetching latest commit…

Octocat-spinner-32-eaf2f5

Cannot retrieve the latest commit at this time

Octocat-spinner-32 app
Octocat-spinner-32 features
Octocat-spinner-32 lib
Octocat-spinner-32 spec
Octocat-spinner-32 .gitignore
Octocat-spinner-32 LICENSE
Octocat-spinner-32 README.md
Octocat-spinner-32 Rakefile
Octocat-spinner-32 cucumber.yml
Octocat-spinner-32 radiant_validators_extension.rb
README.md

Radiant Validators

This Radiant CMS extension allows extension developers to easily override the validators built into Radiant's models. This is done by adding a new method to the ActiveRecord class to clear validations, and methods to remove validations based on validator name. All built-in Radiant model validations are cleared and redefined in this extension with names set to allow other extensions to remove them easily.

INSTALLATION

1: Install the extension files

Automated Installation:
./script/extension install radiant_validators

Manual Installation:
cd ./vendor/extensions
git clone git://github.com/JediFreeman/Radiant-Validators-Extension.git

2: Once installed, you need to ensure the application will load this extension first. If it does not, it is possible that another extension will create some custom validators on radiant core models and they will get removed when this extension loads and resets the validators. To do so, edit your config/environment.rb to load Help first:

Radiant::Initializer.run do |config|
...

    config.extensions = [:radiant_validators, :all]

...
end

3: Restart the server

HOW TO USE

To override a validator, it is pretty straight forward. Take a look at the example below that overrides the Page model slug format validator to allow apostrophes.

1: In your extension lib directory, create an extender file for the model you wish to override (for example, we are overridding the Page model, so we create page_extender.rb) and add the following:

module PageExtender
  def self.included(base)
    base.class_eval {
      # remove the existing validation for slug format
      base.remove_validation :page_slug_format

      # add a new validator with a slightly different regex to allow apostrophes
      validates_format_of :slug, :with => %r{^([-_.A-Za-z0-9']*|/)$}, :message => 'invalid format', :name => :page_slug_format
    }
  end
end

2: In your main extension file activate method, include your extender on the Page model:

def activate
  Page.send :include, PageExtender
end

3: Restart the server

ADDITIONAL INFORMATION

To see a list of validator names, take a look in radiant_validators/app/models/*_validation_extender.rb files.

custom validator functions (defined with 'validate :function_name') are not in the scope of this extension, as those can already easily be overridden by creating a new function in your extender.

You can verify the validators on a model by loading up the script/console and calling .validate (ie, Page.validate). You will get a list of validators and you should be able to see the :name setting for each one.

QUESTIONS OR ISSUES

Please use the Issues panel on the GitHub Project Page to report any issues.

Something went wrong with that request. Please try again.