drg_cms 0.5.52.16 → 0.6.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (133) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/drg_cms/drg_cms.js +446 -144
  3. data/app/assets/javascripts/drg_cms/jstree.min.js +6 -6
  4. data/app/assets/javascripts/drg_cms_application.js +1 -1
  5. data/app/assets/stylesheets/drg_cms/drg_cms.css +625 -243
  6. data/app/assets/stylesheets/drg_cms/jstree.css +6 -12
  7. data/app/assets/stylesheets/drg_cms/select-multiple.css +18 -12
  8. data/app/assets/stylesheets/drg_cms_cms.css +1 -1
  9. data/app/controllers/cmsedit_controller.rb +536 -331
  10. data/app/controllers/dc_application_controller.rb +380 -117
  11. data/app/controllers/dc_common_controller.rb +105 -14
  12. data/app/{controllers → controls}/browse_models_control.rb +0 -0
  13. data/app/controls/dc_help_control.rb +126 -0
  14. data/app/{controllers → controls}/dc_page_control.rb +24 -8
  15. data/app/controls/dc_poll_result_control.rb +88 -0
  16. data/app/controls/dc_report.rb +225 -0
  17. data/app/{controllers → controls}/design_element_settings_control.rb +0 -0
  18. data/app/forms/all_options.yml +50 -9
  19. data/app/forms/cms_menu.yml +28 -18
  20. data/app/forms/dc_ad.yml +11 -22
  21. data/app/forms/dc_big_table.yml +1 -0
  22. data/app/forms/dc_big_table_value.yml +1 -0
  23. data/app/forms/dc_category.yml +2 -1
  24. data/app/forms/dc_design.yml +20 -16
  25. data/app/forms/dc_filter.yml +3 -6
  26. data/app/forms/dc_help_1.yml +109 -0
  27. data/app/forms/dc_journal.yml +3 -1
  28. data/app/forms/dc_json_ld.yml +59 -0
  29. data/app/forms/dc_key_value.yml +32 -0
  30. data/app/forms/dc_link.yml +1 -1
  31. data/app/forms/dc_menu.yml +2 -0
  32. data/app/forms/dc_menu_item.yml +2 -0
  33. data/app/forms/dc_page.yml +3 -5
  34. data/app/forms/dc_part.yml +1 -0
  35. data/app/forms/dc_piece.yml +1 -0
  36. data/app/forms/dc_poll.yml +19 -9
  37. data/app/forms/dc_poll_item.yml +2 -1
  38. data/app/forms/dc_poll_result.yml +83 -0
  39. data/app/forms/dc_poll_result_export.yml +35 -0
  40. data/app/forms/dc_seo.yml +33 -0
  41. data/app/forms/dc_simple_menu.yml +2 -0
  42. data/app/forms/dc_site.yml +4 -12
  43. data/app/forms/dc_user.yml +27 -11
  44. data/app/forms/dc_user_role.yml +3 -0
  45. data/app/forms/json_ld_schema.yml +168 -0
  46. data/app/helpers/cms_common_helper.rb +376 -0
  47. data/app/helpers/cms_edit_helper.rb +506 -0
  48. data/app/helpers/cms_helper.rb +268 -0
  49. data/app/helpers/cms_index_helper.rb +576 -0
  50. data/app/helpers/dc_application_helper.rb +183 -271
  51. data/app/models/concerns/dc_page_concern.rb +40 -6
  52. data/app/models/concerns/dc_policy_rule_concern.rb +20 -8
  53. data/app/models/concerns/dc_seo_concern.rb +66 -0
  54. data/app/models/concerns/dc_site_concern.rb +67 -44
  55. data/app/models/concerns/dc_user_concern.rb +62 -21
  56. data/app/models/dc_design.rb +30 -18
  57. data/app/models/dc_filter.rb +22 -13
  58. data/app/models/dc_json_ld.rb +152 -0
  59. data/app/models/dc_key_value.rb +48 -0
  60. data/app/models/dc_key_value_store.rb +1 -0
  61. data/app/models/dc_memory.rb +8 -1
  62. data/app/models/dc_page.rb +0 -1
  63. data/app/models/dc_permission.rb +49 -9
  64. data/app/models/dc_policy.rb +25 -14
  65. data/app/models/dc_policy_role.rb +22 -11
  66. data/app/models/dc_poll.rb +39 -19
  67. data/app/models/{drgcms_form_fields/drgcms_form_fields.rb → dc_poll_result.rb} +23 -2
  68. data/app/models/dc_temp.rb +140 -0
  69. data/app/models/dc_user_role.rb +2 -2
  70. data/app/models/drgcms_form_fields.rb +14 -6
  71. data/app/models/drgcms_form_fields/action.rb +61 -0
  72. data/app/models/drgcms_form_fields/check_box.rb +3 -0
  73. data/app/models/drgcms_form_fields/comment.rb +8 -4
  74. data/app/models/drgcms_form_fields/date_picker.rb +11 -9
  75. data/app/models/drgcms_form_fields/date_select.rb +1 -1
  76. data/app/models/drgcms_form_fields/{date_time_picker.rb → datetime_picker.rb} +12 -10
  77. data/app/models/drgcms_form_fields/datetime_select.rb +1 -1
  78. data/app/models/drgcms_form_fields/drgcms_field.rb +55 -9
  79. data/app/models/drgcms_form_fields/embedded.rb +26 -16
  80. data/app/models/drgcms_form_fields/file_field.rb +52 -0
  81. data/app/models/drgcms_form_fields/file_select.rb +2 -2
  82. data/app/models/drgcms_form_fields/hash_field.rb +90 -0
  83. data/app/models/drgcms_form_fields/hidden_field.rb +1 -1
  84. data/app/models/drgcms_form_fields/html_field.rb +1 -1
  85. data/app/models/drgcms_form_fields/link_to.rb +2 -2
  86. data/app/models/drgcms_form_fields/method.rb +66 -0
  87. data/app/models/drgcms_form_fields/multitext_autocomplete.rb +23 -14
  88. data/app/models/drgcms_form_fields/number_field.rb +15 -6
  89. data/app/models/drgcms_form_fields/radio.rb +96 -0
  90. data/app/models/drgcms_form_fields/readonly.rb +2 -2
  91. data/app/models/drgcms_form_fields/select.rb +92 -29
  92. data/app/models/drgcms_form_fields/text_area.rb +1 -1
  93. data/app/models/drgcms_form_fields/text_autocomplete.rb +29 -17
  94. data/app/models/drgcms_form_fields/text_field.rb +1 -1
  95. data/app/models/drgcms_form_fields/text_with_select.rb +6 -3
  96. data/app/models/drgcms_form_fields/tree_select.rb +29 -10
  97. data/app/{helpers → renderers}/dc_ad_renderer.rb +0 -0
  98. data/app/{helpers → renderers}/dc_big_menu_renderer.rb +1 -0
  99. data/app/{helpers → renderers}/dc_captcha_renderer.rb +0 -0
  100. data/app/{helpers → renderers}/dc_common_renderer.rb +0 -0
  101. data/app/{helpers → renderers}/dc_gallery_renderer.rb +1 -0
  102. data/app/{helpers → renderers}/dc_menu_renderer.rb +11 -4
  103. data/app/{helpers → renderers}/dc_page_renderer.rb +1 -0
  104. data/app/{helpers → renderers}/dc_part_renderer.rb +5 -4
  105. data/app/{helpers → renderers}/dc_piece_renderer.rb +1 -1
  106. data/app/{helpers → renderers}/dc_poll_renderer.rb +84 -48
  107. data/app/{helpers → renderers}/dc_renderer.rb +1 -0
  108. data/app/{helpers → renderers}/dc_simple_menu_renderer.rb +1 -0
  109. data/app/views/cmsedit/{remove_edit_stuff.js.erb → __remove_edit_stuff.js.erb} +0 -0
  110. data/app/views/cmsedit/{show.html.erb → __show.html.erb} +0 -0
  111. data/app/views/cmsedit/_edit_stuff.html.erb +4 -25
  112. data/app/views/cmsedit/_form.html.erb +4 -3
  113. data/app/views/cmsedit/_result.html.erb +2 -3
  114. data/app/views/cmsedit/edit.html.erb +4 -1
  115. data/app/views/cmsedit/index.html.erb +7 -1
  116. data/app/views/cmsedit/new.html.erb +3 -1
  117. data/app/views/dc_common/_help.html.erb +8 -0
  118. data/app/views/layouts/models.html.erb +2 -1
  119. data/config/locales/drgcms_en.yml +26 -3
  120. data/config/locales/drgcms_sl.yml +31 -5
  121. data/config/locales/models_en.yml +66 -18
  122. data/config/locales/models_sl.yml +71 -20
  123. data/drg_cms.gemspec +3 -3
  124. data/lib/drg_cms.rb +63 -1
  125. data/lib/drg_cms/version.rb +2 -2
  126. data/lib/generators/new_drg_form/new_drg_form_generator.rb +9 -2
  127. data/lib/tasks/database.rake +6 -56
  128. metadata +81 -63
  129. data/app/assets/stylesheets/drg_cms/__jquery-ui.css +0 -339
  130. data/app/helpers/application_helper.rb +0 -2
  131. data/app/helpers/cmsedit_helper.rb +0 -885
  132. data/app/models/dc_dummy.rb +0 -102
  133. data/test/fixtures/drg_cms_test_data.rb +0 -87
