Hi @asmecher,
Thanks for the suggestion! I tried extending the ReviewFormElement
class as you suggested, but I’m still having trouble getting it to work. Here’s what I currently have:
In my plugin, I created a SliderReviewFormElementDAO
class that extends ReviewFormElementDAO
, and in the newDataObject()
method, it returns an instance of my custom SliderReviewFormElement
class. My SliderReviewFormElement
class extends ReviewFormElement
and includes the new slider type (constant REVIEW_FORM_ELEMENT_TYPE_SLIDER = 7
), with the necessary options in getReviewFormElementTypeOptions()
.
Here are the main parts of the code:
<?php
namespace APP\plugins\generic\sliderItemType\classes\reviewForms;
use PKP\reviewForm\ReviewFormElementDAO;
use APP\plugins\generic\sliderItemType\classes\reviewForms\SliderReviewFormElement;
class SliderReviewFormElementDAO extends ReviewFormElementDAO
{
public function newDataObject()
{
return new SliderReviewFormElement();
}
}
<?php
namespace APP\plugins\generic\sliderItemType\classes\reviewForms;
use PKP\reviewForm\ReviewFormElement;
class SliderReviewFormElement extends ReviewFormElement
{
public const REVIEW_FORM_ELEMENT_TYPE_SLIDER = 7; // Define a new constant for the slider
/**
* Override or extend any methods you need
*/
public function getReviewFormElementTypeOptions()
{
return [
'' => 'manager.reviewFormElements.chooseType',
self::REVIEW_FORM_ELEMENT_TYPE_SMALL_TEXT_FIELD => 'manager.reviewFormElements.smalltextfield',
self::REVIEW_FORM_ELEMENT_TYPE_TEXT_FIELD => 'manager.reviewFormElements.textfield',
self::REVIEW_FORM_ELEMENT_TYPE_TEXTAREA => 'manager.reviewFormElements.textarea',
self::REVIEW_FORM_ELEMENT_TYPE_CHECKBOXES => 'manager.reviewFormElements.checkboxes',
self::REVIEW_FORM_ELEMENT_TYPE_RADIO_BUTTONS => 'manager.reviewFormElements.radiobuttons',
self::REVIEW_FORM_ELEMENT_TYPE_DROP_DOWN_BOX => 'manager.reviewFormElements.dropdownbox',
self::REVIEW_FORM_ELEMENT_TYPE_SLIDER => 'manager.reviewFormElements.slider',
];
}
public function getMultipleResponsesElementTypes()
{
return [
self::REVIEW_FORM_ELEMENT_TYPE_CHECKBOXES,
self::REVIEW_FORM_ELEMENT_TYPE_RADIO_BUTTONS,
self::REVIEW_FORM_ELEMENT_TYPE_DROP_DOWN_BOX,
self::REVIEW_FORM_ELEMENT_TYPE_SLIDER,
];
}
}
I also created the necessary templates for rendering the slider, but the system doesn’t seem to be calling my custom SliderReviewFormElementDAO
class, so the new slider type isn’t showing up in the dropdown for the element types.
I think I’ve implemented what you suggested regarding the newDataObject()
function, but I’m still missing something to get it fully working.
Any further advice would be appreciated!