-
Notifications
You must be signed in to change notification settings - Fork 9
/
FontAwesomeIconPickerField.php
56 lines (47 loc) · 1.99 KB
/
FontAwesomeIconPickerField.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<?php
/**
* Allows user to pick a Font Awesome Icon
*
* @author Darren-Lee Joseph <darrenleejoseph@gmail.com>
* @package silverstripe-fontawesome-iconpickerfield
*/
class FontAwesomeIconPickerField extends TextField {
public function Field($properties = array()) {
$this->addExtraClass('form-control icp icp-auto');
Requirements::css("//maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.min.css");
Requirements::css("//maxcdn.bootstrapcdn.com/font-awesome/latest/css/font-awesome.min.css");
Requirements::css(FONTAWESOMEICONPICKER_DIR . '/code/thirdparty/fontawesome-iconpicker-1.0.0/dist/css/fontawesome-iconpicker.min.css');
Requirements::css(FONTAWESOMEICONPICKER_DIR . '/assets/setup-icon-picker.css');
Requirements::set_force_js_to_bottom(true);
Requirements::javascript(FONTAWESOMEICONPICKER_DIR . '/code/thirdparty/fontawesome-iconpicker-1.0.0/dist/js/fontawesome-iconpicker.js');
Requirements::javascript(FONTAWESOMEICONPICKER_DIR . '/code/thirdparty/jsyaml/dist/js-yaml.min.js');
Requirements::javascript(FONTAWESOMEICONPICKER_DIR . '/assets/setup-icon-picker.js');
return parent::Field($properties);
}
/**
* Override the type to get the proper class name on the field
* "text" is needed here to render the form field as a normal text-field
* @see FormField::Type()
*/
public function Type(){
return 'text';
}
/**
* Ensure the value is a valid Font Awesome value beginning with 'fa-'
* @see FormField::validate()
*/
public function validate($validator)
{
if(!empty ($this->value) && !preg_match('/^fa-[a-z]+/', $this->value))
{
$validator->validationError(
$this->name,
_t('FontAwesomeIconPickerField.VALIDFONT', 'Please enter a valid Font Awesome font name format.'),
'validation',
false
);
return false;
}
return true;
}
}