diff --git a/code/Model/EditableFormField.php b/code/Model/EditableFormField.php index 9679782..83b1523 100755 --- a/code/Model/EditableFormField.php +++ b/code/Model/EditableFormField.php @@ -599,8 +599,17 @@ class EditableFormField extends DataObject */ public function getIcon() { - return ModuleLoader::getModule('silverstripe/userforms') - ->getRelativeResourcePath('images/' . strtolower($this->class) . '.png'); + $classNamespaces = explode("\\", static::class); + $shortClass = end($classNamespaces); + + $resource = ModuleLoader::getModule('silverstripe/userforms') + ->getResource('images/' . strtolower($shortClass) . '.png'); + + if (!$resource->exists()) { + return ''; + } + + return $resource->getURL(); } /** diff --git a/code/Model/EditableFormField/EditableCountryDropdownField.php b/code/Model/EditableFormField/EditableCountryDropdownField.php index b23f84a..b0b4109 100644 --- a/code/Model/EditableFormField/EditableCountryDropdownField.php +++ b/code/Model/EditableFormField/EditableCountryDropdownField.php @@ -55,8 +55,13 @@ class EditableCountryDropdownField extends EditableFormField public function getIcon() { - return ModuleLoader::getModule('silverstripe/userforms') - ->getRelativeResourcePath('images/editabledropdown.png'); + $resource = ModuleLoader::getModule('silverstripe/userforms')->getResource('images/editabledropdown.png'); + + if (!$resource->exists()) { + return ''; + } + + return $resource->getURL(); } public function getSelectorField(EditableCustomRule $rule, $forOnLoad = false) diff --git a/tests/Model/EditableFormField/EditableCountryDropdownFieldTest.php b/tests/Model/EditableFormField/EditableCountryDropdownFieldTest.php new file mode 100644 index 0000000..dff76c1 --- /dev/null +++ b/tests/Model/EditableFormField/EditableCountryDropdownFieldTest.php @@ -0,0 +1,16 @@ +assertContains('/images/editabledropdown.png', $field->getIcon()); + } +} diff --git a/tests/Model/EditableFormFieldTest.php b/tests/Model/EditableFormFieldTest.php index d107405..3fd9562 100644 --- a/tests/Model/EditableFormFieldTest.php +++ b/tests/Model/EditableFormFieldTest.php @@ -229,4 +229,11 @@ class EditableFormFieldTest extends FunctionalTest // The opposite method should be to return it to its original state, i.e. show it again $this->assertSame('removeClass("hide")', $displayRules['opposite']); } + + public function testGetIcon() + { + $field = new EditableTextField; + + $this->assertContains('/images/editabletextfield.png', $field->getIcon()); + } }