Class: DrgcmsFormFields::Select
- Inherits:
-
DrgcmsField
- Object
- DrgcmsField
- DrgcmsFormFields::Select
- Defined in:
- app/models/drgcms_form_fields.rb
Overview
Implementation of select DRG CMS form field.
Form options:
-
name:field name (required) -
type:select (required) -
choices:Values for choices separated by comma. Values can also be specified like description:value.
In the example 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.
-
collection_name.search_field_name.method_name; When searching is more complex custom search
method may be defined in CollectionName model which will provide result set for search.
-
-
If choices or eval is not defined choices will be provided from translation helpers. For example: Collection has field status choices for field may 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' -
html:html options which apply to select field (optional)
Form example:
30:
name: type
type: select
40:
name: parent
type: select
eval: DcCategory.values_for_parent
html:
include_blank: true
Direct Known Subclasses
Instance Attribute Summary
Attributes inherited from DrgcmsField
Instance Method Summary collapse
-
#do_eval(e) ⇒ Object
Return values, when choices options will be returned by evaluating expression.
-
#get_choices ⇒ Object
Create choices array for select field.
-
#render ⇒ Object
Render select field html code.
-
#ro_standard ⇒ Object
Return value when readonly is required.
Methods inherited from DrgcmsField
get_data, #hash_to_options, #initialize, #record_text_for, #set_initial_value, #t
Constructor Details
This class inherits a constructor from DrgcmsFormFields::DrgcmsField
Instance Method Details
#do_eval(e) ⇒ Object
Return values, when choices options will be returned by evaluating expression
571 572 573 574 575 576 577 578 |
# File 'app/models/drgcms_form_fields.rb', line 571 def do_eval(e) e.strip! method = e.split(/\ |\(/).first return eval(e) if respond_to?(method) # id method defined here return eval('@parent.'+e) if @parent.respond_to?(method) # is method defined in helpers # eval whatever it is eval e end |
#get_choices ⇒ Object
Create choices array for select field.
583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 |
# File 'app/models/drgcms_form_fields.rb', line 583 def get_choices begin choices = case when @yaml['choices'] then @yaml['choices'] when @yaml['eval'] then do_eval(@yaml['eval']) else c = t('helpers.label.' + @form['table'] + '.choices4_' + @yaml['name'] ) c = 'Error' if c.match( 'translation missing' ) c end # Convert string to Array choices.class == String ? choices.chomp.split(',').inject([]) {|r,v| r << (v.match(':') ? v.split(':') : v )} : choices rescue Exception => e p "Error in select eval. #{e.message}" ['error'] # return empty array when error occures end end |
#render ⇒ Object
Render select field html code
624 625 626 627 628 629 630 631 632 |
# File 'app/models/drgcms_form_fields.rb', line 624 def render return ro_standard if @readonly set_initial_value('html','selected') # @yaml['html'].symbolize_keys! record = record_text_for(@yaml['name']) @html << @parent.select(record, @yaml['name'], get_choices, @yaml['html']) self end |
#ro_standard ⇒ Object
Return value when readonly is required
607 608 609 610 611 612 613 614 615 616 617 618 619 |
# File 'app/models/drgcms_form_fields.rb', line 607 def ro_standard value = @record.respond_to?(@yaml['name']) ? @record[@yaml['name']] : nil return self if value.nil? # get_choices.each do |choice| if choice.class == Array return super(choice.first) if choice.last.to_s == value.to_s else return super(choice) if choice.to_s == value.to_s end end super('') end |