oxidized-web 0.18.0 → 0.18.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 65d2167a7730774cc00bd44654db8a47406c705d792e2f4de65a29139e472a2e
4
- data.tar.gz: 54ad4889bfad1df807091fe256ccb05f01adad35c3a3570bd0b11a7376cb4028
3
+ metadata.gz: 74055439829d5d7a421f0cf6788af3cf45025b6b3e1102ed8740379433142c5c
4
+ data.tar.gz: 26cfbc9901f04ec5f634bb5ebdbaf3716947d8ea35e44adbbfef978f0f1c8a4b
5
5
  SHA512:
6
- metadata.gz: a69af301e9965a59c8dbae6ba4c935b4c7e77f645fb0f040d208f922deb65d18218bb4773a9a13b28d9c521eaa34ff53666064196f34a3edc810b32581405e79
7
- data.tar.gz: f08cc40327630149b8c08b7a9a32a6b13b166e35fa5c55b7d4c7ef3c765dd1d805b7f98eb1503fe4ce6f57d0509b493748f8827dd26a47d1b00644c17d8a0830
6
+ metadata.gz: 3f5e508810eed72c7fa5be759f064d280f2302973b74c9dc557de738b6786655c10e3b262e0cf8709b5ba1ba8e033686e9ccb2e9e428e6346faafca09fa03b33
7
+ data.tar.gz: 3bc39cd4384b7c7e9945fc359b019bee0e85a083c255e45ba703ac4feb2a8a56c9bc19e95908e6f418564b630f3019e4c56f66b9b6807266d8da8efc68aceb59
data/.coderabbit.yaml ADDED
@@ -0,0 +1,21 @@
1
+ reviews:
2
+ auto_review:
3
+ enabled: false
4
+ auto_incremental_review: false
5
+
6
+ commit_status: false
7
+ review_status: false
8
+ high_level_summary: false
9
+ suggested_labels: false
10
+ suggested_reviewers: false
11
+ changed_files_summary: false
12
+ poem: false
13
+ sequence_diagrams: false
14
+ estimate_code_review_effort: false
15
+ assess_linked_issues: false
16
+ related_issues: false
17
+ in_progress_fortune: false
18
+
19
+
20
+ chat:
21
+ auto_reply: false
data/.rubocop.yml CHANGED
@@ -6,7 +6,6 @@ plugins:
6
6
  # Do not attempt to police vendored code, and exclude special cases
7
7
  AllCops:
8
8
  NewCops: enable
9
- TargetRubyVersion: 3.1
10
9
  Exclude:
11
10
  - 'vendor/**/*'
12
11
 
data/CHANGELOG.md CHANGED
@@ -3,6 +3,15 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
 
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
6
+ ## [0.18.1 – 2026-01-19]
7
+ Maintenance release to update dependencies.
8
+
9
+ ### Changed
10
+ - Reintroduce support for ruby 3.0 / see Oxidized Issue #3688 (@robertcheramy)
11
+ - Update web libraries to the latest versions (@robertcheramy)
12
+ - Fix Gem policy to automatic update minor versions (@robertcheramy)
13
+
14
+
6
15
  ## [0.18.0 – 2025-12-03]
7
16
  It's finally here - dark mode. Enjoy!
8
17
 
data/docs/development.md CHANGED
@@ -104,7 +104,7 @@ It is nicer to read in a GUI, so you can use something like
104
104
 
105
105
  ## Update the gem dependencies to the latest versions
106
106
  ```
107
- bundle outaded
107
+ bundle outdated
108
108
  bundle update
109
109
  bundle outaded
110
110
  ```
@@ -152,7 +152,7 @@ Upload the release branch to github, make a Pull Request for it.
152
152
  6. Install an test the gem locally
153
153
  ```shell
154
154
  gem install --user-install pkg/oxidized-web-0.xx.yy.gem
155
- ~/.local/share/gem/ruby/3.1.0/bin/oxidized
155
+ ~/.local/share/gem/ruby/3.3.0/bin/oxidized
156
156
  ```
157
157
 