@@ -45,22 +45,33 @@
45
45
  # other policies. Default policy is also used when document has no access policy assigned.
46
46
  #########################################################################
47
47
  class DcPolicy
48
- include Mongoid::Document
49
- include Mongoid::Timestamps
48
+ include Mongoid::Document
49
+ include Mongoid::Timestamps
50
50
 
51
- field :name, type: String
52
- field :description, type: String, default: ''
53
- field :is_default, type: Boolean, default: false
54
- field :active, type: Boolean, default: true
55
- field :updated_by, type: BSON::ObjectId
56
- field :message, type: String, default: ''
57
-
58
- embeds_many :dc_policy_rules, as: :policy_rules
59
- embedded_in :dc_site
51
+ field :name, type: String
52
+ field :description, type: String, default: ''
53
+ field :is_default, type: Boolean, default: false
54
+ field :active, type: Boolean, default: true
55
+ field :updated_by, type: BSON::ObjectId
56
+ field :message, type: String, default: ''
57
+
58
+ embeds_many :dc_policy_rules, as: :policy_rules
59
+ embedded_in :dc_site
60
+
61
+ validates :name, length: { minimum: 4 }
62
+ validates :message, length: { minimum: 5 }
63
+
64
+ after_save :cache_clear
65
+ after_destroy :cache_clear
66
+
67
+ ####################################################################
68
+ # Clear cache if cache is configured
69
+ ####################################################################
70
+ def cache_clear
71
+ DrgCms.cache_clear(:dc_permission)
72
+ DrgCms.cache_clear(:dc_site)
73
+ end
60
74
 
