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.
- checksums.yaml +4 -4
- data/app/assets/javascripts/drg_cms/drg_cms.js +446 -144
- data/app/assets/javascripts/drg_cms/jstree.min.js +6 -6
- data/app/assets/javascripts/drg_cms_application.js +1 -1
- data/app/assets/stylesheets/drg_cms/drg_cms.css +625 -243
- data/app/assets/stylesheets/drg_cms/jstree.css +6 -12
- data/app/assets/stylesheets/drg_cms/select-multiple.css +18 -12
- data/app/assets/stylesheets/drg_cms_cms.css +1 -1
- data/app/controllers/cmsedit_controller.rb +536 -331
- data/app/controllers/dc_application_controller.rb +380 -117
- data/app/controllers/dc_common_controller.rb +105 -14
- data/app/{controllers → controls}/browse_models_control.rb +0 -0
- data/app/controls/dc_help_control.rb +126 -0
- data/app/{controllers → controls}/dc_page_control.rb +24 -8
- data/app/controls/dc_poll_result_control.rb +88 -0
- data/app/controls/dc_report.rb +225 -0
- data/app/{controllers → controls}/design_element_settings_control.rb +0 -0
- data/app/forms/all_options.yml +50 -9
- data/app/forms/cms_menu.yml +28 -18
- data/app/forms/dc_ad.yml +11 -22
- data/app/forms/dc_big_table.yml +1 -0
- data/app/forms/dc_big_table_value.yml +1 -0
- data/app/forms/dc_category.yml +2 -1
- data/app/forms/dc_design.yml +20 -16
- data/app/forms/dc_filter.yml +3 -6
- data/app/forms/dc_help_1.yml +109 -0
- data/app/forms/dc_journal.yml +3 -1
- data/app/forms/dc_json_ld.yml +59 -0
- data/app/forms/dc_key_value.yml +32 -0
- data/app/forms/dc_link.yml +1 -1
- data/app/forms/dc_menu.yml +2 -0
- data/app/forms/dc_menu_item.yml +2 -0
- data/app/forms/dc_page.yml +3 -5
- data/app/forms/dc_part.yml +1 -0
- data/app/forms/dc_piece.yml +1 -0
- data/app/forms/dc_poll.yml +19 -9
- data/app/forms/dc_poll_item.yml +2 -1
- data/app/forms/dc_poll_result.yml +83 -0
- data/app/forms/dc_poll_result_export.yml +35 -0
- data/app/forms/dc_seo.yml +33 -0
- data/app/forms/dc_simple_menu.yml +2 -0
- data/app/forms/dc_site.yml +4 -12
- data/app/forms/dc_user.yml +27 -11
- data/app/forms/dc_user_role.yml +3 -0
- data/app/forms/json_ld_schema.yml +168 -0
- data/app/helpers/cms_common_helper.rb +376 -0
- data/app/helpers/cms_edit_helper.rb +506 -0
- data/app/helpers/cms_helper.rb +268 -0
- data/app/helpers/cms_index_helper.rb +576 -0
- data/app/helpers/dc_application_helper.rb +183 -271
- data/app/models/concerns/dc_page_concern.rb +40 -6
- data/app/models/concerns/dc_policy_rule_concern.rb +20 -8
- data/app/models/concerns/dc_seo_concern.rb +66 -0
- data/app/models/concerns/dc_site_concern.rb +67 -44
- data/app/models/concerns/dc_user_concern.rb +62 -21
- data/app/models/dc_design.rb +30 -18
- data/app/models/dc_filter.rb +22 -13
- data/app/models/dc_json_ld.rb +152 -0
- data/app/models/dc_key_value.rb +48 -0
- data/app/models/dc_key_value_store.rb +1 -0
- data/app/models/dc_memory.rb +8 -1
- data/app/models/dc_page.rb +0 -1
- data/app/models/dc_permission.rb +49 -9
- data/app/models/dc_policy.rb +25 -14
- data/app/models/dc_policy_role.rb +22 -11
- data/app/models/dc_poll.rb +39 -19
- data/app/models/{drgcms_form_fields/drgcms_form_fields.rb → dc_poll_result.rb} +23 -2
- data/app/models/dc_temp.rb +140 -0
- data/app/models/dc_user_role.rb +2 -2
- data/app/models/drgcms_form_fields.rb +14 -6
- data/app/models/drgcms_form_fields/action.rb +61 -0
- data/app/models/drgcms_form_fields/check_box.rb +3 -0
- data/app/models/drgcms_form_fields/comment.rb +8 -4
- data/app/models/drgcms_form_fields/date_picker.rb +11 -9
- data/app/models/drgcms_form_fields/date_select.rb +1 -1
- data/app/models/drgcms_form_fields/{date_time_picker.rb → datetime_picker.rb} +12 -10
- data/app/models/drgcms_form_fields/datetime_select.rb +1 -1
- data/app/models/drgcms_form_fields/drgcms_field.rb +55 -9
- data/app/models/drgcms_form_fields/embedded.rb +26 -16
- data/app/models/drgcms_form_fields/file_field.rb +52 -0
- data/app/models/drgcms_form_fields/file_select.rb +2 -2
- data/app/models/drgcms_form_fields/hash_field.rb +90 -0
- data/app/models/drgcms_form_fields/hidden_field.rb +1 -1
- data/app/models/drgcms_form_fields/html_field.rb +1 -1
- data/app/models/drgcms_form_fields/link_to.rb +2 -2
- data/app/models/drgcms_form_fields/method.rb +66 -0
- data/app/models/drgcms_form_fields/multitext_autocomplete.rb +23 -14
- data/app/models/drgcms_form_fields/number_field.rb +15 -6
- data/app/models/drgcms_form_fields/radio.rb +96 -0
- data/app/models/drgcms_form_fields/readonly.rb +2 -2
- data/app/models/drgcms_form_fields/select.rb +92 -29
- data/app/models/drgcms_form_fields/text_area.rb +1 -1
- data/app/models/drgcms_form_fields/text_autocomplete.rb +29 -17
- data/app/models/drgcms_form_fields/text_field.rb +1 -1
- data/app/models/drgcms_form_fields/text_with_select.rb +6 -3
- data/app/models/drgcms_form_fields/tree_select.rb +29 -10
- data/app/{helpers → renderers}/dc_ad_renderer.rb +0 -0
- data/app/{helpers → renderers}/dc_big_menu_renderer.rb +1 -0
- data/app/{helpers → renderers}/dc_captcha_renderer.rb +0 -0
- data/app/{helpers → renderers}/dc_common_renderer.rb +0 -0
- data/app/{helpers → renderers}/dc_gallery_renderer.rb +1 -0
- data/app/{helpers → renderers}/dc_menu_renderer.rb +11 -4
- data/app/{helpers → renderers}/dc_page_renderer.rb +1 -0
- data/app/{helpers → renderers}/dc_part_renderer.rb +5 -4
- data/app/{helpers → renderers}/dc_piece_renderer.rb +1 -1
- data/app/{helpers → renderers}/dc_poll_renderer.rb +84 -48
- data/app/{helpers → renderers}/dc_renderer.rb +1 -0
- data/app/{helpers → renderers}/dc_simple_menu_renderer.rb +1 -0
- data/app/views/cmsedit/{remove_edit_stuff.js.erb → __remove_edit_stuff.js.erb} +0 -0
- data/app/views/cmsedit/{show.html.erb → __show.html.erb} +0 -0
- data/app/views/cmsedit/_edit_stuff.html.erb +4 -25
- data/app/views/cmsedit/_form.html.erb +4 -3
- data/app/views/cmsedit/_result.html.erb +2 -3
- data/app/views/cmsedit/edit.html.erb +4 -1
- data/app/views/cmsedit/index.html.erb +7 -1
- data/app/views/cmsedit/new.html.erb +3 -1
- data/app/views/dc_common/_help.html.erb +8 -0
- data/app/views/layouts/models.html.erb +2 -1
- data/config/locales/drgcms_en.yml +26 -3
- data/config/locales/drgcms_sl.yml +31 -5
- data/config/locales/models_en.yml +66 -18
- data/config/locales/models_sl.yml +71 -20
- data/drg_cms.gemspec +3 -3
- data/lib/drg_cms.rb +63 -1
- data/lib/drg_cms/version.rb +2 -2
- data/lib/generators/new_drg_form/new_drg_form_generator.rb +9 -2
- data/lib/tasks/database.rake +6 -56
- metadata +81 -63
- data/app/assets/stylesheets/drg_cms/__jquery-ui.css +0 -339
- data/app/helpers/application_helper.rb +0 -2
- data/app/helpers/cmsedit_helper.rb +0 -885
- data/app/models/dc_dummy.rb +0 -102
- data/test/fixtures/drg_cms_test_data.rb +0 -87
data/app/forms/dc_user_role.yml
CHANGED
@@ -0,0 +1,168 @@
|
|
1
|
+
## JSON/LD schema description
|
2
|
+
---
|
3
|
+
# Organization
|
4
|
+
Organization:
|
5
|
+
level: 1
|
6
|
+
name:
|
7
|
+
type: String
|
8
|
+
text: Organization name
|
9
|
+
|
10
|
+
legalName:
|
11
|
+
type: String
|
12
|
+
text: Organization legal name
|
13
|
+
|
14
|
+
'@id':
|
15
|
+
type: String
|
16
|
+
text: https://www.example.com
|
17
|
+
|
18
|
+
url:
|
19
|
+
type: String
|
20
|
+
text: https://www.example.com
|
21
|
+
|
22
|
+
logo:
|
23
|
+
type: String
|
24
|
+
text: https://www.example.com/logo.jpg
|
25
|
+
|
26
|
+
foundingDate:
|
27
|
+
type: String
|
28
|
+
text: Year
|
29
|
+
|
30
|
+
founders:
|
31
|
+
type: Person
|
32
|
+
|
33
|
+
address:
|
34
|
+
type: PostalAddress
|
35
|
+
|
36
|
+
contactPoint:
|
37
|
+
type: ContactPoint
|
38
|
+
|
39
|
+
sameAs:
|
40
|
+
type: Array
|
41
|
+
|
42
|
+
# Person
|
43
|
+
Person:
|
44
|
+
|
45
|
+
name:
|
46
|
+
type: String
|
47
|
+
text: Name
|
48
|
+
|
49
|
+
address:
|
50
|
+
type: PostalAddress
|
51
|
+
|
52
|
+
collegue:
|
53
|
+
type: Array
|
54
|
+
|
55
|
+
email:
|
56
|
+
type: String
|
57
|
+
text: eMail address
|
58
|
+
|
59
|
+
image:
|
60
|
+
type: String
|
61
|
+
text: Image filename
|
62
|
+
|
63
|
+
jobTitle:
|
64
|
+
type: String
|
65
|
+
text: Job title
|
66
|
+
|
67
|
+
alumniOf:
|
68
|
+
type: String
|
69
|
+
text: School name
|
70
|
+
|
71
|
+
birthPlace:
|
72
|
+
type: String
|
73
|
+
text: City of birth
|
74
|
+
|
75
|
+
birthDate:
|
76
|
+
type: String
|
77
|
+
text: 1999-31-12
|
78
|
+
|
79
|
+
jobTitle:
|
80
|
+
type: String
|
81
|
+
text: Job title
|
82
|
+
|
83
|
+
gender:
|
84
|
+
type: String
|
85
|
+
text: male/female
|
86
|
+
|
87
|
+
telephone:
|
88
|
+
type: String
|
89
|
+
text: (123) 456-6789
|
90
|
+
|
91
|
+
url:
|
92
|
+
type: String
|
93
|
+
text: http://www.example.com
|
94
|
+
|
95
|
+
sameAs:
|
96
|
+
type: Array
|
97
|
+
|
98
|
+
#PostalAddress
|
99
|
+
PostalAddress:
|
100
|
+
|
101
|
+
|
102
|
+
streetAddress:
|
103
|
+
type: String
|
104
|
+
text: address
|
105
|
+
|
106
|
+
postalCode:
|
107
|
+
type: String
|
108
|
+
text: 1234
|
109
|
+
|
110
|
+
addressLocality:
|
111
|
+
type: String
|
112
|
+
text: CityName
|
113
|
+
|
114
|
+
addressRegion:
|
115
|
+
type: String
|
116
|
+
text: CA
|
117
|
+
|
118
|
+
addressCountry:
|
119
|
+
type: String
|
120
|
+
text: SI or Slovenia
|
121
|
+
|
122
|
+
#ContactPoint
|
123
|
+
ContactPoint:
|
124
|
+
|
125
|
+
telephone:
|
126
|
+
type: String
|
127
|
+
text: +1-877-453-1304
|
128
|
+
|
129
|
+
contactType:
|
130
|
+
type: String
|
131
|
+
text: technical support
|
132
|
+
|
133
|
+
contactOption:
|
134
|
+
type: String
|
135
|
+
text: TollFree
|
136
|
+
|
137
|
+
areaServed:
|
138
|
+
type: Array
|
139
|
+
text: [US,CA]
|
140
|
+
|
141
|
+
availableLanguage:
|
142
|
+
type: String
|
143
|
+
text: [English,French]
|
144
|
+
|
145
|
+
FAQPage:
|
146
|
+
level: 1
|
147
|
+
|
148
|
+
dummy:
|
149
|
+
type: String
|
150
|
+
text: yes
|
151
|
+
|
152
|
+
mainEntity:
|
153
|
+
type: Question
|
154
|
+
|
155
|
+
Question:
|
156
|
+
|
157
|
+
name:
|
158
|
+
type: String
|
159
|
+
text: Question?
|
160
|
+
|
161
|
+
acceptedAnswer:
|
162
|
+
type: Answer
|
163
|
+
n: 1
|
164
|
+
|
165
|
+
Answer:
|
166
|
+
'@type': Answer
|
167
|
+
text: Your answer
|
168
|
+
|
@@ -0,0 +1,376 @@
|
|
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
|
+
|
24
|
+
|
25
|
+
####################################################################
|
26
|
+
# Common methods which may also come handy in controllers or models or any
|
27
|
+
# other module of program.
|
28
|
+
#
|
29
|
+
# Usage: include CmsCommonHelper
|
30
|
+
####################################################################
|
31
|
+
module CmsCommonHelper
|
32
|
+
|
33
|
+
####################################################################
|
34
|
+
# Wrapper for i18 t method, with some spice added. If translation is not found English
|
35
|
+
# translation value will be returned. And if still not found default value will be returned if passed.
|
36
|
+
#
|
37
|
+
# Parameters:
|
38
|
+
# [key] String. String to be translated into locale.
|
39
|
+
# [default] String. Value returned if translation is not found.
|
40
|
+
#
|
41
|
+
# Example:
|
42
|
+
# t('translate.this','Enter text for ....')
|
43
|
+
#
|
44
|
+
# Returns:
|
45
|
+
# String. Translated text.
|
46
|
+
####################################################################
|
47
|
+
def self.t(key, default=nil)
|
48
|
+
c = I18n.t(key)
|
49
|
+
if c.class == Hash or c.match( 'translation missing' )
|
50
|
+
c = I18n.t(key, locale: 'en')
|
51
|
+
# Still not found. Return default if set
|
52
|
+
if c.class == Hash or c.match( 'translation missing' )
|
53
|
+
c = default.nil? ? key : default
|
54
|
+
end
|
55
|
+
end
|
56
|
+
c
|
57
|
+
end
|
58
|
+
|
59
|
+
####################################################################
|
60
|
+
def t(key, default=nil) #:nodoc
|
61
|
+
CmsCommonHelper.t(key, default)
|
62
|
+
end
|
63
|
+
|
64
|
+
####################################################################
|
65
|
+
# Returns table (collection) name translation for usage in dialog title. Tablename
|
66
|
+
# title is provided by helpers.label.table_name.tabletitle locale.
|
67
|
+
#
|
68
|
+
# Parameters:
|
69
|
+
# [tablename] String. Table (collection) name to be translated.
|
70
|
+
# [default] String. Value returned if translation is not found.
|
71
|
+
#
|
72
|
+
# Returns:
|
73
|
+
# String. Translated text.
|
74
|
+
####################################################################
|
75
|
+
def t_tablename(tablename, default=nil)
|
76
|
+
t('helpers.label.' + tablename + '.tabletitle', default || tablename)
|
77
|
+
end
|
78
|
+
|
79
|
+
############################################################################
|
80
|
+
# Returns label for field translated to current locale for usage on data entry form.
|
81
|
+
# Translation is provided by lang.helpers.label.table_name.field_name locale. If
|
82
|
+
# translation is not found method will capitalize field_name and replace '_' with ' '.
|
83
|
+
############################################################################
|
84
|
+
def t_name(field_name, default='')
|
85
|
+
c = t("helpers.label.#{@form['table']}.#{field_name}", default)
|
86
|
+
c = field_name.capitalize.gsub('_',' ') if c.match( 'translation missing' )
|
87
|
+
c
|
88
|
+
end
|
89
|
+
|
90
|
+
###########################################################################
|
91
|
+
# When select field is used on form options for select can be provided by
|
92
|
+
# helpers.label.table_name.choices4_name locale. This is how select
|
93
|
+
# field options are translated. Method returns selected choice translated
|
94
|
+
# to current locale.
|
95
|
+
#
|
96
|
+
# Parameters:
|
97
|
+
# [model] String. Table (collection) model name (lowercase).
|
98
|
+
# [field] String. Field name used.
|
99
|
+
# [value] String. Value of field which translation will be returned.
|
100
|
+
#
|
101
|
+
# Example:
|
102
|
+
# # usage in program. Choice values for state are 'Deactivated:0,Active:1,Waiting:2'
|
103
|
+
# dc_name4_value('dc_user', 'state', @record.active )
|
104
|
+
#
|
105
|
+
# # usage in form
|
106
|
+
# columns:
|
107
|
+
# 2:
|
108
|
+
# name: state
|
109
|
+
# eval: dc_name4_value dc_user, state
|
110
|
+
#
|
111
|
+
# Returns:
|
112
|
+
# String. Descriptive text (translated) for selected choice value.
|
113
|
+
############################################################################
|
114
|
+
def self.dc_name_for_value(model, field, value)
|
115
|
+
return '' if value.nil?
|
116
|
+
c = t('helpers.label.' + model + '.choices4_' + field )
|
117
|
+
a = c.chomp.split(',').inject([]) {|r,v| r << v.split(':') }
|
118
|
+
a.each {|e| return e.first if e.last.to_s == value.to_s }
|
119
|
+
'???'
|
120
|
+
end
|
121
|
+
|
122
|
+
############################################################################
|
123
|
+
def dc_name_for_value(model, field, value)
|
124
|
+
CmsCommonHelper.dc_name_for_value(model, field, value)
|
125
|
+
end
|
126
|
+
|
127
|
+
############################################################################
|
128
|
+
#
|
129
|
+
############################################################################
|
130
|
+
def dc_name4_value(model, field, value) #nodoc
|
131
|
+
#dc_deprecate('dc_name4_value will be deprecated. Use dc_name_for_value instead.')
|
132
|
+
CmsCommonHelper.dc_name_for_value(model, field, value)
|
133
|
+
end
|
134
|
+
|
135
|
+
############################################################################
|
136
|
+
# Return choices for field in model if choices are defined in localization text.
|
137
|
+
#
|
138
|
+
# Parameters:
|
139
|
+
# [model] String. Table (collection) model name (lowercase).
|
140
|
+
# [field] String. Field name used.
|
141
|
+
#
|
142
|
+
# Example:
|
143
|
+
# dc_choices4_field('dc_user', 'state' )
|
144
|
+
#
|
145
|
+
# Returns:
|
146
|
+
# Array. Choices for select input field
|
147
|
+
############################################################################
|
148
|
+
def self.dc_choices_for_field(model, field)
|
149
|
+
c = CmsCommonHelper.t('helpers.label.' + model + '.choices4_' + field )
|
150
|
+
return ['error'] if c.match( 'translation missing' )
|
151
|
+
c.chomp.split(',').inject([]) {|r,v| r << v.split(':') }
|
152
|
+
end
|
153
|
+
|
154
|
+
############################################################################
|
155
|
+
def dc_choices_for_field(model, field)
|
156
|
+
CmsCommonHelper.dc_choices_for_field(model, field)
|
157
|
+
end
|
158
|
+
|
159
|
+
############################################################################
|
160
|
+
#
|
161
|
+
############################################################################
|
162
|
+
def dc_choices4_field(model, field) #nodoc
|
163
|
+
#dc_deprecate('dc_choices4_field will be deprecated. Use dc_choices_for_field instead.')
|
164
|
+
CmsCommonHelper.dc_choices_for_field(model, field)
|
165
|
+
end
|
166
|
+
|
167
|
+
############################################################################
|
168
|
+
# Will return descriptive text for id key when field in one table (collection) has belongs_to
|
169
|
+
# relation to other table.
|
170
|
+
#
|
171
|
+
# Parameters:
|
172
|
+
# [model] String. Table (collection) model name (lowercase).
|
173
|
+
# [field] String. Field name holding the value of descriptive text.
|
174
|
+
# [field_name] String. ID field name. This is by default id, but can be any other
|
175
|
+
# (preferred unique) field.
|
176
|
+
# [value] Value of id_field. Usually a BSON Key but can be any other data type.
|
177
|
+
#
|
178
|
+
# Example:
|
179
|
+
# # usage in program.
|
180
|
+
# dc_name4_id('dc_user', 'name', nil, dc_page.created_by)
|
181
|
+
#
|
182
|
+
# # usage in form
|
183
|
+
# columns:
|
184
|
+
# 2:
|
185
|
+
# name: site_id
|
186
|
+
# eval: dc_name4_id,site,name
|
187
|
+
# # username is saved to document instead of user.id field
|
188
|
+
# 5:
|
189
|
+
# name: user
|
190
|
+
# eval: dc_name4_id,dc_user,name,username
|
191
|
+
#
|
192
|
+
# Returns:
|
193
|
+
# String. Name (descriptive value) for specified key in table.
|
194
|
+
############################################################################
|
195
|
+
def dc_name_for_id(model, field, field_name, id=nil)
|
196
|
+
return '' if id.nil?
|
197
|
+
|
198
|
+
field_name = (field_name || 'id').strip.to_sym
|
199
|
+
field = field.strip.to_sym
|
200
|
+
model = model.strip.classify.constantize if model.class == String
|
201
|
+
doc = Mongoid::QueryCache.cache { model.find_by(field_name => id) }
|
202
|
+
|
203
|
+
doc.nil? ? '' : (doc.send(field) rescue 'not defined')
|
204
|
+
end
|
205
|
+
|
206
|
+
############################################################################
|
207
|
+
#
|
208
|
+
############################################################################
|
209
|
+
def dc_name4_id(model, field, field_name, id=nil) #nodoc
|
210
|
+
#dc_deprecate('dc_name4_id will be deprecated. Use dc_name_for_id instead.')
|
211
|
+
dc_name_for_id(model, field, field_name, id)
|
212
|
+
end
|
213
|
+
|
214
|
+
############################################################################
|
215
|
+
# Return html code for icon presenting boolean value. Icon is a picture of checked or unchecked box.
|
216
|
+
#
|
217
|
+
# Parameters:
|
218
|
+
# [value] Boolean.
|
219
|
+
#
|
220
|
+
# Example:
|
221
|
+
# # usage from program
|
222
|
+
# dc_icon4_boolean(some_value)
|
223
|
+
#
|
224
|
+
# # usage from form description
|
225
|
+
# columns:
|
226
|
+
# 10:
|
227
|
+
# name: active
|
228
|
+
# eval: dc_icon4_boolean
|
229
|
+
############################################################################
|
230
|
+
def dc_icon_for_boolean(value=false)
|
231
|
+
dc_dont?(value, true) ? fa_icon('square-o lg') : fa_icon('check-square-o lg')
|
232
|
+
end
|
233
|
+
|
234
|
+
############################################################################
|
235
|
+
#
|
236
|
+
############################################################################
|
237
|
+
def dc_icon4_boolean(value=false) #nodoc
|
238
|
+
#dc_deprecate('dc_icon4_boolean will be deprecated. Use dc_icon_for_boolean instead.')
|
239
|
+
dc_icon_for_boolean(value)
|
240
|
+
end
|
241
|
+
|
242
|
+
############################################################################
|
243
|
+
# Returns html code for displaying date/time formatted by strftime. Will return '' if value is nil.
|
244
|
+
#
|
245
|
+
# Parameters:
|
246
|
+
# [value] Date/DateTime/Time.
|
247
|
+
# [format] String. strftime format mask. Defaults to locale's default format.
|
248
|
+
############################################################################
|
249
|
+
def self.dc_format_date_time(value, format=nil)
|
250
|
+
return '' if value.blank?
|
251
|
+
|
252
|
+
format ||= value.class == Date ? t('date.formats.default') : t('time.formats.default')
|
253
|
+
if format.size == 1
|
254
|
+
format = format.match(/d/i) ? t('date.formats.default') : t('time.formats.default')
|
255
|
+
end
|
256
|
+
value.strftime(format)
|
257
|
+
end
|
258
|
+
|
259
|
+
############################################################################
|
260
|
+
# Returns html code for displaying date/time formatted by strftime. Will return '' if value is nil.
|
261
|
+
#
|
262
|
+
# Parameters:
|
263
|
+
# [value] Date/DateTime/Time.
|
264
|
+
# [format] String. strftime format mask. Defaults to locale's default format.
|
265
|
+
############################################################################
|
266
|
+
def dc_format_date_time(value, format=nil) #:nodoc:
|
267
|
+
CmsCommonHelper.dc_format_date_time(value, format)
|
268
|
+
end
|
269
|
+
|
270
|
+
####################################################################
|
271
|
+
#
|
272
|
+
####################################################################
|
273
|
+
def dc_date_time(value, format) #:nodoc:
|
274
|
+
dc_deprecate 'dc_date_time will be deprecated! Use dc_format_date_time instead.'
|
275
|
+
dc_format_date_time(value, format)
|
276
|
+
end
|
277
|
+
|
278
|
+
############################################################################
|
279
|
+
# Returns html code for displaying formatted number.
|
280
|
+
#
|
281
|
+
# Parameters:
|
282
|
+
# [value] Numeric number.
|
283
|
+
# [decimals] Integer. Number of decimals
|
284
|
+
# [separator] String. Decimals separator
|
285
|
+
# [delimiter] String. Thousands delimiter.
|
286
|
+
# [currency] String. Currency symbol if applied to result string.
|
287
|
+
############################################################################
|
288
|
+
def self.dc_format_number(value=0, decimals=nil, separator=nil, delimiter=nil, currency=nil)
|
289
|
+
decimals ||= I18n.t('number.currency.format.precision')
|
290
|
+
separator ||= I18n.t('number.currency.format.separator')
|
291
|
+
separator = '' if decimals == 0
|
292
|
+
delimiter ||= I18n.t('number.currency.format.delimiter')
|
293
|
+
whole, dec = value.to_s.split('.')
|
294
|
+
whole = '0' if whole.blank?
|
295
|
+
# remove and remember sign
|
296
|
+
sign = ''
|
297
|
+
if whole[0] == '-'
|
298
|
+
whole.delete_prefix!('-')
|
299
|
+
sign << '-'
|
300
|
+
end
|
301
|
+
# format decimals
|
302
|
+
dec ||= '0'
|
303
|
+
dec = dec[0,decimals]
|
304
|
+
while dec.size < decimals do dec += '0' end
|
305
|
+
# slice whole on chunks of 3
|
306
|
+
ar = []
|
307
|
+
while whole.size > 0 do
|
308
|
+
n = whole.size >=3 ? 3 : whole.size
|
309
|
+
ar << whole.slice!(n*-1,n)
|
310
|
+
end
|
311
|
+
# put it all back and format
|
312
|
+
"#{sign}#{ar.reverse.join(delimiter)}#{separator}#{dec}"
|
313
|
+
end
|
314
|
+
|
315
|
+
############################################################################
|
316
|
+
# Returns html code for displaying formatted number.
|
317
|
+
#
|
318
|
+
# Parameters:
|
319
|
+
# [value] Numeric number.
|
320
|
+
# [decimals] Integer. Number of decimals
|
321
|
+
# [separator] String. Decimals separator
|
322
|
+
# [delimiter] String. Thousands delimiter.
|
323
|
+
# [currency] String. Currency symbol if applied to result string.
|
324
|
+
############################################################################
|
325
|
+
def dc_format_number(value=0, decimals=nil, separator=nil, delimiter=nil, currency=nil) #:nodoc:
|
326
|
+
CmsCommonHelper.dc_format_number(value, decimals, separator, delimiter, currency)
|
327
|
+
end
|
328
|
+
|
329
|
+
############################################################################
|
330
|
+
# Create help text for fields on single tab
|
331
|
+
############################################################################
|
332
|
+
def dc_help_for_tab(tab)
|
333
|
+
return '' if tab.nil?
|
334
|
+
|
335
|
+
html = ''
|
336
|
+
if tab.class == Array
|
337
|
+
tab_name = tab.last['caption'] || tab.first
|
338
|
+
tab_label, tab_help = dc_tab_label_help(tab_name)
|
339
|
+
html << %(<div class="help-tab">#{tab_label}</div><div class="help-tab-help">#{tab_help}</div>)
|
340
|
+
|
341
|
+
tab = tab.last
|
342
|
+
end
|
343
|
+
|
344
|
+
tab.each do |field|
|
345
|
+
label, help = dc_label_help(field.last)
|
346
|
+
next if help.blank?
|
347
|
+
|
348
|
+
html << %(<div class="help-field"><div class="help-label">#{label}</div><div class="help-text">#{help}</div></div>)
|
349
|
+
end
|
350
|
+
html
|
351
|
+
end
|
352
|
+
|
353
|
+
############################################################################
|
354
|
+
# Will scoop fields and help text associated with them to create basic help text.
|
355
|
+
############################################################################
|
356
|
+
def dc_help_fields
|
357
|
+
return '' if @form['form'].nil?
|
358
|
+
|
359
|
+
html = '<div class="dc-handle" data-div="#the1"></div><div id="the1">'
|
360
|
+
if @form['form']['tabs']
|
361
|
+
@form['form']['tabs'].each { |tab| html << dc_help_for_tab(tab) }
|
362
|
+
else
|
363
|
+
html << dc_help_for_tab(@form['form']['fields'])
|
364
|
+
end
|
365
|
+
html << '</div>'
|
366
|
+
html.html_safe
|
367
|
+
end
|
368
|
+
|
369
|
+
############################################################################
|
370
|
+
# Will return text from help files
|
371
|
+
############################################################################
|
372
|
+
def dc_help_body
|
373
|
+
(params[:type] == 'index' ? @help['index'] : @help['form']).html_safe
|
374
|
+
end
|
375
|
+
|
376
|
+
end
|