158
158
  ## Release in github
@@ -162,7 +162,7 @@ git push origin 0.xx.yy
162
162
  ```
163
163
 
164
164
  Make a release from the tag in github.
165
- - Take the release notes frm CHANGELOG.md
165
+ - Take the release notes from CHANGELOG.md
166
166
  - List new contributors (generated automatically)
167
167
  - Keep the Full Changelog (generated automatically)
168
168
 
@@ -174,7 +174,7 @@ Push the gem with ‘rake push’
174
174
  You need an account at rubygems which is allowed to push oxidized
175
175
 
176
176
  ## Release in docker.io
177
- In order to release in docker.io, oxidized be released to a new version,
177
+ In order to release in docker.io, oxidized has to be released to a new version,
178
178
  as the container is build there.
179
179
 
180
180
  ## Update CHANGELOG.md for next release
@@ -76,42 +76,42 @@ table.dataTable thead > tr > th:active,
76
76
  table.dataTable thead > tr > td:active {
77
77
  outline: none;
78
78
  }
79
- table.dataTable thead > tr > th.dt-orderable-asc span.dt-column-order:before, table.dataTable thead > tr > th.dt-ordering-asc span.dt-column-order:before,
80
- table.dataTable thead > tr > td.dt-orderable-asc span.dt-column-order:before,
81
- table.dataTable thead > tr > td.dt-ordering-asc span.dt-column-order:before {
79
+ table.dataTable thead > tr > th.dt-orderable-asc .dt-column-order:before, table.dataTable thead > tr > th.dt-ordering-asc .dt-column-order:before,
80
+ table.dataTable thead > tr > td.dt-orderable-asc .dt-column-order:before,
81
+ table.dataTable thead > tr > td.dt-ordering-asc .dt-column-order:before {
82
82
  position: absolute;
83
83
  display: block;
84
84
  bottom: 50%;
85
85
  content: "\25B2";
86
86
  content: "\25B2"/"";
87
87
  }
88
- table.dataTable thead > tr > th.dt-orderable-desc span.dt-column-order:after, table.dataTable thead > tr > th.dt-ordering-desc span.dt-column-order:after,
89
- table.dataTable thead > tr > td.dt-orderable-desc span.dt-column-order:after,
90
- table.dataTable thead > tr > td.dt-ordering-desc span.dt-column-order:after {
88
+ table.dataTable thead > tr > th.dt-orderable-desc .dt-column-order:after, table.dataTable thead > tr > th.dt-ordering-desc .dt-column-order:after,
89
+ table.dataTable thead > tr > td.dt-orderable-desc .dt-column-order:after,
90
+ table.dataTable thead > tr > td.dt-ordering-desc .dt-column-order:after {
91
91
  position: absolute;
92
92
  display: block;
93
93
  top: 50%;
94
94
  content: "\25BC";
95
95
  content: "\25BC"/"";
96
96
  }
97
- table.dataTable thead > tr > th.dt-orderable-asc span.dt-column-order, table.dataTable thead > tr > th.dt-orderable-desc span.dt-column-order, table.dataTable thead > tr > th.dt-ordering-asc span.dt-column-order, table.dataTable thead > tr > th.dt-ordering-desc span.dt-column-order,
98
- table.dataTable thead > tr > td.dt-orderable-asc span.dt-column-order,
99
- table.dataTable thead > tr > td.dt-orderable-desc span.dt-column-order,
100
- table.dataTable thead > tr > td.dt-ordering-asc span.dt-column-order,
101
- table.dataTable thead > tr > td.dt-ordering-desc span.dt-column-order {
97
+ table.dataTable thead > tr > th.dt-orderable-asc .dt-column-order, table.dataTable thead > tr > th.dt-orderable-desc .dt-column-order, table.dataTable thead > tr > th.dt-ordering-asc .dt-column-order, table.dataTable thead > tr > th.dt-ordering-desc .dt-column-order,
98
+ table.dataTable thead > tr > td.dt-orderable-asc .dt-column-order,
99
+ table.dataTable thead > tr > td.dt-orderable-desc .dt-column-order,
100
+ table.dataTable thead > tr > td.dt-ordering-asc .dt-column-order,
101
+ table.dataTable thead > tr > td.dt-ordering-desc .dt-column-order {
102
102
  position: relative;
103
103
  width: 12px;
104
- height: 24px;
105
- }
106
- table.dataTable thead > tr > th.dt-orderable-asc span.dt-column-order:before, table.dataTable thead > tr > th.dt-orderable-asc span.dt-column-order:after, table.dataTable thead > tr > th.dt-orderable-desc span.dt-column-order:before, table.dataTable thead > tr > th.dt-orderable-desc span.dt-column-order:after, table.dataTable thead > tr > th.dt-ordering-asc span.dt-column-order:before, table.dataTable thead > tr > th.dt-ordering-asc span.dt-column-order:after, table.dataTable thead > tr > th.dt-ordering-desc span.dt-column-order:before, table.dataTable thead > tr > th.dt-ordering-desc span.dt-column-order:after,
107
- table.dataTable thead > tr > td.dt-orderable-asc span.dt-column-order:before,
108
- table.dataTable thead > tr > td.dt-orderable-asc span.dt-column-order:after,
109
- table.dataTable thead > tr > td.dt-orderable-desc span.dt-column-order:before,
110
- table.dataTable thead > tr > td.dt-orderable-desc span.dt-column-order:after,
111
- table.dataTable thead > tr > td.dt-ordering-asc span.dt-column-order:before,
112
- table.dataTable thead > tr > td.dt-ordering-asc span.dt-column-order:after,
113
- table.dataTable thead > tr > td.dt-ordering-desc span.dt-column-order:before,
114
- table.dataTable thead > tr > td.dt-ordering-desc span.dt-column-order:after {
104
+ height: 20px;
105
+ }
106
+ table.dataTable thead > tr > th.dt-orderable-asc .dt-column-order:before, table.dataTable thead > tr > th.dt-orderable-asc .dt-column-order:after, table.dataTable thead > tr > th.dt-orderable-desc .dt-column-order:before, table.dataTable thead > tr > th.dt-orderable-desc .dt-column-order:after, table.dataTable thead > tr > th.dt-ordering-asc .dt-column-order:before, table.dataTable thead > tr > th.dt-ordering-asc .dt-column-order:after, table.dataTable thead > tr > th.dt-ordering-desc .dt-column-order:before, table.dataTable thead > tr > th.dt-ordering-desc .dt-column-order:after,
107
+ table.dataTable thead > tr > td.dt-orderable-asc .dt-column-order:before,
108
+ table.dataTable thead > tr > td.dt-orderable-asc .dt-column-order:after,
109
+ table.dataTable thead > tr > td.dt-orderable-desc .dt-column-order:before,
110
+ table.dataTable thead > tr > td.dt-orderable-desc .dt-column-order:after,
111
+ table.dataTable thead > tr > td.dt-ordering-asc .dt-column-order:before,
112
+ table.dataTable thead > tr > td.dt-ordering-asc .dt-column-order:after,
113
+ table.dataTable thead > tr > td.dt-ordering-desc .dt-column-order:before,
114
+ table.dataTable thead > tr > td.dt-ordering-desc .dt-column-order:after {
115
115
  left: 0;
116
116
  opacity: 0.125;
117
117
  line-height: 9px;
@@ -128,15 +128,15 @@ table.dataTable thead > tr > td.dt-orderable-desc:hover {
128
128
  outline: 2px solid rgba(0, 0, 0, 0.05);
129
129
  outline-offset: -2px;
130
130
  }
131
- table.dataTable thead > tr > th.dt-ordering-asc span.dt-column-order:before, table.dataTable thead > tr > th.dt-ordering-desc span.dt-column-order:after,
132
- table.dataTable thead > tr > td.dt-ordering-asc span.dt-column-order:before,
133
- table.dataTable thead > tr > td.dt-ordering-desc span.dt-column-order:after {
131
+ table.dataTable thead > tr > th.dt-ordering-asc .dt-column-order:before, table.dataTable thead > tr > th.dt-ordering-desc .dt-column-order:after,
132
+ table.dataTable thead > tr > td.dt-ordering-asc .dt-column-order:before,
133
+ table.dataTable thead > tr > td.dt-ordering-desc .dt-column-order:after {
134
134
  opacity: 0.6;
135
135
  }
136
- table.dataTable thead > tr > th.dt-orderable-none:not(.dt-ordering-asc, .dt-ordering-desc) span.dt-column-order:empty, table.dataTable thead > tr > th.sorting_desc_disabled span.dt-column-order:after, table.dataTable thead > tr > th.sorting_asc_disabled span.dt-column-order:before,
137
- table.dataTable thead > tr > td.dt-orderable-none:not(.dt-ordering-asc, .dt-ordering-desc) span.dt-column-order:empty,
138
- table.dataTable thead > tr > td.sorting_desc_disabled span.dt-column-order:after,
139
- table.dataTable thead > tr > td.sorting_asc_disabled span.dt-column-order:before {
136
+ table.dataTable thead > tr > th.dt-orderable-none:not(.dt-ordering-asc, .dt-ordering-desc) .dt-column-order:empty, table.dataTable thead > tr > th.sorting_desc_disabled .dt-column-order:after, table.dataTable thead > tr > th.sorting_asc_disabled .dt-column-order:before,
137
+ table.dataTable thead > tr > td.dt-orderable-none:not(.dt-ordering-asc, .dt-ordering-desc) .dt-column-order:empty,
138
+ table.dataTable thead > tr > td.sorting_desc_disabled .dt-column-order:after,
139
+ table.dataTable thead > tr > td.sorting_asc_disabled .dt-column-order:before {
140
140
  display: none;
141
141
  }
142
142
  table.dataTable thead > tr > th:active,
@@ -157,24 +157,24 @@ table.dataTable tfoot > tr > td div.dt-column-footer {
157
157
  align-items: var(--dt-header-align-items);
158
158
  gap: 4px;
159
159
  }
160
- table.dataTable thead > tr > th div.dt-column-header span.dt-column-title,
161
- table.dataTable thead > tr > th div.dt-column-footer span.dt-column-title,
162
- table.dataTable thead > tr > td div.dt-column-header span.dt-column-title,
163
- table.dataTable thead > tr > td div.dt-column-footer span.dt-column-title,
164
- table.dataTable tfoot > tr > th div.dt-column-header span.dt-column-title,
165
- table.dataTable tfoot > tr > th div.dt-column-footer span.dt-column-title,
166
- table.dataTable tfoot > tr > td div.dt-column-header span.dt-column-title,
167
- table.dataTable tfoot > tr > td div.dt-column-footer span.dt-column-title {
160
+ table.dataTable thead > tr > th div.dt-column-header .dt-column-title,
161
+ table.dataTable thead > tr > th div.dt-column-footer .dt-column-title,
162
+ table.dataTable thead > tr > td div.dt-column-header .dt-column-title,
163
+ table.dataTable thead > tr > td div.dt-column-footer .dt-column-title,
164
+ table.dataTable tfoot > tr > th div.dt-column-header .dt-column-title,
165
+ table.dataTable tfoot > tr > th div.dt-column-footer .dt-column-title,
166
+ table.dataTable tfoot > tr > td div.dt-column-header .dt-column-title,
167
+ table.dataTable tfoot > tr > td div.dt-column-footer .dt-column-title {
168
168
  flex-grow: 1;
169
169
  }
170
- table.dataTable thead > tr > th div.dt-column-header span.dt-column-title:empty,
171
- table.dataTable thead > tr > th div.dt-column-footer span.dt-column-title:empty,
172
- table.dataTable thead > tr > td div.dt-column-header span.dt-column-title:empty,
173
- table.dataTable thead > tr > td div.dt-column-footer span.dt-column-title:empty,
174
- table.dataTable tfoot > tr > th div.dt-column-header span.dt-column-title:empty,
175
- table.dataTable tfoot > tr > th div.dt-column-footer span.dt-column-title:empty,
176
- table.dataTable tfoot > tr > td div.dt-column-header span.dt-column-title:empty,
177
- table.dataTable tfoot > tr > td div.dt-column-footer span.dt-column-title:empty {
170
+ table.dataTable thead > tr > th div.dt-column-header .dt-column-title:empty,
171
+ table.dataTable thead > tr > th div.dt-column-footer .dt-column-title:empty,
172
+ table.dataTable thead > tr > td div.dt-column-header .dt-column-title:empty,
173
+ table.dataTable thead > tr > td div.dt-column-footer .dt-column-title:empty,
174
+ table.dataTable tfoot > tr > th div.dt-column-header .dt-column-title:empty,
175
+ table.dataTable tfoot > tr > th div.dt-column-footer .dt-column-title:empty,
176
+ table.dataTable tfoot > tr > td div.dt-column-header .dt-column-title:empty,
177
+ table.dataTable tfoot > tr > td div.dt-column-footer .dt-column-title:empty {
178
178
  display: none;
179
179
  }
180
180
 
@@ -576,16 +576,16 @@ table.dataTable.table-sm > thead > tr td.dt-ordering-asc,
576
576
  table.dataTable.table-sm > thead > tr td.dt-ordering-desc {
577
577
  padding-right: 0.25rem;
578
578
  }
579
- table.dataTable.table-sm > thead > tr th.dt-orderable-asc span.dt-column-order, table.dataTable.table-sm > thead > tr th.dt-orderable-desc span.dt-column-order, table.dataTable.table-sm > thead > tr th.dt-ordering-asc span.dt-column-order, table.dataTable.table-sm > thead > tr th.dt-ordering-desc span.dt-column-order,
580
- table.dataTable.table-sm > thead > tr td.dt-orderable-asc span.dt-column-order,
581
- table.dataTable.table-sm > thead > tr td.dt-orderable-desc span.dt-column-order,
582
- table.dataTable.table-sm > thead > tr td.dt-ordering-asc span.dt-column-order,
583
- table.dataTable.table-sm > thead > tr td.dt-ordering-desc span.dt-column-order {
579
+ table.dataTable.table-sm > thead > tr th.dt-orderable-asc .dt-column-order, table.dataTable.table-sm > thead > tr th.dt-orderable-desc .dt-column-order, table.dataTable.table-sm > thead > tr th.dt-ordering-asc .dt-column-order, table.dataTable.table-sm > thead > tr th.dt-ordering-desc .dt-column-order,
580
+ table.dataTable.table-sm > thead > tr td.dt-orderable-asc .dt-column-order,
581
+ table.dataTable.table-sm > thead > tr td.dt-orderable-desc .dt-column-order,
582
+ table.dataTable.table-sm > thead > tr td.dt-ordering-asc .dt-column-order,
583
+ table.dataTable.table-sm > thead > tr td.dt-ordering-desc .dt-column-order {
584
584
  right: 0.25rem;
585
585
  }
586
- table.dataTable.table-sm > thead > tr th.dt-type-date span.dt-column-order, table.dataTable.table-sm > thead > tr th.dt-type-numeric span.dt-column-order,
587
- table.dataTable.table-sm > thead > tr td.dt-type-date span.dt-column-order,
588
- table.dataTable.table-sm > thead > tr td.dt-type-numeric span.dt-column-order {
586
+ table.dataTable.table-sm > thead > tr th.dt-type-date .dt-column-order, table.dataTable.table-sm > thead > tr th.dt-type-numeric .dt-column-order,
587
+ table.dataTable.table-sm > thead > tr td.dt-type-date .dt-column-order,
588
+ table.dataTable.table-sm > thead > tr td.dt-type-numeric .dt-column-order {
589
589
  left: 0.25rem;
590
590
  }
591
591
 
@@ -594,7 +594,8 @@ div.dt-scroll-head table.table-bordered {
594
594
  }
595
595
 
596
596
  div.table-responsive > div.dt-container > div.row {
597
- margin: 0;
597
+ margin-left: 0;
598
+ margin-right: 0;
598
599
  }
599
600
  div.table-responsive > div.dt-container > div.row > div[class^=col-]:first-child {
600
601
  padding-left: 0;
@@ -1,4 +1,4 @@
1
- /*! Buttons for DataTables 3.2.5
1
+ /*! Buttons for DataTables 3.2.6
2
2
  * © SpryMedia Ltd - datatables.net/license
3
3
  */
4
4
 
@@ -1437,7 +1437,7 @@ $.extend(Buttons.prototype, {
1437
1437
  $(window).off('resize.resize.dtb-collection');
1438
1438
  $('body').off('.dtb-collection');
1439
1439
  dt.off('buttons-action.b-internal');
1440
- dt.off('destroy');
1440
+ dt.off('destroy.dtb-popover');
1441
1441
 
1442
1442
  $('body').trigger('buttons-popover-hide.dt');
1443
1443
  };
@@ -1703,7 +1703,7 @@ $.extend(Buttons.prototype, {
1703
1703
 
1704
1704
  $(display).trigger('buttons-popover.dt');
1705
1705
 
1706
- dt.on('destroy', close);
1706
+ dt.on('destroy.dtb-popover', close);
1707
1707
 
1708
1708
  setTimeout(function () {
1709
1709
  closed = false;
@@ -2171,7 +2171,7 @@ Buttons.defaults = {
2171
2171
  * @type {string}
2172
2172
  * @static
2173
2173
  */
2174
- Buttons.version = '3.2.5';
2174
+ Buttons.version = '3.2.6';
2175
2175
 
2176
2176
  $.extend(_dtButtons, {
2177
2177
  collection: {
@@ -1,4 +1,4 @@
1
- /*! DataTables 2.3.5
1
+ /*! DataTables 2.3.6
2
2
  * © SpryMedia Ltd - datatables.net/license
3
3
  */
4
4
 
@@ -174,7 +174,7 @@
174
174
  "sDestroyWidth": $this[0].style.width,
175
175
  "sInstance": sId,
176
176
  "sTableId": sId,
177
- colgroup: $('<colgroup>').prependTo(this),
177
+ colgroup: $('<colgroup>'),
178
178
  fastData: function (row, column, type) {
179
179
  return _fnGetCellData(oSettings, row, column, type);
180
180
  }
@@ -247,6 +247,7 @@
247
247
  "orderHandler",
248
248
  "titleRow",
249
249
  "typeDetect",
250
+ "columnTitleTag",
250
251
  [ "iCookieDuration", "iStateDuration" ], // backwards compat
251
252
  [ "oSearch", "oPreviousSearch" ],
252
253
  [ "aoSearchCols", "aoPreSearchCols" ],
@@ -411,7 +412,7 @@
411
412
 
412
413
  if ( oSettings.caption ) {
413
414
  if ( caption.length === 0 ) {
414
- caption = $('<caption/>').appendTo( $this );
415
+ caption = $('<caption/>').prependTo( $this );
415
416
  }
416
417
 
417
418
  caption.html( oSettings.caption );
@@ -424,6 +425,14 @@
424
425
  oSettings.captionNode = caption[0];
425
426
  }
426
427
 
428
+ // Place the colgroup element in the correct location for the HTML structure
429
+ if (caption.length) {
430
+ oSettings.colgroup.insertAfter(caption);
431
+ }
432
+ else {
433
+ oSettings.colgroup.prependTo(oSettings.nTable);
434
+ }
435
+
427
436
  if ( thead.length === 0 ) {
428
437
  thead = $('<thead/>').appendTo($this);
429
438
  }
@@ -439,7 +448,7 @@
439
448
  if ( tfoot.length === 0 ) {
440
449
  // If we are a scrolling table, and no footer has been given, then we need to create
441
450
  // a tfoot element for the caption element to be appended to
442
- tfoot = $('<tfoot/>').appendTo($this);
451
+ tfoot = $('<tfoot/>').insertAfter(thead);
443
452
  }
444
453
  oSettings.nTFoot = tfoot[0];
445
454
 
@@ -1280,7 +1289,7 @@
1280
1289
  };
1281
1290
 
1282
1291
  // Replaceable function in api.util
1283
- var _stripHtml = function (input) {
1292
+ var _stripHtml = function (input, replacement) {
1284
1293
  if (! input || typeof input !== 'string') {
1285
1294
  return input;
1286
1295
  }
@@ -1292,7 +1301,7 @@
1292
1301
 
1293
1302
  var previous;
1294
1303
 
1295
- input = input.replace(_re_html, ''); // Complete tags
1304
+ input = input.replace(_re_html, replacement || ''); // Complete tags
1296
1305
 
1297
1306
  // Safety for incomplete script tag - use do / while to ensure that
1298
1307
  // we get all instances
@@ -1757,7 +1766,7 @@
1757
1766
  }
1758
1767
  },
1759
1768
 
1760
- stripHtml: function (mixed) {
1769
+ stripHtml: function (mixed, replacement) {
1761
1770
  var type = typeof mixed;
1762
1771
 
1763
1772
  if (type === 'function') {
@@ -1765,7 +1774,7 @@
1765
1774
  return;
1766
1775
  }
1767
1776
  else if (type === 'string') {
1768
- return _stripHtml(mixed);
1777
+ return _stripHtml(mixed, replacement);
1769
1778
  }
1770
1779
  return mixed;
1771
1780
  },
@@ -3367,7 +3376,7 @@
3367
3376
  colspan++;
3368
3377
  }
3369
3378
 
3370
- var titleSpan = $('span.dt-column-title', cell);
3379
+ var titleSpan = $('.dt-column-title', cell);
3371
3380
 
3372
3381
  structure[row][column] = {
3373
3382
  cell: cell,
@@ -4081,8 +4090,8 @@
4081
4090
  }
4082
4091
 
4083
4092
  // Wrap the column title so we can write to it in future
4084
- if ( $('span.dt-column-title', cell).length === 0) {
4085
- $('<span>')
4093
+ if ( $('.dt-column-title', cell).length === 0) {
4094
+ $(document.createElement(settings.columnTitleTag))
4086
4095
  .addClass('dt-column-title')
4087
4096
  .append(cell.childNodes)
4088
4097
  .appendTo(cell);
@@ -4093,9 +4102,9 @@
4093
4102
  isHeader &&
4094
4103
  jqCell.filter(':not([data-dt-order=disable])').length !== 0 &&
4095
4104
  jqCell.parent(':not([data-dt-order=disable])').length !== 0 &&
4096
- $('span.dt-column-order', cell).length === 0
4105
+ $('.dt-column-order', cell).length === 0
4097
4106
  ) {
4098
- $('<span>')
4107
+ $(document.createElement(settings.columnTitleTag))
4099
4108
  .addClass('dt-column-order')
4100
4109
  .appendTo(cell);
4101
4110
  }
@@ -4104,7 +4113,7 @@
4104
4113
  // layout for those elements
4105
4114
  var headerFooter = isHeader ? 'header' : 'footer';
4106
4115
 
4107
- if ( $('span.dt-column-' + headerFooter, cell).length === 0) {
4116
+ if ( $('div.dt-column-' + headerFooter, cell).length === 0) {
4108
4117
  $('<div>')
4109
4118
  .addClass('dt-column-' + headerFooter)
4110
4119
  .append(cell.childNodes)
@@ -4261,6 +4270,10 @@
4261
4270
  // Custom Ajax option to submit the parameters as a JSON string
4262
4271
  if (baseAjax.submitAs === 'json' && typeof data === 'object') {
4263
4272
  baseAjax.data = JSON.stringify(data);
4273
+
4274
+ if (!baseAjax.contentType) {
4275
+ baseAjax.contentType = 'application/json; charset=utf-8';
4276
+ }
4264
4277
  }
4265
4278
 
4266
4279
  if (typeof ajax === 'function') {
@@ -5519,7 +5532,7 @@
5519
5532
  var autoClass = _ext.type.className[column.sType];
5520
5533
  var padding = column.sContentPadding || (scrollX ? '-' : '');
5521
5534
  var text = longest + padding;
5522
- var insert = longest.indexOf('<') === -1
5535
+ var insert = longest.indexOf('<') === -1 && longest.indexOf('&') === -1
5523
5536
  ? document.createTextNode(text)
5524
5537
  : text
5525
5538
 
@@ -5707,15 +5720,20 @@
5707
5720
  .replace(/id=".*?"/g, '')
5708
5721
  .replace(/name=".*?"/g, '');
5709
5722
 
5710
- var s = _stripHtml(cellString)
5723
+ // Don't want Javascript at all in these calculation cells.
5724
+ cellString = cellString.replace(/<script.*?<\/script>/gi, ' ');
5725
+
5726
+ var noHtml = _stripHtml(cellString, ' ')
5711
5727
  .replace( /&nbsp;/g, ' ' );
5712
5728
 
5729
+ // The length is calculated on the text only, but we keep the HTML
5730
+ // in the string so it can be used in the calculation table
5713
5731
  collection.push({
5714
- str: s,
5715
- len: s.length
5732
+ str: cellString,
5733
+ len: noHtml.length
5716
5734
  });
5717
5735
 
5718
- allStrings.push(s);
5736
+ allStrings.push(noHtml);
5719
5737
  }
5720
5738
 
5721
5739
  // Order and then cut down to the size we need
@@ -8770,7 +8788,7 @@
8770
8788
  // Automatic - find the _last_ unique cell from the top that is not empty (last for
8771
8789
  // backwards compatibility)
8772
8790
  for (var i=0 ; i<header.length ; i++) {
8773
- if (header[i][column].unique && $('span.dt-column-title', header[i][column].cell).text()) {
8791
+ if (header[i][column].unique && $('.dt-column-title', header[i][column].cell).text()) {
8774
8792
  target = i;
8775
8793
  }
8776
8794
  }
@@ -9077,7 +9095,7 @@
9077
9095
  title = undefined;
9078
9096
  }
9079
9097
 
9080
- var span = $('span.dt-column-title', this.column(column).header(row));
9098
+ var span = $('.dt-column-title', this.column(column).header(row));
9081
9099
 
9082
9100
  if (title !== undefined) {
9083
9101
  span.html(title);
@@ -10251,8 +10269,8 @@
10251
10269
 
10252
10270
  // Needed for header and footer, so pulled into its own function
10253
10271
  function cleanHeader(node, className) {
10254
- $(node).find('span.dt-column-order').remove();
10255
- $(node).find('span.dt-column-title').each(function () {
10272
+ $(node).find('.dt-column-order').remove();
10273
+ $(node).find('.dt-column-title').each(function () {
10256
10274
  var title = $(this).html();
10257
10275
  $(this).parent().parent().append(title);
10258
10276
  $(this).remove();
@@ -10270,7 +10288,7 @@
10270
10288
  * @type string
10271
10289
  * @default Version number
10272
10290
  */
10273
- DataTable.version = "2.3.5";
10291
+ DataTable.version = "2.3.6";
10274
10292
 
10275
10293
  /**
10276
10294
  * Private data store, containing all of the settings objects that are
@@ -11438,7 +11456,10 @@
11438
11456
  iDeferLoading: null,
11439
11457
 
11440
11458
  /** Event listeners */
11441
- on: null
11459
+ on: null,
11460
+
11461
+ /** Title wrapper element type */
11462
+ columnTitleTag: 'span'
11442
11463
  };
11443
11464
 
11444
11465
  _fnHungarianMap( DataTable.defaults );
@@ -12402,7 +12423,10 @@
12402
12423
  orderHandler: true,
12403
12424
 
12404
12425
  /** Title row indicator */
12405
- titleRow: null
12426
+ titleRow: null,
12427
+
12428
+ /** Title wrapper element type */
12429
+ columnTitleTag: 'span'
12406
12430
  };
12407
12431
 
12408
12432
  /**