61
- validates :name, :length => { :minimum => 4 }
62
- validates :message, :length => { :minimum => 5 }
63
-
64
75
  =begin
65
76
  #########################################################################
66
77
  # Returns values for permissions ready to be used in select field.
@@ -38,18 +38,29 @@
38
38
  # which can be persistent, when application is used as Rails plugin.
39
39
  #########################################################################
40
40
  class DcPolicyRole
41
- include Mongoid::Document
42
- include Mongoid::Timestamps
41
+ include Mongoid::Document
42
+ include Mongoid::Timestamps
43
43
 
44
- field :name, type: String
45
- field :system_name, type: String
46
- field :active, type: Boolean, default: true
47
-
48
- index( { name: 1 }, { unique: true } )
49
- index( system_name: 1 )
50
-
51
- validates :name, :length => { :minimum => 4 }
52
- validates :name, uniqueness: true
44
+ field :name, type: String
45
+ field :system_name, type: String
46
+ field :active, type: Boolean, default: true
47
+
48
+ index( { name: 1 }, { unique: true } )
49
+ index( system_name: 1 )
50
+
51
+ validates :name, :length => { :minimum => 4 }
52
+ validates :name, uniqueness: true
53
+
54
+ after_save :cache_clear
55
+ after_destroy :cache_clear
56
+
57
+ ####################################################################
58
+ # Clear cache if cache is configured
59
+ ####################################################################
60
+ def cache_clear
61
+ DrgCms.cache_clear(:dc_permission)
62
+ DrgCms.cache_clear(:dc_site)
63
+ end
53
64
 
54
65
  ########################################################################
55
66
  # Return all defined roles as choices for use in select field.
@@ -51,26 +51,46 @@
51
51
  # as DcSimpleItem embedded structure or as DRG CMS form YAML style entered into form field.
52
52
  ########################################################################
53
53
  class DcPoll
