Class: DrgcmsFormFields::Radio

Inherits:
Select show all
Defined in:
app/models/drgcms_form_fields/radio.rb

Overview

Implementation of radio DRG CMS form field. Field provides radio button input structure. Form options are mostly same as in select field.

Form options:

  • name: field name (required)

  • type: radio (required)

  • choices: Values for choices separated by comma. Values can also be specified like description:value.

In this case description will be shown to user, but value will be saved to document.

choices: 'OK:0,Ready:1,Error:2'
choices: Ruby,Pyton,PHP
  • eval: Choices will be provided by evaluating expression eval: dc_choices4(‘model_name’,‘description_field_name’,‘_id’); dc_choices4 helper will provide data for select field. eval: ModelName.choices4_field; ModelName class will define method choices4_field which will provide data for select field. Since expression is evaluated in the context of Form Field object

Even session session variables can be accessed.

eval: 'MyClass.method(@parent.session[:user_id])'

When searching is more complex custom search method may be defined in CollectionName model which will provide result set for search.

eval: collection_name.search_field_name.method_name;

If choices or eval is not defined choices will be provided from translation helpers. For example: Collection has field status. Choices for field will be provided by en.helpers.model_name.choices4_status entry of english translation. English is of course default translation. If you provide translations in your local language then select choices will be localized.

en.helpers.model_name.choices4_status: 'OK:0,Ready:1,Error:2'
sl.helpers.model_name.choices4_status: 'V redu:0,Pripravljen:1,Napaka:2'
  • inline: Radio buttons will be presented inline instead of stacked on each other.

Form example:

10:
  name: hifi
  type: radio
  choices: 'Marantz:1,Sony:2,Bose:3,Pioneer:4'
  inline: true

Instance Attribute Summary

Attributes inherited from DrgcmsField

#css, #js

Instance Method Summary collapse

Methods inherited from Select

#choices_in_eval, #choices_in_helper, #get_choices, get_data, #ro_standard

Methods inherited from DrgcmsField

#css_code, get_data, #hash_to_options, #html, #initialize, #record_text_for, #ro_standard, #set_css_code, #set_initial_value, #set_style, #t

Constructor Details

This class inherits a constructor from DrgcmsFormFields::DrgcmsField

Instance Method Details

#renderObject

Render text_with_select field html code



66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
# File 'app/models/drgcms_form_fields/radio.rb', line 66

def render
  #return ro_standard if @readonly  
  set_initial_value('html','value')
  
  record = record_text_for(@yaml['name'])
  @yaml['html'].symbolize_keys!
  clas = 'dc-radio' + ( @yaml['inline'] ? ' dc-inline' : '')
  @html << "<div class=\"#{clas}\">"
  choices = get_choices
  # When error and boolean field
  if choices.size == 1 and (@record[@yaml['name']].class == TrueClass or @record[@yaml['name']].class == FalseClass)
    choices = [[I18n.t('drgcms.true'), true], [I18n.t('drgcms.false'), false]] 
  end
  choices.each do |choice|
    choice = [choice, choice] if choice.class == String
    @html << "<div>"
    @html << @parent.radio_button_tag("#{record}[#{@yaml['name']}]",choice.last, choice.last.to_s == @record[@yaml['name']].to_s)
    @html << choice.first
    @html << "</div>"
  end
  @html << "</div>\n"
  self
end