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.
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
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
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.
Please use the Issues panel on the GitHub Project Page to report any issues.