54
- include Mongoid::Document
55
- include Mongoid::Timestamps
54
+
55
+ include Mongoid::Document
56
+ include Mongoid::Timestamps
56
57
 
57
- field :name, type: String, default: ''
58
- field :title, type: String, default: ''
59
- field :sub_text, type: String, default: ''
60
- field :pre_display, type: String
61
- field :operation, type: String
62
- field :parameters, type: String
63
- field :display, type: String, default: '1'
64
- field :css, type: String
65
- field :form, type: String
66
- field :valid_from, type: DateTime
67
- field :valid_to, type: DateTime
68
- field :captcha_type, type: String
69
- field :active, type: Boolean, default: true
70
- field :created_by, type: BSON::ObjectId
71
- field :updated_by, type: BSON::ObjectId
58
+ field :name, type: String, default: ''
59
+ field :title, type: String, default: ''
60
+ field :sub_text, type: String, default: ''
61
+ field :pre_display, type: String
62
+ field :operation, type: String
63
+ field :parameters, type: String
64
+ field :display, type: String, default: '1'
65
+ field :css, type: String
66
+ field :js, type: String
67
+ field :form, type: String
68
+ field :valid_from, type: DateTime
69
+ field :valid_to, type: DateTime
70
+ field :captcha_type, type: String
71
+ field :active, type: Boolean, default: true
72
+ field :created_by, type: BSON::ObjectId
73
+ field :updated_by, type: BSON::ObjectId
72
74
 
73
- index( { name: 1 }, { unique: true } )
75
+ index( { name: 1 }, { unique: true } )
74
76
 
75
- embeds_many :dc_poll_items
77
+ embeds_many :dc_poll_items
78
+
79
+ ########################################################################
80
+ # Save poll results to DcPollResults collection
81
+ #
82
+ # Params:
83
+ # data : Hash : Records hash (params[:record])
84
+ ########################################################################
85
+ def save_results(data)
86
+ h = {}
87
+ items = self.form.blank? ? self.dc_poll_items : YAML.load(self.form.gsub(' ',' '))
88
+ items.each do |item|
89
+ next if %w(hidden_field submit_tag link_to comment).include?(item.type)
90
+ next if item.try(:options).match('hidden')
91
+ h[ item['name'] ] = data[ item['name'] ]
92
+ end
93
+ DcPollResult.create(dc_poll_id: self.id, data: h.to_yaml)
94
+ end
95
+
76
96
  end
@@ -1,5 +1,5 @@
1
1
  #--
2
- # Copyright (c) 2012+ Damjan Rems
2
+ # Copyright (c) 2020+ Damjan Rems
3
3
  #
4
4
  # Permission is hereby granted, free of charge, to any person obtaining
5
5
  # a copy of this software and associated documentation files (the
@@ -21,5 +21,26 @@
21
21
  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22
22
  #++
23
23
 
24
- module DrgcmsFormFields
24
+ ########################################################################
25
+ # == Schema information
26
+ #
27
+ # Collection name: dc_poll_results : Pools results saved
28
+ #
29
+ # _id BSON::ObjectId _id
30
+ # dc_poll_id BSON::ObjectId poll id
31
+ # data String Data saved as YAML
32
+ # confirmed Boolean Poll entry was confirmed
33
+ #
34
+ # Results of polls saved as YAML structure.
35
+ ########################################################################
36
+ class DcPollResult
37
+ include Mongoid::Document
38
+ include Mongoid::Timestamps
39
+
40
+ belongs_to :dc_poll
41
+ field :data, type: String
42
+ field :confirmed, type: Boolean, default: false
43
+
44
+ index( { dc_poll_id: 1 } )
45
+
25
46
  end
@@ -0,0 +1,140 @@
1
+ #--
2
+ # Copyright (c) 2020+ Damjan Rems
3
+ #
4
+ # Permission is hereby granted, free of charge, to any person obtaining
5
+ # a copy of this software and associated documentation files (the
6
+ # "Software"), to deal in the Software without restriction, including
7
+ # without limitation the rights to use, copy, modify, merge, publish,
8
+ # distribute, sublicense, and/or sell copies of the Software, and to
9
+ # permit persons to whom the Software is furnished to do so, subject to
10
+ # the following conditions:
11
+ #
12
+ # The above copyright notice and this permission notice shall be
13
+ # included in all copies or substantial portions of the Software.
14
+ #
15
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16
+ # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
17
+ # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18
+ # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
19
+ # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
20
+ # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21
+ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22
+ #++
23
+
24
+ ########################################################################
25
+ # == Schema information
26
+ #
27
+ # Collection name: dc_temp : Collection used for temporary saving of any models data
28
+ #
29
+ # dc_temp collection has only two fields. Key and Data hash. Data must be populated
30
+ # prior to for display best in dc_new_record callback.
31
+ #
32
+ ########################################################################
33
+ class DcTemp
34
+ include Mongoid::Document
35
+ include Mongoid::Timestamps
36
+
37
+ field :key, type: String
38
+ field :data, type: Hash, default: {}
39
+ field :active, type: Time, default: Time.now
40
+ field :order, type: String
41
+
42
+ index key: 1
43
+
44
+ ########################################################################
45
+ # Initilize object
46
+ ########################################################################
47
+ def initialize(parms = {})
48
+ super()
49
+ parms = parms.nil? ? {} : parms.stringify_keys
50
+ self.key = parms.delete('key') if parms['key']
51
+ self.active = parms.delete('active') if parms['active']
52
+ self.order = parms.delete('order') if parms['order']
53
+ parms.each { |k, value| self.data[k] = value }
54
+ end
55
+
56
+ ########################################################################
57
+ #
58
+ ########################################################################
59
+ def __id()
60
+ self.data['id']
61
+ end
62
+
63
+ ########################################################################
64
+ # Respond_to should always return true.
65
+ ########################################################################
66
+ def respond_to?(a=nil,b=nil)
67
+ true
68
+ end
69
+
70
+ ########################################################################
71
+ # Redefine send method. Send is used to assign or access value by cmsedit controller.
72
+ ########################################################################
73
+ def send(field,value=nil)
74
+ return super(field) if field.is_a? Symbol
75
+ field = field.to_s
76
+ if field.match('=')
77
+ field.chomp!('=')
78
+ self.data[field] = value
79
+ else
80
+ self.data[field]
81
+ end
82
+ end
83
+
84
+ ########################################################################
85
+ # Redefine [] method to act similar as send method
86
+ ########################################################################
87
+ def [](field)
88
+ self.data[field.to_s]
89
+ end
90
+
91
+ ########################################################################
92
+ # Redefine [] method to act similar as send method
93
+ ########################################################################
94
+ def []=(field, value)
95
+ self.data[field.to_s] = value
96
+ end
97
+
98
+ ########################################################################
99
+ # For debugging purposes
100
+ ########################################################################
101
+ def to_s
102
+ "DcTemp: @key=#{self.key} @data=#{self.data.inspect}"
103
+ end
104
+
105
+ ########################################################################
106
+ # Method missing will return value if value defined by m parameter is saved to
107
+ # @internals array or will save field value to @internals hash if m matches '='.
108
+ ########################################################################
109
+ def method_missing(m, *args, &block) #:nodoc:
110
+ m = m.to_s
111
+ if m.match('=')
112
+ m.chomp!('=')
113
+ self.data[m] = args.first
114
+ else
115
+ self.data[m]
116
+ end
117
+ end
118
+
119
+ ########################################################################
120
+ # Remove all documents with specified key from dc_temp collection
121
+ ########################################################################
122
+ def self.clear(key)
123
+ self.where(key: key).delete
124
+ end
125
+
126
+ ########################################################################
127
+ # Prepare dc_temp for data. It first checks if data associated with the key is to
128
+ # be deleted and then yields block code.
129
+ #
130
+ # Returns: Query for the data associated with the key
131
+ ########################################################################
132
+ def self.prepare(key:, clear: nil)
133
+ unless %w(no false 0).include?(clear.to_s.strip.downcase)
134
+ self.clear(key)
135
+ yield
136
+ end
137
+ self.where(key: key)
138
+ end
139
+
140
+ end
@@ -57,8 +57,8 @@ class DcUserRole
57
57
  # Determine of role is still active
58
58
  ###############################################################################
59
59
  def active?
60
- now = Time.zone.local
61
- self.active and (self.valid_from.nil? or now > self.valid_from) and (self.valid_to.nil? or now < self.valid_to)
60
+ now = Time.current
61
+ active && (valid_from.nil? || now > valid_from) && (valid_to.nil? || now < valid_to)
62
62
  end
63
63
 
64
64
  end
@@ -1,5 +1,5 @@
1
1
  #--
2
- # Copyright (c) 2012+ Damjan Rems
2
+ # Copyright (c) 2020+ Damjan Rems
3
3
  #
4
4
  # Permission is hereby granted, free of charge, to any person obtaining
5
5
  # a copy of this software and associated documentation files (the
@@ -20,10 +20,18 @@
20
20
  # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21
21
  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22
22
  #++
23
- ##############################################################
24
- # Require all files in drgcms_form_fields directory.
25
- ###############################################################
26
23
 
27
- Dir[File.join(__dir__, "drgcms_form_fields/*.rb")].each do |file|
28
- require file
24
+ module DrgcmsFormFields
25
+
26
+ def self.field(parent, record, options)
27
+ klass = options['type'].camelize
28
+ if DrgcmsFormFields.const_defined?(klass)
29
+ field = DrgcmsFormFields.const_get(klass).new(parent, record, options).render
30
+ [field.html + (field.js.size > 0 ? @parent.javascript_tag(field.js) : ''),field.css]
31
+ else
32
+ nil
33
+ end
29
34
  end
35
+
36
+ end
37
+
@@ -0,0 +1,61 @@
1
+ #--
2
+ # Copyright (c) 2012+ Damjan Rems
3
+ #
4
+ # Permission is hereby granted, free of charge, to any person obtaining
5
+ # a copy of this software and associated documentation files (the
6
+ # "Software"), to deal in the Software without restriction, including
7
+ # without limitation the rights to use, copy, modify, merge, publish,
8
+ # distribute, sublicense, and/or sell copies of the Software, and to
9
+ # permit persons to whom the Software is furnished to do so, subject to
10
+ # the following conditions:
11
+ #
12
+ # The above copyright notice and this permission notice shall be
13
+ # included in all copies or substantial portions of the Software.
14
+ #
15
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16
+ # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
17
+ # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18
+ # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
19
+ # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
20
+ # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21
+ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22
+ #++
23
+ module DrgcmsFormFields
24
+
25
+ ###########################################################################
26
+ # Implementation of action DRG CMS form field. Actions can also be inserted on
27
+ # the form like just like on action pane.
28
+ #
29
+ # ===Form options:
30
+ # * +type:+ action (required)
31
+ # * +action_type:+ link, submit or ajax action (default link)
32
+ # * +caption:+ Caption for action
33
+ # * +icon:+ Action icon
34
+ # * +url:+ direct url link
35
+ # * +controller:+ controller name
36
+ # * +action:+ action name
37
+ # * +html:+ html options which apply to link_to (optional)
38
+ #
39
+ # Form example:
40
+ # 30:
41
+ # type: link_to
42
+ # caption: Some action
43
+ # icon: cogs
44
+ # controller: my_controller
45
+ # action: my_action
46
+ # id: id # will be replaced by record._id
47
+ ###########################################################################
48
+ class Action < DrgcmsField
49
+
50
+ ###########################################################################
51
+ # Render link_to field html code
52
+ ###########################################################################
53
+ def render
54
+ @yaml['type'] = @yaml['action_type'] || 'link'
55
+ #
56
+ @html << '<ul class="action">' + @parent.dc_link_ajax_window_submit_action(@yaml,@record) + '</ul>'
57
+ self
58
+ end
59
+
60
+ end
61
+ end
@@ -30,6 +30,7 @@ module DrgcmsFormFields
30
30
  # * +type:+ check_box (required)
31
31
  # * +choices:+ Values check_box separated by comma (1,0) (yes,no)
32
32
  # * +checked_value:+ 1 or yes or approved
33
+ # * +label:+ displayed right to square field
33
34
  # * +unchecked_value:+ 0 or no or not approved
34
35
  # * +html:+ html options which apply to check_box field (optional)
35
36
  #
@@ -41,6 +42,7 @@ module DrgcmsFormFields
41
42
  # name: status
42
43
  # type: check_box
43
44
  # choices: yes,no
45
+ # label: label
44
46
  ###########################################################################
45
47
  class CheckBox < DrgcmsField
46
48
 
@@ -62,6 +64,7 @@ def render
62
64
  else
63
65
  @parent.check_box(record, @yaml['name'], @yaml['html'])
64
66
  end
67
+ @html << "<label for=\"record_#{@yaml['name']}\">#{@yaml['label']}</label>" if @yaml['label']
65
68
  self
66
69
  end
67
70
  end